<?php
class Shipment_OrdersOnePackController extends Ec_Controller_Action
{
    public function preDispatch()
    {
        $this->tplDirectory = "shipment/views/order/";
    }

    /**
     * @desc 一票一件
     * @ 订单打包贴标页面
     */
    public function listAction()
    {
        $this->view->url = 'http://'.$_SERVER['HTTP_HOST'].'/pdf-plugin/web/viewer.html?file=http://'.$_SERVER['HTTP_HOST'].'/shipment/print/get-pdf-label/orderCode/';
        echo Ec::renderTpl($this->tplDirectory . "one_pack.tpl", 'layout');
    }

    /**
     * @获取下架单信息
     */
    public function getPickingAction()
    {
        $return = array(
            'state' => 0,
            'message' => '',
            'error' => array(),
            'data' => array()
        );
        if ($this->_request->isPost()) {
            $pickingCode = $this->_request->getParam('pickingCode', '');
            $packObj = new Service_PackProcess();
            $return = $packObj->getPickingByPickingCode($pickingCode,null, null, 0);
            //print_r($return);die;
        }
        die(Zend_Json::encode($return));
    }


    /**
     * @获取订单信息
     * @一票一件
     */
    public function getProductAction()
    {
        $return = array(
            'state' => 0,
            'message' => '',
            'error' => array(),
            'data' => array()
        );
        if ($this->_request->isPost()) {
            $productBarcode = $this->_request->getParam('productBarcode', '');
            $pickingCode = $this->_request->getParam('pickingCode', '');
            if(empty($productBarcode)){
                $return['error'][]='产品代码/SKU不能为空.';
                die(Zend_Json::encode($return));
            }
            $packObj = new Service_PackProcess();
            $return = $packObj->getPickingByPickingCode($pickingCode,$productBarcode, null, 0);
        }
        die(Zend_Json::encode($return));
    }

    /**
     * @desc 订单打包贴标
     * @一票一件
     */
    public function submitPackAction()
    {
        $return = array(
            'state' => 0,
            'message' => '',
            'isFocus'=>0 ,
            'error' => array(),
            'data' => array()
        );
        if ($this->_request->isPost()) {
            $pickingCode = $this->_request->getParam('pickingCode', '');
            $productBarcode = $this->_request->getParam('productBarcode', '');
            $packageCode = $this->_request->getParam('packingCode', '');
            $packObj = new Service_PackProcess();
            $return = $packObj->assignOrderTransaction($pickingCode,$packageCode,$productBarcode,null);
        }
        die(Zend_Json::encode($return));
    }

    /**
     * @desc 订单打包贴标
     * @一票一件
     */
    public function confirmPickOrdersAction()
    {
        $return = array(
            'state' => 0,
            'message' => '',
            'error' => array(),
            'data' => array()
        );
        if ($this->_request->isPost()) {
            $pickingCode = $this->_request->getParam('pickingCode', '');
            $packObj = new Service_PackProcess();
            $return = $packObj->confirmPickOrderTransaction($pickingCode,null);
        }
        die(Zend_Json::encode($return));
    }

    /**
     * @desc 获取用户最近一票一件打包订单记录
     */
    public function getPrintOrdersLogAction()
    {
        $result = array('state' => 0, 'message' => '', 'data' =>array());
        if ($this->_request->isPost()) {
            $condition=array(
                'pack_user_id'=>$this->_userAuth->userId,
            );
            $orderRows=Service_OrderOperationTime::getByCondition($condition,array('order_id','order_code','process_time','pack_time'),5,1,array('pack_time desc','process_time desc'));
            if(!empty($orderRows)){
                foreach($orderRows as $key=> $orderRow){
                    $pickRow=Service_PickingDetail::getByField($orderRow['order_code'],'order_code',array('picking_code','product_barcode'));
                    $shipOrder=Service_ShipOrder::getByField($orderRow['order_code'],'order_code',array('tracking_number', 'sm_code'));
                    if(empty($pickRow)){
                        continue;
                    }
                    $orderRow['pick']=$pickRow;
                    $orderRow['ship']=$shipOrder;
                    $result['data'][$key]=$orderRow;
                }
            }
            if(count($result['data'])){
                $result['state']=1;
            }
        }
        die(Zend_Json::encode($result));
    }

    /**
     * @desc 根据订单号获取订单数据
     */
    public function getOrderInfoAction()
    {
        $result = array('state' => 0, 'message' => '', 'data' =>array());
        if ($this->_request->isPost()) {
            $orderCode=$this->_request->getParam('orderCode','');
            if(!empty($orderCode)){
                $result=Service_PackProcess::getOrderInfo($orderCode);
            }
        }
        die(Zend_Json::encode($result));
    }
    /**
     * @desc 获取包材代码
     */
    public function getProductPackageAction()
    {
        $result = array('state' => 0, 'message' => '', 'data' =>array());
        if ($this->_request->isPost()) {
            $packageCode=$this->_request->getParam('packageCode','');
            if(!empty($packageCode)){
                $result['data']=Service_ProductPackage::getByField($packageCode,'pp_barcode');
            }
        }
        die(Zend_Json::encode($result));
    }

    public function scanImeiAction(){
        $return = array(
            'state' => 0,
            'message' => '',
        );
        $product_barcode = $this->_request->getParam('productBarcode', '');
        $pickingCode = $this->_request->getParam('pickingCode', '');
        $imei_serial = $this->_request->getParam("imei_serial","");
        $pickRow = Service_Picking::getByField($pickingCode, 'picking_code');
        $pdRows = Service_PickingDetail::getByCondition(array('picking_id' => $pickRow['picking_id'], 'product_barcode' => $product_barcode, 'pd_status' => '0'), '*');
        if (empty($pdRows)) {
            $product=Service_Product::getByCondition(array('product_sku'=>$product_barcode),"*");
            if (!empty($product)) {
                foreach ($product as $key => $value) {
                    $pdRows = Service_PickingDetail::getByCondition(array('picking_id' => $pickRow['picking_id'], 'pd_status' => '0', 'product_barcode' => $value['product_barcode']), '*');
                    if (!empty($pdRows)) {
                        break;
                    }
                }
                $productBarcode=$pdRows[0]['product_barcode'];
            }
        }
        //var_dump($pickRow);
        //exit;
        $productSku = "";
        $orderCode = "";
        if(!empty($pdRows)){
            $productId = $pdRows[0]['product_id'];
            $productRow = Service_Product::getByField($productId,"product_id","*");
            $productSku = $productRow['product_sku'];
            $productBarcode = $productRow['product_barcode'];
            $orderCode = $pdRows[0]['order_code'];
        }
        $oiRow = array(
            'order_code'=>$orderCode,
            'product_sku'=>$productSku,
            'product_barcode'=>$productBarcode,
            'imei_serial'=>$imei_serial
        );
        $existImei = Service_OrderImei::getByField($imei_serial,"imei_serial","*");
        if(!empty($existImei)){
            $return['state'] = 0;
            $return['message'] = "失败:IMEI号[".$imei_serial."]已经被扫描过了!";
            die(Zend_Json::encode($return));
        }
        Service_OrderImei::add($oiRow);
        $return['state'] = 1;
        $return['message'] = "IMEI号[".$imei_serial."]扫描成功!";
        die(Zend_Json::encode($return));
    }

}