<?php

class Logistics_HklogisticsController extends Ec_Controller_Action
{

    public function preDispatch ()
    {
        $this->tplDirectory = "logistics/views/logistics/";        
    }
    
    public function exportAction(){
		 $exportType = $this->_request->getParam('exportType','0');
		 if($exportType == '1'){//selected
		 	$this->exportSelectedAction();
		 }

		 if($exportType == '0'){//All
		 	$this->exportAllAction();
		 }		 
	} 
	
	/*导出所选*/
    public function exportSelectedAction(){
        set_time_limit(600);
        $orderArr = $this->_request->getParam('orderArr','');
        
	    foreach($orderArr as $logisticsCode){
			if($logisticsCode=="") continue;			
 			$row = $this->createhkOrderDataAction($logisticsCode);
	   		if($row!=-1){
				$rows[] = $row;
	   		}	
			
	    }

	 	$this->outputxlsAction($rows);   

    }
	   

   /*导出全部*/ 	
   public function exportAllAction(){
        set_time_limit(600);

            $condition = array();
            /* 以下为提交数据整理 */        
            $orders_code_CustomerReference = trim($this->_request->getParam("orders_code_CustomerReference",""));
            $condition["orders_code_CustomerReference"] = $orders_code_CustomerReference;       
        
        
            $warehouse_id = $this->_request->getParam("warehouse_id","");
            $condition["warehouse_id"] = $warehouse_id;
			
            $customer_code = $this->_request->getParam("customer_code","");
			$condition["customer_code"] = $customer_code;

            $country_id = $this->_request->getParam("country_id","");
            $condition["country_id"] = $country_id;
            
            $orders_status = $this->_request->getParam("orders_status","0");
            
        
            $shipping_method = $this->_request->getParam("shipping_method","");
            $condition["sm_code"] = $shipping_method;                    
			
			if($shipping_method!='HKPG' && $shipping_method!='HKPP'){
				echo "运输方式HKPG或HKPP的时候才允许使用";
				exit;
			}
			
            //增加开始结束时间
            $add_time_start	= trim($this->_request->getParam('add_time_start',''));
            $condition["add_time_start"] = $add_time_start;
            
            $add_time_end	= trim($this->_request->getParam('add_time_end',''));
            $condition['add_time_end']	= $add_time_end;
            $orders_status_arr = explode(',',$orders_status);
			$condition['order_status_arr'] = $orders_status_arr;
			$condition['loa_type'] = "0";

            $receiving_time_start = $this->_request->getParam("receiving_time_start","");
            $condition['receiving_time_start'] = $receiving_time_start;

            $receiving_time_end = $this->_request->getParam("receiving_time_end","");
            $condition['receiving_time_end'] = $receiving_time_end;
            if($receiving_time_start!=""||$receiving_time_end!=""){
                $a = array();
                if($receiving_time_start!=""){
                    $a['add_time_start'] = $receiving_time_start;
                }
                if($receiving_time_end!=""){
                    $a['add_time_end'] = $receiving_time_end;
                }

                $receivingBatchOrder = Service_ReceivingBatchOrder::getByCondition($a,"*",0,0);
                $logisticsCodeArr = array();
                if(!empty($receivingBatchOrder)){
                    foreach($receivingBatchOrder as $k=>$v){
                        if(!in_array($v['logistics_code'],$logisticsCodeArr)){
                            $logisticsCodeArr[] = $v['logistics_code'];
                        }
                    }
                }else{
                    $logisticsCodeArr = array('notlogisticsCode');
                }
                $condition['logistics_code_arr'] = $logisticsCodeArr;
            }  
			
			$service_number	= trim($this->_request->getParam('service_number',''));	
			$condition['service_number'] = $service_number;
			 
	
			 			
			$count = Service_LogisticsOrder::getJoinOrderByCondition($condition, 'count(*)');

			$rows = array();
            if($count>0){
                $pageSize = 20;
                $totalPage = ceil($count/$pageSize);
                for($page=1;$page<=$totalPage;$page++){
                    $datarows = Service_LogisticsOrder::getJoinOrderByCondition($condition, 'logistics_order.logistics_code', $pageSize,$page,'lo_id desc');
                    if(empty($datarows)){continue;}
					foreach($datarows as $key=>$val){
						$row = $this->createhkOrderDataAction($val['logistics_code']);
						if($row!=-1){
							$rows[] = $row;
						}	
                        
					}
				}
			}else{
				echo "没有找到数据";
				exit;			
			}	
			
			$this->outputxlsAction($rows);		
			
			
			 

    }	
	
	
	
	/*港邮订单导出用，生成一个订单的资料colin*/
	private function createhkOrderDataAction($order_code){		
		
		if(empty($order_code)){
			return -1;			
		}else{
			$order = Service_LogisticsOrder::getByField($order_code,'logistics_code');
			if(empty($order)){
				return -1;
				exit;
			}
		}
		
		//准备相关的要输出的数据				
		$order_products = Service_LogisticsOrderHs::getByCondition(array('logistics_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['loh_price']*$order_product['loh_quantity'];//
		}
		
		$Outbound = Service_PackOrder::getByField($order_code,'orders_code');
		$OrderAddresses = Service_LogisticsOrderAddress::getByCondition(array('logistics_code'=>$order_code,'loa_type'=>'0'));		
		$OrderAddress = $OrderAddresses[0];
		if($OrderAddress['loa_country']){
			$country = Service_Country::getByField($OrderAddress['loa_country'],'country_id');
		}
		
		$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['pack_code'];			
		$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["loa_name"];		
		$fields[] =  $field;			
		
		$field = array();
		$field['name'] = "收件人地址第一行";		
		$field['value'] =  $OrderAddress["loa_address"];		
		$fields[] =  $field;
		
		$field = array();
		$field['name'] = "收件人地址第二行";		
		$field['value'] = $OrderAddress["loa_city"];		
		$fields[] =  $field;
		
		$field = array();
		$field['name'] = "收件人地址第三行";		
		$field['value'] = $OrderAddress["loa_province"];		
		$fields[] =  $field;				
		
		
		
		$field = array();
		$field['name'] = "收件人地址第四行";		
		$field['value'] =  $OrderAddress["loa_zipcode"];		
		$fields[] =  $field;	

		$field = array();
		$field['name'] = "收件人地址第五行";		
		$field['value'] =  $country["country_name_en"];		
		$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)){					
									
					$field = array();
					$field['name'] = "內載物品詳情(第{$char_form_number}行)";				
					$field['value'] =  $order_product['loh_hs_name'];						
					$fields[] =  $field;
	
					$field = array();
					$field['name'] = "數量(第{$char_form_number}行)";				
					$field['value'] =  $order_product['loh_quantity'];				
					$fields[] =  $field;
					
					$field = array();
					$field['name'] = "淨重(千克)(第{$char_form_number}行)";				
					$field['value'] = $order['lo_weight'];			
					$fields[] =  $field;				
	
					$field = array();				
					$field['name'] = "貨幣(第{$char_form_number}行)";				
					$field['value'] =  'USD';				
					$fields[] =  $field;
					
					$field = array();
					$field['name'] = "價值(第{$char_form_number}行)";				
					$field['value'] =  sprintf("%.2f", $order_product['loh_price']);				
					$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", $order['lo_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;	
	
				
				$field = array();		
				$field['name'] = "投寄日期";				
				$field['value'] =  "";						
				$fields[] =  $field;
				
				$field = array();
				$field['name'] = "郵件編號";				
				$field['value'] =  $order['ref_tracking_number'];				
				$fields[] =  $field;

				$field = array();	
				$field['name'] = "城市 (互換局) - 只供已向香港郵政提供預計每月投寄量的寄件人填寫";				
				$field['value'] =  "";						
				$fields[] =  $field;		
			
				return $fields;	
			
	}	
	
    private function outputxlsAction($rows = array()){
	
	
	 	if(empty($rows)){
		 	echo "数据为空";
			exit;
		}		
		$title_list = $rows[0];
		$title_list_count = count($rows[0]);
		$rows_count = count($rows);
		
		
        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);
        $index = 1;
		$objActSheet->setCellValue('A'.$index,'V1.2');
		$index = 2;
		for($i=0;$i<$title_list_count;$i++){
			
			$objActSheet->setCellValue(PHPExcel_Cell::stringFromColumnIndex($i).$index,$title_list[$i]['name']);
		
		}		
		$index =3;
		for($j=0;$j<$rows_count;$j++){
			for($k=0;$k<$title_list_count;$k++){
				$objActSheet->setCellValue(PHPExcel_Cell::stringFromColumnIndex($k).($index+$j),$rows[$j][$k]['value']);			
			}
		}
		

		$objWriter = PHPExcel_IOFactory::createWriter($table, 'Excel5');
		header( "Pragma: public" );
		header( "Expires: 0" );
		header("Accept-Ranges: bytes");
		header('cache-control:must-revalidate');
		header("Content-Disposition: attachment; filename=outsideorder".date("YmdHis").".xls");
		header("Content-Type:APPLICATION/OCTET-STREAM;charset=utf-8");
		$objWriter->save('php://output');	
	
	
	
	}			
    
}