<?php
class Order_OrdersController extends Ec_Controller_Action
{
    public function preDispatch()
    {
        $this->tplDirectory = "order/views/default/";
        $this->serviceClass = new Service_Orders();
    }

    public function listAction()
    {
        $orderType=Common_Status::orderType('auto');
        $orderStatus=Common_Status::orderStatus('auto');
        $isFbaStatus=Common_Status::isFbaStatus('auto');
        $interceptOrderStatus=Common_Status::interceptOrderStatus('auto');
        $orderUnderReviewStatus=Common_Status::orderUnderReviewStatus('auto');
        $this->view->trackingStatus = Common_Status::trackingStatus('auto');
        if ($this->_request->isPost()) {
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);

            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;

            $return = array(
                "state" => 0,
                "message" => "No Data"
            );

            $params = $this->_request->getParams();
            $condition = $this->serviceClass->getNewMatchFields($params);
            if( is_array( $condition['sm_code'] ) && count( $condition['sm_code'] ) == 1 && $condition['sm_code'][0] === '' ) {
                unset($condition['sm_code']);
            }
            if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
                unset($condition['oab_country_id']);
            }
            if($params['searchType']=='orderCode'){
                $condition['order_code']=$params['searchCode'];
            }else{
                $condition['reference_no']=$params['searchCode'];
            }
            $addTime = Common_Common::getStartAndEndTime($params['dateFor'],$params['dateTo']);
            $conditionTemp['dateFor'] = $addTime[0];
            $conditionTemp['dateTo'] = $addTime[1];
            $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';
            unset($condition['dateFor']);
            unset($condition['dateTo']);
            switch($searchDateType){
                case 'createDate':
                    $condition['dateFor']= $conditionTemp['dateFor'];
                    $condition['dateTo']= $conditionTemp['dateTo'];
                    break;
                case 'printTime':
                    $condition['printDateFor']= $conditionTemp['dateFor'];
                    $condition['printDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'packTime':
                    $condition['packDateFor']= $conditionTemp['dateFor'];
                    $condition['packDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'ship_Time':
                    $condition['shipTimekDateFor']= $conditionTemp['dateFor'];
                    $condition['shipTimeDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'shipmentTime':
                    $condition['shipmentDateFor']= $conditionTemp['dateFor'];
                    $condition['shipmentDateTo']= $conditionTemp['dateTo'];
                    break;
                default:
                    break;
            }
            //产品代码、品类
            $condition['oab_type'] = '0';
            if($condition['tracking_number']){
                    $shipOrder = Service_ShipOrder::getByField($condition['tracking_number'],'tracking_number');
                    if(!empty($shipOrder)){
                        $condition['order_id'] = $shipOrder['order_id'];
                    }else{
                        $condition['order_id'] = 'none';
                    }
            }

            unset($params);
            if(isset($condition['chosen_country_code'])&&$condition['chosen_country_code']!==""){
                $chosenCountryCodeStr = preg_replace('/([\x80-\xff]*)/i','|',$condition['chosen_country_code']);
                $countryCodeArr = explode("||",$chosenCountryCodeStr);
                //var_dump($countryCodeArr);
                foreach($countryCodeArr as $v){
                    $country = Service_Country::getByField(str_replace("|","",$v),'country_code',"country_id");
                    $condition['oab_country_id'][] = $country['country_id'];
                }
            }
            //var_dump($condition['oab_country_id']);
            $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');
            $return['total'] = $count;
            if ($count) {
                $showFields=array(
                'order_code',
                'customer_code',
                'warehouse_id',
                'order_type',
                'sm_code',
                'order_status',
                'problem_status',
                'underreview_status',
                'intercept_status',
                'add_time',
                'order_pick_type',
                'reference_no',
                'picker_id',
                'remark',
                'order_id',
                'order_mode_type',
                'is_fba',
                );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);
                $rows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,$showFields, $pageSize, $page, array('orders.order_id desc'));
                $return['data'] = $rows;
                $return['state'] = 1;
                $return['orderType'] = $orderType;
                $return['orderPackType'] = Common_Status::orderPickType('auto');
                $return['warehouse'] = Common_DataCache::getWarehouseSimple();
                $return['orderStatus'] = $orderStatus;
                $return['isFbaStatus'] = $isFbaStatus;
                $return['interceptOrderStatus'] = $interceptOrderStatus;
                $return['orderUnderReviewStatus'] = $orderUnderReviewStatus;
                $return['message'] = "";
                $return['order_status'] = $condition['order_status'];
                $return['currentPage'] = intval($page);
            }
            die(Zend_Json::encode($return));
        }
        $this->view->plateForm = Service_OrderProcess::getPlateForm();
        $this->view->SM=Common_DataCache::getShippingMethodSimple();
        $this->view->SP=Common_DataCache::getProductCategory();
        $this->view->country = Service_Country::getAll();
        //$this->view->orderType=$orderType;
       // $this->view->orderStatus=$orderStatus;
        echo Ec::renderTpl($this->tplDirectory . "orders_index.tpl", 'layout-chosen');
    }

    public function getByJsonAction()
    {
        $result = array('state' => 0, 'message' => 'Fail', 'data' => array());
        $paramId = $this->_request->getParam('paramId', '');
        if (!empty($paramId) && $rows = $this->serviceClass->getByField($paramId, 'order_id')) {
            $rows=$this->serviceClass->getVirtualFields($rows);
            $result = array('state' => 1, 'message' => '', 'data' => $rows);
        }
        die(Zend_Json::encode($result));
    }
    /*订单详情*/
    public function viewAction()
    {   
        $ordersCode = $this->_request->getParam("order_code", "");
        if(empty($ordersCode)){
            die('orderCode can not be empty.');
        }
        $order = $this->serviceClass->getByField($ordersCode, "order_code", "*");
        if(empty($order)){
            die('Order does not exist.');
        }

        $customer_array = Service_Customer::getByField($order['customer_id'], 'customer_id');
        if(empty($customer_array)){
            die('没有对应的客户信息.');
        }
        $order['customer_currency'] = $customer_array['customer_currency'];
        $orderLogService = new Service_OrderLog();
        $orderLog = $orderLogService->getByCondition(array('order_code' => $ordersCode), "*",'','',array('ol_add_time DESC', 'ol_id DESC'));

        $shipOrder = Service_ShipOrder::getByField($ordersCode,'order_code',"*");
        if(isset($shipOrder['tracking_number'])){
            $order['tracking_number'] = $shipOrder['tracking_number'];
        }else{
            $order['tracking_number'] = $order['ref_tracking_number'];
        }


        $userRow['-1']['user_code'] = 'Customer';
        $userRow['0']['user_code'] = 'system';

        foreach ($orderLog as $key => $value) {
           // if ($value['user_id'] != "-1") {
                if (!isset($userRow[$value['user_id']])) {
                    $userRow[$value['user_id']] = Service_User::getByField($value['user_id'], "user_id", array('user_code', 'user_id'));
                }
                $orderLog[$key]['user_code'] = $userRow[$value['user_id']]['user_code'];
            if($value['user_id']<0){
                if($value['account_id']!="0"){
                    $account = Service_Account::getByField($value['account_id'],"account_id","*");
                    $orderLog[$key]['customer_name'] = $account['account_name'];
                }else{
                    $orderLog[$key]['customer_name'] = $order['customer_code'];
                }
            }
           // }
        }

        $this->view->orderCode = $ordersCode;
        $this->view->orderLog = $orderLog;

        $this->view->orderStatus = Common_Status::orderStatus('auto');
        $this->view->trackingStatus = Common_Status::trackingStatus('auto');
        $orderOpNode = new Service_OrderOperationNode();
        $OpNode = $orderOpNode->getByCondition(array('order_code' => $ordersCode), "*");
        foreach ($OpNode as $key => $value) {
           // if ($value['user_id'] !== "-1") {
                if (!isset($userRow[$value['user_id']])) {
                    $userRow[$value['user_id']] = Service_User::getByField($value['user_id'], "user_id", array('user_code', 'user_id'));
                }
                $OpNode[$key]['user_code'] = $userRow[$value['user_id']]['user_code'];
           // }
            $op = Service_OrderOperationType::getByField($value['oot_code'], 'oot_code', '*');
            $OpNode[$key]['oot_name'] = $op['oot_name'];
            $OpNode[$key]['oot_name_en'] = $op['oot_name_en'];
        }
        $this->view->OpNode = $OpNode;
        //$orderProduct = new Service_OrderProduct();
        $parcel_declared_value = 0;
        $orderProduct = Service_OrderProduct::getOrderProducts($ordersCode);
        foreach($orderProduct as $ok=>$ov){
            $p = Service_Product::getByField($ov['product_id'],"product_id","*");
            $orderProduct[$ok]['cn_desc'] = $ov['product_title'];
            $orderProduct[$ok]['en_desc'] = $ov['product_title_en'];
            $orderProduct[$ok]['with_battery'] = $p['with_battery'];
            $parcel_declared_value+= $ov['op_declared_value']*$ov['op_quantity'];
        }
        $order['parcel_declared_value'] = $parcel_declared_value;
        $this->view->product = $orderProduct;
        $warehouse = Service_Warehouse::getByField($order['warehouse_id'], "warehouse_id", array('warehouse_code'));
        //$warehouse['warehouse_code'] = $order['warehouse_code'];
        $order['warehouse_code'] = $warehouse['warehouse_code'];
        if (!isset($userRow[$order['picker_id']])) {
            $userRow[$order['picker_id']] = Service_User::getByField($order['picker_id'], "user_id", array('user_code', 'user_id'));
        }
        $orderAddress = Service_OrderAddressBook::getByField($order['order_code'], 'order_code');
        $orderAddress['country'] = Service_Country::getByField($orderAddress['oab_country_id'], 'country_id');
        $order['picker'] = $userRow[$order['picker_id']]['user_code'];
        if($order['insurance'] == 1 ) {
            $feeItem = Service_OtherFee::getByField($order['insurance_code'],'fee_code');
            $order['insurance_name'] = $feeItem['fee_name'];
        } else {
            $order['insurance_name'] = '';
            $order['insurance_rate'] = '';
        }
        $this->view->order = $order;
        $this->view->orderAddress = $orderAddress;
        //$this->view->countryArr=Common_DataCache::getCountry();

        $shipOrderTracking = Service_ShipOrderTracking::getByCondition(array('order_code'=>$ordersCode),"*",0,0,'sot_add_time desc');
        foreach($shipOrderTracking as $key=>$value){
            $warehouse = Service_Warehouse::getByField($value['warehouse_id'],"warehouse_id","*");
            $shipOrderTracking[$key]['warehouse_code'] = $warehouse['warehouse_code'];
        }
        $this->view->shipOrderTracking = $shipOrderTracking;

        /*$orderTrackingInfo = Service_OrderTrackingInfo::getByCondition(array('order_id'=>$order['order_id']),'*',0,0,'create_time desc');
        $users = Service_User::getAll();
        foreach ($users as $key => $value) {
            $user[$value['user_id']] = $value['user_name'];
        }
        unset($users);
        foreach ($orderTrackingInfo as $key => $value) {
            $orderTrackingInfo[$key]['user_name'] = $user[$value['user_id']] ? $user[$value['user_id']] : $value['user_id'];
        }
        $this->view->orderTrackingInfo = $orderTrackingInfo;*/

        echo Ec::renderTpl($this->tplDirectory . "orders-detail.tpl", 'layout');
    }
    
    public function stopListAction() {
        $orderType=Common_Status::orderType('auto');
        $orderStatus=Common_Status::orderStatus('auto');
        $interceptOrderStatus=Common_Status::interceptOrderStatus('auto');
        $orderUnderReviewStatus=Common_Status::orderUnderReviewStatus('auto');
        if ($this->_request->isPost()) {
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);

            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;

            $return = array(
                "state" => 0,
                "message" => "No Data"
            );

            $params = $this->_request->getParams();

            $condition = $this->serviceClass->getMatchFields($params);

            if($params['searchType']=='orderCode'){
                $condition['order_code']=$params['searchCode'];
            }else{
                $condition['reference_no']=$params['searchCode'];
            }
            $conditionTemp['dateFor'] = isset($params['dateFor'])?$params['dateFor']:'';
            $conditionTemp['dateTo'] = isset($params['dateTo'])?$params['dateTo']:'';
            $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';
            $isSearchDate=false;
            if(!empty($conditionTemp['dateFor'])){
                $isSearchDate=true;
                $conditionTemp['dateFor']=date('Y-m-d H:i:s',strtotime($conditionTemp['dateFor']));
            }
            if(!empty($conditionTemp['dateTo'])){
                $isSearchDate=true;
                $conditionTemp['dateTo']=date('Y-m-d H:i:s',strtotime($conditionTemp['dateTo']));
            }
            if($isSearchDate){
                switch($searchDateType){
                    case 'createDate':
                        $condition['dateFor']= $conditionTemp['dateFor'];
                        $condition['dateTo']= $conditionTemp['dateTo'];
                        break;
                    case 'printTime':
                        $condition['printDateFor']= $conditionTemp['dateFor'];
                        $condition['printDateTo']= $conditionTemp['dateTo'];
                        break;
                    case 'packTime':
                        $condition['packDateFor']= $conditionTemp['dateFor'];
                        $condition['packDateTo']= $conditionTemp['dateTo'];
                        break;
                    case 'shipTime':
                        $condition['shipDateFor']= $conditionTemp['dateFor'];
                        $condition['shipDateTo']= $conditionTemp['dateTo'];
                        break;
                    default:
                        break;
                }
            }
            //产品代码、品类
            $condition['product_barcode']=isset($params['product_barcode'])?$params['product_barcode']:'';
            $condition['product_category']=isset($params['product_category'])?$params['product_category']:'';
            $condition['tracking_status']=isset($params['tracking_status'])?$params['tracking_status']:'';
            unset($params);
            unset($condition['underreview_status']);
            $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');
            $return['total'] = $count;

            if ($count) {
                $showFields=array(
                    'order_code',
                    'customer_code',
                    'warehouse_id',
                    'order_type',
                    'sm_code',
                    'order_status',
                    'problem_status',
                    'underreview_status',
                    'intercept_status',
                    'add_time',
                    'order_pick_type',
                    'reference_no',
                    'picker_id',
                    'remark',
                    'order_id',
                );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);
                $rows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,$showFields, $pageSize, $page, array('orders.order_id desc'));
                $return['data'] = $rows;
                $return['state'] = 1;
                $return['orderType'] = $orderType;
                $return['orderPackType'] = Common_Status::orderPickType('auto');
                $return['warehouse'] = Common_DataCache::getWarehouseSimple();
                $return['orderStatus'] = $orderStatus;
                $return['interceptOrderStatus'] = $interceptOrderStatus;
                $return['orderUnderReviewStatus'] = $orderUnderReviewStatus;
                $return['message'] = "";
            }
            die(Zend_Json::encode($return));
        }
        $this->view->SM=Common_DataCache::getShippingMethodSimple();
        $this->view->SP=Common_DataCache::getProductCategory();
        echo Ec::renderTpl($this->tplDirectory . "stop_list.tpl", 'layout');
    }

    public function stopAction()
    {
        if ($this->_request->isPost()) {
            $response = array('state' => 0, 'message' => '');
            $code = trim($this->_request->getParam('code'));
            $reason = trim($this->_request->getParam('reason'));
            if (empty($code)) {
                $response['message'] = '请输入物流号或者订单号';
                exit(Zend_Json::encode($response));
            }
            if (empty($reason)) {
                $response['message'] = '请填写拦截原因';
                exit(Zend_Json::encode($response));
            }

            $orderRow = Service_Orders::getByField($code, 'order_code');
            if (empty($orderRow)) {
                $aShipOrder = Service_ShipOrder::getByField($code, 'tracking_number');
                if (empty($aShipOrder)) {
                    $response['message'] = '找不到订单，请校对所输入单号是否正确';
                    exit(Zend_Json::encode($response));
                }
                $code = $aShipOrder['order_code'];
            }
            $dispatchProcess = new Service_OrderDispatchProcess();
            $result = $dispatchProcess->stopOrderTransaction($code, $reason);
            exit(Zend_Json::encode($result));
        } else {
            echo Ec::renderTpl($this->tplDirectory . "stop_order.tpl", 'layout');
        }
    }


    /**
     * @desc 截单完成,回退库存
     */
    public function confirmStopAction() {
        if ($this->_request->isPost()) {
            $response = array('state'=>0, 'message'=>'');
            $code = trim($this->_request->getParam('code'));
            if(empty($code)) {
                $response['message'] = '请输入物流号或者订单号';
                exit(Zend_Json::encode($response));
            }
            $dispatchProcess = new Service_OrderDispatchProcess();
            $result = $dispatchProcess->confirmStopOrder($code);
            exit(Zend_Json::encode($result));
        } else {
            echo Ec::renderTpl($this->tplDirectory . "confirm_stop_order.tpl", 'layout');
        }
    }

    /**
     * @desc 截单重新上架
     */
    public function reShelfAction()
    {
        $codes = $this->_request->getParam('orderCodes');
        if (empty($codes)) {
            exit('找不到订单，请选择订单');
        }
        $obj=new Service_OrderDispatchProcess();
        $result=$obj->stopOrderProcess($codes);
        if($result['state']=='1'){
            $this->view->data = $result['data'];
        }
        if(count($result['message'])>0){
            $this->view->error = $result['message'];
        }
        $this->view->date = date('Y-m-d');
        echo Ec::renderTpl($this->tplDirectory . "print_stop_detail.tpl", 'layout');
    }

    /**
     * @desc 标记取消截单
     */
    public function cancelStopAction()
    {
        $result = array('state' => 0, 'error' => array(),'message'=>'');
        $data = array();
        if ($this->_request->isPost()) {
            $response = array('state' => 0, 'message' => '');
            $code = trim($this->_request->getParam('code'));
            $reason = trim($this->_request->getParam('reason'));
            if (empty($code)) {
                $response['message'] = '请输入物流号或者订单号';
                exit(Zend_Json::encode($response));
            }
            if (empty($reason)) {
                $response['message'] = '请填写拦截原因';
                exit(Zend_Json::encode($response));
            }

            $orderRow = Service_Orders::getByField($code, 'order_code');
            if (empty($orderRow)) {
                $aShipOrder = Service_ShipOrder::getByField($code, 'tracking_number');
                if (empty($aShipOrder)) {
                    $response['message'] = '找不到订单，请校对所输入单号是否正确';
                    exit(Zend_Json::encode($response));
                }
                $code = $aShipOrder['order_code'];
            }
            if ($orderRow['warehouse_id']!=$this->warehouse_id) {
                $response['message'] = '在对应仓库，找不到订单，请校对所输入单号是否正确';
                exit(Zend_Json::encode($response));
            }

            $dispatchProcess = new Service_OrderDispatchProcess();
            $result = $dispatchProcess->stopOrderTransaction($code, $reason);
            exit(Zend_Json::encode($result));
        }
        exit(Zend_Json::encode($result));
    }

    /**
     * @desc 编辑收件人信息
     */
    public function editAddressAction()
    {
        $return = array(
            'state' => 0,
            'message' => '',
            'errorMessage' => array('操作失败')
        );

        if ($this->_request->isPost()) {
            $params = $this->_request->getParams();
            //echo '<pre>',print_r($params),'</pre>';exit();
            $deliveryAddr = trim($params['delivery_address']);
            unset($params['delivery_address']);
            //将E14值赋给E15(电话)
            $params['E15'] = $params['E14'];
            $return=Service_OrderAddressBook::edit($params);
            Service_Orders::update(array(
              'delivery_address' => $deliveryAddr,
            ), $params['E1'], 'order_id');
        }
        die(Zend_Json::encode($return));
    }

    public function comitToEpacketAction(){
        //以下是成功的案列
        $orderCode = $this->_request->getParam("order_code","SOE01361308090002");
        $order = Service_Orders::getByField($orderCode,"order_code","*");
        $receivingAddress = Service_OrderAddressBook::getByField($order['order_id'],'order_id',"*");
        $country = Service_Country::getByField($receivingAddress["oab_country_id"],"country_id","*");
        $shipToAddress = array(
            'email' => $receivingAddress['oab_email'],
            'company' => $receivingAddress['oab_company'],
            'contact' => "Andy Liu",
            'phone' => $receivingAddress['oab_cell_phone'],
            'street' => $receivingAddress['oab_street_address1'],
            'city' => $receivingAddress['oab_city'],
            'province' => $receivingAddress['oab_state'],
            'postcode' => $receivingAddress['oab_postcode'],
            'country' => $country['country_name_en'],
            'country_code' => $country['country_code'],
        );
        $shipFromAddress = array(
            'contact' => 'Danny Zhou',
            'company' => 'cargo company',
            'street' => 'JinTian Road No.8086 AnLian A 25 Floor',
            'district' => 'Futian district',
            'city' => 'shenzhen city',
            'province' => 'GUANGDONG',
            'postcode' => '518026',
            'country' => 'CHINA',
            'email' => 'Dannyzhou@cargofe.com.cn',
            'mobile' => '13594268155',
        );
        $returnAddress = array(
            'company' => 'Cargo',     //公司
            'country' => "中国",     //国家 中国
            'province' => '广东',   //省
            'city' => 'shenzhen city',           //城市
            'district' => 'Futian district',   //区
            'street' => 'JinTian Road No.8086 AnLian A 25 Floor',       //街道
            'postcode' => '518026',   //邮编
            'contact' => 'Danny Murphy',     //联系人
        );
        $pickUpAddress = array(
            'email' => 'Dannyzhou@cargofe.com.cn',
            'company' => 'cargo company',
            'country' => '中国',
            'province' => '440000',
            'city' => '440300',
            'district' => '440304',
            'street' => 'JinTian Road',
            'postcode' => '518026',
            'contact' => 'Danny Zhou',
            'mobile' => '0755-5180256',
            'phone' => '13594268155',
        );

        $epacketService = Service_EpacketApi::getInstance();
        $pickUpType = 0;
        $epacketService->setPickUpType($pickUpType);
        //$appUserId = "fzffzw84";
        //$appPassword = "84089ZG8D1NW2Z4BY85ESXGCOFMUZB1KFLC9LIYXPW6OH2PEL7MTK2013154828";沙箱
        $appUserId = "abing.967";
        $appPassword = "467813WCPT3NSGPMROI29DCWSWO3LFGM26IMW5ZPME32WPXMDMNQ6O201310946";//正式

        $epacketService->setHeader($order['order_code'],$appUserId,$appPassword,$appUserId);
        $epacketService->verifyUser();
        //print_r($epacketService);
        $epacketService->setShipFromAddress($shipFromAddress);
        $epacketService->setShipToAddress($shipToAddress);
        $epacketService->setReturnAddress($returnAddress);
        if($pickUpType==0){
            $epacketService->setPickUpAddress($pickUpAddress);
        }

        $orderProduct = Service_OrderProduct::getByCondition(array("order_code"=>$order['order_code']),"*");
        foreach($orderProduct as $k=>$v){
            $product = Service_Product::getByField($v['product_id'],"product_id","*");
            $epacketItem = array(
                'skuid' => $product['product_sku'],
                'weight' => 0.1,
                'customs_title_cn' => $product['product_title'],
                'customs_title_en' => $product['product_title_en'],
                'declared_value' => $product['product_declared_value'],
                'currency_code' => '',
                'ebay_email' => '',
                'ebay_buyer_id' => 'joshuaw7',
                'ebay_item_id' => '181177693791',
                'ebay_item_title' => '',
                'ebay_message' => '',
                'ebay_site_id' => '',
                'ebay_transaction_id' => '1051636790008',
                'note' => '',
                'order_sales_record_number' => '',
                'payment_date' =>'2013-08-07',
                'paypal_email' => '',
                'paypal_message' => '',
                'posted_qty' => $v['op_quantity'],
                'received_amount' =>$v['op_quantity']*$product['product_declared_value'],
                'sales_record_number' => '',
                'sold_date' => '2013-08-05',
                'sold_price' => $product['product_sales_value'],
                'sold_qty' => $v['op_quantity'],
            );
            $epacketService->addItem($epacketItem);
        }

        $result = $epacketService->AddPackage();
        if (strtolower($result->AddAPACShippingPackageResult->Ack) == 'success') {
            $confirmEpacket = $epacketService->confirmPackage(array('track_number' => $result->AddAPACShippingPackageResult->TrackCode));
            if (strtolower($confirmEpacket->ConfirmAPACShippingPackageResult->Ack) == 'success') {
                $TrackDetail = array(
                    'PageSize'=>'0',
                    'TrackCode'=>$result->AddAPACShippingPackageResult->TrackCode,
                );
                $label = $epacketService->getShippingLabel($TrackDetail);

                $file = APPLICATION_PATH.'/../data/pdf/'.$order['order_code'].".pdf";
                echo "file=".$file."</br>";
                if(!file_exists($file)){
                    $fp=fopen($file, "w+");
                }
                file_put_contents($file,$label);
                $ret = array(
                    'ask'=>'1',
                    'message'=>'成功获取pdf标签'
                );
                die(json_encode($ret));
            }else{
                $ret = array(
                    'ask'=>'0',
                    'message'=>'获取pdf标签失败'
                );
                die(json_encode($ret));
            }
        } else {
            $getTrackCodeArray = array(
                'ebay_item_id' => '181177693791',
                'ebay_transaction_id' => '1051636790008',
            );
            $trackNumberResult = $epacketService->getTrackCode($getTrackCodeArray);
            if (strtolower($trackNumberResult->GetAPACShippingTrackCodeResult->Ack) == 'success') {
                $TrackDetail = array(
                    'PageSize'=>1,
                    'track_number'=>$trackNumberResult->GetAPACShippingTrackCodeResult->TrackCode,
                );
                $label = $epacketService->getShippingLabel($TrackDetail);
                $file = APPLICATION_PATH.'/../data/pdf/'.$order['order_code'].".pdf";
                if(!file_exists($file)){
                    $fp=fopen($file, "w+");
                }
                file_put_contents($file,$label);
                $ret = array(
                    'ask'=>'1',
                    'message'=>'成功获取pdf标签'
                );
                die(json_encode($ret));
            }else{
                $ret = array(
                    'ask'=>'0',
                    'message'=>'获取pdf标签失败'
                );
                die(json_encode($ret));
            }
        }
    }

    public function exportAction(){
        error_reporting(E_ERROR);
        set_time_limit(0);
        @ini_set('memory_limit','2048M');
        $path=  realpath(APPLICATION_PATH . '/../data/cache/');
        $tempFileBody =$path .'/'. md5('orderListBody') . time() . rand(0, 99999) . '.xls';
        $tempFileHeader =$path . '/' . md5('orderListHeader') . time() . rand(0, 99999) . '.xls';
        $tempCombineFile=$path .'/'. md5('orderList') . time() . rand(0, 99999) . '.xls';
        $downLoadFilename = "orderListHorizontalall".date('YmdHis').'.xls';
        $fileBody=new Common_ExportExcelByTable($tempFileBody);
        $params = $this->_request->getParams();
        $condition = array();
        if($params['exportType'] == '1'){
            $condition['order_id_array'] = $this->_request->getParam('orderId','');
        }else{
            $condition = $this->serviceClass->getNewMatchFields($params);
            if( is_array( $condition['sm_code'] ) && count( $condition['sm_code'] ) == 1 && $condition['sm_code'][0] === '' ) {
                unset($condition['sm_code']);
            }
            if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
                unset($condition['oab_country_id']);
            }
            if($params['searchType']=='orderCode'){
                $condition['order_code']=$params['searchCode'];
            }else{
                $condition['reference_no']=$params['searchCode'];
            }
            $time = Common_Common::getStartAndEndTime($params['dateFor'],$params['dateTo']);
            $conditionTemp['dateFor'] = $time[0];
            $conditionTemp['dateTo'] = $time[1];
            unset($condition['dateFor']);
            unset($condition['dateTo']);
            $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';
            switch($searchDateType){
                case 'createDate':
                    $condition['dateFor']= $conditionTemp['dateFor'];
                    $condition['dateTo']= $conditionTemp['dateTo'];
                    break;
                case 'printTime':
                    $condition['printDateFor']= $conditionTemp['dateFor'];
                    $condition['printDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'packTime':
                    $condition['packDateFor']= $conditionTemp['dateFor'];
                    $condition['packDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'ship_Time':
                    $condition['shipTimekDateFor']= $conditionTemp['dateFor'];
                    $condition['shipTimeDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'shipmentTime':
                    $condition['shipmentDateFor']= $conditionTemp['dateFor'];
                    $condition['shipmentDateTo']= $conditionTemp['dateTo'];
                    break;
                default:
                    break;
            }
            $condition['oab_type'] = '0';
            if($condition['tracking_number']){
                    $shipOrder = Service_ShipOrder::getByField($condition['tracking_number'],'tracking_number');
                    if(!empty($shipOrder)){
                        $condition['order_id'] = $shipOrder['order_id'];
                    }else{
                        $condition['order_id'] = 'none';
                    }
            }

            unset($params);
        }
        //头部end
        $index = 1;
        $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');

        $maxCountProduct = 1;
        $countryList=array();
        $feeItem = array();
        $limitation = Service_ShippingMethod::getDeliveryLimitation();//时效
        if($count>0){
            $statusArr = Common_Status::orderStatus();
            $pageSize = 5000;
            $totalPage = ceil($count/$pageSize);
            for($page=1;$page<=$totalPage;$page++){
                 $productList=array();
                $csvData = array();
                $rows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,'order_code', $pageSize, $page, array('orders.order_id desc'));
                foreach ($rows as $key => $val) {
                    $orderRow = Service_Orders::getByField($val['order_code'],"order_code","*");
                    //订单模式
                    if($orderRow['order_mode_type']=="1"){
                        $csvData[$index][0]  = '集货模式';
                    }else{
                        $csvData[$index][0]  = '备货模式';
                    }
                    //客户代码
                    $customerRow = Service_Customer::getByField($orderRow['customer_code'],"customer_code","customer_company_name");
                    //服务商单号
                    $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code",array("tracking_number",'so_vol_weight','so_length','so_width','so_height','so_weight','so_fee_weight','so_piece'));
                    $trackingNumber = isset($shipOrder['tracking_number'])?$shipOrder['tracking_number']:"";
                    //仓库
                    $warehouse = Common_DataCache::getWarehouse(0,$orderRow['warehouse_id']);
                    //收件人国家
                    $osa = Service_OrderAddressBook::getByCondition(array('order_code'=>$orderRow['order_code'],'oab_type'=>'0'),"*",1,1);
                    $orderSendAddress = $osa[0];

                    if(!$countryList[$orderSendAddress['oab_country_id']] && $orderSendAddress['oab_country_id']!=''){
                        $countryList[$orderSendAddress['oab_country_id']] = Service_Country::getByField($orderSendAddress['oab_country_id'],"country_id","*");
                    }
                    $country= $countryList[$orderSendAddress['oab_country_id']];
                    // 提交时间
                    $opt = Service_OrderOperationTime::getByField($orderRow['order_code'],'order_code',array('submit_time','ship_time','creater_id','shipment_time'));
                    $csvData[$index][1]  = $statusArr[$orderRow['order_status']];
                    $csvData[$index][2]  = $orderRow['order_code'];
                    $csvData[$index][3] = $customerRow['customer_company_name'];

                    if($orderRow['change_order']=="1"){
                        $csvData[$index][4]  = '是';
                    }else{
                        $csvData[$index][4]  = '否';
                    }
                    $csvData[$index][5]  = $trackingNumber;
                    $csvData[$index][6]  = $warehouse['warehouse_code'];


                    if($orderRow['order_type']=="2"){
                        $csvData[$index][7]  = '退货';
                    }elseif($orderRow['order_type']=="1"){
                        $csvData[$index][7]  = '转仓';
                    }else{
                        $csvData[$index][7]  = '普通';
                    }

                    $csvData[$index][8]  =   $country['country_name'];
                    $csvData[$index][9]  =   $country['country_name_en'];
                    $csvData[$index][10]  =   $country['country_code'];
                    $csvData[$index][11]  =   $opt['submit_time'];

                    $csvData[$index][14]  =   $orderRow['sm_code'];
                    $csvData[$index][15]  =   $orderRow['reference_no'];
                    $csvData[$index][16]  =   $orderSendAddress['oab_firstname'];

                    $csvData[$index][17]  =   $orderSendAddress['oab_company'];
                    $csvData[$index][18]  =   $orderSendAddress['oab_state'];
                    $csvData[$index][19]  =   $orderSendAddress['oab_city'];
                    $csvData[$index][20]  =   $orderSendAddress['oab_postcode'];
                    $csvData[$index][21]  =   $orderSendAddress['oab_street_address1'];
                    $csvData[$index][22]  =   $orderSendAddress['oab_street_address2'];
                    $csvData[$index][23]  =   $orderSendAddress['oab_phone'];
                    $csvData[$index][24]  =   $orderSendAddress['oab_email'];
                    $csvData[$index][25]  =   $orderRow['currency_code'];
                    //aa
                    $csvData[$index][26]  =   $orderRow['charge'];
                    $csvData[$index][27]  =   $orderRow['delivery_address'];
                    $csvData[$index][28]  =   $opt['shipment_time'];

                    //体积重
                    $volWeight = 0;
                    $shipOrderDetail = Service_ShipOrderDetail::getByCondition(array('order_code'=>$orderRow['order_code']),array('sod_vol_weight','sod_weight','sod_bill_weight','sod_length','sod_width','sod_height'));
                    $smRow = Service_ShippingMethod::getByField($orderRow['sm_code'],"sm_code",array('sm_is_volume','sm_vol_rate','sm_code'));
                    $LWH = "";
                    //总件数
                    $Total = $shipOrder['so_piece'];
                    // HKDHL的长宽高取ship_order_detail表的长宽高，体积重根据长宽高另外计算
                    // 非HKDHL得长宽高、体积重取ship_order表的长宽高、体积重
                    if ('1' == $smRow['sm_is_volume'] && !empty($shipOrderDetail)) {
                      foreach($shipOrderDetail as $sodK=>$sodV){
                        //$Total ++;
                        if($smRow['sm_vol_rate']!="0"&&$smRow['sm_vol_rate']!="")
                        $volWeight = $volWeight +$sodV['sod_length']*$sodV['sod_width']*$sodV['sod_height']/$smRow['sm_vol_rate'];
                        if($sodK=="0"){
                            $LWH.=$sodV["sod_length"]."*".$sodV["sod_width"]."*".$sodV["sod_height"];
                        }else{
                            $LWH.="/".$sodV["sod_length"]."*".$sodV["sod_width"]."*".$sodV["sod_height"];
                        }
                      }
                    } elseif (!empty($shipOrder)) {
                      $volWeight = $shipOrder['so_vol_weight'];
                      $LWH = $shipOrder['so_length'] . '*' . $shipOrder['so_width'] . '*' . $shipOrder['so_height'];
                    }
                    $shipWeight = isset($shipOrder['so_weight'])?$shipOrder['so_weight']:"";
                    $feeWeight = isset($shipOrder['so_fee_weight'])?$shipOrder['so_fee_weight']:"";
                    //ad
                    if ($orderRow['sm_code']=='HKUPS-KW') {
                        $volWeight='';
                        $shipWeight='';
                        $feeWeight='';
                        foreach ($shipOrderDetail as $key => $value) {
                            $volWeight.=$value['sod_vol_weight'].'/';
                            $shipWeight.=$value['sod_weight'].'/';
                            $feeWeight.=$value['sod_bill_weight'].'/';
                        }
                        $volWeight=rtrim($volWeight,'/');
                        $shipWeight=rtrim($shipWeight,'/');
                        $feeWeight=rtrim($feeWeight,'/');
                    }
                    $csvData[$index][29]  =   $volWeight;
                    $csvData[$index][30]  =   $LWH;
                    $csvData[$index][31]  =   $shipWeight;
                    $csvData[$index][32]  =   $feeWeight;
                    
                    
                   /* if($smRow['sm_is_volume']!="1") {
                        $Total = 1;
                    }else{
                        $sodList = Service_ShipOrderDetail::getByCondition(array('order_code'=>$orderRow['order_code']),array('sub_tracking_number'));
                        if($smRow['sm_code']=="HKDHL"){
                            $Total = count($sodList);
                        }else{
                            foreach($sodList as $sodRow){
                                if($sodRow['sub_tracking_number']!="") $Total++;
                            }
                        }
                    }*/
                    //件数
                    // $sodList=Service_ShipOrder::getByField($orderRow['order_code'],'order_code');
                    // $Total=$sodList['so_piece'];

                    //if($Total<1) $Total = 1;
                    $csvData[$index][33]  =   $Total;
                    $csvData[$index][35]  =   $orderRow['remark'];


                    $creater = "";
                    if(isset($opt['creater_id'])&&$opt['creater_id']!="0"){
                        $account = Service_Account::getByField($opt['creater_id'],'account_id',"account_name");
                        if(empty($account)){
                            $creater = $orderRow['customer_code'];
                        }else{
                            $creater = $account['account_name'];
                        }
                    }else{
                        $creater = $orderRow['customer_code'];
                    }
                    $csvData[$index][36]  =   $creater;
                    if($orderRow['is_fba']=="1"){
                        $csvData[$index][37]  = '是';
                    }else{
                        $csvData[$index][37]  = '否';
                    }
                    //保险
                    $csvData[$index][38]  = $orderRow['insurance'] == 1 ? '是':'否';
                    if( !isset($feeItem[$orderRow['insurance_code']]) && !empty($orderRow['insurance_code'])) {
                        $feeItemRow = Service_OtherFee::getByField( $orderRow['insurance_code'],'fee_code' );
                        $feeItem[$orderRow['insurance_code']] = $feeItemRow;
                    }
                    $opTime = Service_OrderOperationTime::getByField( $orderRow['order_code'], 'order_code');
                    $deliveryDate = $opTime['shipment_time'] && $opTime['shipment_time'] != '0000-00-00 00:00:00' ? $opTime['shipment_time'] : '';
                    $limit = 0;
                    if( !isset($limitation[ $orderRow['sm_code'] ][ $country['country_area'] ])) {
                        $deliveryDate = '';
                    } else {
                        $limit = $limitation[ $orderRow['sm_code'] ][ $country['country_area'] ];
                    }
                    $csvData[$index][39]  = $orderRow['insurance'] == 1 ? $feeItem[$orderRow['insurance_code']]['fee_name']:'';
                    $csvData[$index][40]  = $orderRow['insurance'] == 1 && $deliveryDate != '' ? date('Y-m-d',strtotime('+'.($limit+1).' day '.$deliveryDate )) : '';
                    $csvData[$index][41]  = $orderRow['is_remote_city'] ?'是':'否';
                    $csvData[$index][42]  = $orderRow['is_fba_tax'] ?'预付':'到付';

                    $orderProduct = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");

                    $totalProduct = 0;
                    $op_declared_value = 0;
                    $op_purpose_declared_value = 0;
                    $columnCount = 43;

                    $maxCountProductTemp = count($orderProduct);

                    if($maxCountProductTemp > $maxCountProduct){
                        $maxCountProduct = $maxCountProductTemp;
                    }
                    foreach($orderProduct as $k=>$v){
                        $totalProduct +=$v['op_quantity'];
                        $op_declared_value +=$v['op_quantity']*$v['op_declared_value'];
                        $op_purpose_declared_value +=$v['op_quantity']*$v['op_purpose_declared_value'];
                        if(!$productList[$v['product_id']]){
                            @$productList[$v['product_id']]=Service_Product::getByField($v['product_id'],"product_id",array('product_title','product_sku','hs_goods_name','goods_id','hs_code','with_battery','is_scan_imei'));
                        }
                        $p = $productList[$v['product_id']];
                        $pickingDetail = Service_PickingDetail::getByCondition(array('order_code'=>$v['order_code'],'product_id'=>$v['product_id']),"ib_id",1,1);

                        $ib_fifo_time = "";
                        if(!empty($pickingDetail)){
                            $inventoryBatchLog = Service_InventoryBatchLog::getByCondition(array('ib_id'=>$pickingDetail[0]['ib_id'],'application_code'=>'Putaway','ibl_quantity_before'=>'0'),"*",1,1,'ibl_id asc');
                            if(!empty($inventoryBatchLog))
                            $ib_fifo_time = $inventoryBatchLog[0]['ibl_add_time'];
                        }

                        $csvData[$index][$columnCount++]  =   $p['product_title'];
                        $csvData[$index][$columnCount++]  =   $p['product_sku'];
                        $csvData[$index][$columnCount++]  =   $ib_fifo_time;
                        $csvData[$index][$columnCount++]  =   $v['product_title_en'];
                        if($p['is_scan_imei']=="1"){
                            $csvData[$index][$columnCount++]  =   "是";
                        }else{
                            $csvData[$index][$columnCount++]  =   "否";
                        }
                        $csvData[$index][$columnCount++]  =   $v['op_declared_value'];

                        $csvData[$index][$columnCount++]  =   $v['op_purpose_declared_value'];
                        $csvData[$index][$columnCount++]  =   $v['op_quantity'];
                        $csvData[$index][$columnCount++]  =   $p['hs_goods_name'];
                        $csvData[$index][$columnCount++]  =   $p['goods_id'];
                        $csvData[$index][$columnCount++]  =   $p['hs_code'];
                        $csvData[$index][$columnCount++]  =   $p['with_battery']==1?'是':'否';
                    }
                    $csvData[$index][12]  =   $op_declared_value;
                    $csvData[$index][13]  =   $op_purpose_declared_value;
                    $csvData[$index][34]  =   $totalProduct;
                    ksort($csvData[$index]);
                    $index++;
                }
                foreach($csvData as $cRow){
                    $insertRow="<tr style='border:1px solid #ddd;'>";
                    foreach($cRow as $col=>$k){
                        $style=$this->checkIsNumber($col);
                          $insertRow.='<td'.$style.'>'.$k.'</td>';
                    }
                    $insertRow.='</tr>';
                    $fileBody->writeString($insertRow);
                }
                /*
                $exportIndex = $exportObj->setRowsValue($csvData , $exportIndex , function($index)
                {
                    $keys = array(2,15,5,20,23);
                    if(in_array($index , $keys)){
                        return Common_ExportForExcel::TYPE_STRING2;
                    }
                    if(($index - 36) > 0){
                        $key = ($index - 36) % 10;
                        $keys = array(2,9,0);
                        if(in_array($key , $keys)){
                            return Common_ExportForExcel::TYPE_STRING2;
                        }
                    }

                    $keys = array(12,13,26,29,31,32,33,34);
                    if(in_array($index , $keys)){
                        return Common_ExportForExcel::TYPE_NUMERIC;
                    }
                    return false;
                });
                 * */
                $csvData = array();
            }
           
        }
        $fileBody->writeString('</table></body></html>');
        unset($fileBody);
        $excelTitle[0] =   array(
        '订单模式','订单状态','订单号','客户代码','是否换单','服务商单号','仓库','订单类型',
        '收件人国家','收件人国家（英文名称）','国家简码','提交时间','国内海关总申报价值',
        '目的海关申报总价','运输方式','交易订单号','收件人姓名','收件人公司名','收件人州\区域',
        '收件人城市','收件人邮编','收件人地址1','收件人地址2','收件人电话','收件人电子邮件',
        '成交币种','成交总价','派送地址','出货时间','体积重','长*宽*高','出货重量','计费重量',
        '件数','产品总数','备注','创建人','是否FBA','购买保险','投保类型','承诺妥投日期','是否偏远','目的地关税');

        for ($i=1; $i <= $maxCountProduct; $i++) {
            $excelTitle[0][]   =   '产品名称'. $i;
            $excelTitle[0][]   =   'sku'. $i;
            $excelTitle[0][]   =   '入库时间'. $i;
            $excelTitle[0][]   =   '英文品名'. $i;
            $excelTitle[0][]   =   '是否扫描IMEI码'. $i;
            $excelTitle[0][]   =   '申报单价'. $i .'(USD)';
            $excelTitle[0][]   =   '目的海关申报单价'. $i . '(USD)';
            $excelTitle[0][]   =   '数量'. $i;
            $excelTitle[0][]   =   '海关品名'. $i;
            $excelTitle[0][]   =   '料件号'. $i;
            $excelTitle[0][]   =   '海关编码'. $i;
            $excelTitle[0][]   =   '是否带电池'. $i;
        }
       $fileHeader=new Common_ExportExcelByTable($tempFileHeader);
       $header="<html><head><style type='text/css'>table td{width:80px;height:20px;vertical-align:top}</style></head><body><table><tr style='border:1px solid #ddd;'>";
        foreach($excelTitle[0] as $ft=>$tiltle){
             $header.="<td >".$tiltle."</td>";
        }
        $header.='</tr>';
        $fileHeader->writeString($header);
        unset($fileBody,$fileHeader);
        $res = Common_ExportExcelByTable::combineFile2(array($tempFileHeader,$tempFileBody), $tempCombineFile);
        if(!$res){

        }
        $dowLoadFile=new Common_ExportExcelByTable($tempCombineFile,'r');
        $dowLoadFile->downLoadExcelFile($downLoadFilename);
        unset($fileHeader,$dowLoadFile);
        unlink($tempCombineFile);
        unlink($tempFileBody);
        //unlink($fileHeader);
        die();
    }
    private function checkIsNumber($index)
                {
                   
                    $keys = array(2,11,14,15,5,20,23,28);
                    if(in_array($index , $keys)){
                        return ' style="vnd.ms-excel.numberformat:@"';
                    }
                    if(($index - 36) > 0){
                        $key = ($index - 36) % 10;
                        $keys = array(2,3,9,0);
                        if(in_array($key , $keys)){
                           return ' style="vnd.ms-excel.numberformat:@"';
                        }
                    }

                    $keys = array(12,13,26,29,31,32);
                    if(in_array($index , $keys)){
                        return ' style="vnd.ms-excel.numberformat:#,##0.00"';
                    }
                    return '';
                }
    public function exportEfileAction(){
        set_time_limit(0);
        $orderIdArr = $this->_request->getParam('orderId','');
        $exportType = $this->_request->getParam("exportType","");

        if($exportType=="1"){
            $statusArr = Common_Status::orderStatus();
            $index = 2;
            $maxCountProduct = 1;
            foreach($orderIdArr as $val){
                if($val=="") continue;
                $orderRow = Service_Orders::getByField($val,"order_id","*");
                $orderReceiptAddress = Service_OrderAddressBook::getByCondition(array("order_code"=>$orderRow['order_code'],'oab_type'=>'0'),"*");
                $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
                $country = Service_Country::getByField($orderReceiptAddress[0]['oab_country_id'],'country_id',"*");
                $ParcelContent = "";
                $orderProduct = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                foreach($orderProduct as $opk=>$opv){
                    /*$product = Service_Product::getByField($opv['product_id'],"product_id","*");
                    if($product['product_title_en']!=""){
                        $ParcelContent.=" ".trim($product['product_title_en']);
                    }*/
                    $ParcelContent.=" ".trim($opv['product_title_en']);
                }
                echo "520678|".$shipOrder['tracking_number']."|".$orderReceiptAddress[0]['oab_firstname']."|".$orderReceiptAddress[0]['oab_street_address1']."|||".$orderReceiptAddress[0]['oab_city']."|".$orderReceiptAddress[0]['oab_state']."|".$orderReceiptAddress[0]['oab_postcode']."|".$orderReceiptAddress[0]['oab_cell_phone']."|".$orderReceiptAddress[0]['oab_email']."|".$country['country_code']."|".$country['country_name_en']."|CN|".$ParcelContent."|".$orderRow['parcel_declared_value']."|".$orderRow['grossWt']."||||||||||".$orderRow['currency_code']."||||PKW|||||||".$shipOrder['tracking_number']."|||\n";
            }
        }else{
            $params = $this->_request->getParams();
            $condition = $this->serviceClass->getNewMatchFields($params);
            if( is_array( $condition['sm_code'] ) && count( $condition['sm_code'] ) == 1 && $condition['sm_code'][0] === '' ) {
                unset($condition['sm_code']);
            }
            if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
                unset($condition['oab_country_id']);
            }
            if($params['searchType']=='orderCode'){
                $condition['order_code']=$params['searchCode'];
            }else{
                $condition['reference_no']=$params['searchCode'];
            }
            $conditionTemp['dateFor'] = isset($params['dateFor'])?$params['dateFor']:'';
            $conditionTemp['dateTo'] = isset($params['dateTo'])?$params['dateTo']:'';
            $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';
            $isSearchDate=false;
            if(!empty($conditionTemp['dateFor'])){
                $isSearchDate=true;
                $conditionTemp['dateFor']=date('Y-m-d H:i:s',strtotime($conditionTemp['dateFor']));
            }
            if(!empty($conditionTemp['dateTo'])){
                $isSearchDate=true;
                $conditionTemp['dateTo']=date('Y-m-d H:i:s',strtotime($conditionTemp['dateTo']));
            }
            if($isSearchDate){
                switch($searchDateType){
                    case 'createDate':
                        $condition['dateFor']= $conditionTemp['dateFor'];
                        $condition['dateTo']= $conditionTemp['dateTo'];
                        break;
                    case 'printTime':
                        $condition['printDateFor']= $conditionTemp['dateFor'];
                        $condition['printDateTo']= $conditionTemp['dateTo'];
                        break;
                    case 'packTime':
                        $condition['packDateFor']= $conditionTemp['dateFor'];
                        $condition['packDateTo']= $conditionTemp['dateTo'];
                        break;
                    case 'shipTime':
                        $condition['shipDateFor']= $conditionTemp['dateFor'];
                        $condition['shipDateTo']= $conditionTemp['dateTo'];
                        break;
                    default:
                        break;
                }
            }
            //产品代码、品类
            $condition['oab_type'] = '0';
            unset($params);

            $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');
            if($count>0){
                $pageSize = 20;
                $totalPage = ceil($count/$pageSize);
                for($page=1;$page<=$totalPage;$page++){
                    $rows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,'*', $pageSize, $page, array('orders.order_id desc'));
                    foreach($rows as $key=>$val){
                        $orderRow = Service_Orders::getByField($val['order_code'],"order_code","*");
                        $orderReceiptAddress = Service_OrderAddressBook::getByCondition(array("order_code"=>$orderRow['order_code'],'oab_type'=>'0'),"*");
                        $shipOrder = Service_ShipOrder::getByField($val['order_code'],"order_code","*");
                        $country = Service_Country::getByField($orderReceiptAddress[0]['oab_country_id'],'country_id',"*");
                        $ParcelContent = "";
                        $orderProduct = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                        foreach($orderProduct as $opk=>$opv){
                            /*$product = Service_Product::getByField($opv['product_id'],"product_id","*");
                            if($product['product_title_en']!=""){
                                $ParcelContent.=" ".trim($opv['product_title_en']);
                            }*/
                            $ParcelContent.=" ".trim($opv['product_title_en']);
                        }
                        echo "520678|".$shipOrder['tracking_number']."|".$orderReceiptAddress[0]['oab_firstname']."|".$orderReceiptAddress[0]['oab_street_address1']."|||".$orderReceiptAddress[0]['oab_city']."|".$orderReceiptAddress[0]['oab_state']."|".$orderReceiptAddress[0]['oab_postcode']."|".$orderReceiptAddress[0]['oab_cell_phone']."|".$orderReceiptAddress[0]['oab_email']."|".$country['country_code']."|".$country['country_name_en']."|CN|".$ParcelContent."|".$orderRow['parcel_declared_value']."|".$orderRow['grossWt']."||||||||||".$orderRow['currency_code']."||||PKW|||||||".$shipOrder['tracking_number']."|||\n";
                    }
                }
            }
        }

        $file_name  =   "520678_".date("Ymd").".txt";
        Header("Content-type:application/octet-stream");
        Header("Accept-Ranges:bytes");
        Header("Content-Disposition:attachment;filename=".$file_name);
        exit();
    }

    public function eubOrderListAction(){
        $orderType=Common_Status::orderType('auto');
        $orderStatus=Common_Status::orderStatus('auto');
        if ($this->_request->isPost()) {
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);

            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;

            $return = array(
                "state" => 0,
                "message" => "No Data"
            );
            $is_ref_tracking_number = $this->_request->getParam("is_ref_tracking_number","");
            $condition = array(
                'is_ref_tracking_number'=>$is_ref_tracking_number
            );
            $count = Service_Orders::getEubOrderByCondition($condition,"count(*)");
            $return['total'] = $count;
            if($count){
                $showFields=array(
                    'order_code',
                    'customer_code',
                    'warehouse_id',
                    'order_type',
                    'sm_code',
                    'order_status',
                    'problem_status',
                    'underreview_status',
                    'intercept_status',
                    'add_time',
                    'order_pick_type',
                    'reference_no',
                    'picker_id',
                    'remark',
                    'order_id',
                    'order_mode_type',
                    'ref_tracking_number',
                );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);
                $row = Service_Orders::getEubOrderByCondition($condition,$showFields,$pageSize,$page,array('orders.order_id desc'));
                $return['data'] = $row;
                $return['state'] = 1;
                $return['warehouse'] = Common_DataCache::getWarehouseSimple();
                $return['orderType'] = $orderType;
                $return['orderStatus'] = $orderStatus;
                $return['orderPackType'] = Common_Status::orderPickType('auto');
            }
            die(Zend_Json::encode($return));
        }
        echo Ec::renderTpl($this->tplDirectory . "eub-order-list.tpl", 'layout');
    }
    /*港邮订单导出colin*/
    public function hkorderSelectedExportAction(){
        set_time_limit(600);
        $fileName = "hkorder".date('YmdHis').'.txt';
        $orderIdArr = $this->_request->getParam('orderId','');
        $exportType = $this->_request->getParam('exportType','');

        $rows = array();
        foreach($orderIdArr as $order_id){
            if($order_id=="") {continue;}
            $orderRow = Service_Orders::getByField($order_id,"order_id");
            if(empty($orderRow)){continue;}
            if($orderRow['sm_code']!='HKPP' && $orderRow['sm_code']!='HKPG'){
                echo "只有运输方式为HKPG或HKPP的时候才支持此操作.";
                exit;
            }

            $row = $this->createhkOrderDataAction($orderRow['order_code']);
            if($row!=-1){
                $rows[] = $row;
            }
        }
        header("Content-Type: application/octet-stream");
        if (preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT']) ) {
            header('Content-Disposition:  attachment; filename="' . $fileName . '"');
        } elseif (preg_match("/Firefox/", $_SERVER['HTTP_USER_AGENT'])) {
            header('Content-Disposition: attachment; filename*="utf8' .  $fileName . '"');
        } else {
            header('Content-Disposition: attachment; filename="' .  $fileName . '"');
        }
        $str = "V1.2\r\n";
        $title_fields = $rows[0];
        foreach($title_fields as $title_field){
            $str.=Common_Common::fix_width_output($title_field['name'],Common_Common::char_display_width($title_field['name']))."\t";
        }
        foreach($rows as $fields){
            $str.="\r\n";
            foreach($fields as $field2){
                $row_str =Common_Common::fix_width_output($field2['value'],Common_Common::char_display_width($field2['name']))."\t";
                $str .= str_replace(array("\r\n", "\r", "\n"), "", $row_str);
            }
        }
        echo $str;
        exit;
    }


    /*港邮订单导出colin*/
    public function hkorderAllExportAction(){
            set_time_limit(600);
            $fileName = "hkorder".date('YmdHis').'.txt';
            $params = $this->_request->getParams();

            $condition = $this->serviceClass->getNewMatchFields($params);
            if( is_array( $condition['sm_code'] ) ) {
                $diff = array_diff( $condition['sm_code'], array('HKPP','HKPG') );
                if( $diff ) {
                    echo "只有运输方式为HKPG或HKPP的时候才支持此操作.";
                    exit;
                }
            } else if($condition['sm_code']!='HKPP' && $condition['sm_code']!='HKPG'){
                echo "只有运输方式为HKPG或HKPP的时候才支持此操作.";
                exit;
            }
            if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
                unset($condition['oab_country_id']);
            }
            if($params['searchType']=='orderCode'){
                $condition['order_code']=$params['searchCode'];
            }else{
                $condition['reference_no']=$params['searchCode'];
            }
            $time = Common_Common::getStartAndEndTime($params['dateFor'],$params['dateTo']);
            $conditionTemp['dateFor'] = $time[0];
            $conditionTemp['dateTo'] = $time[1];
            unset($condition['dateFor']);
            unset($condition['dateTo']);
            $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';
            switch($searchDateType){
                case 'createDate':
                    $condition['dateFor']= $conditionTemp['dateFor'];
                    $condition['dateTo']= $conditionTemp['dateTo'];
                    break;
                case 'printTime':
                    $condition['printDateFor']= $conditionTemp['dateFor'];
                    $condition['printDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'packTime':
                    $condition['packDateFor']= $conditionTemp['dateFor'];
                    $condition['packDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'shipTime':
                    $condition['shipDateFor']= $conditionTemp['dateFor'];
                    $condition['shipDateTo']= $conditionTemp['dateTo'];
                    break;
                default:
                    break;
            }
            //产品代码、品类
            $condition['oab_type'] = '0';
            unset($params);
            $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');
            $rows = array();
            if($count>0){
                $statusArr = Common_Status::orderStatus();
                $index = 2;
                $maxCountProduct = 1;
                $pageSize = 20;
                $totalPage = ceil($count/$pageSize);
                for($page=1;$page<=$totalPage;$page++){
                    $datarows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,'*', $pageSize, $page, array('orders.order_id desc'));
                    foreach($datarows as $key=>$val){
                        $orderRow = Service_Orders::getByField($val['order_code'],"order_code","*");
                        if(empty($orderRow)){continue;}

                        $row = $this->createhkOrderDataAction($orderRow['order_code']);
                        if($row!=-1){
                            $rows[] = $row;
                        }

                    }
                }
            }

        if(empty($rows)){
            echo "没有找到数据";
            exit;
        }

        header("Content-Type: application/octet-stream");
        if (preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT']) ) {
            header('Content-Disposition:  attachment; filename="' . $fileName . '"');
        } elseif (preg_match("/Firefox/", $_SERVER['HTTP_USER_AGENT'])) {
            header('Content-Disposition: attachment; filename*="utf8' .  $fileName . '"');
        } else {
            header('Content-Disposition: attachment; filename="' .  $fileName . '"');
        }

        $str = "V1.2\r\n";
        $title_fields = $rows[0];
        foreach($title_fields as $title_field){

            $str.=Common_Common::fix_width_output($title_field['name'],Common_Common::char_display_width($title_field['name']))."\t";

        }
        $str.=str_repeat(" ",100);

        foreach($rows as $fields){
            $str.="\r\n";
            foreach($fields as $field2){
                $row_str =Common_Common::fix_width_output($field2['value'],Common_Common::char_display_width($field2['name']))."\t";
                $row_str = str_replace(array("\r\n", "\r", "\n"), "", $row_str);
                $str .= $row_str;
            }
        }
        echo $str;
        exit;
    }

    /*荷兰小包*/
    public function plorderSelectedExportAction(){
        set_time_limit(0);
        $orderIdArr = $this->_request->getParam('orderId','');
        $exportType = $this->_request->getParam('exportType','');

        require_once APPLICATION_PATH . '/../libs/PHPExcel.php';
        require_once APPLICATION_PATH . '/../libs/PHPExcel/IOFactory.php';
        $table = new PHPExcel();
        $table->getDefaultStyle()->getFont()->setName('宋体');
        $table->setActiveSheetIndex(0);
        $table->setActiveSheetIndex(0)->setTitle("荷兰小包订单");
        $objActSheet=$table->setActiveSheetIndex(0);

        $objActSheet->getColumnDimension('A')->setWidth(15);
        $objActSheet->getColumnDimension('B')->setWidth(20);
        $objActSheet->getColumnDimension('C')->setWidth(20);
        $objActSheet->getColumnDimension('D')->setWidth(20);
        $objActSheet->getColumnDimension('E')->setWidth(15);
        $objActSheet->getColumnDimension('F')->setWidth(15);
        $objActSheet->getColumnDimension('G')->setWidth(15);
        $objActSheet->getColumnDimension('H')->setWidth(15);
        $objActSheet->getColumnDimension('I')->setWidth(15);
        $objActSheet->getColumnDimension('J')->setWidth(15);

        $objActSheet->setCellValue('A1','出货时间');
        $objActSheet->setCellValue('B1','订单号');
        $objActSheet->setCellValue('C1','服务商单号');
        $objActSheet->setCellValue('D1','收件人姓名');
        $objActSheet->setCellValue('E1','收件人地址1');
        $objActSheet->setCellValue('F1','收件人地址2');
        $objActSheet->setCellValue('G1','收件人城市');
        $objActSheet->setCellValue('H1','收件人邮编');
        $objActSheet->setCellValue("I1","目的国家二字码");
        $objActSheet->setCellValue("J1","总重量(kg)");

        $index = 2;
        $max = 1;
        foreach($orderIdArr as $order_id){
            $orderRow = Service_Orders::getByField($order_id,"order_id","*");
            $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
            $orderOperationTime = Service_OrderOperationTime::getByField($order_id,"order_id","*");
            $orderAddress = Service_OrderAddressBook::getByField($order_id,"order_id","*");
            $country = Service_Country::getByField($orderAddress['oab_country_id'],"country_id","*");

            $totalWeight = isset($shipOrder['so_weight'])?$shipOrder['so_weight']:0;

            $objActSheet->setCellValue("A".$index,$orderOperationTime['ship_time']);
            $objActSheet->setCellValue('B'.$index,$orderRow['order_code']);
            $objActSheet->setCellValueExplicit("C".$index,$shipOrder['tracking_number'],PHPExcel_Cell_DataType::TYPE_STRING);
            $objActSheet->setCellValue("D".$index,$orderAddress['oab_firstname']);
            $objActSheet->setCellValue("E".$index,$orderAddress['oab_street_address1']);
            $objActSheet->setCellValue("F".$index,$orderAddress['oab_street_address2']);
            $objActSheet->setCellValue("G".$index,$orderAddress['oab_city']);
            $objActSheet->setCellValueExplicit("H".$index,$orderAddress['oab_postcode'],PHPExcel_Cell_DataType::TYPE_STRING);
            $objActSheet->setCellValue("I".$index,$country['country_code']);
            $objActSheet->setCellValue("J".$index,$totalWeight);

            $orderProduct = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
            $productCol1 = 75;
            $productCol2 = 65;
            $productCol3 = 65;
            $max = count($orderProduct)>$max?count($orderProduct):$max;
            foreach($orderProduct as $op){
                $product = Service_Product::getByField($op['product_id'],"product_id","*");
                if($productCol1>90){
                    if($productCol3>90){
                        $productCol2++;
                        $productCol3 = 65;
                    }
                    $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$product['product_title_en']);
                    $productCol3++;
                }else{
                    $objActSheet->setCellValue(chr($productCol1).$index,$product['product_title_en']);
                    $productCol1++;
                }
                if($productCol1>90){
                    if($productCol3>90){
                        $productCol2++;
                        $productCol3 = 65;
                    }
                    $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$op['op_quantity']);
                    $productCol3++;
                }else{
                    $objActSheet->setCellValue(chr($productCol1).$index,$op['op_quantity']);
                    $productCol1++;
                }
                if($productCol1>90){
                    if($productCol3>90){
                        $productCol2++;
                        $productCol3 = 65;
                    }
                    $objActSheet->setCellValueExplicit(chr($productCol2).chr($productCol3).$index,$product['product_sku'],PHPExcel_Cell_DataType::TYPE_STRING);
                    $productCol3++;
                }else{
                    $objActSheet->setCellValueExplicit(chr($productCol1).$index,$product['product_sku'],PHPExcel_Cell_DataType::TYPE_STRING);
                    $productCol1++;
                }
                if($productCol1>90){
                    if($productCol3>90){
                        $productCol2++;
                        $productCol3 = 65;
                    }
                    $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$op['op_purpose_declared_value']*$op['op_quantity']);
                    $productCol3++;
                }else{
                    $objActSheet->setCellValue(chr($productCol1).$index,$op['op_purpose_declared_value']*$op['op_quantity']);
                    $productCol1++;
                }
                if($productCol1>90){
                    if($productCol3>90){
                        $productCol2++;
                        $productCol3 = 65;
                    }
                    $declaredEUR = Service_Currency::converByCode("USD","EUR",$op['op_purpose_declared_value']*$op['op_quantity']);
                    $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$declaredEUR);
                    $productCol3++;
                }else{
                    $declaredEUR = Service_Currency::converByCode("USD","EUR",$op['op_purpose_declared_value']*$op['op_quantity']);
                    $objActSheet->setCellValue(chr($productCol1).$index,$declaredEUR);
                    $productCol1++;
                }
                if($productCol1>90){
                    if($productCol3>90){
                        $productCol2++;
                        $productCol3 = 65;
                    }
                    $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$op['op_quantity']*$product['product_weight']*1000);
                    $productCol3++;
                }else{
                    $objActSheet->setCellValue(chr($productCol1).$index,$op['op_quantity']*$product['product_weight']*1000);
                    $productCol1++;
                }
                if($productCol1>90){
                    if($productCol3>90){
                        $productCol2++;
                        $productCol3 = 65;
                    }
                    $objActSheet->setCellValueExplicit(chr($productCol2).chr($productCol3).$index,$product['hs_code'],PHPExcel_Cell_DataType::TYPE_STRING);
                    $productCol3++;
                }else{
                    $objActSheet->setCellValueExplicit(chr($productCol1).$index,$product['hs_code'],PHPExcel_Cell_DataType::TYPE_STRING);
                    $productCol1++;
                }

            }
            $index++;
        }
        $titleCol1 = 75;
        $titleCol2 = 65;
        $titleCol3 = 65;
        for($i=0;$i<$max;$i++){
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","产品名称".($i+1)."(英文)");
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","产品名称".($i+1)."(英文)");
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","产品数量".($i+1));
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","产品数量".($i+1));
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","SKU".($i+1));
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","SKU".($i+1));
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","申报价值-总价".($i+1)."（USD）");
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","申报价值-总价".($i+1)."（USD）");
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","申报价值-总价".($i+1)."（EUR）");
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","申报价值-总价".($i+1)."（EUR）");
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","产品重量".($i+1));
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","产品重量".($i+1));
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","海关编码".($i+1));
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","海关编码".($i+1));
                $titleCol1++;
            }
        }

        $objWriter = PHPExcel_IOFactory::createWriter($table, 'Excel2007');
        header( "Pragma: public" );
        header( "Expires: 0" );
        header("Accept-Ranges: bytes");
        header('cache-control:must-revalidate');
        header("Content-Disposition: attachment; filename=PLorderSelect".date("YmdHis").".xlsx");
        header("Content-Type:APPLICATION/OCTET-STREAM;charset=utf-8");
        $objWriter->save('php://output');

    }


    /*荷兰小包*/
    public function plorderAllExportAction(){
        set_time_limit(0);
        $params = $this->_request->getParams();

        $condition = $this->serviceClass->getNewMatchFields($params);
        if( is_array( $condition['sm_code'] ) && count( $condition['sm_code'] ) == 1 && $condition['sm_code'][0] === '' ) {
            unset($condition['sm_code']);
        }
        if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
            unset($condition['oab_country_id']);
        }
        if($params['searchType']=='orderCode'){
            $condition['order_code']=$params['searchCode'];
        }else{
            $condition['reference_no']=$params['searchCode'];
        }
        $time = Common_Common::getStartAndEndTime($params['dateFor'],$params['dateTo']);
        $conditionTemp['dateFor'] = $time[0];
        $conditionTemp['dateTo'] = $time[1];
        unset($condition['dateFor']);
        unset($condition['dateTo']);
        $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';

        switch($searchDateType){
            case 'createDate':
                $condition['dateFor']= $conditionTemp['dateFor'];
                $condition['dateTo']= $conditionTemp['dateTo'];
                break;
            case 'printTime':
                $condition['printDateFor']= $conditionTemp['dateFor'];
                $condition['printDateTo']= $conditionTemp['dateTo'];
                break;
            case 'packTime':
                $condition['packDateFor']= $conditionTemp['dateFor'];
                $condition['packDateTo']= $conditionTemp['dateTo'];
                break;
            case 'shipTime':
                $condition['shipDateFor']= $conditionTemp['dateFor'];
                $condition['shipDateTo']= $conditionTemp['dateTo'];
                break;
            default:
                break;
        }
        //产品代码、品类
        $condition['oab_type'] = '0';
        if($condition['tracking_number']){
            $shipOrder = Service_ShipOrder::getByField($condition['tracking_number'],'tracking_number');
            if(!empty($shipOrder)){
                $condition['order_id'] = $shipOrder['order_id'];
            }else{
                $condition['order_id'] = 'none';
            }
        }

        require_once APPLICATION_PATH . '/../libs/PHPExcel.php';
        require_once APPLICATION_PATH . '/../libs/PHPExcel/IOFactory.php';
        $table = new PHPExcel();
        $table->getDefaultStyle()->getFont()->setName('宋体');
        $table->setActiveSheetIndex(0);
        $table->setActiveSheetIndex(0)->setTitle("荷兰小包订单");
        $objActSheet=$table->setActiveSheetIndex(0);

        $objActSheet->getColumnDimension('A')->setWidth(20);
        $objActSheet->getColumnDimension('B')->setWidth(20);
        $objActSheet->getColumnDimension('C')->setWidth(20);
        $objActSheet->getColumnDimension('D')->setWidth(20);
        $objActSheet->getColumnDimension('E')->setWidth(15);
        $objActSheet->getColumnDimension('F')->setWidth(15);
        $objActSheet->getColumnDimension('G')->setWidth(15);
        $objActSheet->getColumnDimension('H')->setWidth(15);
        $objActSheet->getColumnDimension('I')->setWidth(15);
        $objActSheet->getColumnDimension('J')->setWidth(15);

        $objActSheet->setCellValue('A1','出货时间');
        $objActSheet->setCellValue('B1','订单号');
        $objActSheet->setCellValue('C1','服务商单号');
        $objActSheet->setCellValue('D1','收件人姓名');
        $objActSheet->setCellValue('E1','收件人地址1');
        $objActSheet->setCellValue('F1','收件人地址2');
        $objActSheet->setCellValue('G1','收件人城市');
        $objActSheet->setCellValue('H1','收件人邮编');
        $objActSheet->setCellValue("I1","目的国家二字码");
        $objActSheet->setCellValue("J1","总重量(kg)");

        $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');
        $pageSize = 20;
        $totalPage = ceil($count/$pageSize);
        $index = 2;
        $max = 1;
        for($page=1;$page<=$totalPage;$page++){
            $rows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,"*", $pageSize, $page, array('orders.order_id desc'));
            foreach($rows as $orderRow){
                $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
                $orderOperationTime = Service_OrderOperationTime::getByField($orderRow['order_id'],"order_id","*");
                $orderAddress = Service_OrderAddressBook::getByField($orderRow['order_id'],"order_id","*");
                $country = Service_Country::getByField($orderAddress['oab_country_id'],"country_id","*");

                $totalWeight = isset($shipOrder['so_weight'])?$shipOrder['so_weight']:0;

                $objActSheet->setCellValue("A".$index,$orderOperationTime['ship_time']);
                $objActSheet->setCellValue('B'.$index,$orderRow['order_code']);
                $objActSheet->setCellValueExplicit("C".$index,$shipOrder['tracking_number'],PHPExcel_Cell_DataType::TYPE_STRING);
                $objActSheet->setCellValue("D".$index,$orderAddress['oab_firstname']);
                $objActSheet->setCellValue("E".$index,$orderAddress['oab_street_address1']);
                $objActSheet->setCellValue("F".$index,$orderAddress['oab_street_address2']);
                $objActSheet->setCellValue("G".$index,$orderAddress['oab_city']);
                $objActSheet->setCellValueExplicit("H".$index,$orderAddress['oab_postcode'],PHPExcel_Cell_DataType::TYPE_STRING);
                $objActSheet->setCellValue("I".$index,$country['country_code']);
                $objActSheet->setCellValue("J".$index,$totalWeight);

                $orderProduct = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                $productCol1 = 75;
                $productCol2 = 65;
                $productCol3 = 65;
                $max = count($orderProduct)>$max?count($orderProduct):$max;
                foreach($orderProduct as $op){
                    $product = Service_Product::getByField($op['product_id'],"product_id","*");
                    if($productCol1>90){
                        if($productCol3>90){
                            $productCol2++;
                            $productCol3 = 65;
                        }
                        $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$product['product_title_en']);
                        $productCol3++;
                    }else{
                        $objActSheet->setCellValue(chr($productCol1).$index,$product['product_title_en']);
                        $productCol1++;
                    }
                    if($productCol1>90){
                        if($productCol3>90){
                            $productCol2++;
                            $productCol3 = 65;
                        }
                        $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$op['op_quantity']);
                        $productCol3++;
                    }else{
                        $objActSheet->setCellValue(chr($productCol1).$index,$op['op_quantity']);
                        $productCol1++;
                    }
                    if($productCol1>90){
                        if($productCol3>90){
                            $productCol2++;
                            $productCol3 = 65;
                        }
                        $objActSheet->setCellValueExplicit(chr($productCol2).chr($productCol3).$index,$product['product_sku'],PHPExcel_Cell_DataType::TYPE_STRING);
                        $productCol3++;
                    }else{
                        $objActSheet->setCellValueExplicit(chr($productCol1).$index,$product['product_sku'],PHPExcel_Cell_DataType::TYPE_STRING);
                        $productCol1++;
                    }
                    if($productCol1>90){
                        if($productCol3>90){
                            $productCol2++;
                            $productCol3 = 65;
                        }
                        $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$op['op_purpose_declared_value']*$op['op_quantity']);
                        $productCol3++;
                    }else{
                        $objActSheet->setCellValue(chr($productCol1).$index,$op['op_purpose_declared_value']*$op['op_quantity']);
                        $productCol1++;
                    }
                    if($productCol1>90){
                        if($productCol3>90){
                            $productCol2++;
                            $productCol3 = 65;
                        }
                        $declaredEUR = Service_Currency::converByCode("USD","EUR",$op['op_purpose_declared_value']*$op['op_quantity']);
                        $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$declaredEUR);
                        $productCol3++;
                    }else{
                        $declaredEUR = Service_Currency::converByCode("USD","EUR",$op['op_purpose_declared_value']*$op['op_quantity']);
                        $objActSheet->setCellValue(chr($productCol1).$index,$declaredEUR);
                        $productCol1++;
                    }
                    if($productCol1>90){
                        if($productCol3>90){
                            $productCol2++;
                            $productCol3 = 65;
                        }
                        $objActSheet->setCellValue(chr($productCol2).chr($productCol3).$index,$op['op_quantity']*$product['product_weight']*1000);
                        $productCol3++;
                    }else{
                        $objActSheet->setCellValue(chr($productCol1).$index,$op['op_quantity']*$product['product_weight']*1000);
                        $productCol1++;
                    }
                    if($productCol1>90){
                        if($productCol3>90){
                            $productCol2++;
                            $productCol3 = 65;
                        }
                        $objActSheet->setCellValueExplicit(chr($productCol2).chr($productCol3).$index,$product['hs_code'],PHPExcel_Cell_DataType::TYPE_STRING);
                        $productCol3++;
                    }else{
                        $objActSheet->setCellValueExplicit(chr($productCol1).$index,$product['hs_code'],PHPExcel_Cell_DataType::TYPE_STRING);
                        $productCol1++;
                    }

                }
                $index++;
            }
        }

        $titleCol1 = 75;
        $titleCol2 = 65;
        $titleCol3 = 65;
        for($i=0;$i<$max;$i++){
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","产品名称".($i+1)."(英文)");
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","产品名称".($i+1)."(英文)");
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","产品数量".($i+1));
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","产品数量".($i+1));
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","SKU".($i+1));
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","SKU".($i+1));
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","申报价值-总价".($i+1)."（USD）");
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","申报价值-总价".($i+1)."（USD）");
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","申报价值-总价".($i+1)."（EUR）");
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","申报价值-总价".($i+1)."（EUR）");
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","产品重量".($i+1));
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","产品重量".($i+1));
                $titleCol1++;
            }
            if($titleCol1>90){
                if($titleCol3>90){
                    $titleCol2++;
                    $titleCol3 = 65;
                }
                $objActSheet->getColumnDimension(chr($titleCol2).chr($titleCol3)."1")->setWidth(15);
                $objActSheet->setCellValue(chr($titleCol2).chr($titleCol3)."1","海关编码".($i+1));
                $titleCol3++;
            }else{
                $objActSheet->getColumnDimension(chr( $titleCol1)."1")->setWidth(15);
                $objActSheet->setCellValue(chr( $titleCol1)."1","海关编码".($i+1));
                $titleCol1++;
            }
        }

        $objWriter = PHPExcel_IOFactory::createWriter($table, 'Excel2007');
        header( "Pragma: public" );
        header( "Expires: 0" );
        header("Accept-Ranges: bytes");
        header('cache-control:must-revalidate');
        header("Content-Disposition: attachment; filename=PNLorderAll".date("YmdHis").".xlsx");
        header("Content-Type:APPLICATION/OCTET-STREAM;charset=utf-8");
        $objWriter->save('php://output');
    }

    
    public function rsorderSelectedExportAction(){
        set_time_limit(0);
        $orderIdArr = $this->_request->getParam('orderId','');
        require_once APPLICATION_PATH . '/../libs/PHPExcel.php';
        require_once APPLICATION_PATH . '/../libs/PHPExcel/IOFactory.php';
        $table = new PHPExcel();
        $table->getDefaultStyle()->getFont()->setName('宋体');
        $table->setActiveSheetIndex(0);
        //$table->setActiveSheetIndex(0)->setTitle("");
        $objActSheet=$table->setActiveSheetIndex(0);
        
        $objActSheet->getColumnDimension('A')->setWidth(10);
        $objActSheet->getColumnDimension('B')->setWidth(15);
        $objActSheet->getColumnDimension('C')->setWidth(15);
        $objActSheet->getColumnDimension('D')->setWidth(10);
        $objActSheet->getColumnDimension('E')->setWidth(10);
        $objActSheet->getColumnDimension('F')->setWidth(10);
        $objActSheet->getColumnDimension('G')->setWidth(10);
        $objActSheet->getColumnDimension('H')->setWidth(10);
        $objActSheet->getColumnDimension('I')->setWidth(10);
        $objActSheet->getColumnDimension('J')->setWidth(10);
        $objActSheet->getColumnDimension('K')->setWidth(15);
        $objActSheet->getColumnDimension('L')->setWidth(15);
        $objActSheet->getColumnDimension('M')->setWidth(10);
        $objActSheet->getColumnDimension('N')->setWidth(10);
        
        //设置单元格为文本
        $table->getActiveSheet()->getStyle('G:H')->getNumberFormat()
        ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
        
        $objActSheet->setCellValue('A1','Worldwide Manifest');
        $objActSheet->setCellValue('E2','SWEDISH POST');
        $objActSheet->setCellValue('G2','RR -SWEDISH POST');
        $objActSheet->setCellValue('B3','Dispatch No:');
        $objActSheet->setCellValue('C3','20150110-001');
        $objActSheet->setCellValue('D3','Mode:');
        $objActSheet->setCellValue('B4','Destination:');
        $objActSheet->setCellValue('C4','SWEDEN');
        $objActSheet->setCellValue('D4','Flight No:');
        $objActSheet->setCellValue('B5','Consignment Note:');
        
        $objActSheet->setCellValue('A8','#');
        $objActSheet->setCellValue('B8','Invoice No / HAWB');
        $objActSheet->setCellValue('C8','Customer Name');
        $objActSheet->setCellValue('D8','Customer Add 1');
        $objActSheet->setCellValue('E8','Customer Add 2');
        $objActSheet->setCellValue('F8','City');
        $objActSheet->setCellValue('G8','Postcode');
        $objActSheet->setCellValue('H8','Tel No');
        $objActSheet->setCellValue('I8','Invoice Value (Currency) US$');
        $objActSheet->setCellValue('J8','Bag reference');
        $objActSheet->setCellValue('K8','Bag Gross Weight');
        $objActSheet->setCellValue('L8','Total weight (kg)');
        $objActSheet->setCellValue('M8','Receipted Delivery Sticker No');
        $objActSheet->setCellValue('N8','Zone');
        
        $index = 9;
        foreach($orderIdArr as $key=>$order_id){
            $orderRow = Service_Orders::getByField($order_id,"order_id","*");
            $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
            $orderOperationTime = Service_OrderOperationTime::getByField($order_id,"order_id","*");
            $orderAddress = Service_OrderAddressBook::getByField($order_id,"order_id","*");
            $country = Service_Country::getByField($orderAddress['oab_country_id'],"country_id","*");
            $orderProducts = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
            $declaredValue = '';
            foreach($orderProducts as $orderProduct){
                $declaredValue += $orderProduct['op_purpose_declared_value'];
            }
            $totalWeight = isset($shipOrder['so_weight'])?$shipOrder['so_weight']:0;
            !empty($shipOrder) && $aPackage = Service_ProductPackage::getByField($shipOrder['pp_barcode'] ,'pp_barcode', 'pp_weight');
            $objActSheet->setCellValue('A'.$index,$key+1);
            $objActSheet->setCellValue('B'.$index,$orderRow['ref_tracking_number']);
            $objActSheet->setCellValue('C'.$index,$orderAddress['oab_firstname']);
            $objActSheet->setCellValue('D'.$index,$orderAddress['oab_street_address1']);
            $objActSheet->setCellValue('E'.$index,$orderAddress['oab_street_address2']);
            $objActSheet->setCellValue('F'.$index,$orderAddress['oab_city']);
            $objActSheet->setCellValue('G'.$index,$orderAddress['oab_postcode']);
            $objActSheet->setCellValue('H'.$index,$orderAddress['oab_phone']);
            $objActSheet->setCellValue('I'.$index,$declaredValue);
            $objActSheet->setCellValue('J'.$index,$shipOrder['pp_name']);
            $objActSheet->setCellValue('K'.$index,$aPackage['pp_weight']);
            $objActSheet->setCellValue('L'.$index,$totalWeight);
            $objActSheet->setCellValue('M'.$index,$orderRow['ref_tracking_number']);
            $objActSheet->setCellValue('N'.$index,$country['country_code']);
            $index++;
        }
        $objWriter = PHPExcel_IOFactory::createWriter($table, 'Excel2007');
        header( "Pragma: public" );
        header( "Expires: 0" );
        header("Accept-Ranges: bytes");
        header('cache-control:must-revalidate');
        header("Content-Disposition: attachment; filename=".date("YmdHis")."-Manifest-GLOBEX.xlsx");
        header("Content-Type:APPLICATION/OCTET-STREAM;charset=utf-8");
        $objWriter->save('php://output');
        
    }
    
    public function rsorderAllExportAction(){
        set_time_limit(0);
        $params = $this->_request->getParams();
        
        $condition = $this->serviceClass->getNewMatchFields($params);

        if( is_array( $condition['sm_code'] ) && count( $condition['sm_code'] ) == 1 && $condition['sm_code'][0] === '' ) {
            unset($condition['sm_code']);
        }
        if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
            unset($condition['oab_country_id']);
        }
        if($params['searchType']=='orderCode'){
            $condition['order_code']=$params['searchCode'];
        }else{
            $condition['reference_no']=$params['searchCode'];
        }
        $time = Common_Common::getStartAndEndTime($params['dateFor'],$params['dateTo']);
        $conditionTemp['dateFor'] = $time[0];
        $conditionTemp['dateTo'] = $time[1];
        unset($condition['dateFor']);
        unset($condition['dateTo']);
        $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';

        switch($searchDateType){
            case 'createDate':
                $condition['dateFor']= $conditionTemp['dateFor'];
                $condition['dateTo']= $conditionTemp['dateTo'];
                break;
            case 'printTime':
                $condition['printDateFor']= $conditionTemp['dateFor'];
                $condition['printDateTo']= $conditionTemp['dateTo'];
                break;
            case 'packTime':
                $condition['packDateFor']= $conditionTemp['dateFor'];
                $condition['packDateTo']= $conditionTemp['dateTo'];
                break;
            case 'shipTime':
                $condition['shipDateFor']= $conditionTemp['dateFor'];
                $condition['shipDateTo']= $conditionTemp['dateTo'];
                break;
            default:
                break;
        }
        $condition['oab_type'] = '0';
        if($condition['tracking_number']){
            $shipOrder = Service_ShipOrder::getByField($condition['tracking_number'],'tracking_number');
            if(!empty($shipOrder)){
                $condition['order_id'] = $shipOrder['order_id'];
            }else{
                $condition['order_id'] = 'none';
            }
        }
        
        require_once APPLICATION_PATH . '/../libs/PHPExcel.php';
        require_once APPLICATION_PATH . '/../libs/PHPExcel/IOFactory.php';
        $table = new PHPExcel();
        $table->getDefaultStyle()->getFont()->setName('宋体');
        $table->setActiveSheetIndex(0);
        //$table->setActiveSheetIndex(0)->setTitle("");
        $objActSheet=$table->setActiveSheetIndex(0);
        
        $objActSheet->getColumnDimension('A')->setWidth(10);
        $objActSheet->getColumnDimension('B')->setWidth(15);
        $objActSheet->getColumnDimension('C')->setWidth(15);
        $objActSheet->getColumnDimension('D')->setWidth(10);
        $objActSheet->getColumnDimension('E')->setWidth(10);
        $objActSheet->getColumnDimension('F')->setWidth(10);
        $objActSheet->getColumnDimension('G')->setWidth(10);
        $objActSheet->getColumnDimension('H')->setWidth(10);
        $objActSheet->getColumnDimension('I')->setWidth(10);
        $objActSheet->getColumnDimension('J')->setWidth(10);
        $objActSheet->getColumnDimension('K')->setWidth(15);
        $objActSheet->getColumnDimension('L')->setWidth(15);
        $objActSheet->getColumnDimension('M')->setWidth(10);
        $objActSheet->getColumnDimension('N')->setWidth(10);
        
        //设置单元格为文本
        $table->getActiveSheet()->getStyle('G:H')->getNumberFormat()
        ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
        
        $objActSheet->setCellValue('A1','Worldwide Manifest');
        $objActSheet->setCellValue('E2','SWEDISH POST');
        $objActSheet->setCellValue('G2','RR -SWEDISH POST');
        $objActSheet->setCellValue('B3','Dispatch No:');
        $objActSheet->setCellValue('C3','20150110-001');
        $objActSheet->setCellValue('D3','Mode:');
        $objActSheet->setCellValue('B4','Destination:');
        $objActSheet->setCellValue('C4','SWEDEN');
        $objActSheet->setCellValue('D4','Flight No:');
        $objActSheet->setCellValue('B5','Consignment Note:');
        
        $objActSheet->setCellValue('A8','#');
        $objActSheet->setCellValue('B8','Invoice No / HAWB');
        $objActSheet->setCellValue('C8','Customer Name');
        $objActSheet->setCellValue('D8','Customer Add 1');
        $objActSheet->setCellValue('E8','Customer Add 2');
        $objActSheet->setCellValue('F8','City');
        $objActSheet->setCellValue('G8','Postcode');
        $objActSheet->setCellValue('H8','Tel No');
        $objActSheet->setCellValue('I8','Invoice Value (Currency) US$');
        $objActSheet->setCellValue('J8','Bag reference');
        $objActSheet->setCellValue('K8','Bag Gross Weight');
        $objActSheet->setCellValue('L8','Total weight (kg)');
        $objActSheet->setCellValue('M8','Receipted Delivery Sticker No');
        $objActSheet->setCellValue('N8','Zone');
        
        $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');
        $pageSize = 20;
        $totalPage = ceil($count/$pageSize);
        $index = 9;
        $tableIndex = 1;
        for($page=1;$page<=$totalPage;$page++){
            $rows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,"*", $pageSize, $page, array('orders.order_id desc'));
            foreach($rows as $key=>$orderRow){
                $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
                $orderOperationTime = Service_OrderOperationTime::getByField($orderRow['order_id'],"order_id","*");
                $orderAddress = Service_OrderAddressBook::getByField($orderRow['order_id'],"order_id","*");
                $country = Service_Country::getByField($orderAddress['oab_country_id'],"country_id","*");
                $orderProducts = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                $declaredValue = '';
                foreach($orderProducts as $orderProduct){
                    $declaredValue += $orderProduct['op_purpose_declared_value'];
                }
                $totalWeight = isset($shipOrder['so_weight'])?$shipOrder['so_weight']:0;
                !empty($shipOrder) && $aPackage = Service_ProductPackage::getByField($shipOrder['pp_barcode'] ,'pp_barcode', 'pp_weight');
                $objActSheet->setCellValue('A'.$index,$tableIndex++);
                $objActSheet->setCellValue('B'.$index,$orderRow['ref_tracking_number']);
                $objActSheet->setCellValue('C'.$index,$orderAddress['oab_firstname']);
                $objActSheet->setCellValue('D'.$index,$orderAddress['oab_street_address1']);
                $objActSheet->setCellValue('E'.$index,$orderAddress['oab_street_address2']);
                $objActSheet->setCellValue('F'.$index,$orderAddress['oab_city']);
                $objActSheet->setCellValue('G'.$index,$orderAddress['oab_postcode']);
                $objActSheet->setCellValue('H'.$index,$orderAddress['oab_phone']);
                $objActSheet->setCellValue('I'.$index,$declaredValue);
                $objActSheet->setCellValue('J'.$index,$shipOrder['pp_name']);
                $objActSheet->setCellValue('K'.$index,$aPackage['pp_weight']);
                $objActSheet->setCellValue('L'.$index,$totalWeight);
                $objActSheet->setCellValue('M'.$index,$orderRow['ref_tracking_number']);
                $objActSheet->setCellValue('N'.$index,$country['country_code']);
                $index++;
                
            }
        }  
        $objWriter = PHPExcel_IOFactory::createWriter($table, 'Excel2007');
        header( "Pragma: public" );
        header( "Expires: 0" );
        header("Accept-Ranges: bytes");
        header('cache-control:must-revalidate');
        header("Content-Disposition: attachment; filename=".date("YmdHis")."-Manifest-GLOBEX.xlsx");
        header("Content-Type:APPLICATION/OCTET-STREAM;charset=utf-8");
        $objWriter->save('php://output');
    }
    
    /*港邮订单导出用，生成一个订单的资料colin*/
    private function createhkOrderDataAction($order_code){

        if(empty($order_code)){
            return -1;
        }else{
            $order = Service_Orders::getByField($order_code,'order_code');
            if(empty($order)){
                return -1;
                exit;
            }
        }

        //准备相关的要输出的数据

        $order_products = Service_OrderProduct::getByCondition(array('order_code'=>$order_code));
        if(empty($order_products)){
            return -1;
            exit;
        }
        $target_hs_total_price = 0;
        foreach($order_products as $order_product){
                $target_hs_total_price += $order_product['op_purpose_declared_value']*$order_product['op_quantity'];//
        }

        $Outbound = Service_OutboundBagDetail::getByField($order_code,'order_code');

        $OrderAddress = Service_OrderAddressBook::getByField($order_code,'order_code');

        $OrderOperationTime = Service_OrderOperationTime::getByField('$order_code','order_code');


        $shipOrder = Service_ShipOrder::getByField($order_code,'order_code');

        $fields = array();
        $field = array();

        $field['name'] = "寄件人參考 – 條碼";
        $field['value'] =  $order_code;
        $fields[] =  $field;

        $field = array();
        $field['name'] = "寄件人參考 – 其他文字資料";
        $field['value'] =  "";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "投保易網郵保險服務";
        $field['value'] =  "";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "服務級別";
        $field['value'] =  "E";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "列印 CN23";
        $field['value'] =  "";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "郵袋編號";
        //$field['value'] =  102;
        $field['value'] =  $Outbound['ob_no'];
        $fields[] =  $field;

        $field = array();
        $field['name'] = "寄件人名稱";
        $field['value'] =  "CJ EXPRESS FREIGHT LIMITED";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "寄件人地址第一行";
        $field['value'] =  "RM 7007-8W ATL LOG CTR A BERTH 3";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "寄件人地址第二行";
        $field['value'] =  "KWAI CHUNG CONTAINER TERMINALS";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "寄件人地址第三行";
        $field['value'] =  "KWAI CHUNG";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "寄件人地址第四行";
        $field['value'] =  "N T";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "寄件人地址第五行";
        $field['value'] =  "";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "收件人姓名";
        $field['value'] =  $OrderAddress["oab_lastname"].$OrderAddress["oab_firstname"];
        $fields[] =  $field;

        $field = array();
        $field['name'] = "收件人地址第一行";
        $field['value'] =  $OrderAddress["oab_street_address1"];
        $fields[] =  $field;

        $field = array();
        $field['name'] = "收件人地址第二行";
        $field['value'] =  $OrderAddress["oab_city"];
        $fields[] =  $field;

        $field = array();
        $field['name'] = "收件人地址第三行";
        $field['value'] =  $OrderAddress["oab_state"];
        $fields[] =  $field;

        if($OrderAddress['oab_country_id']){
            $country = Service_Country::getByField($OrderAddress['oab_country_id'],'country_id');
        }

        $field = array();
        $field['name'] = "收件人地址第四行";
        $field['value'] =  $OrderAddress["oab_postcode"];
        $fields[] =  $field;

        $field = array();
        $field['name'] = "收件人地址第五行";
        $field['value'] =  "";
        $fields[] =  $field;

        $field = array();
        $field['name'] = "收件人目的地國家";
        $field['value'] =  $country['country_code'];
        $fields[] =  $field;

        $field = array();
        $field['name'] = "物品類別";
        $field['value'] =  "G";
        $fields[] =  $field;



        $field = array();
        $field['name'] = "物品類別內容";
        $field['value'] =  $order_products[0]['product_title_en'];
        $fields[] =  $field;



        for($rownumber = 1;$rownumber<=4;$rownumber++){
        //foreach($order_products as $order_product)
                $order_product = $order_products[$rownumber-1];
                $char_form_number = Common_Common::num2char($rownumber);
                if(!empty($order_product)){
                    $product = Service_Product::getByField($order_product['product_id'],'product_id');
                    if(empty($product)){continue;}
                    $field = array();
                    $field['name'] = "內載物品詳情(第{$char_form_number}行)";
                    $field['value'] =  $order_product['product_title_en'];
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "數量(第{$char_form_number}行)";
                    $field['value'] =  $order_product['op_quantity'];
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "淨重(千克)(第{$char_form_number}行)";
                    $field['value'] =  sprintf("%.2f", $product['product_weight']);
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "貨幣(第{$char_form_number}行)";
                    $field['value'] =  $product['currency_code'];
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "價值(第{$char_form_number}行)";
                    $field['value'] =  sprintf("%.2f", $order_product['op_purpose_declared_value']);
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "協制編號(第{$char_form_number}行)";
                    $field['value'] =  "";
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "物品原產地(第{$char_form_number}行)";
                    $field['value'] =  "";
                    $fields[] =  $field;


            }else{//if

                    $field = array();
                    $field['name'] = "內載物品詳情(第{$char_form_number}行)";
                    $field['value'] = "";
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "數量(第{$char_form_number}行)";
                    $field['value'] =  "";
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "淨重(千克)(第{$char_form_number}行)";
                    $field['value'] =  "";
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "貨幣(第{$char_form_number}行)";
                    $field['value'] =  "";
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "價值(第{$char_form_number}行)";
                    $field['value'] =  "";
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "協制編號(第{$char_form_number}行)";
                    $field['value'] =  "";
                    $fields[] =  $field;

                    $field = array();
                    $field['name'] = "物品原產地(第{$char_form_number}行)";
                    $field['value'] =  "";
                    $fields[] =  $field;


            }
        }//for

                $field = array();
                $field['name'] = "总重量";
                $field['value'] =  sprintf("%.2f", $Outbound['so_weight']);
                $fields[] =  $field;

                $field = array();
                $field['name'] = "貨幣(總值)";
                $field['value'] =  'USD';

                $fields[] =  $field;

                $field = array();
                $field['name'] = "總值";
                $field['value'] =  $target_hs_total_price;
                $fields[] =  $field;



                $field = array();
                $field['name'] = "郵費";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "其他費用";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "寄件人的海關檔案";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "進口商檔案";
                $field['value'] = "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "進口商電話/傳真/電郵";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "註釋";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "牌照編號";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "證明文件編號";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "發貸單編號";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "原寄地";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "投寄日期";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "郵件編號";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "證明文件編號";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "發貸單編號";
                $field['value'] =  "";
                $fields[] =  $field;

                $field = array();
                $field['name'] = "原寄地";
                $field['value'] =  "";
                $fields[] =  $field;

                if($OrderOperationTime['ship_time'] && $OrderOperationTime['ship_time']!="0000-00-00 00:00:00"){
                    $ship_time = date('Y-m-d',strtotime($OrderOperationTime['ship_time'])+3600*24)    ;
                }
                $field = array();
                $field['name'] = "投寄日期";
                $field['value'] =  $ship_time;
                $fields[] =  $field;

                $field = array();
                $field['name'] = "郵件編號";
                $field['value'] =  $shipOrder['tracking_number'];
                $fields[] =  $field;

                $field = array();
                $field['name'] = "城市 (互換局) - 只供已向香港郵政提供預計每月投寄量的寄件人填寫";
                $field['value'] =  "";
                $fields[] =  $field;



        foreach($fields as &$field){
             if(Common_Common::char_display_width($field['name'])<Common_Common::char_display_width($field['value'])){
                     $field['name'] = Common_Common::fix_width_output($field['name'],Common_Common::char_display_width($field['value']));
             }
        }

        return $fields;

    }

    public function uktlOrderListAction(){
        $orderType=Common_Status::orderType('auto');
        $orderStatus=Common_Status::orderStatus('auto');
        if ($this->_request->isPost()) {
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);

            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;

            $return = array(
                "state" => 0,
                "message" => "No Data"
            );
            $is_ref_tracking_number = $this->_request->getParam("is_ref_tracking_number","");
            $condition = array(
                'is_ref_tracking_number'=>$is_ref_tracking_number
            );
            $count = Service_Orders::getUktlOrderByCondition($condition,"count(*)");
            $return['total'] = $count;
            if($count){
                $showFields=array(
                    'order_code',
                    'customer_code',
                    'warehouse_id',
                    'order_type',
                    'sm_code',
                    'order_status',
                    'problem_status',
                    'underreview_status',
                    'intercept_status',
                    'add_time',
                    'order_pick_type',
                    'reference_no',
                    'picker_id',
                    'remark',
                    'order_id',
                    'order_mode_type',
                    'ref_tracking_number',
                );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);
                $row = Service_Orders::getUktlOrderByCondition($condition,$showFields,$pageSize,$page,array('orders.order_id desc'));
                $return['data'] = $row;
                $return['state'] = 1;
                $return['warehouse'] = Common_DataCache::getWarehouseSimple();
                $return['orderType'] = $orderType;
                $return['orderStatus'] = $orderStatus;
                $return['orderPackType'] = Common_Status::orderPickType('auto');
            }
            die(Zend_Json::encode($return));
        }
        echo Ec::renderTpl($this->tplDirectory . "uktl-order-list.tpl", 'layout');
    }

    public function etkOrderListAction(){
        $orderType=Common_Status::orderType('auto');
        $orderStatus=Common_Status::orderStatus('auto');
        if ($this->_request->isPost()) {
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);

            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;

            $return = array(
                "state" => 0,
                "message" => "No Data"
            );
            $is_ref_tracking_number = $this->_request->getParam("is_ref_tracking_number","");
            $condition = array(
                'is_ref_tracking_number'=>$is_ref_tracking_number
            );
            $count = Service_Orders::getEtkOrderByCondition($condition,"count(*)");
            $return['total'] = $count;
            if($count){
                $showFields=array(
                    'order_code',
                    'customer_code',
                    'warehouse_id',
                    'order_type',
                    'sm_code',
                    'order_status',
                    'problem_status',
                    'underreview_status',
                    'intercept_status',
                    'add_time',
                    'order_pick_type',
                    'reference_no',
                    'picker_id',
                    'remark',
                    'order_id',
                    'order_mode_type',
                    'ref_tracking_number',
                );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);
                $row = Service_Orders::getEtkOrderByCondition($condition,$showFields,$pageSize,$page,array('orders.order_id desc'));
                $return['data'] = $row;
                $return['state'] = 1;
                $return['warehouse'] = Common_DataCache::getWarehouseSimple();
                $return['orderType'] = $orderType;
                $return['orderStatus'] = $orderStatus;
                $return['orderPackType'] = Common_Status::orderPickType('auto');
            }
            die(Zend_Json::encode($return));
        }
        echo Ec::renderTpl($this->tplDirectory . "etk-order-list.tpl", 'layout');
    }

    public function exportOrderShupaiAction(){
        set_time_limit(0);
        @ini_set('memory_limit','1024M');
        $path=  realpath(APPLICATION_PATH . '/../data/cache/');
        $tempFile =$path .'/orderList' . time() . rand(0, 99999) . '.xlsx';
        $downLoadFilename = "orderlist".date('YmdHis').'.xls';
        $tempExcel=new Common_ExportExcelByTable($tempFile);
        $orderIdArr = $this->_request->getParam('orderId','');
        $exportType = $this->_request->getParam("exportType","");
        $tempExcel->setTexRule(array(2,4,14,10,19,22,36,43,44));
        $tempExcel->writeString("<html><head><style type='text/css'>table td{width:80px;height:20px;vertical-align:top}</style></head><body><table>");
        $csvData[0] = array('订单模式','订单状态','订单号','是否换单','服务商单号',
        '仓库','订单类型','收件人国家','收件人国家（英文名称）','国家简码','提交时间','国内海关总申报价值',
        '目的海关申报总价','运输方式','交易订单号','收件人姓名','收件人公司名','收件人州\区域','收件人城市',
        '收件人邮编','收件人地址1','收件人地址2','收件人电话','收件人电子邮件','成交币种','成交总价','派送地址',
        '出货时间','体积重','长*宽*高','出货重量','计费重量','件数','产品总数','备注','产品名称','sku','英文品名',
        '是否扫描IMEI码','入库时间','申报单价(USD)','目的海关申报单价（USD）','数量','海关品名','料件号','海关编码','创建人','是否带电池','是否FBA','购买保险','投保类型','承诺妥投日期','是否偏远','目的地关税');
        $tempExcel->writeOneTr($csvData[0]);
        //$exportObj = new Common_ExportForExcel(array());
        //设置工作表
//        $exportObj->setSheet(0);
//        $exportIndex = $exportObj -> setRowsValue($csvData);
        $csvData = array();
         $countryList=array();
        if($exportType=="1"){
            $statusArr = Common_Status::orderStatus();
            $index = 2;
            //$maxCountProduct = 1;
            foreach($orderIdArr as $val){
                if($val=="") continue;
                $orderRow = Service_Orders::getByField($val,"order_id","*");
                //订单模式

                $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
                $trackingNumber = isset($shipOrder['tracking_number'])?$shipOrder['tracking_number']:"";
                $warehouse = Service_Warehouse::getByField($orderRow['warehouse_id'],"warehouse_id","*");
                $osa = Service_OrderAddressBook::getByCondition(array('order_code'=>$orderRow['order_code'],'oab_type'=>'0'),"*");
                $orderSendAddress = $osa[0];
                if(!$countryList[$orderSendAddress['oab_country_id']]){
                        @$countryList[$orderSendAddress['oab_country_id']] = Service_Country::getByField($orderSendAddress['oab_country_id'],"country_id","*");
                 }
                  $country=$countryList[$orderSendAddress['oab_country_id']];
                $opt = Service_OrderOperationTime::getByField($orderRow['order_code'],'order_code',"*");

                $shiBatchMessage = Service_OutboundBagDetail::getJoinShipBatchDetailByCondition(array('order_code'=>$orderRow['order_code']),"*");
                $soShipTime = isset($shiBatchMessage[0]['sb_ship_time'])?$shiBatchMessage[0]['sb_ship_time']:"";
                //体积重
                $volWeight = 0;
                $shipOrderDetail = Service_ShipOrderDetail::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                $smRow = Service_ShippingMethod::getByField($orderRow['sm_code'],"sm_code","*");
                $LWH = "";
                if ('1' == $smRow['sm_is_volume'] && !empty($shipOrderDetail)) {
                    foreach($shipOrderDetail as $sodK=>$sodV){
                        if($smRow['sm_vol_rate']!="0"&&$smRow['sm_vol_rate']!="")
                            $volWeight = $volWeight +$sodV['sod_length']*$sodV['sod_width']*$sodV['sod_height']/$smRow['sm_vol_rate'];
                        if($sodK=="0"){
                            $LWH.=$sodV["sod_length"]."*".$sodV["sod_width"]."*".$sodV["sod_height"];
                        }else{
                            $LWH.="/".$sodV["sod_length"]."*".$sodV["sod_width"]."*".$sodV["sod_height"];
                        }
                    }
                }
                elseif (!empty($shipOrder)) {
                    $volWeight = $shipOrder['so_vol_weight'];
                    $LWH = $shipOrder['so_length'] . '*' . $shipOrder['so_width'] . '*' . $shipOrder['so_height'];
                }

                $shipWeight = isset($shipOrder['so_weight'])?$shipOrder['so_weight']:"";
                $feeWeight = isset($shipOrder['so_fee_weight'])?$shipOrder['so_fee_weight']:"";

                $Total = 0;
                //件数
                $sodList=Service_ShipOrder::getByField($orderRow['order_code'],'order_code');
                /*if($smRow['sm_is_volume']!="1") {
                    $Total = 1;
                }else{
                    $sodList = Service_ShipOrderDetail::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                    if($smRow['sm_code']=="HKDHL"){
                        $Total = count($sodList);
                    }else{
                        foreach($sodList as $sodRow){
                            if($sodRow['sub_tracking_number']!="") $Total++;
                        }
                    }
                }*/
                $Total = $sodList['so_piece'];
                //if($Total<1) $Total = 1;
                $orderProduct = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");

                $totalProduct = 0;
                $op_declared_value = 0;
                $op_purpose_declared_value = 0;
                $creater = "";
                if(isset($opt['creater_id'])&&$opt['creater_id']!="0"){
                    $account = Service_Account::getByField($opt['creater_id'],'account_id',"*");
                    if(empty($account)){
                        $creater = $orderRow['customer_code'];
                    }else{
                        $creater = $account['account_name'];
                    }
                }else{
                    $creater = $orderRow['customer_code'];
                }
                foreach($orderProduct as $opk=>$opv){
                    $totalProduct +=$opv['op_quantity'];
                    $op_declared_value +=$opv['op_quantity']*$opv['op_declared_value'];
                    $op_purpose_declared_value +=$opv['op_quantity']*$opv['op_purpose_declared_value'];
                }

                foreach($orderProduct as $k=>$v){
                    $p = Service_Product::getByField($v['product_id'],"product_id","*");

                    $pickingDetail = Service_PickingDetail::getByCondition(array('order_code'=>$v['order_code'],'product_id'=>$v['product_id']),"*");
                    $ib_fifo_time = "";
                    if(!empty($pickingDetail)){
                        $inventoryBatchLog = Service_InventoryBatchLog::getByCondition(array('ib_id'=>$pickingDetail[0]['ib_id'],'application_code'=>'Putaway','ibl_quantity_before'=>'0'),"*",0,0,'ibl_id asc');
                        $ib_fifo_time = $inventoryBatchLog[0]['ibl_add_time'];
                    }

                    if($orderRow['order_mode_type']=="1"){
                        $csvData[$index][] = '集货模式';
                    }else{
                        $csvData[$index][] = '备货模式';
                    }
                    $csvData[$index][] = $statusArr[$orderRow['order_status']];
                    $csvData[$index][] = $orderRow['order_code'];


                    if($orderRow['change_order']=="1"){
                        $csvData[$index][] = '是';
                    }else{
                        $csvData[$index][] = '否';
                    }
                    $csvData[$index][]  =   $trackingNumber;
                    $csvData[$index][]  =   $warehouse['warehouse_code'];

                    if($orderRow['order_type']=="2"){
                        $csvData[$index][]  =   '退货';
                    }elseif($orderRow['order_type']=="1"){
                        $csvData[$index][]  =   '转仓';
                    }else{
                        $csvData[$index][]  =   '普通';
                    }
                    $csvData[$index][]  =   $country['country_name'];
                    $csvData[$index][]  =   $country['country_name_en'];
                    $csvData[$index][]  =   $country['country_code'];
                    $csvData[$index][]  =   $opt['submit_time'];
                    $csvData[$index][]  =   $op_declared_value;
                    $csvData[$index][]  =   $op_purpose_declared_value;
                    $csvData[$index][]  =   $orderRow['sm_code'];
                    $csvData[$index][]  =   $orderRow['reference_no'];
                    $csvData[$index][]  =   $orderSendAddress['oab_firstname'];
                    $csvData[$index][]  =   $orderSendAddress['oab_company'];
                    $csvData[$index][]  =   $orderSendAddress['oab_state'];
                    $csvData[$index][]  =   $orderSendAddress['oab_city'];
                    $csvData[$index][]  =   $orderSendAddress['oab_postcode'];//T
                    $csvData[$index][]  =   $orderSendAddress['oab_street_address1'];
                    $csvData[$index][]  =   $orderSendAddress['oab_street_address2'];
                    $csvData[$index][]  =   $orderSendAddress['oab_phone'];
                    $csvData[$index][]  =   $orderSendAddress['oab_email'];
                    $csvData[$index][]  =   $orderRow['currency_code'];
                    $csvData[$index][]  =   $orderRow['charge']; //Z
                    $csvData[$index][]  =   $orderRow['delivery_address'];
                    $csvData[$index][]  =   $opt['shipment_time'];
                if($orderRow['sm_code']=='HKUPS-KW'){
                    $csvData[$index][]  =   $shipOrderDetail[$k]['sod_vol_weight'];
                    $csvData[$index][]  =   $LWH;
                    $csvData[$index][]  =   $shipOrderDetail[$k]['sod_weight'];
                    $csvData[$index][]  =   $shipOrderDetail[$k]['sod_bill_weight'];
                }else{
                    $csvData[$index][]  =   $volWeight;
                    $csvData[$index][]  =   $LWH;
                    $csvData[$index][]  =   $shipWeight;
                    $csvData[$index][]  =   $feeWeight;
                }
                    $csvData[$index][]  =   $Total;
                    $csvData[$index][]  =   $totalProduct;
                    $csvData[$index][]  =   $orderRow['remark'];
                    $csvData[$index][]  =   $p['product_title'];
                    $csvData[$index][]  =   $p['product_sku'];
                    $csvData[$index][]  =   $v['product_title_en'];
                    if($p['is_scan_imei']=="1"){
                        $csvData[$index][]  =   "是";
                    }else{
                        $csvData[$index][]  =   "否";
                    }
                    $csvData[$index][]  =   $ib_fifo_time;
                    $csvData[$index][]  =   $v['op_declared_value'];
                    $csvData[$index][]  =   $v['op_purpose_declared_value'];
                    $csvData[$index][]  =   $v['op_quantity'];
                    $csvData[$index][]  =   $p['hs_goods_name'];
                    $csvData[$index][]  =   $p['goods_id'];
                    $csvData[$index][]  =   $p['hs_code'];
                    $csvData[$index][]  =   $creater;
                    $csvData[$index][]  =   $p['with_battery']==1?'是':'否';
                    $csvData[$index][]  =   $orderRow['is_fba']==1?'是':'否';
                    //保险
                    $csvData[$index][]  = $orderRow['insurance'] == 1 ? '是':'否';
                    if( !isset($feeItem[$orderRow['insurance_code']]) && !empty($orderRow['insurance_code'])) {
                        $feeItemRow = Service_OtherFee::getByField( $orderRow['insurance_code'],'fee_code' );
                        $feeItem[$orderRow['insurance_code']] = $feeItemRow;
                    }
                    $opTime = Service_OrderOperationTime::getByField( $orderRow['order_code'], 'order_code');
                    $deliveryDate = $orderRow['order_status'] == 12 && $opTime['ship_time'] && $opTime['ship_time'] != '0000-00-00 00:00:00' ? $opTime['ship_time'] : '';
                    $limit = 0;
                    if( !isset($limitation[ $orderRow['sm_code'] ][ $country['country_area'] ])) {
                        $deliveryDate = '';
                    } else {
                        $limit = $limitation[ $orderRow['sm_code'] ][ $country['country_area'] ];
                    }
                    $csvData[$index][]  = $orderRow['insurance'] == 1 ? $feeItem[$orderRow['insurance_code']]['fee_name']:'';
                    $csvData[$index][]  = $orderRow['insurance'] == 1 && $deliveryDate != '' ? date('Y-m-d',strtotime('+'.($limit+1).' day '.$deliveryDate )) : '';
                    $csvData[$index][]  = $orderRow['is_remote_city'] ?'是':'否';
                    $csvData[$index][]  = $orderRow['is_fba_tax'] ?'预付':'到付';
                    $tempExcel->writeOneTr($csvData[$index]);
                    $index++;
                     $csvData=array();

                }
                
                
                
            }

        }else{
            $params = $this->_request->getParams();
            $condition = $this->serviceClass->getNewMatchFields($params);
            if( is_array( $condition['sm_code'] ) && count( $condition['sm_code'] ) == 1 && $condition['sm_code'][0] === '' ) {
                unset($condition['sm_code']);
            }
            if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
                unset($condition['oab_country_id']);
            }
            if($params['searchType']=='orderCode'){
                $condition['order_code']=$params['searchCode'];
            }else{
                $condition['reference_no']=$params['searchCode'];
            }
            $time = Common_Common::getStartAndEndTime($params['dateFor'],$params['dateTo']);
            $conditionTemp['dateFor'] = $time[0];
            $conditionTemp['dateTo'] = $time[1];
            unset($condition['dateFor']);
            unset($condition['dateTo']);
            $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';
            switch($searchDateType){
                case 'createDate':
                    $condition['dateFor']= $conditionTemp['dateFor'];
                    $condition['dateTo']= $conditionTemp['dateTo'];
                    break;
                case 'printTime':
                    $condition['printDateFor']= $conditionTemp['dateFor'];
                    $condition['printDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'packTime':
                    $condition['packDateFor']= $conditionTemp['dateFor'];
                    $condition['packDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'ship_Time':
                    $condition['shipTimekDateFor']= $conditionTemp['dateFor'];
                    $condition['shipTimeDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'shipmentTime':
                    $condition['shipmentDateFor']= $conditionTemp['dateFor'];
                    $condition['shipmentDateTo']= $conditionTemp['dateTo'];
                    break;
                default:
                    break;
            }
            //产品代码、品类
            $condition['oab_type'] = '0';
            if($condition['tracking_number']){
                $shipOrder = Service_ShipOrder::getByField($condition['tracking_number'],'tracking_number');
                if(!empty($shipOrder)){
                    $condition['order_id'] = $shipOrder['order_id'];
                }else{
                    $condition['order_id'] = 'none';
                }
            }

            unset($params);

            $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');
            if($count>0){
                $statusArr = Common_Status::orderStatus();
                $index = 2;
                $maxCountProduct = 1;
                $pageSize = 5000;
                $totalPage = ceil($count/$pageSize);
                for($page=1;$page<=$totalPage;$page++){
                    $rows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,'*', $pageSize, $page, array('orders.order_id desc'));
                    foreach($rows as $key=>$val){
                        $orderRow = Service_Orders::getByField($val['order_code'],"order_code","*");
                        //订单模式
                        $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code",array('tracking_number','so_vol_weight','so_length','so_width','so_height','so_fee_weight','so_weight'));
                        $trackingNumber = isset($shipOrder['tracking_number'])?$shipOrder['tracking_number']:"";
                        $warehouse = Common_DataCache::getWarehouse(0,$orderRow['warehouse_id']);;
                        $osa = Service_OrderAddressBook::getByCondition(array('order_code'=>$orderRow['order_code'],'oab_type'=>'0'),"*");
                        $orderSendAddress = $osa[0];
                        $country = Service_Country::getByField($orderSendAddress['oab_country_id'],"country_id","*");
                        $opt = Service_OrderOperationTime::getByField($orderRow['order_code'],'order_code',"*");
                        $shiBatchMessage = Service_OutboundBagDetail::getJoinShipBatchDetailByCondition(array('order_code'=>$orderRow['order_code']),"obd_id");
                        $soShipTime = isset($shiBatchMessage[0]['sb_ship_time'])?$shiBatchMessage[0]['sb_ship_time']:"";
                        //体积重
                        $volWeight = 0;
                        $shipOrderDetail = Service_ShipOrderDetail::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                        $smRow = Service_ShippingMethod::getByField($orderRow['sm_code'],"sm_code","*");
                        $LWH = "";
                        if ('1' == $smRow['sm_is_volume'] && !empty($shipOrderDetail)) {
                            foreach($shipOrderDetail as $sodK=>$sodV){
                                if($smRow['sm_vol_rate']!="0"&&$smRow['sm_vol_rate']!=""){
                                    $volWeight = $volWeight + $sodV['sod_length']*$sodV['sod_width']*$sodV['sod_height']/$smRow['sm_vol_rate'];
                                }
                                if($sodK=="0"){
                                    $LWH.=$sodV["sod_length"]."*".$sodV["sod_width"]."*".$sodV["sod_height"];
                                }else{
                                    $LWH.="/".$sodV["sod_length"]."*".$sodV["sod_width"]."*".$sodV["sod_height"];
                                }
                            }
                        }elseif (!empty($shipOrder)) {
                            $volWeight = $shipOrder['so_vol_weight'];
                            $LWH = $shipOrder['so_length'] . '*' . $shipOrder['so_width'] . '*' . $shipOrder['so_height'];
                        }
                        $shipWeight = isset($shipOrder['so_weight'])?$shipOrder['so_weight']:"";
                        $feeWeight = isset($shipOrder['so_fee_weight'])?$shipOrder['so_fee_weight']:"";
                        $Total = 0;
                        //件数
                    $sodList=Service_ShipOrder::getByField($orderRow['order_code'],'order_code');
                        // if($smRow['sm_is_volume']!="1") {
                        //     $Total = 1;
                        // }else{
                        //     $sodList = Service_ShipOrderDetail::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                        //     if($smRow['sm_code']=="HKDHL"){
                        //         $Total = count($sodList);
                        //     }else{
                        //         foreach($sodList as $sodRow){
                        //             if($sodRow['sub_tracking_number']!="") $Total++;
                        //         }
                        //     }
                        // }
                        $Total = $sodList['so_piece'];
                        if($Total<1) $Total = 1;
                        $orderProduct = Service_OrderProduct::getByCondition(array('order_code'=>$orderRow['order_code']),"*");
                        $totalProduct = 0;
                        $op_declared_value = 0;
                        $op_purpose_declared_value = 0;
                        $creater = "";
                        if(isset($opt['creater_id'])&&$opt['creater_id']!="0"){
                            $account = Service_Account::getByField($opt['creater_id'],'account_id',"*");
                            if(empty($account)){
                                $creater = $orderRow['customer_code'];
                            }else{
                                $creater = $account['account_name'];
                            }
                        }else{
                            $creater = $orderRow['customer_code'];
                        }

                        foreach($orderProduct as $opk=>$opv){
                            $totalProduct +=$opv['op_quantity'];
                            $op_declared_value +=$opv['op_quantity']*$opv['op_declared_value'];
                            $op_purpose_declared_value +=$opv['op_quantity']*$opv['op_purpose_declared_value'];
                        }
                        foreach($orderProduct as $k=>$v){
                            $p = Service_Product::getByField($v['product_id'],"product_id","*");
                            $pickingDetail = Service_PickingDetail::getByCondition(array('order_code'=>$v['order_code'],'product_id'=>$v['product_id']),"ib_id");
                            $ib_fifo_time = "";
                            if(!empty($pickingDetail)){
                                $inventoryBatchLog = Service_InventoryBatchLog::getByCondition(array('ib_id'=>$pickingDetail[0]['ib_id'],'application_code'=>'Putaway','ibl_quantity_before'=>'0'),"*",0,0,'ibl_id asc');
                                $ib_fifo_time = $inventoryBatchLog[0]['ibl_add_time'];
                            }
                            if($orderRow['order_mode_type']=="1"){
                                $csvData[$index][] = '集货模式';
                            }else{
                                $csvData[$index][] = '备货模式';
                            }
                            $csvData[$index][] = $statusArr[$orderRow['order_status']];
                            $csvData[$index][] = $orderRow['order_code'];


                            if($orderRow['change_order']=="1"){
                                $csvData[$index][] = '是';
                            }else{
                                $csvData[$index][] = '否';
                            }
                            $csvData[$index][]  =   $trackingNumber;
                            $csvData[$index][]  =   $warehouse['warehouse_code'];

                            if($orderRow['order_type']=="2"){
                                $csvData[$index][]  =   '退货';
                            }elseif($orderRow['order_type']=="1"){
                                $csvData[$index][]  =   '转仓';
                            }else{
                                $csvData[$index][]  =   '普通';
                            }
                            $csvData[$index][]  =   $country['country_name'];
                            $csvData[$index][]  =   $country['country_name_en'];
                            $csvData[$index][]  =   $country['country_code'];
                            $csvData[$index][]  =   $opt['submit_time'];
                            $csvData[$index][]  =   $op_declared_value;
                            $csvData[$index][]  =   $op_purpose_declared_value;
                            $csvData[$index][]  =   $orderRow['sm_code'];
                            $csvData[$index][]  =   $orderRow['reference_no'];
                            $csvData[$index][]  =   $orderSendAddress['oab_firstname'];
                            $csvData[$index][]  =   $orderSendAddress['oab_company'];
                            $csvData[$index][]  =   $orderSendAddress['oab_state'];
                            $csvData[$index][]  =   $orderSendAddress['oab_city'];
                            $csvData[$index][]  =   $orderSendAddress['oab_postcode'];//T
                            $csvData[$index][]  =   $orderSendAddress['oab_street_address1'];
                            $csvData[$index][]  =   $orderSendAddress['oab_street_address2'];
                            $csvData[$index][]  =   $orderSendAddress['oab_phone'];
                            $csvData[$index][]  =   $orderSendAddress['oab_email'];
                            $csvData[$index][]  =   $orderRow['currency_code'];
                            $csvData[$index][]  =   $orderRow['charge']; //Z
                            $csvData[$index][]  =   $orderRow['delivery_address'];
                            $csvData[$index][]  =   $opt['shipment_time'];
                            if($orderRow['sm_code']=='HKUPS-KW'){
                                $csvData[$index][]  =   $shipOrderDetail[$k]['sod_vol_weight'];
                                $csvData[$index][]  =   $LWH;
                                $csvData[$index][]  =   $shipOrderDetail[$k]['sod_weight'];
                                $csvData[$index][]  =   $shipOrderDetail[$k]['sod_bill_weight'];
                            }else{
                                $csvData[$index][]  =   $volWeight;
                                $csvData[$index][]  =   $LWH;
                                $csvData[$index][]  =   $shipWeight;
                                $csvData[$index][]  =   $feeWeight;
                            }
                            $csvData[$index][]  =   $Total;
                            $csvData[$index][]  =   $totalProduct;
                            $csvData[$index][]  =   $orderRow['remark'];
                            $csvData[$index][]  =   $p['product_title'];
                            $csvData[$index][]  =   $p['product_sku'];
                            $csvData[$index][]  =   $v['product_title_en'];
                            if($p['is_scan_imei']=="1"){
                                $csvData[$index][]  =   "是";
                            }else{
                                $csvData[$index][]  =   "否";
                            }
                            $csvData[$index][]  =   $ib_fifo_time;
                            $csvData[$index][]  =   $v['op_declared_value'];
                            $csvData[$index][]  =   $v['op_purpose_declared_value'];
                            $csvData[$index][]  =   $v['op_quantity'];
                            $csvData[$index][]  =   $p['hs_goods_name'];
                            $csvData[$index][]  =   $p['goods_id'];
                            $csvData[$index][]  =   $p['hs_code'];
                            $csvData[$index][]  =   $creater;
                            $csvData[$index][]  =   $p['with_battery']==1?'是':'否';
                            $csvData[$index][]  =   $orderRow['is_fba']==1?'是':'否';
                            //保险
                            $csvData[$index][]  = $orderRow['insurance'] == 1 ? '是':'否';
                            if( !isset($feeItem[$orderRow['insurance_code']]) && !empty($orderRow['insurance_code'])) {
                                $feeItemRow = Service_OtherFee::getByField( $orderRow['insurance_code'],'fee_code' );
                                $feeItem[$orderRow['insurance_code']] = $feeItemRow;
                            }
                            $opTime = Service_OrderOperationTime::getByField( $orderRow['order_code'], 'order_code');
                            $deliveryDate = $orderRow['order_status'] == 12 && $opTime['ship_time'] && $opTime['ship_time'] != '0000-00-00 00:00:00' ? $opTime['ship_time'] : '';
                            $limit = 0;
                            if( !isset($limitation[ $orderRow['sm_code'] ][ $country['country_area'] ])) {
                                $deliveryDate = '';
                            } else {
                                $limit = $limitation[ $orderRow['sm_code'] ][ $country['country_area'] ];
                            }
                            $csvData[$index][]  = $orderRow['insurance'] == 1 ? $feeItem[$orderRow['insurance_code']]['fee_name']:'';
                            $csvData[$index][]  = $orderRow['insurance'] == 1 && $deliveryDate != '' ? date('Y-m-d',strtotime('+'.($limit+1).' day '.$deliveryDate )) : '';
                            $csvData[$index][]  = $orderRow['is_remote_city'] ?'是':'否';
                            $csvData[$index][]  = $orderRow['is_fba_tax'] ?'预付':'到付';
                            $tempExcel->writeOneTr($csvData[$index]);
                              $index = 1;
                             $csvData = array();
                        }
                         
//                        $exportIndex = $exportObj -> setRowsValue($csvData , $exportIndex , function($index){
//                            $keys = array(2,4,14,19,22,36,42,43,44);
//                            if(in_array($index , $keys)){
//                                return  Common_ExportForExcel::TYPE_STRING;
//                            }
//                            return false;
//                        });
                      
                    }
                }

            }
        }
        $tempExcel->writeString('</table></body></html>');
        unset($tempExcel);
        $downLoad=new Common_ExportExcelByTable($tempFile,'r');
        $downLoad->downLoadExcelFile($downLoadFilename);
        unlink($tempFile);
        die();
    }

    public function exportKawaOrderAction(){
        $orderIdArr = $this->_request->getParam('orderId','');
        $exportType = $this->_request->getParam("exportType","");
        $filename = "kawaOrder".date('YmdHis').".xls";

        require_once APPLICATION_PATH . '/../libs/PHPExcel.php';
        require_once APPLICATION_PATH . '/../libs/PHPExcel/IOFactory.php';

        $table = new PHPExcel();
        $table->getDefaultStyle()->getFont()->setName('宋体');
        $table->setActiveSheetIndex(0);
        $table->setActiveSheetIndex(0)->setTitle("区内仓订单列表");
        $objActSheet=$table->setActiveSheetIndex(0);

        $objActSheet->getColumnDimension('A')->setWidth(10);
        $objActSheet->getColumnDimension('B')->setWidth(20);
        $objActSheet->getColumnDimension('C')->setWidth(20);
        $objActSheet->getColumnDimension('D')->setWidth(20);
        $objActSheet->getColumnDimension('E')->setWidth(15);
        $objActSheet->getColumnDimension('F')->setWidth(15);
        $objActSheet->getColumnDimension('G')->setWidth(15);
        $objActSheet->getColumnDimension('H')->setWidth(15);
        $objActSheet->getColumnDimension('I')->setWidth(15);
        $objActSheet->getColumnDimension('J')->setWidth(15);
        $objActSheet->getColumnDimension('K')->setWidth(15);
        $objActSheet->getColumnDimension('L')->setWidth(15);
        $objActSheet->getColumnDimension('M')->setWidth(15);
        $objActSheet->getColumnDimension('N')->setWidth(15);
        $objActSheet->getColumnDimension('O')->setWidth(15);
        $objActSheet->getColumnDimension('P')->setWidth(15);
        $objActSheet->getColumnDimension('Q')->setWidth(15);
        $objActSheet->getColumnDimension('R')->setWidth(15);
        $objActSheet->getColumnDimension('S')->setWidth(15);
        $objActSheet->getColumnDimension('T')->setWidth(15);

        $objActSheet->setCellValue('A1','订单号');
        $objActSheet->setCellValue('B1','运单号');
        $objActSheet->setCellValue('C1','件数');
        $objActSheet->setCellValue('D1','包装类型');
        $objActSheet->setCellValue('E1','收费实重');
        $objActSheet->setCellValue('F1','收费材重');
        $objActSheet->setCellValue('G1','指定路线');
        $objActSheet->setCellValue('H1','目的地');
        $objActSheet->setCellValue("I1","品名");
        $objActSheet->setCellValue("J1","申报价值");
        $objActSheet->setCellValue("K1","收件人公司");
        $objActSheet->setCellValue("L1","收件人");
        $objActSheet->setCellValue("M1","收件人电话");
        $objActSheet->setCellValue('N1','收件地址');
        $objActSheet->setCellValue('O1','收件国家');
        $objActSheet->setCellValue('P1','收件省');
        $objActSheet->setCellValue('Q1','城市名');
        $objActSheet->setCellValue('R1','邮编');
        $objActSheet->setCellValue('S1','付款方式');
        $objActSheet->setCellValue('T1','货物类型');

        if($exportType=="1"){
            $index = 2;
            foreach($orderIdArr as $val){
                if($val=="") continue;
                $orderRow = Service_Orders::getByField($val,"order_id","*");
                $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
                $orderAddressBook = Service_OrderAddressBook::getByField($orderRow['order_code'],"order_code","*");
                $pack = Service_ShipOrderDetail::getByCondition(array("order_code"=>$orderRow['order_code']),"count(*)");
                $orderProduct = Service_OrderProduct::getByCondition(array("order_code"=>$orderRow['order_code']),"*");
                if(!$pack) $pack = 1;
                $country = Service_Country::getByField($orderAddressBook['oab_country_id'],"country_id","*");
                $p = Service_Product::getByField($orderProduct[0]['product_id'],"product_id","*");

                $objActSheet->setCellValue("A".$index,$orderRow['order_code']);
                $objActSheet->setCellValueExplicit("B".$index,$shipOrder['tracking_number'],PHPExcel_Cell_DataType::TYPE_STRING);
                $objActSheet->setCellValue("C".$index,$pack);
                $objActSheet->setCellValue("D".$index,"WPX");
                $objActSheet->setCellValue("E".$index,$shipOrder['so_fee_weight']);
                $objActSheet->setCellValue("F".$index,"");
                $objActSheet->setCellValue("G".$index,$shipOrder['sm_code']);
                $objActSheet->setCellValue("H".$index,$country['country_code']);
                $objActSheet->setCellValue("I".$index,$p['hs_goods_name']);
                $objActSheet->setCellValue("J".$index,$shipOrder['so_declared_value']);
                $objActSheet->setCellValue("K".$index,$orderAddressBook['oab_company']);
                $objActSheet->setCellValue("L".$index,$orderAddressBook['oab_firstname']);
                $objActSheet->setCellValue("M".$index,$orderAddressBook['oab_cell_phone']);
                $objActSheet->setCellValue("N".$index,$orderAddressBook['oab_street_address1']." ". $orderAddressBook['oab_street_address2']);
                $objActSheet->setCellValue("O".$index,$country['country_name']);
                $objActSheet->setCellValue("P".$index,$orderAddressBook['oab_state']);
                $objActSheet->setCellValue("Q".$index,$orderAddressBook['oab_city']);
                $objActSheet->setCellValueExplicit("R".$index,$orderAddressBook['oab_postcode'],PHPExcel_Cell_DataType::TYPE_STRING);
                $objActSheet->setCellValue("S".$index,"PP");
                $objActSheet->setCellValue('T'.$index,'');
                $index++;
            }

        }else{

            $params = $this->_request->getParams();
            $condition = $this->serviceClass->getNewMatchFields($params);
            if( is_array( $condition['sm_code'] ) && count( $condition['sm_code'] ) == 1 && $condition['sm_code'][0] === '' ) {
                unset($condition['sm_code']);
            }
            if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
                unset($condition['oab_country_id']);
            }
            if($params['searchType']=='orderCode'){
                $condition['order_code']=$params['searchCode'];
            }else{
                $condition['reference_no']=$params['searchCode'];
            }
            $time = Common_Common::getStartAndEndTime($params['dateFor'],$params['dateTo']);
            $conditionTemp['dateFor'] = $time[0];
            $conditionTemp['dateTo'] = $time[1];
            unset($condition['dateFor']);
            unset($condition['dateTo']);
            $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';

            switch($searchDateType){
                case 'createDate':
                    $condition['dateFor']= $conditionTemp['dateFor'];
                    $condition['dateTo']= $conditionTemp['dateTo'];
                    break;
                case 'printTime':
                    $condition['printDateFor']= $conditionTemp['dateFor'];
                    $condition['printDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'packTime':
                    $condition['packDateFor']= $conditionTemp['dateFor'];
                    $condition['packDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'shipTime':
                    $condition['shipDateFor']= $conditionTemp['dateFor'];
                    $condition['shipDateTo']= $conditionTemp['dateTo'];
                    break;
                default:
                    break;
            }
            //产品代码、品类
            $condition['oab_type'] = '0';
            if($condition['tracking_number']){
                $shipOrder = Service_ShipOrder::getByField($condition['tracking_number'],'tracking_number');
                if(!empty($shipOrder)){
                    $condition['order_id'] = $shipOrder['order_id'];
                }else{
                    $condition['order_id'] = 'none';
                }
            }

            unset($params);

            $count = $this->serviceClass->getOrderInnerJoinProductByCondition($condition, 'count(*)');

            $pageSize = 20;
            $totalPage = ceil($count/$pageSize);
            $index = 2;
            for($page=1;$page<=$totalPage;$page++){
                $rows = $this->serviceClass->getOrderInnerJoinProductByCondition($condition,'*', $pageSize, $page, array('orders.order_id desc'));
                foreach($rows as $val){
                    if($val=="") continue;
                    $orderRow = Service_Orders::getByField($val['order_id'],"order_id","*");
                    $shipOrder = Service_ShipOrder::getByField($orderRow['order_code'],"order_code","*");
                    $orderAddressBook = Service_OrderAddressBook::getByField($orderRow['order_code'],"order_code","*");
                    $pack = Service_ShipOrderDetail::getByCondition(array("order_code"=>$orderRow['order_code']),"count(*)");
                    $orderProduct = Service_OrderProduct::getByCondition(array("order_code"=>$orderRow['order_code']),"*");
                    if(!$pack) $pack = 1;
                    $country = Service_Country::getByField($orderAddressBook['oab_country_id'],"country_id","*");
                    $p = Service_Product::getByField($orderProduct[0]['product_id'],"product_id","*");

                    $objActSheet->setCellValue("A".$index,$orderRow['order_code']);
                    $objActSheet->setCellValueExplicit("B".$index,$shipOrder['tracking_number'],PHPExcel_Cell_DataType::TYPE_STRING);
                    $objActSheet->setCellValue("C".$index,$pack);
                    $objActSheet->setCellValue("D".$index,"WPX");
                    $objActSheet->setCellValue("E".$index,$shipOrder['so_fee_weight']);
                    $objActSheet->setCellValue("F".$index,"");
                    $objActSheet->setCellValue("G".$index,$shipOrder['sm_code']);
                    $objActSheet->setCellValue("H".$index,$country['country_code']);
                    $objActSheet->setCellValue("I".$index,$p['hs_goods_name']);
                    $objActSheet->setCellValue("J".$index,$shipOrder['so_declared_value']);
                    $objActSheet->setCellValue("K".$index,$orderAddressBook['oab_company']);
                    $objActSheet->setCellValue("L".$index,$orderAddressBook['oab_firstname']);
                    $objActSheet->setCellValueExplicit("M".$index,$orderAddressBook['oab_cell_phone'],PHPExcel_Cell_DataType::TYPE_STRING);
                    $objActSheet->setCellValue("N".$index,$orderAddressBook['oab_street_address1']." ". $orderAddressBook['oab_street_address2']);
                    $objActSheet->setCellValue("O".$index,$country['country_name']);
                    $objActSheet->setCellValue("P".$index,$orderAddressBook['oab_state']);
                    $objActSheet->setCellValue("Q".$index,$orderAddressBook['oab_city']);
                    $objActSheet->setCellValueExplicit("R".$index,$orderAddressBook['oab_postcode'],PHPExcel_Cell_DataType::TYPE_STRING);
                    $objActSheet->setCellValue("S".$index,"PP");
                    $objActSheet->setCellValue("T".$index,"");
                    $index++;
                }
            }
        }

        $objWriter = PHPExcel_IOFactory::createWriter($table, 'Excel2007');
        header( "Pragma: public" );
        header( "Expires: 0" );
        header("Accept-Ranges: bytes");
        header('cache-control:must-revalidate');
        header("Content-Disposition: attachment; filename=KawaOrder".date("YmdHis").".xlsx");
        header("Content-Type:APPLICATION/OCTET-STREAM;charset=utf-8");
        $objWriter->save('php://output');

    }
    public function jhzccqAction(){
        if ($this->_request->isPost()) {
             $order_code = trim($this->_request->getParam('order_code', ''));
            $order = Service_Orders::getByField($order_code, "order_code", "*");
            $message = '';
        if (empty($order_code)){
                    $message = "<p class='messageFail'>输入订单号/服务商单号为空</p>";
        }else{
            if(empty($order)){
                $shipOrder=Service_ShipOrder::getByField($order_code, "tracking_number", "*");
                if (empty($shipOrder)) {

                    $reference_no=Service_Orders::getByCondition(
                        array('ref_tracking_number'=>$order_code),"*");
                    if (empty($reference_no)) {
                           $message = "<p class='messageFail'>输入订单/服务商单号不存在</p>";
                    }else{
                        foreach ($reference_no as $key => $value) {
                        if ($value['order_status']=='0') {
                            continue;
                        }
                        if($value['order_status']!='7' && $value['order_status']!='4'){
                        $message = "<p class='messageFail'>服务商单号对应订单状态不是已提交或者已打包</p>";
                        }
                        if($value['order_mode_type']!='1'){
                        $message = "<p class='messageFail'>服务商单号对应订单不是集货订单</p>";
                        }
                        if($value['sm_code']=='ZCCQ'){
                        $message = "<p class='messageFail'>服务商单号对应订单已经暂存出区</p>";
                        }
                    }

                    }
                }else{
                    $order = Service_Orders::getByField($shipOrder['order_code'], "order_code", "*");
                    if($order['order_status']!='7' && $order['order_status']!='4'){
                        $message = "<p class='messageFail'>追踪号对应订单状态不是已提交或者已打包</p>";
                    }
                    if($order['order_mode_type']!='1'){
                        $message = "<p class='messageFail'>追踪号对应订单不是集货订单</p>";
                    }
                    if($order['sm_code']=='ZCCQ'){
                        $message = "<p class='messageFail'>追踪号对应订单已经暂存出区</p>";
                        }
                     }
                }else{
                //print_r($order);exit;
                if($order['order_status']!='7' && $order['order_status']!='4'){
                        $message = "<p class='messageFail'>订单状态不是已提交或者已打包</p>";
                    }
                if($order['order_mode_type']!='1'){
                        $message = "<p class='messageFail'>订单不是集货订单</p>";
                    }
                if($order['sm_code']=='ZCCQ'){
                        $message = "<p class='messageFail'>订单已经暂存出区</p>";
                    }
                }
            }


            if ($message) {
                    $this->view->message = $message;
            }else{
                $this->view->order_code = $order_code;
                }
        }
        echo Ec::renderTpl($this->tplDirectory . "jh-zccq.tpl", 'layout');
    }
    public function chuquAction(){
        $result = array('state' => 0, 'message' => 'Fail', 'data' => array());
        $order = $this->_request->getParam('order', '');
        if (!empty($order)) {
           $updateRow1=array(
                'sm_code'=>'ZCCQ',
            );
            $updateRow2=array(
                'oab_country_id'=>'49',
            );
           $orders=Service_Orders::getByField($order,'order_code');
           if ($orders) {
              Service_Orders::update($updateRow1,$order,'order_code');
              Service_OrderAddressBook::update($updateRow2,$order,'order_code');
           }else{
                $shipOrder=Service_ShipOrder::getByField($order, "tracking_number", "*");
                if ($shipOrder) {
                  $ordera = Service_Orders::getByField($shipOrder['order_code'], "order_code", "*");
                    Service_Orders::update($updateRow1,$ordera['order_code'],'order_code');
                    Service_OrderAddressBook::update($updateRow2,$ordera['order_code'],'order_code');
                }else{
                   $reference_no=Service_Orders::getByCondition(
                        array('ref_tracking_number'=>$order),"*");
                   foreach($reference_no as $value){
                     if ($value['order_status']=='0') {
                            continue;
                        }
                    Service_Orders::update($updateRow1,$value['order_code'],'order_code');
                    Service_OrderAddressBook::update($updateRow2,$value['order_code'],'order_code');
                   }

                }
           }

            $result = array('state' => 1, 'message' => '');
        }
        die(Zend_Json::encode($result));
    }
    public function batchSearchlistAction() {

        $orderCode = '';
        $cacheFile = '';
        if ($this->getRequest()->isPost()) {
            $total = 0;
            $orderCode = $this->getRequest()->getPost('order_code', '');
            $cacheFile = $this->getRequest()->getPost('cache_file');
            $page = $this->getRequest()->getParam('page', 1);
            $pageSize = $this->getRequest()->getParam('pageSize', 20);
            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;

            if ($orderCode) {
                $orderCodeArray = Service_OrderProcess::splitOrderCode($orderCode);
                $response = array(
                    'state' => 0,
                    'total' => 0,
                    'data' => array(),
                    'msg' => '找不到相匹配的数据',
                );
                if (!is_array($orderCodeArray)) {
                    $response['msg'] = $orderCodeArray;

                    exit(json_encode($response));
                }
                $totalReuslut = Service_OrderProcess::getQueryOrder($orderCodeArray, 'count(*)');
                $total = $totalReuslut['total'];
                $data = Service_OrderProcess::getQueryOrder($orderCodeArray, '*', $pageSize, $page);
            } elseif ($cacheFile) {
                $cachDir = Service_OrderProcess::getCacheDir();
                if (!file_exists($cachDir . $cacheFile)) {
                    $response['msg'] = '提交数据不正确';
                    exit(json_encode($response));
                } else {
                    $result = include $cachDir . $cacheFile;
                    $total = $result['total'];
                    unset($result['total']);
                    $start = ($page - 1) * $pageSize;
                    $data = array_slice($result, $start, $pageSize, true);
                }
            } else {
                $response['msg'] = '提交数据不正确';
            }


            if (count($data) > 0) {
                $response['state'] = 1;
                $response['total'] = $total;
                $response['data'] = $data;
            }

            unset($data);
            exit(json_encode($response));
        }
        $this->view->cache_file = $cacheFile;
        $this->view->orderCode = $orderCode;
        echo Ec::renderTpl($this->tplDirectory . "batch-search.tpl", 'layout');
    }

    public function bsSearchImportAction() {
        if (!$this->getRequest()->isPost()) {
            header('content-type: text/html; charset=utf-8');
            exit('非法请求：请求方式不是POST');
        }

        set_time_limit(0); // 不限执行时间
        ini_set('memory_limit', '2048M');

        $fileInfo = $_FILES['order_file'];
        $cache = '';
        $data = array();
        $error = '';
        $table = '';

        if (0 !== $fileInfo['error']) {
            $error = '上传订单数据文件失败';

            switch ($fileInfo['error']) {
                case UPLOAD_ERR_INI_SIZE:
                    $error .= '：文件大小超过系统配置指定值' . ini_get('upload_max_filesize');
                    break;
                case UPLOAD_ERR_FORM_SIZE:
                    $error .= '：文件大小超过表单指定值（MAX_FILE_SIZE）';
                    break;
                case UPLOAD_ERR_PARTIAL:
                    $error .= '：文件上传不完整';
                    break;
                case UPLOAD_ERR_NO_FILE:
                    $error .= '：没有文件上传';
                    break;
                case UPLOAD_ERR_NO_TMP_DIR:
                    $error .= '：找不到临时目录';
                    break;
                case UPLOAD_ERR_CANT_WRITE:
                    $error .= '：文件写入失败';
                    break;
                default:
                    break;
            }
        } else {
            $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
            $tmp = Service_OrderProcess::getCacheDir() . date('YmdHis-') . md5('ORDER-BATCHSEARCH-IMPORT-FILE-' . microtime(TRUE)) . '.' . $ext;
            if (!in_array(strtoupper($ext), array('XLS', 'XLSX'), TRUE)) {
                $error = '不受支持的文件类型：' . $ext;
            } elseif (!move_uploaded_file($fileInfo['tmp_name'], $tmp)) {
                $error = '移动上传订单数据文件时发生异常';
            } else {

                $response = Service_OrderProcess::buildCache($tmp);

                if (0 === $response['status']) {
                    $error = $response['message'];
                } else {
                    $cache = $response['message'];
                }
            }
        }
        if ($error != '') {
            $table = '<tr class="table-module-b1"><td colspan="7">' . $error . '</td></tr>';
            echo <<<SCRIPT
<script type="text/javascript">
var _pw_             = window.parent;
var _pw_table_       = _pw_.document.getElementById('table-module-list-data');
_pw_table_.innerHTML = '{$table}';
</script>
SCRIPT;
        } else {
            echo <<<SCRIPT
<script type="text/javascript">
var _pw_             = window.parent;
var _pw_table_       = _pw_.document.getElementById('table-module-list-data');
        _pw_.$('#hiddenCacheFile').val('{$cache}');
         _pw_.$('#orderCodeArea').val('');
   _pw_.submitSearch();
</script>
SCRIPT;
        }
    }

    public function batchExportAction() {
        $orderCode = trim($this->getRequest()->getParam('order_code', ''));
        $cacheFile = trim($this->getRequest()->getParam('file', ''));
        $orderCode = Service_OrderProcess::splitOrderCode($orderCode);
        $data = array();
        if ('' !== $cacheFile && is_file(Service_OrderProcess::getCacheDir() . $cacheFile)) {
            $data = include Service_OrderProcess::getCacheDir() . $cacheFile;
            unset($data['total']);
        } elseif (is_array($orderCode)) {
            $data = Service_OrderProcess::getQueryOrder($orderCode,'*');
        }

        if(empty($data))die('没有数据');
        $orderIdArray=array();
        foreach($data as $d){
            $orderIdArray[]=$d['order_id'];
        }
       Service_OrderProcess::batchExport($orderIdArray);
    }
    public function downLoadTemplatAction(){
    	$fullPath = APPLICATION_PATH."/../data/xls".'/batch-search-template.xls';
         Common_Common::downloadFile($fullPath);
    }
    //到处保单
    public function exportInsuranceAction() {
        set_time_limit(0);
        @ini_set('memory_limit','2048M');
        $params = $this->_request->getParams();

        $condition = array();
        if($params['exportType'] == '1'){
            $condition['order_id_array'] = array($this->_request->getParam('orderId',''));
        }else{
            $condition = $this->serviceClass->getNewMatchFields($params);
            if( is_array( $condition['sm_code'] ) && count( $condition['sm_code'] ) == 1 && $condition['sm_code'][0] === '' ) {
                unset($condition['sm_code']);
            }
            if( is_array( $condition['oab_country_id'] ) && count( $condition['oab_country_id'] ) == 1 && $condition['oab_country_id'][0] === '' ) {
                unset($condition['oab_country_id']);
            }
            if($params['searchType']=='orderCode'){
                $condition['order_code']=$params['searchCode'];
            }else{
                $condition['reference_no']=$params['searchCode'];
            }
            $time = Common_Common::getStartAndEndTime($params['dateFor'],$params['dateTo']);
            $conditionTemp['dateFor'] = $time[0];
            $conditionTemp['dateTo'] = $time[1];
            unset($condition['dateFor']);
            unset($condition['dateTo']);
            $searchDateType=isset($params['searchDateType'])?$params['searchDateType']:'';

            switch($searchDateType){
                case 'createDate':
                    $condition['dateFor']= $conditionTemp['dateFor'];
                    $condition['dateTo']= $conditionTemp['dateTo'];
                    break;
                case 'printTime':
                    $condition['printDateFor']= $conditionTemp['dateFor'];
                    $condition['printDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'packTime':
                    $condition['packDateFor']= $conditionTemp['dateFor'];
                    $condition['packDateTo']= $conditionTemp['dateTo'];
                    break;
                case 'shipmentTime':
                    $condition['shipmentDateFor']= $conditionTemp['dateFor'];
                    $condition['shipmentDateTo']= $conditionTemp['dateTo'];
                    break;
                default:
                    break;
            }

            $condition['oab_type'] = '0';
            if($condition['tracking_number']){
                $shipOrder = Service_ShipOrder::getByField($condition['tracking_number'],'tracking_number');
                if(!empty($shipOrder)){
                    $condition['order_id'] = $shipOrder['order_id'];
                }else{
                    $condition['order_id'] = 'none';
                }
            }
            unset($params);
        }
        $count = $this->serviceClass->getLeftJoinAllByCondition($condition, 'count(*)');
        $limitation = Service_ShippingMethod::getDeliveryLimitation();//时效
        $countryArea = array();
        $areaText = array('ASIA'=>'亚洲','EUROPE'=>'欧洲','AFRICA'=>'非洲','OCEANIA'=>'大洋洲','NORTHAMERICA'=>'北美','SOUTHAMERICA'=>'南美');
        //获取所有保险
        $warehouse = Service_Warehouse::getByField('SZ01','warehouse_code');
        $feeItemRows = Service_OtherFee::getByCondition( array('warehouse_id'=>$warehouse['warehouse_id'],'ft_code'=>'SI'));
        $insurance = array();
        foreach( $feeItemRows as $value) {
            $insurance[] = $value['fee_id'];
        }

        header('Content-Type: application/vnd.ms-excel;charset=gbk');
        header("Content-Disposition: attachment;filename=insurance.xls");
        header('Cache-Control: max-age=0');

        $host = 'http://'.$_SERVER['HTTP_HOST'];
        $str  = '<html><head><meta charset="gb2312"><style type="text/css">td{border: 0.5pt solid black;text-align: center;font-size:8pt ;height:auto;} ';
        $str .= '</style></head><body><table border=0 cellpadding=0 cellspacing=0 width=2358 style="border-collapse:collapse;table-layout:fixed;width:1772pt">';
        $str .= '<tr><td colspan="25" style="text-align: left;border:none;"><img width=140 height=18 style="width:120pt;height:20pt" src="'.$host.'/images/pingan/pingan.jpg"></td></tr>';
        $str .= '<tr><td colspan="25" style="font-size:18pt;border:none;font-family: 方正姚体;">中国平安财产保险股份有限公司</td></tr>';
        $str .= '<tr><td colspan="25" style="font-weight:bold;font-size:10pt;border:none;">邮包快递进口出口申报表申报表</td></tr>';
        $str .= '<tr><td colspan="25" style="text-align: left;border:none;">被保险人/投保人: 深圳保宏贸易服务有限公司</td></tr>';
        $str .= '<tr><td style="border:none;">申报日期: </td>';
        $str .= '<td colspan="22" style="border:none;"></td>';
        $str .= '<td style="border:none;">币种: </td>';
        $str .= '<td style="border:none;">人民币</td></tr>';
        $str .=  '<tr style="background-color: #D8E4BC;"><td rowspan="2" width=66 style="width:50pt">序号</td>';
        $str .= '<td rowspan="2" width=72 style="width:54pt">运输方式</td>';
        $str .= '<td rowspan="2" width=93 style="width:70pt">订单号</td>';
        $str .= '<td rowspan="2" width=111 style="width:83pt">服务商单号</td>';
        $str .=  '<td colspan="2">货物描述（名称、数量）</td>';
        $str .= '<td rowspan="2" width=72 style="width:54pt">包裹件数</td>';
        $str .= '<td rowspan="2" width=93 style="width:70pt">出货时间</td>';
        $str .= '<td rowspan="2" width=93 style="width:70pt">承诺投妥日期</td>';
        $str .= '<td rowspan="2" width=81 style="width:61pt">投保人</td>';
        $str .= '<td rowspan="2" width=80 style="width:60pt">收货地区</td>';
        $str .= '<td colspan="5">收货人（买方）姓名及地址</td>';
        $str .= '<td colspan="4" width=81 style="width:61pt">保险金额</td>';
        $str .= '<td rowspan="2" width=81 style="width:61pt">货物运输保险</td>';
        $str .= '<td rowspan="2" width=81 style="width:61pt">订单延误保险</td>';
        $str .= '<td rowspan="2" width=73 style="width:55pt">订单取消保险</td>';
        $str .= '<td rowspan="2" width=73 style="width:55pt">产品责任保险</td>';
        $str .= '<td rowspan="2" width=73 style="width:55pt">保费总额(RMB)</td>';
        $str .= '<tr style="background-color: #D8E4BC;"><td width=70 style="width:53pt">海关品名</td>';
        $str .= '<td width=70 style="width:53pt">产品总数</td>';
        $str .= '<td width=70 style="width:53pt">收件人国家</td>';
        $str .= '<td width=112 style="width:84pt">收件人州\区</td>';
        $str .= '<td width=112 style="width:84pt">收件人城市</td>';
        $str .= '<td width=123 style="width:92pt">收件人地址</td>';
        $str .= '<td width=93 style="width:70pt">收件人姓名</td>';
        $str .= '<td width=73 style="width:55pt">本月汇率</td>';
        $str .= '<td width=73 style="width:55pt">成交币种</td>';
        $str .= '<td width=73 style="width:55pt">成交总价</td>';
        $str .= '<td width=73 style="width:55pt">投保金额(RMB)</td></tr>';
        echo mb_convert_encoding($str,'gb2312','utf-8');
        ob_flush();
        flush();
        if( $count > 0 ){
            //循环取数据，防止一次爆内存
            $page = 1;
            $pageSize = 200;
            $cnt = 1;
            $totalPiece = $totalInsuranceAmount = $totalAmount = 0;

            while( $rows = $this->serviceClass->getLeftJoinAllByCondition($condition, '*', $pageSize, $page,'orders.order_id') ) {
                foreach( $rows as $value) {
                    if( !isset($countryArea[$value['oab_country_id']])) {
                        $country = Service_Country::getByField($value['oab_country_id']);
                        $countryArea[$value['oab_country_id']] = array('name'=>$country['country_name'],'area'=>$country['country_area']);
                    }

                    $piece = $value['so_piece'] < 1 ?  1 : $value['so_piece'];
                    $totalPiece += $piece;
                    $str = '<tr><td>'.$cnt.'</td>';
                    $str .= '<td>'.$value['sm_code'].'</td>';
                    $str .= '<td>'.$value['order_code'].'</td>';
                    $str .= '<td>'.$value['ref_tracking_number'].'</td>';
                    //获取第一行产品
                    $orderProduct = Service_OrderProduct::getByField($value['order_code'],'order_code');
                    $product = Service_Product::getByField($orderProduct['product_id']);
                    $str .= '<td>'.$product['hs_goods_name'].'</td>';
                    $str .= '<td>'.$orderProduct['op_quantity'].'</td>';
                    $str .= '<td>'.$piece.'</td>';
                    $str .= '<td>'.substr($value['shipment_time'],0,10).'</td>';
                    $area = $countryArea[$value['oab_country_id']]['area'];
                    $name = $countryArea[$value['oab_country_id']]['name'];
                    $deliveryDate = $value['shipment_time'] && $value['shipment_time'] != '0000-00-00 00:00:00' ? $value['shipment_time'] : '';
                    $limit = 0;
                    if( !isset($limitation[ $value['sm_code'] ][ $area ])) {
                        $deliveryDate = '';
                    } else {
                        $limit = $limitation[ $value['sm_code'] ][ $country['country_area'] ];
                    }
                    $str .= '<td>'.( $value['insurance'] == 1 && $deliveryDate != '' ? date('Y-m-d',strtotime('+'.($limit+1).' day '.$deliveryDate )) : '').'</td>';
                    $str .= '<td>深圳保宏贸易服务有限公司</td>';
                    $str .= '<td>'.$areaText[$area].'</td>';
                    $str .= '<td>'.$name.'</td>';
                    $str .= '<td>'.$value['oab_state'].'</td>';
                    $str .= '<td>'.$value['oab_city'].'</td>';
                    $str .= '<td>'.$value['oab_street_address1'].' '.$value['oab_street_address2'].'</td>';
                    $str .= '<td>'.$value['oab_firstname'].' '.$value['oab_lastname'].'</td>';

                    $rate = Service_OtherFeeProcess::getRate($value['currency_code'],1,$value['order_code']);
                    //投保金额
                    $premium = 0;
                    if( $value['insurance'] == 1 ) {
                        $premium = $rate ? sprintf( '%.2f', $value['charge'] * $rate * $value['insurance_rate'] ): '';//投保金额 = 成交总价*投保金额率
                    }

                    $totalAmount += $premium;

                    $str .= '<td>'.($rate !== false ? $rate : '').'</td>';
                    $str .= '<td>'.$value['currency_code'].'</td>';
                    $str .= '<td>'.$value['currency_code'].' '.$value['charge'].'</td>';
                    $str .= '<td>￥'.$premium.'</td>';
                    $str .= '<td>'.($value['insurance'] == '1' ? '是' : '否').'</td>';
                    $str .= '<td>'.( in_array( $value['insurance_code'],array('ODI','OCI','GRI')) ? '是' : '否').'</td>';
                    $str .= '<td>'.(in_array( $value['insurance_code'],array('OCI','GRI')) ? '是' : '否').'</td>';
                    $str .= '<td>'.($value['insurance_code'] == 'GRI' ? '是' : '否').'</td>';
                    $insuranceAmount = 0;
                    if( $value['insurance'] == '1' && $insurance){
                        $ba = Service_BilBusinessAttach::getByField($value['order_code'],'bb_refer_code');
                        if( $ba ) {
                            $balanceLogRows = Service_BilPayment::getByCondition( array('bb_id'=>$ba['bb_id'],'ft_code'=>'SI'), 'bp_org_amount' );
                            foreach( $balanceLogRows as $v) {
                                $insuranceAmount += $v['bp_org_amount'];
                            }
                        }
                    }
                    $str .= '<td>￥'.$insuranceAmount.'</td></tr>';
                    $totalInsuranceAmount += $insuranceAmount;
                    echo mb_convert_encoding($str,'gb2312','utf-8');
                    ob_flush();
                    flush();
                    ++$cnt;
                }
                ++$page;
            }
            $str = '<tr><td>合计</td><td></td><td></td><td></td><td></td><td></td>';
            $str .= '<td>'.$totalPiece.'</td>';
            $str .= '<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>';
            $str .= '<td>￥'.$totalAmount.'</td><td></td><td></td><td></td><td></td>';
            $str .= '<td>￥'.$totalInsuranceAmount.'</td></tr>';
            echo mb_convert_encoding($str,'gb2312','utf-8');
        }
        echo '</table></body></html>';
        ob_flush();
        flush();
        exit;
    }

    public function editOpAction(){
        $return = array(
            'state' => 0,
            'message' => '',
            'errorMessage' => array('操作成功')
        );

        if ($this->_request->isPost()) {
            $params = $this->_request->getParams();
            $editOpArr = $params['product_title_en'];
            $db = Common_Common::getAdapter();
            $db->beginTransaction();
            try{
                $hasChange = 0;
                $orderCode = "";
                $editContent = "";
                foreach($editOpArr as $key=>$value){
                    $orderProduct = Service_OrderProduct::getByField($key,"op_id","*");
                    $orderCode = $orderProduct['order_code'];
                    $pte = trim($value);
                    if($pte=="") throw new Exception("产品条码[".$orderProduct['product_barcode']."]的英文描述必填!");
                    if($orderProduct['product_title_en']!=$pte){
                        $updateOp = array(
                            'product_title_en'=>$pte,
                        );
                        Service_OrderProduct::update($updateOp,$orderProduct['op_id'],"op_id");
                        $editContent.="修改产品英文描述:[".$orderProduct['product_barcode']."]:".$orderProduct['product_title_en']."=>".$pte.";";
                        $hasChange = 1;
                    }
                }
                if($hasChange){
                    $orderRow = Service_Orders::getByField($orderCode,"order_code","*");
                    $row = array(
                        'order_id' => $orderRow['order_id'],
                        'order_code' => $orderRow['order_code'],
                        'ol_type' => 1,
                        'order_status_from' => $orderRow['order_status'],
                        'order_status_to' => $orderRow['order_status'],
                        'user_id' => Service_User::getUserId(),
                        'ol_ip' => Common_Common::getIP(),
                        'ol_comments' => $editContent,
                    );
                    Service_OrderLog::add($row);
                }
                $db->commit();
                $return['state'] = 1;
                $return['message'] = "修改成功";
            }catch (Exception $e){
                $db->rollback();
                $return['state'] = 0;
                $return['message'] = "修改失败:".$e->getMessage();
                $return['errorMessage'] =array( "修改失败:".$e->getMessage());
            }

        }
        die(Zend_Json::encode($return));
    }
}
