<?php
class Receiving_TallyController extends Ec_Controller_Action
{
	public function preDispatch()
	{
		$this->tplDirectory = "receiving/views/tally/";
		$this->serviceClass = new Service_TallyProcess();
	}
	/**
	 * @author william-fan
	 * @todo 用于理货功能
	 */
	public function tallyAction(){
		if($this->_request->isPost()){
			$result = array('state' => 0, 'message' => 'ASN无效', 'data' => array());
			$receiving_code 	= $this->_request->getParam('receiving_code','');
			$product_barcode	= $this->_request->getParam('product_barcode','');
			$type = $this->_request->getParam('type','');
			switch($type){
				case "getreceiving":
						//获取asn
						$receiving = Service_Receiving::getByField($receiving_code,'receiving_code');
						if(!empty($receiving)){
							if($receiving['receiving_status']=='7'){
								$result['state'] ='1';
								$result['data'] = $receiving;
							}else{
								$result['message'] = '该ASN未收货完成';
							}
						}
						die(Zend_Json::encode($result));
					break;
				case "getdetail":
					if(empty($receiving_code)){
						die(Zend_Json::encode($result));
					}
					//print_r($product_barcode);
					if(empty($product_barcode)){
						$result['message'] = '产品条码无效';
						die(Zend_Json::encode($result));
					}
					
					$receiving = Service_Receiving::getByField($receiving_code,'receiving_code');
					if(!empty($receiving)){
						if($receiving['receiving_status']=='7'){
							$result['state'] ='1';
							$result['data'] = $receiving;
						}else{
							$result['message'] = '该ASN未收货完成';
						}
					}
					//die(Zend_Json::encode($result));
					$condition = array(
						'receiving_code'=>$receiving_code,
						'product_barcode'=>$product_barcode	
					);
					$receivingDetail = Service_ReceivingDetail::getByCondition($condition);
					if(empty($receivingDetail)){
						$result['message'] = "该ASN无此产品";
						die(Zend_Json::encode($result));
					}else{
						$result['state'] = '1';
				
						$qualityCondition = array(
								'receiving_code'=>$receiving_code,
								'product_barcode'=>$product_barcode,
						);
						$qualityInfo = Service_QualityControl::getByCondition($qualityCondition,'*','1','1');
						$qualityOrder = array();
						$box = array(); //分箱数据
						if(!empty($qualityInfo)){
							$qualityOrder=$qualityInfo[0];
							$userRow = Service_User::getByField($qualityOrder['receiving_user_id'], 'user_id', array('user_name', 'user_name_en'));
							$qualityOrder['receiving_user'] = $userRow['user_name'];
							
							$conditionPutawybox = array(
								'qc_code'=>$qualityOrder['qc_code'],
								'product_barcode'=>$product_barcode	
							);
							$box = Service_PutawayBox::getByCondition($conditionPutawybox,'*','1','1');
						}
						if(empty($box)){
							$box = array();
						}
						$qualityOrder['user_id']=Service_User::getUserId();
						$product = Service_Product::getByField($receivingDetail[0]['product_id']);
						
						$data = array();
						$data['receiving'] = $receivingDetail[0];
						$data['order'] = $qualityOrder;
						$data['product'] = $product;
						$data['box'] = $box;
						/* echo '<pre>';
						print_r($data);
						echo '</pre>'; */
						$this->view->data= $data;
						$tpl = $this->view->render($this->tplDirectory . "tally-detail.tpl");
						//echo $tpl;
						$result['tpl'] = $tpl;
						die(Zend_Json::encode($result));
					}
					break;
			}
		}
		echo Ec::renderTpl($this->tplDirectory . "tally.tpl", 'layout');
	}
	
	/**
	 * @author william-fan
	 * @todo 提交分箱数据
	 */
	public function submitTallyAction(){
		$result = array(
				"state" => 0,
				'error'=>array(array('errorCode'=>'10002','errorMsg'=>Ec::Lang('paramsErrormsg'))),
				"message" => "Fail."
		);
		if($this->_request->isPost()){
			$params= $this->_request->getParams();
			if(isset($params['xiangcode']) && !empty($params['xiangcode']) ){
				foreach($params['xiangcode'] as $key =>$val){
					$params['boxArray'][]=array(
							'box_code'=>$val,
							'quantity'=>isset($params['fengxiangnumber'][$key])?$params['fengxiangnumber'][$key]:0,
					);
				}
				unset($params['xiangcode'],$params['fengxiangnumber']);
			}
			$tallyobg = new Service_TallyProcess();
			$result=$tallyobg->submit($params);
			//print_r($result);
			//unset($params);
		}
		die(Zend_Json::encode($result));
		
	}
	
	/**
	 * @author william-fan
	 * @todo 理货详情
	 */
	public function displayAction(){
		header("Content-type:text/html;charset=utf-8");
		$receiving_code = $this->_request->getParam('receiving_code','');
		$product_barcode = $this->_request->getParam('product_barcode','');
		$receiving = Service_Receiving::getByField($receiving_code,'receiving_code');
		
		$condition = array(
				'receiving_code'=>$receiving_code,
				'product_barcode'=>$product_barcode
		);
		$receivingDetail = Service_ReceivingDetail::getByCondition($condition);
		
		
		$qualityCondition = array(
				'receiving_code'=>$receiving_code,
				'product_barcode'=>$product_barcode,
		);
		$qualityInfo = Service_QualityControl::getByCondition($qualityCondition,'*','1','1');
		$qualityOrder = array();
		if(!empty($qualityInfo)){
			$qualityOrder=$qualityInfo[0];
			$userRow = Service_User::getByField($qualityOrder['receiving_user_id'], 'user_id', array('user_name', 'user_name_en'));
			$qualityOrder['receiving_user'] = $userRow['user_name'];
		}
		
		$product = Service_Product::getByField($receivingDetail[0]['product_id']);
		
		$data = array();
		$data['receiving'] = $receivingDetail[0];
		$data['order'] = $qualityOrder;
		$data['product'] = $product;

		
		
		echo '<pre>';
		print_r($data);
		echo '</pre>';
		$this->view->data= $data;
		$tpl = $this->view->render($this->tplDirectory . "tally-detail.tpl");
		
		$result['tpl'] = $tpl;
		echo $tpl;
	}
}