<?php
class Service_LogisticsProcess
{
	private static $shipMethods = array(
			'HKDHL'=>'香港敦豪国际速递',
			'BH-MMP'=>'瑞典小包挂号',
			'SWPT'=>'瑞典小包平邮'
	);
	
	public static function getShipMethods() {
		//针对环球易购特殊处理
		$session = new Zend_Session_Namespace("customerAuth");
		$user_code=$session->data['code'];
		$warehouseConditon = array(
			'warehouse_scope'=>'0',
		);
		//$shipMethods = self::$shipMethods;
		$warehouses = Service_Warehouse::getByCondition($warehouseConditon);
		$warehouseIds = array();
		if(!empty($warehouses)){
			foreach($warehouses as $key=>$value){
				$warehouseIds[] = $value['warehouse_id'];
			}
			$warehouseIds[] ='0';
		}
		$shipMethods = array();
		if(!empty($warehouseIds)){
			$shipMethodCondition = array(
					'warehouse_id_arr'=>$warehouseIds,
			);
			$ships=Service_ShippingMethod::getByCondition($shipMethodCondition);
            $ships=Common_Common::multisort($ships);
			foreach($ships as $keys=>$sp){
				if($sp['sm_code']!='HQSWGH'&&$sp['sm_code']!='HKDHL-BQC'&&$sp['sm_code']!='HKDHL-JLY'){
					$shipMethods[$sp['sm_code']] = $sp['sm_name_cn'];
				}
			}
		}
		if($session->data['code']=='E0213') {
			$shipMethods['HQSWGH'] = '环球易购瑞典小包挂号';
		}
        if($session->data['code']=='E0576') {
            $shipMethods['HKDHL-BQC'] = '区外DHL';
        }
        if($session->data['code']=='E0577') {
            $shipMethods['HKDHL-JLY'] = 'HKDHL区外';
        }		
		return $shipMethods;
	}
	
	/**
     * @todo 新增物流发运订单
     * @author solar<solarzheng@cargofe.com.cn>
     * @param array $data
     * @return string
     */
    public static function addLogisticsOrder($data)
    {
    	$logistics_code = Common_GetNumbers::getCode('logistics', '', 'LO');
    	//订单信息
          $data['order']['is_remote_city']=0;
            if($data['order']['sm_code']=='HKDHL'){
               $orderProcess=new Service_OrderProcess();
               $isRemote=$orderProcess->isRemoteCity($data['address']['loa_country'],$data['address']['loa_city'],$data['address']['loa_zipcode']);
               if($isRemote){
                     $data['order']['is_remote_city']=1;
               }
        }
    	$data['order']['logistics_code'] = $logistics_code;
    	$session = new Zend_Session_Namespace("customerAuth");
    	$data['order']['customer_id'] = $session->data['id'];
    	$data['order']['customer_code'] = $session->data['code'];
    	$data['order']['lo_create_time'] = date('Y-m-d H:i:s');
    	/* if($data['order']['sm_code']!='HQSWGH') {//不是环球易购
    		$data['order']['ref_tracking_number'] = '';
    	} */
    	Service_LogisticsOrder::add($data['order']);
    	//收件人信息
    	$data['address']['logistics_code'] = $logistics_code;
    	Service_LogisticsOrderAddress::add($data['address']);
    	//发件人信息
        /*
    	if($data['order']['sm_code']=='HKDHL') {
    		$data['sender']['logistics_code'] = $logistics_code;
    		$data['sender']['loa_type'] = 1;
    		Service_LogisticsOrderAddress::add($data['sender']);
    	}    
          */	
    	//海关申报信息
        $loh_total_price='';
    	foreach($data['hs_list'] as $hs_row) {
    		unset($hs_row['loh_id']);
    		$hs_row['logistics_code'] = $logistics_code;
    		$hs_row['loh_total_price'] = $hs_row['loh_price'] * $hs_row['loh_quantity'];
            $loh_total_price+=$hs_row['loh_total_price'];
    		Service_LogisticsOrderHs::add($hs_row);
    	}
        Zend_Registry::set('loh_total_price',$loh_total_price);
    	//日志
    	$log['logistics_code'] = $logistics_code;
        $log['order_status_from'] = "0";
        $log['order_status_to'] = "0";
    	$log['lol_comment'] = '新增订单';
    	$log['lol_create_time'] = date('Y-m-d H:i:s');
    	$log['lol_operator'] = 0;
    	$log['lol_ip'] = Common_Common::getIP();
    	Service_LogisticsOrderLog::add($log);
    	return $logistics_code;
    }
    
    public static function editLogisticsOrder($logistics_code, $data)
    {
    	//订单信息
    	/* if($data['order']['sm_code']!='HQSWGH') {//不是环球易购
    		$data['order']['ref_tracking_number'] = '';
    	} */
    	$data['order']['lo_update_time'] = date('Y-m-d H:i:s');
    	Service_LogisticsOrder::update($data['order'], $logistics_code, 'logistics_code');
    	//收件人信息
    	$aReceiver = Service_LogisticsOrderAddress::getByWhere(array('logistics_code'=>$logistics_code, 'loa_type'=>0));
      
    	Service_LogisticsOrderAddress::update($data['address'], $aReceiver['loa_id']);
    	//发件人信息
//    	if($data['order']['sm_code']=='HKDHL') {
//    		$aSender = Service_LogisticsOrderAddress::getByWhere(array('logistics_code'=>$logistics_code, 'loa_type'=>1));
//    		Service_LogisticsOrderAddress::update($data['sender'], $aSender['loa_id']);
//    	}
    	/* $addressList = Service_LogisticsOrderAddress::getByCondition(array('logistics_code'=>$logistics_code));
    	foreach($addressList as $addressRow) {
    		if($addressRow['loa_type']==0) {
    			Service_LogisticsOrderAddress::update($data['address'], $addressRow['loa_id']);
    		} else if($addressRow['loa_type']==1) {
    			Service_LogisticsOrderAddress::update($data['sender'], $addressRow['loa_id']);    			
    		}
    	} */
    	//海关信息
    	$hsKeyArr = Service_LogisticsOrderHs::getKeyArray($logistics_code);
    	foreach($data['hs_list'] as $hs_row) {
    		if($hs_row['loh_id']==0) {
    			unset($hs_row['loh_id']);
    			$hs_row['logistics_code'] = $logistics_code;
    			$hs_row['loh_total_price'] = $hs_row['loh_price'] * $hs_row['loh_quantity'];
    			Service_LogisticsOrderHs::add($hs_row);
                $loh_total_price+=$hs_row['loh_total_price'];
    		} else {
    			$loh_id = $hs_row['loh_id'];
    			unset($hs_row['loh_id']);
    			$hs_row['loh_total_price'] = $hs_row['loh_price'] * $hs_row['loh_quantity'];
    			Service_LogisticsOrderHs::update($hs_row, $loh_id);
    			unset($hsKeyArr[$loh_id]);
                $loh_total_price+=$hs_row['loh_total_price'];
    		}
    	}
        Zend_Registry::set('loh_total_price',$loh_total_price);
    	foreach($hsKeyArr as $row) {
    		Service_LogisticsOrderHs::delete($row['loh_id']);
    	}
    	//日志
    	$log['logistics_code'] = $logistics_code;
    	$log['lol_comment'] = '修改订单';
    	$log['lol_create_time'] = date('Y-m-d H:i:s');
    	$log['lol_operator'] = 0;
    	$log['lol_ip'] = Common_Common::getIP();
    	Service_LogisticsOrderLog::add($log);
    }
    
    public static function validator($data,$logistics_code="") {
    	$result = array();		
    	//订单
    	if(isset($data['order']) && is_array($data['order'])) {
    		$order = $data['order'];
    		if(!isset($order['reference_no']) || empty($order['reference_no'])){
				$result['reference_no'] = '请输入客户参考号';			
			}else{
				$session = new Zend_Session_Namespace("customerAuth");
				$where['customer_id'] = $session->data['id'];
				$where['reference_no'] = $order['reference_no'];
				$where['lo_status_gt'] = '-1';
				$logistics = Service_LogisticsOrder::getByWhere($where);
				if($logistics) {
					if($logistics_code) {
						if($logistics_code!=$logistics['logistics_code']) $result['reference_no'] = '客户参考号已存在';	
					} else {
						$result['reference_no'] = '客户参考号['.$order['reference_no'].']已存在';
					}
				}
			}
    		if(!isset($order['sm_code']) || empty($order['sm_code']))
    			$result['sm_code'] = '请输入运输方式';
    		else {
    			$shipMethods = self::getShipMethods();
    			if(!isset($shipMethods[$order['sm_code']])){
    				$result['sm_code'] = '运输方式['.$order['sm_code'].']不存在';
				} else {//运输方式合法
					if($order['sm_code']=='HQSWGH'&&$order['sm_code']!='HKDHL-BQC'&&$order['sm_code']!='HKDHL-JLY'){
						if(!isset($order['ref_tracking_number']) || empty($order['ref_tracking_number'])){
							$result['ref_tracking_number'] = '请输入跟踪号';
						}	
					} else if($order['sm_code']=='BH-MMP' && $order['ref_tracking_number']) {
						if(!preg_match("/^RE[0-9]{9}SE$/", $order['ref_tracking_number'])) {
							$result['ref_tracking_number'] = '运输方式BH-MMP的跟踪号必须是RE开头，SE结尾，中间9位数字';
						}						
					}
					if($order['ref_tracking_number']) {
						$rtnRow = Service_LogisticsOrder::getByField($order['ref_tracking_number'], 'ref_tracking_number');
						if($rtnRow) {
							if($logistics_code) {
								if($logistics_code!=$rtnRow['logistics_code'])
									$result['ref_tracking_number'] = '跟踪号已存在';
							} else {
								$result['ref_tracking_number'] = '跟踪号已存在';
							}
						}
					}	
				}
    		}	
    		if(!isset($order['lo_weight']) || empty($order['lo_weight'])){
				$result['lo_weight'] = '请输入重量';
			}else{
			        if(!(is_numeric($order['lo_weight']) && $order['lo_weight']>0)){
						$result['lo_weight'] = '重量必须为正数';
					}
			}
			if($order['sm_code']=='BH-HKECM' || $order['sm_code']=='BH-JE-POST' || $order['sm_code']=='BH-US'){
				if(!isset($order['pack_number']) || empty($order['pack_number'])){
					$result['pack_number'] = '请输入件数';
				}else{
					if(!is_numeric($order['pack_number']) || $order['pack_number']<=0){
						$result['pack_number'] = '件数必须为正数';
					}
				}
				
				if(!isset($order['size_length']) || empty($order['size_length']) ||
				   !isset($order['size_width']) || empty($order['size_width']) ||
				   !isset($order['size_height']) || empty($order['size_height'])){
					$result['size'] = '请输入尺寸(长*宽*高)';
				}else{
					if($order['size_height']<=0 || $order['size_width']<=0 || $order['size_height']<=0){
						$result['size'] = '尺寸(长*宽*高)必须大于0';
					}
				}
			}
			
			
    	} else {
    		$result['order'] = '数据错误';
    	}

    	//收件人信息
    	if(isset($data['address']) && is_array($data['address'])) {
    		$address = $data['address'];
    		if(!isset($address['loa_name']) || empty($address['loa_name']))
    			$result['loa_name'] = '请输入收件人姓名';
    		if(!isset($address['loa_country']) || empty($address['loa_country']))
    			$result['loa_country'] = '请输入收件人国家';
    		if(!isset($address['loa_address']) || empty($address['loa_address']))
    			$result['loa_address'] = '请输入收件人地址';
            /*if(preg_match('/[~`@#$%^&*?<>+=]+/u',$address['loa_address'])){
                $result['loa_address'] = '收件人地址不能有特殊字符';
            }*/
               if($order['sm_code']=='HKDHL'){
                   if(strlen($address['loa_name'])>35){
                       $result['loa_name'] = '收件人姓名不能大于35个字符';
                   }
                  if(strlen($address['loa_company'])>35){
                       $result['loa_company'] = '收件人公司名不能大于35个字符';
                   }
                  if(strlen($address['loa_address'])>75){
                       $result['loa_address'] = '收件人地址不能大于75个字符';
                   }
               }
			   
			   if($order['sm_code']=='BH-HKECM' || $order['sm_code']=='BH-JE-POST' || $order['sm_code']=='BH-US'){
					if('' == trim($address['loa_city'])){
						$result['loa_city'] = '请输入城市';
					}
					if('' == trim($address['loa_zipcode'])){
						$result['loa_zipcode'] = '请输入收件人邮编';
					}
					if('' == trim($address['loa_phone'])){
						$result['loa_phone'] = '请输入收件人电话';
					}
				}
    	} else {
    		$result['address'] = '数据错误';
    	}
    	//发件人信息
        /*
    	if($order['sm_code']=='HKDHL') {
    		if(isset($data['sender']) && is_array($data['sender'])) {
    			$sender = $data['sender'];
    			if(!isset($sender['loa_name']) || empty($sender['loa_name']))
    				$result['sender_name'] = '请输入发件人姓名';
    			if(!isset($sender['loa_company']) || empty($sender['loa_company']))
    				$result['sender_company'] = '请输入发件人公司名';
    			if(!isset($sender['loa_phone']) || empty($sender['loa_phone']))
    				$result['sender_phone'] = '请输入发件人电话';
    			if(!isset($sender['loa_province']) || empty($sender['loa_province']))
    				$result['sender_province'] = '请输入发件人省份';
    			if(!isset($sender['loa_city']) || empty($sender['loa_city']))
    				$result['sender_city'] = '请输入发件人城市';
    			if(!isset($sender['loa_address']) || empty($sender['loa_address']))
    				$result['sender_address'] = '请输入发件人地址';
    			if(preg_match('/[~`@#$%^&*?<>+=]+/u',$sender['loa_address'])){
    				$result['sender_address'] = '发件人地址不能有特殊字符';
    			}
    		} else {
    			$result['sender'] = '数据错误';
    		}
    	}
        */
        if($order['sm_code']=='CJ-DGMP' || $order['sm_code']=='CJ-DGMG'){
            $search = array(" ","　","\n","\r","\t");
            $data['address']['loa_address'] = str_replace($search,"",$data['address']['loa_address']);            
            if(strstr(strtoupper($data['address']['loa_address']),'PACKSTATION')){
                $result['address_error'] = "当运输方式为{$order['sm_code']}时，收件人地址内不能包含‘PACKSTATION’";                
            }   
        }
        
    	if($order['sm_code']=='BH-SGP' || $order['sm_code']=='BH-SGG'
        || $order['sm_code']=='CJ-DGMG' || $order['sm_code']=='CJ-DGMP'|| $order['sm_code']=='HKDHL'){
    		if($data['address']['loa_province']==''){
    			$result['loa_province'] = '此运输方式收件人州必填';
    		}
    		if($data['address']['loa_city']==''){
    			$result['loa_city'] = '此运输方式的城市必填';
    		}
    		if($data['address']['loa_zipcode']==''){
    			$result['loa_zipcode'] = '此运输方式的邮编必填';
    		}
                if($order['sm_code']=='HKDHL'){
                    if($data['address']['loa_phone']==''){
                        $result['loa_phone'] = '此运输方式的收件人电话必填';
                    }
                }
    	}
        if($order['sm_code']=='HKDHL'){
          if(!empty($data['address']['loa_city'])&&!empty($data['address']['loa_country'])){
              $aCity = Service_City::getByWhere(array('country_id'=>$data['address']['loa_country'], 'city_name'=>$data['address']['loa_city']));
                if(empty($aCity)) {
                        $result['loa_city'] = '请填写正确的'.Ec_Lang::getInstance()->getTranslate('consignee').'城市';
                } else {
                    $existPostcode = Service_Postcode::getByCondition(array('city_id'=>$aCity['city_id']),"count(*)");
                    //某些城市不需要邮编
   
                    if($existPostcode){

                        if(!empty($data['address']['loa_zipcode'])){
                            $postcodes = Service_Postcode::getPostcodes($aCity['city_id'],$data['address']['loa_zipcode']);
                            if(empty($postcodes)) {
                                $result['loa_zipcode']= '请填写正确的'.Ec_Lang::getInstance()->getTranslate('consignee').'邮编';
                                //$row['oab_postcode'] = '';
                            } else {
                                if(!in_array($data['address']['loa_zipcode'], $postcodes)) {
                                     $result['loa_zipcode'] = '请填写正确的'.Ec_Lang::getInstance()->getTranslate('consignee').'邮编';
                                }
                            }
                        }else{
                            if(empty($data['address']['loa_zipcode'])){
                                $result['loa_zipcode'] = Ec_Lang::getInstance()->getTranslate('consignee').'邮编必填';;
                            }
                        }
                    }
        		}
          }
            
            
        }
    	//海关信息
    	if(isset($data['hs_list']) && is_array($data['hs_list'])) {
    		$hs_list = $data['hs_list'];
    		if(count($hs_list)==0) {
    			$result['hs_list'] = '至少需要一条海关申报信息';
    		} else {
    			foreach($hs_list as $i=>$hs_info) {
    				$line = $i + 1;
    				if(!isset($hs_info['loh_hs_name']) || empty($hs_info['loh_hs_name'])) {
    					$result['hs_list'] = '第['.$line.']条申报信息 ：请输入申报英文品名';
    					break;
    				}
                    if(preg_match("/[\x{4e00}-\x{9fa5}]+/u",$hs_info['loh_hs_name'])){
                        $result['hs_list'] = '第['.$line.']条申报信息 ：申报英文品名不能有汉字';
                        break;
                    }
                    if(preg_match('/[~`@#$^&*?<>+=]+/u',$hs_info['loh_hs_name'])){
                        $result['hs_list'] = '第['.$line.']条申报信息 ：申报英文品名不能有特殊字符';
                        break;
                    }
    				if(!isset($hs_info['loh_unit']) || empty($hs_info['loh_unit'])) {
    					$result['hs_list'] = '第['.$line.']条申报信息 ：请输入单位';
    					break;
    				}
    				if(!isset($hs_info['loh_price']) || empty($hs_info['loh_price'])) {
    					$result['hs_list'] = '第['.$line.']条申报信息 ：请输入单价';
    					break;
    				}else{
						if (!(is_numeric($hs_info['loh_price']) && $hs_info['loh_price'] >0 )) {
    						$result['hs_list'] = '第['.$line.']条申报信息 ：单价必须为数值';
    						break;	
						}
					}
					
    				if(!isset($hs_info['loh_quantity']) || empty($hs_info['loh_quantity'])) {
    					$result['hs_list'] = '第['.$line.']条申报信息 ：请输入数量';
    					break;
    				}else{
					
						 if (!(preg_match("/^[0-9]+$/",$hs_info['loh_quantity']) && is_numeric($hs_info['loh_quantity']) && $hs_info['loh_quantity'] >0 )) {
						 	$result['hs_list'] = '第['.$line.']条申报信息 ：数量必须为正整数';
							break;
						 }
					
					}
    			}
    		}
    	} else {
    		$result['hs_list'] = '数据错误';
    	}
    	return empty($result) ? true : $result;
    }
	
	/*判断运输方式和国家字段的合法性
	LogisticsProcess::checksmcode()
	*/
	public static function checksmcode($country_id,$sm_code,$warehouse_code,$lo_weight){
			
			$sm_array= Service_ShippingMethod::getByField($sm_code,'sm_code');
			
			if(!$country_id||!$sm_code){
				return "订单信息没有国家信息或没有运输方式";				
			}
						
			$sm_array = Service_ShippingMethod::getByField($sm_code,'sm_code');
			if(!$sm_array){
				return "不存在的运输方式";
			}
						
			$sm_country_arrays = Service_SmCountryMap::getByCondition(array('country_id'=>$country_id,'sm_code'=>$sm_code));
			if(!$sm_country_arrays){
					return "非法的运输方式";					
			}
			$sm_country_array = $sm_country_arrays[0];
			
			if($sm_array['sm_calc_type']=='0'){/*区间重量*/				
				$price_array = Service_ShipPrice::getByCondition(array('sm_code'=>$sm_array['sm_code'],'area'=>$sm_country_array['area'],'warehouse_code'=>$warehouse_code));
				
			}
			if($lo_weight>$sm_array['sm_limit_weight']){ return "超重.";}	
			if($sm_array['sm_calc_type']=='1'){/*首续重*/				
				$price_array=Service_ShipWeightPrice::getByCondition(array('sm_code'=>$sm_array['sm_code'],'area'=>$sm_country_array['area'],'warehouse_code'=>$warehouse_code));
			}	
			//print_r(array('sm_code'=>$sm_array['sm_code'],'area'=>$sm_country_array['area'],'warehouse_code'=>$warehouse_code));exit;
			if(!$price_array){ return "运输方式的价格未设置.";}	
				
			//sm_limit_weight
			return '';		
	
	}
	
	/**
	 * @todo 验证Excel
	 * @author solar
	 * @param array $excelData
	 * @return array
	 */
	public static function validateExcel(&$excelData) {
		$result = array('ask'=>0);
		$aError = array();
		//表头
		$excelHead = array_shift($excelData);
		$vHead = self::validateHead($excelHead);
		//如果表头有错，返回错误
		if($vHead!==true) {
			$result['error'] = $vHead;
			return $result;
		}
		//表体
		$kvCountry = Service_Country::getNameIdKV();
		$kvUnit = Service_ProductUom::getNameCodeKV();
		$line = 1;
		$aData = array();
		$aReferenceNO = array();
		foreach($excelData as $excelRow) {
			++$line;
			$aInfo = array();
			//订单
			$order = array();
			$order['reference_no'] = trim($excelRow[0]);
			if(in_array($order['reference_no'], $aReferenceNO)) {
				$aError['reference_no'] = '客户参考号['.$order['reference_no'].']不能重复';
				break;
			}
			$aReferenceNO[] = $order['reference_no'];
            $smArr = explode(" ",trim($excelRow[1]));
			$order['sm_code'] = isset($smArr[0])?$smArr[0]:"";
			$order['ref_tracking_number'] = trim($excelRow[2]);
			$order['lo_weight'] = trim($excelRow[3]);
			$order['warehouse_id'] = 3;	//区外仓
			$aInfo['order'] = $order;
			//收件人信息
			$address = array();
			$address['loa_name'] = trim($excelRow[4]);
			$address['loa_company'] = trim($excelRow[5]);
			$countryArr = explode(" ",$excelRow[6]);
            $country_code = $countryArr[0];
            $country_name = $countryArr[1];
			if(!isset($kvCountry[$country_code])) {
				$aError['loa_country'] = '第'.$line.'行的国家['.$country_name.']不存在';
				break;
			}
			$address['loa_country'] = $kvCountry[$country_code];
            $address['loa_province'] = trim($excelRow[7]);
            $address['loa_city'] = trim($excelRow[8]);
			$address['loa_zipcode'] = trim($excelRow[9]);
			$address['loa_phone'] = trim($excelRow[10]);
			$address['loa_address'] = trim($excelRow[11]);
			$aInfo['address'] = $address;
			//发件人信息
			$sender = array();
	    	$sender['loa_name'] = trim($excelRow[12]);
	    	$sender['loa_company'] = trim($excelRow[13]);
	    	$sender['loa_province'] = trim($excelRow[14]);
	    	$sender['loa_city'] = trim($excelRow[15]);
	    	$sender['loa_phone'] = trim($excelRow[16]);
	    	$sender['loa_address'] = trim($excelRow[17]);
	    	$aInfo['sender'] = $sender;
			//海关信息
			$aKey = array(1=>'loh_hs_name',2=>'loh_unit',3=>'loh_price',4=>'loh_quantity',5=>'loh_hs_code',6=>'loh_name',7=>'loh_note');
			$hs_list = array();
			$hs_info = array();
			$j = 0;
			$isEmpty = true;
			$isBreak = false;
			for($i=18; $i<=52; $i++) {
				++$j;
				$cell = trim($excelRow[$i]);
				$hs_info[$aKey[$j]] = $cell;
				if(!empty($cell)) {
					$isEmpty = false;
					if($j==2) {	//单位
						if(!isset($kvUnit[$cell])) {
							$aError['loh_unit'] = '第'.$line.'行的单位['.$cell.']不存在';
							$isBreak = true;
							break;
						}
						$hs_info['loh_unit'] = $kvUnit[$cell];
					}
				}
				if($j==7) {
					if($isEmpty == false) $hs_list[] = $hs_info;
					$hs_info = array();
					$j = 0;
					$isEmpty = true;
				}
			}
			if($isBreak === true) break;	//错误，退出循环
			
			$aInfo['hs_list'] = $hs_list;
			//验证
			$vBody = self::validator($aInfo);
			if($vBody!==true) {
				/* array_unshift($vBody, '第'.$line.'行的错误信息如下所示：');
				$aError = array_merge($aError, $vBody); */
				$aError[] = '第'.$line.'行错误：' . implode('；',$vBody) . '。';
				//break;
			}
			$aData[] = $aInfo;
		}		
		//返回结果
		if(!empty($aError)) {
			$result['error'] = $aError;
		} else {
			$result['body'] = $aData;
			$result['ask'] = 1;
		}
		return $result;
	}
	
	public static function validateHead($excelHead) {
		$aError = array();
		if(trim($excelHead[0]) != '客户参考号') $aError[] = '表头错误：A1单元格应该为[客户参考号]';
		if(trim($excelHead[1]) != '运输方式') $aError[] = '表头错误：B1单元格应该为[运输方式]"';
		if(trim($excelHead[2]) != '跟踪号') $aError[] = '表头错误：C1单元格应该为[跟踪号]';
		if(trim($excelHead[3]) != '重量（KG）') $aError[] = '表头错误：D1单元格应该为[重量（KG）]';
		//收件人信息
		if(trim($excelHead[4]) != '收件人姓名') $aError[] = '表头错误：E1单元格应该为[收件人姓名]';
		if(trim($excelHead[5]) != '收件人公司名') $aError[] = '表头错误：F1单元格应该为[收件人公司名]';
		if(trim($excelHead[6]) != '收件人国家') $aError[] = '表头错误：G1单元格应该为[收件人国家]"';
        if(trim($excelHead[7]) != '州') $aError[] = '表头错误：G1单元格应该为[州]"';
        if(trim($excelHead[8]) != '城市') $aError[] = '表头错误：I1单元格应该为[城市]"';
		if(trim($excelHead[9]) != '收件人邮编') $aError[] = '表头错误：J1单元格应该为[收件人邮编]';
		if(trim($excelHead[10]) != '收件人电话') $aError[] = '表头错误：K1单元格应该为[收件人电话]';
		if(trim($excelHead[11]) != '收件人地址') $aError[] = '表头错误：L1单元格应该为[收件人地址]';
		//发件人信息
		if(trim($excelHead[12]) != '发件人姓名') $aError[] = '表头错误：M1单元格应该为[发件人姓名]';
		if(trim($excelHead[13]) != '发件人公司名') $aError[] = '表头错误：N1单元格应该为[发件人公司名]';
		if(trim($excelHead[14]) != '发件人省份') $aError[] = '表头错误：O1单元格应该为[发件人省份]"';
		if(trim($excelHead[15]) != '发件人城市') $aError[] = '表头错误：P1单元格应该为[发件人城市]';
		if(trim($excelHead[16]) != '发件人电话') $aError[] = '表头错误：Q1单元格应该为[发件人电话]';
		if(trim($excelHead[17]) != '发件人地址') $aError[] = '表头错误：R1单元格应该为[发件人地址]';
		//海关信息
		if(trim($excelHead[18]) != '申报英文品名') $aError[] = '表头错误：S1单元格应该为[申报英文品名]';
		if(trim($excelHead[19]) != '单位') $aError[] = '表头错误：T1单元格应该为[单位]';
		if(trim($excelHead[20]) != '单价（USD）') $aError[] = '表头错误：U1单元格应该为[单价（USD）]';
		if(trim($excelHead[21]) != '数量') $aError[] = '表头错误：V1单元格应该为[数量]';
		if(trim($excelHead[22]) != '海关编码') $aError[] = '表头错误：W1单元格应该为[海关编码]';
		if(trim($excelHead[23]) != '配货名称') $aError[] = '表头错误：X1单元格应该为[配货名称]';
		if(trim($excelHead[24]) != '配货备注') $aError[] = '表头错误：Y1单元格应该为[配货备注]';
		if(trim($excelHead[25]) != '申报英文品名2') $aError[] = '表头错误：Z1单元格应该为[申报英文品名2]';
		if(trim($excelHead[26]) != '单位2') $aError[] = '表头错误：AA1单元格应该为[单位2]';
		if(trim($excelHead[27]) != '单价（USD）2') $aError[] = '表头错误：AB1单元格应该为[单价（USD）2]';
		if(trim($excelHead[28]) != '数量2') $aError[] = '表头错误：AC1单元格应该为[数量2]';
		if(trim($excelHead[29]) != '海关编码2') $aError[] = '表头错误：AD1单元格应该为[海关编码2]';
		if(trim($excelHead[30]) != '配货名称2') $aError[] = '表头错误：AE1单元格应该为[配货名称2]';
		if(trim($excelHead[31]) != '配货备注2') $aError[] = '表头错误：AF1单元格应该为[配货备注2]';
		if(trim($excelHead[32]) != '申报英文品名3') $aError[] = '表头错误：AG1单元格应该为[申报英文品名3]';
		if(trim($excelHead[33]) != '单位3') $aError[] = '表头错误：AH1单元格应该为[单位3]';
		if(trim($excelHead[34]) != '单价（USD）3') $aError[] = '表头错误：AI1单元格应该为[单价（USD）3]';
		if(trim($excelHead[35]) != '数量3') $aError[] = '表头错误：AJ1单元格应该为[数量3]';
		if(trim($excelHead[36]) != '海关编码3') $aError[] = '表头错误：AK1单元格应该为[海关编码3]';
		if(trim($excelHead[37]) != '配货名称3') $aError[] = '表头错误：AL1单元格应该为[配货名称3]';
		if(trim($excelHead[38]) != '配货备注3') $aError[] = '表头错误：AM1单元格应该为[配货备注3]';
		if(trim($excelHead[39]) != '申报英文品名4') $aError[] = '表头错误：AN1单元格应该为[申报英文品名4]';
		if(trim($excelHead[40]) != '单位4') $aError[] = '表头错误：AO1单元格应该为[单位4]';
		if(trim($excelHead[41]) != '单价（USD）4') $aError[] = '表头错误：AP1单元格应该为[单价（USD）4]';
		if(trim($excelHead[42]) != '数量4') $aError[] = '表头错误：AQ1单元格应该为[数量4]';
		if(trim($excelHead[43]) != '海关编码4') $aError[] = '表头错误：AR1单元格应该为[海关编码4]';
		if(trim($excelHead[44]) != '配货名称4') $aError[] = '表头错误：AS1单元格应该为[配货名称4]';
		if(trim($excelHead[45]) != '配货备注4') $aError[] = '表头错误：AT1单元格应该为[配货备注4]';
		if(trim($excelHead[46]) != '申报英文品名5') $aError[] = '表头错误：AU1单元格应该为[申报英文品名5]';
		if(trim($excelHead[47]) != '单位5') $aError[] = '表头错误：AV1单元格应该为[单位5]';
		if(trim($excelHead[48]) != '单价（USD）5') $aError[] = '表头错误：AW1单元格应该为[单价（USD）5]';
		if(trim($excelHead[49]) != '数量5') $aError[] = '表头错误：AX1单元格应该为[数量5]';
		if(trim($excelHead[50]) != '海关编码5') $aError[] = '表头错误：AY1单元格应该为[海关编码5]';
		if(trim($excelHead[51]) != '配货名称5') $aError[] = '表头错误：AZ1单元格应该为[配货名称5]';
		if(trim($excelHead[52]) != '配货备注5') $aError[] = '表头错误：BA1单元格应该为[配货备注5]';
		return empty($aError) ? true : $aError;
	}
	
}