<?php
class Warehouse_ReprintReceiptsLogController extends Ec_Controller_Action
{
	private $kvType = array(
		'ship_order' => '物流单',
		'receive_bill' => '收货单',
		'quality_bill' => '质检单',
		'picking' => '下架单',
		'ship_batch' => '出货总单',
		'dhl_invoice' => 'DHL发票单',
		'record_bill'=>'快递面单',
                'peihuo'=>'配货单',
                'logistic_dhl_invoice' => '区外仓DHL发票单',
                'logistic_record_bill'=>'区外快递面单',
        'pduk_invoice'=>'DHL-PDUK发票单',
        'BH_bill'=>'百千诚面单',
        'DHL-TH'=>'哲盟面单',
        'orderBarcode'=>'订单条码'
        //'eub_label'=>'EUB地址标签',
        //'uktl_label'=>'UKTL标签',
        //'etk_label'=>'ETK地址标签',
        
	);
	
    public function preDispatch()
    {
        $this->tplDirectory = "warehouse/views/receipts/";
        $this->serviceClass = new Service_ReprintReceiptsLog();
    }

    public function listAction()
    {
        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);

            $count = $this->serviceClass->getByCondition($condition, 'count(*)');
            $return['total'] = $count;

            if ($count) {
                $showFields=array(
                    
                'refercence_no',
                'rrl_type',
                'user_id',
                'rrl_add_time',
                'rrl_id',
                );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);
                $rows = $this->serviceClass->getByCondition($condition,$showFields, $pageSize, $page, array('rrl_id desc'));
                foreach($rows as $key=>$value){
                    if(isset($value['E3'])&&$value['E3']!=""){
                        $userRow = Service_User::getByField($value['E3'],'user_id',"*");
                        $rows[$key]['E3'] = $userRow['user_name'];
                    }
                }
                $return['data'] = $rows;
                $return['kvType'] = $this->kvType;
                $return['state'] = 1;
                $return['message'] = "";
            }
            die(Zend_Json::encode($return));
        }
        $this->view->kvType = $this->kvType;
        echo Ec::renderTpl($this->tplDirectory . "reprint_receipts_log_index.tpl", 'layout');
    }

    public function getByJsonAction()
    {
        $result = array('state' => 0, 'message' => 'Fail', 'data' => array());
        $paramId = $this->_request->getParam('paramId', '');
        if (!empty($paramId) && $rows = $this->serviceClass->getByField($paramId, 'rrl_id')) {
            $rows=$this->serviceClass->getVirtualFields($rows);
            $result = array('state' => 1, 'message' => '', 'data' => $rows);
        }
        die(Zend_Json::encode($result));
    }

    public function printOrderAction() {
        $code= trim($this->_request->getParam('code',''));
        $result=Service_PackProcess::getOrderInfo($code);
        if($result['state']!='1'){
            die($result['message']);
        }
       // print_r($result);
        $this->view->data=$result['data'];
        echo Ec::renderTpl($this->tplDirectory . "ship-order-print.tpl", 'layout');
    }

    public function reprintAction() {
    	if ($this->_request->isPost()) {
            $print_type = trim($this->_request->getParam('print_type'));
            $print_code = trim($this->_request->getParam('print_code'));
    		$result = array('state' => 1, 'message' => '','printType'=>$print_type,'printCode'=>$print_code);
    		if(empty($print_type)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请选择打印类型')));
    		if(empty($print_code)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入单号')));
    		switch($print_type) {
                case 'ship_order':
                    $orderRow = Service_Orders::getByField($print_code, 'order_code');
                    if(empty($orderRow)) {
                        $orderRow = Service_Orders::getByField($print_code, 'reference_no');
                        if( empty( $orderRow ) ) {
                            $shipOrderRow = Service_ShipOrder::getByField($print_code, 'tracking_number');
                            if (isset($shipOrderRow['order_code']) && $shipOrderRow['order_code'] != '') {
                                $print_code = $result['printCode'] = $shipOrderRow['order_code'];
                                $orderRow = Service_Orders::getByField($print_code, 'order_code');
                                if (empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                            } else {
                                exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                            }
                        } else {
                            $print_code = $orderRow['order_code'];
                        }
                    }
                    /*if(!in_array($orderRow['order_status'],array(7,8,9,10,11,14))){
                        $orderStatus=Common_Status::orderStatus('auto');
                        exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单目前状态为：[ '.$orderStatus[$orderRow['order_status']].' ] 不允许打印.')));
                    }*/
                    $result['link'] = '/default/index/print-order/code/'.$print_code;
                    //pdf的标签
                    $shipMethod = array('SZY-EUB','UKTL','WG-EUB','SZY-ETK','PNLG','PNLN', '4PX-LYT_GH', '4PX-EU_PACKET', '4PX-RU_POST-LINK_RMAIL', '4PX-HKDHL', '4PX-YX', '4PX-SG_ordinary_mail+','Rumall-RU-G','Rumall-RU-EP', 'BH-3HPA', 'BH-3H', 'BH-UKECSLTYD', 'BH-UKECSLTRM', 'BH-CORREOS', 'BH-19EURDPDDE', 'BH-DAC', 'BH-SL018', 'BH-IESLTANPOST','CJ-DGMG','CJ-DGMP','LYT-SMTGH-X','DGM-US','BH-SFEP','BH-BEAT','BH-NLAT');
                    $result['isPdfLabel'] = 0;
                    if(in_array($orderRow['sm_code'],$shipMethod)){
                        $result['isPdfLabel'] = 1;
                    }
                    $result['orderCode'] = $print_code;
                    break;
    			case 'receive_bill':
    				$aReceiving = Service_Receiving::getByField($print_code, 'receiving_code');
    				if(empty($aReceiving)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
    				$result['link'] = '/receiving/receiving/print-list/code/'.$print_code;
    				break;
    			case 'quality_bill':
                    $recevingRow = Service_Receiving::getByField($print_code,'receiving_code',"*");
                    if(empty($recevingRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'ASN单号不存在')));
                    $condition = array(
                        'receiving_code'=>$print_code,
                    );
                    $QC = Service_QualityControl::getByCondition($condition,"*");
                    if(empty($QC)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'ASN没有质检单')));
                    $QCArrStr = "";
                    foreach($QC as $k=>$v){
                        $QCArrStr .= $v['qc_code'].",";
                    }
    				//$aQuality = Service_QualityControl::getByField($print_code, 'qc_code');
    				//if(empty($aQuality)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
    				$result['link'] = '/receiving/received/print-qc-list?code='.$QCArrStr;
    				break;
    			case 'picking':
    				$aPicking = Service_Picking::getByField($print_code, 'picking_code');
    				if(empty($aPicking)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
    				if($aPicking['picking_type'] == 0)
    					$result['link'] = '/shipment/picking/print-picking/pickType/one?pickCodes[]='.$print_code;
    				else if($aPicking['picking_type'] == 1)
    					$result['link'] = '/shipment/picking/print-picking/pickType/more?pickCodes[]='.$print_code;
    				break;
    			case 'ship_batch':
    				$aShipBatch = Service_ShipBatch::getByField($print_code, 'sb_code');
    				if(empty($aShipBatch)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
    				if($aShipBatch['sb_status']<2) exit(Zend_Json::encode(array('state'=>0, 'message'=>'该单还没到 [已审核] 状态')));
    				$result['link'] = '/shipment/ship-batch/print/sb_code/'.$print_code;
    				break;
    			case 'dhl_invoice':
    				$orderRow = Service_Orders::getByField($print_code, 'order_code');
                    if(empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                    if($orderRow['order_status']<8) exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单目前的状态不能打印发票')));
                    $allowSmCodes = array('HKDHL','CNDHL','BH-HKDHL','4PX-HKDHL','DHL-TH','WWDHLP','WWDHLU');
                    if( !in_array( $orderRow['sm_code'], $allowSmCodes ) ) exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单的运输方式不是HKDHL,CNDHL,BH-HKDHL,4PX-HKDHL,WWDHLP,WWDHLU')));
                    $result['link'] = '/receiving/invoice/fill-invoice/order_code/'.$print_code;
                    break;
                case 'pduk_invoice':
                    $orderRow = Service_Orders::getByField($print_code, 'order_code');
                    if(empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                    //if($orderRow['order_status']<8) exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单目前的状态不能打印发票')));
                    if($orderRow['sm_code']!='DHL-PDUK') exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单的运输方式不是DHL-PDUK')));
                    $result['link'] = '/receiving/invoice/pduk-invoice/order_code/'.$print_code;
                    break;
                   case 'logistic_dhl_invoice':
    			$orderRow = Service_LogisticsOrder::getByField($print_code, 'logistics_code');
                    if(empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                    if($orderRow['lo_status']<3) exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单目前的状态不能打印发票')));
                    if($orderRow['sm_code']!='HKDHL') exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单的运输方式不是HKDHL')));
                    $result['link'] = '/receiving/invoice/logistic-order-invoice/order_code/'.$print_code;
                    break;
    			case 'record_bill':
                    $orderRow = Service_Orders::getByField($print_code, 'order_code');
                    if(empty($orderRow)) {
                        $shipOrderRow = Service_ShipOrder::getByField($print_code, 'tracking_number');
                        if (isset($shipOrderRow['order_code']) && $shipOrderRow['order_code'] != '') {
                            $print_code = $result['printCode'] = $shipOrderRow['order_code'];
                            $orderRow = Service_Orders::getByField($print_code, 'order_code');
                            if (empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                        } else {
                            exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                        }
                    }
    				if($orderRow['sm_code']!='HKDHL'&&$orderRow['sm_code']!='CNDHL'&&$orderRow['sm_code']!='WWDHLP'&&$orderRow['sm_code']!='WWDHLU'){
    					exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单运输方式不是HKDHL,CNDHL,WWDHLP,WWDHLU,请选择物流单进行打印')));
    				}
    				$shipOrder = Service_ShipOrder::getByField($print_code,'order_code');
    				if(empty($shipOrder)){
    					exit(Zend_Json::encode(array('state'=>0, 'message'=>'数据有误')));
    				}else{
    					if($shipOrder['file_path']!=''){
    						if(file_exists($shipOrder['file_path'])){
    							$result['file_path'] = base64_encode($shipOrder['file_path']);
    						}else{
    							exit(Zend_Json::encode(array('state'=>0, 'message'=>'文件路径不存在')));
    						}
    					}else{
    						exit(Zend_Json::encode(array('state'=>0, 'message'=>'文件路径为空')));
    					}
    				}
    				/*if(!in_array($orderRow['order_status'],array(8,9,10,11,12,13,14))){
    					$orderStatus=Common_Status::orderStatus('auto');
    					exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单目前状态为：[ '.$orderStatus[$orderRow['order_status']].' ] 不允许打印.')));
    				}*/
    				//$result['link'] = '/default/index/print-order/code/'.$print_code;
    				break;
                 case 'logistic_record_bill':
    				$orderRow = Service_LogisticsOrder::getByField($print_code, 'logistics_code');
    				if(empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
    				if($orderRow['sm_code']!='HKDHL'&&$orderRow['sm_code']!='CNDHL'&&$orderRow['sm_code']!='WWDHLP'&&$orderRow['sm_code']!='WWDHLU'){
    					exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单运输方式不是HKDHL，请选择物流单进行打印')));
    				}
    				$shipOrder = Service_OutsideShipOrder::getByField($print_code,'logistics_code');
    				if(empty($shipOrder)){
    					exit(Zend_Json::encode(array('state'=>0, 'message'=>'数据有误')));
    				}else{
    					if($shipOrder['file_path']!=''){
    						if(file_exists($shipOrder['file_path'])){
    							$result['file_path'] = base64_encode($shipOrder['file_path']);
    						}else{
    							exit(Zend_Json::encode(array('state'=>0, 'message'=>'文件路径不存在')));
    						}
    					}else{
    						exit(Zend_Json::encode(array('state'=>0, 'message'=>'文件路径为空')));
    					}
    				}
    				if(!in_array($orderRow['lo_status'],array(4,5,6,7,8,9))){
    					   $allStatus = Service_LogisticsOrderProcess::getOrderStatus();
                                           $nowStatus='';
                                           foreach($allStatus as $key=>$statusText){
                                               if(in_array($orderRow['lo_status'],  explode(',', $key))){
                                                   $nowStatus=$statusText;
                                                   break;
                                               }
                                           }
    					exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单目前状态为：[ '.$nowStatus.' ] 不允许打印.')));
    				}
    				//$result['link'] = '/default/index/print-order/code/'.$print_code;
    				break;
                case "eub_label":
                    $orders = Service_Orders::getByField($print_code,"order_code","*");
                    if(empty($orders)){
                        $orders = Service_Orders::getByField($print_code,"ref_tracking_number","*");
                        if(empty($orders)){
                            exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单号或服务商单号不存在')));
                        }
                    }
                    exit(Zend_Json::encode(array('state'=>1, 'link'=>'/shipment/print/print-eub-label/orderCode/'.$orders['ref_tracking_number'],'orderCode'=>$orders['ref_tracking_number'],'isPdfLabel'=>1)));

                    break;
                case "uktl_label":
                    $orders = Service_Orders::getByField($print_code,"order_code","*");
                    if(empty($orders)){
                        $orders = Service_Orders::getByField($print_code,"ref_tracking_number","*");
                        if(empty($orders)){
                            exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单号或服务商单号不存在')));
                        }
                    }
                    exit(Zend_Json::encode(array('state'=>1, 'link'=>'/shipment/print/print-uktl-label/orderCode/'.$orders['ref_tracking_number'],'orderCode'=>$orders['ref_tracking_number'],'isPdfLabel'=>1)));

                    break;
                case "etk_label":
                    $orders = Service_Orders::getByField($print_code,"order_code","*");
                    if(empty($orders)){
                        $orders = Service_Orders::getByField($print_code,"ref_tracking_number","*");
                        if(empty($orders)){
                            exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单号或服务商单号不存在')));
                        }
                    }
                    exit(Zend_Json::encode(array('state'=>1, 'link'=>'/shipment/print/print-etk-label/orderCode/'.$orders['ref_tracking_number'],'orderCode'=>$orders['ref_tracking_number'],'isPdfLabel'=>1)));

                    break;
                    case 'peihuo':
                        $orderCode = trim($this->_request->getParam('order_code',""));
                        $returnDate = Service_PickProcess::getPacking($print_code , TRUE);
                        if ($returnDate['state'] == '1') {
                            $data=$returnDate['data'];
                            $orderCodeArr = array();
                            $orderCodeStr = "";
                            foreach($data['orders'] as $keyo=>$valo){    						
                                $orderCodeArr[] = $valo['order_code'];
                                $orderCodeStr .= $valo['order_code'].",";
                            }
                            if($orderCode!=""&&!in_array($orderCode,$orderCodeArr)){
                                exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单号不存在或者不属于该配货单')));
                            }
                        } else {
                            exit(Zend_Json::encode(array('state'=>0, 'message'=>$returnDate['message'])));
                        }
//                        $result['link'] =   '/shipment/picking/print-picking/pickType/more?pickCodes[]='.$print_code.'&orderCode='.$orderCode.'&orderCodeStr='.$orderCodeStr;
                        $result['link'] = '/default/index/print-peihuo?pickCodes[]='.$print_code."&orderCode=".$orderCode.'&orderCodeStr='.$orderCodeStr;
                    break;
                case 'BH_bill':
                    $orderRow = Service_Orders::getByField($print_code, 'order_code');
                    if(empty($orderRow)) {
                        $shipOrderRow = Service_ShipOrder::getByField($print_code, 'tracking_number');
                        if (isset($shipOrderRow['order_code']) && $shipOrderRow['order_code'] != '') {
                            $print_code = $result['printCode'] = $shipOrderRow['order_code'];
                            $orderRow = Service_Orders::getByField($print_code, 'order_code');
                            if (empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                        } else {
                            exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                        }
                    }
                    $orderRow = Service_Orders::getByField($print_code, 'order_code');
                    if(empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                    if($orderRow['sm_code']!='BH-HKDHL') exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单运输方式不是BH-HKDHL，请选择物流单进行打印')));
                    $result['link'] = '/default/index/print-order/code/'.$print_code;
                    //pdf的标签
                    $result['isPdfLabel'] = 1;
                    $result['orderCode'] = $print_code;
                        break;
                case 'DHL-TH':
                    $orderRow = Service_Orders::getByField($print_code, 'order_code');
                    if(empty($orderRow)) {
                        $shipOrderRow = Service_ShipOrder::getByField($print_code, 'tracking_number');
                        if (isset($shipOrderRow['order_code']) && $shipOrderRow['order_code'] != '') {
                            $print_code = $result['printCode'] = $shipOrderRow['order_code'];
                            $orderRow = Service_Orders::getByField($print_code, 'order_code');
                            if (empty($orderRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                        } else {
                            exit(Zend_Json::encode(array('state'=>0, 'message'=>'单号不存在')));
                        }
                    }
                    $result['isPdfLabel'] = 1;
                    $result['link'] = '/default/index/print-order/code/'.$print_code;
                    $result['orderCode'] = $print_code;
                    break;
    			default: exit(Zend_Json::encode(array('state'=>0, 'message'=>'没有此打印类型')));
    		}
    		//日志
    		$rrlRow['refercence_no'] = trim($this->_request->getParam('print_code'));
    		$rrlRow['rrl_type'] = $print_type;
    		$rrlRow['user_id'] = Service_User::getUserId();
    		$rrlRow['rrl_add_time'] = date('Y-m-d H:i:s');
    		$rrlRow['rrl_ip'] = Common_Common::getIP();
    		Service_ReprintReceiptsLog::add($rrlRow);
    		exit(Zend_Json::encode($result));
    	} else {
            $this->view->url = 'http://'.$_SERVER['HTTP_HOST'].'/pdf-plugin/web/viewer.html?file=http://'.$_SERVER['HTTP_HOST'].'/shipment/print/get-pdf-label/orderCode/';
            $this->view->kvType = $this->kvType;
    		echo Ec::renderTpl($this->tplDirectory . "reprint.tpl", 'layout');
    	}
    }
    
}
