<?php
class Service_PurchaseOrderTrackingProcess extends Common_Service
{
    protected $_orderCode = null;
    protected $_products = null;
    protected $_customerId = null;
    protected $_customerInfo = null;
    protected $_warehouseId = null;
    protected $_error;
    protected $_pro;
    protected $_receiving = array();
    protected $_date = '';


	public static function getPurchaseOrderStatus(){
		$status['0'] = Ec_Lang::getInstance()->getTranslate('PendingAudit');//'已审核';
		$status['1'] = Ec_Lang::getInstance()->getTranslate('Audited');//'草稿';		
		return $status;
	
	}


	public static function getPurchaseOrderStatusText($status='0'){
		$status_array = self::getPurchaseOrderStatus();
		return 	$status_array[$status];		
	
	}
	
	
	public static function getStatus(){
		$status['0'] = Ec_Lang::getInstance()->getTranslate('PendingAudit');//'已审核';
		$status['1'] = Ec_Lang::getInstance()->getTranslate('Audited ');//'草稿';
		
		return $status;
	}
	
	public static function getStatusText($status=0){
		$status_array = self::getStatus();
		return 	$status_array[$status];	
	
	}
	    
    public function __construct()
    {
        
        $this->_date = date('Y-m-d H:i:s');
    }
	
	
	
   public static function validator(&$data,$logistics_code="") {
    	
		$result = array();		
    	//订单
    	if(isset($data['baseinfo']) && is_array($data['baseinfo'])) {
    		$baseinfo = $data['baseinfo'];			
			if(!$baseinfo['tracking_number']){ 
				$result['customer_code'] = '请输入快递单号';	
			}else{
				$have_row = Service_PurchaseOrderTracking::getByField($baseinfo['tracking_number'],'tracking_number');
				if($have_row){
					$result['have_row'] = '快递单号已存在';	
				}
			
			}	
    	
    	} else {
    		$result['baseinfo'] = '数据错误';
    	}

    
    	//产品信息
    	if(isset($data['p_list']) && is_array($data['p_list'])) {
    		$p_list = &$data['p_list'];
    		if(count($p_list)==0) {
    			$result['p_list'] = '至少需要一条海关申报信息';
    		} else {			
    			foreach($p_list as $i=>&$p_info) {
    				$line = $i + 1;
    				if(!isset($p_info['po_code']) || empty($p_info['po_code'])) {
    					$result['p_list'] = '第['.$line.']行信息 ：请输入采购单号';
    					break;
    				}else{
						$purchaseOrder = Service_PurchaseOrder::getByField($p_info['po_code'],'po_code');
						if(empty($purchaseOrder)){
							$result['p_list'] = '第['.$line.']行信息 ：采购单号找不到';
    						break;	
						}else{
						
							$p_info['po_id'] = $purchaseOrder['po_id'];
						}
					
					}
                    
                    if(!isset($p_info['product_sku']) || empty($p_info['product_sku'])) {
                        $result['p_list'] = '第['.$line.']行信息 ：SKU不能为空';
                        break;
                    }else{
					      						  
						  if($purchaseOrder['po_id']){
							  $condition = array();
							  $condition['product.product_sku'] =  $p_info['product_sku'];
							  $condition['purchase_order_body.po_id'] =  $purchaseOrder['po_id'];
						  	  $purchaseBodyProduct = Service_PurchaseOrderBody::getJoinPurchaseBodyProductByCondition($condition);
							  if(empty($purchaseBodyProduct)) {
									$result['p_list'] = '第['.$line.']行信息 ：此采购单下没有此产品信息';
									break;
							  }else{
							  		$purchaseBodyProduct  = $purchaseBodyProduct[0];
									$p_info['product_id'] = $purchaseBodyProduct['product_id'];
									$p_info['old_received_quantity'] = $purchaseBodyProduct['received_quantity'];
									$p_info['pobd_id'] = $purchaseBodyProduct['pobd_id'];
									$p_info['order_quantity'] = $purchaseBodyProduct['order_quantity'];
									
							  }
							  
						  }			
					}
					
					
    				if(!isset($p_info['received_quantity']) || empty($p_info['received_quantity'])) {
    					$result['p_list'] = '第['.$line.']行信息 ：请输入实收数量';
    					break;
    				}else{
					
						 if (!(preg_match("/^[0-9]+$/",$p_info['received_quantity']) && is_numeric($p_info['received_quantity']) && $p_info['received_quantity'] >0 )) {
						 	$result['p_list'] = '第['.$line.']条信息 ：实收数量必须为正整数';
							break;
						 }
						 if($purchaseBodyProduct['pobd_status']=='-1'){						 
						 	$result['p_list'] = '第['.$line.']条信息 ：对应采购单项已关闭';
							break;  	   
								   
							  
						 }						 
						 
						 if($purchaseBodyProduct['received_quantity']+$p_info['received_quantity']>$purchaseBodyProduct['order_quantity']){
						 
						 	$result['p_list'] = '第['.$line.']条信息 ：实收数量+已收数量大于采购数量';
							break;  	   
								   
							  
						 }
					
					}									
    				
    				
    			}//foreach
				
				if(empty($result)){
						
						$keylist = array();
						foreach($p_list as $i=>$product_info) {
							$line = $i + 1;
							$key = md5($product_info['po_code'].$product_info['product_sku']);
							
							
							if(isset($keylist[$key])){							
								$result['p_list'] = '第['.$line.']条信息 ：数据重复';
								break;	
							}else{
								$keylist[$key] = $key;
							}
							
													
						}
						
						
					
				
				}
				
				
    		}
    	} else {
    		$result['p_list'] = '数据错误';
    	}
    	return empty($result) ? true : $result;
    }	
    
	
	
	
	

   

}

?>