<?php
class Product_ProductSearchController extends Ec_Controller_Action
{
    public function preDispatch()
    {
        $this->tplDirectory = "product/views/product/";
        $this->serviceClass = new Service_Product();
        $userAuth = new Zend_Session_Namespace('userAuthorization');
        $this->user_id = $userAuth->userId;
    }
    /*产品列表*/
    public function listAction()
    {
        $status=Service_ProductProcess::getProductStatus();
        $receiving=Service_ProductProcess::getProductReceivingStatus();
        if ($this->_request->isPost()) {
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);
            $warehoseId = trim($this->_request->getParam('warehouse_id', ''));
            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;
            $return = array(
                "state" => 0,
                "message" => "No Data"
                );

            $params = $this->_request->getParams();
            $condition = $this->serviceClass->getMatchFields($params);
            // print_r($condition);exit;
            $condition['dateFor'] = isset($params['dateFor'])?$params['dateFor']:'';
            $condition['dateTo'] = isset($params['dateTo'])?$params['dateTo']:'';
            $condition['product_search_id'] = isset($params['product_search_id'])?$params['product_search_id']:'';
            $count = $this->serviceClass->getProductSearchByCondition($condition, 'count(*)');
            $return['total'] = $count;

          if ($count) {
                $showFields=array(
                    'product_sku',
                    'customer_code',
                    'product_title_en',
                    'product_title',
                    'product_status',
                    'product_receive_status',
                    'product_weight',
                    'pc_id',
                    'product_id',
                    'pce_title',
                    'product_barcode',
                    'customer_id',
                    'product_type',
                    'goods_id',
                    'hs_code',
                    'customer_company_name',
                    'order_operation_time.shipment_time',
                    );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);

                $rows = $this->serviceClass->getProductSearchByCondition($condition,$showFields, $pageSize, $page, array('product.product_id desc'));
                $return['data'] = $rows;
                $return['state'] = 1;
                $return['status'] = $status;
                $return['receiving'] = $receiving;
                $return['message'] = "";
                $userRight = Service_UserRight::getByField("/product/product/beian","ur_url","*");
                $urmCondition = array(
                    'ur_id'=>$userRight['ur_id'],
                    'user_id'=>$this->user_id
                );
                $userRightMap = Service_UserRightMap::getByCondition($urmCondition,"count(*)");
                if($userRightMap){
                    $return['beianAuth'] = 1;
                }else{
                    $return['beianAuth'] = 0;
                }
            }
            die(Zend_Json::encode($return));
        }
        $this->view->status=$status;
        $this->view->receiving=$receiving;
        echo Ec::renderTpl($this->tplDirectory . "product-search-index.tpl", 'layout');
    }


        /*产品详细*/
    public function detailAction(){
        $skuid = $this->_request->getParam("skuid","");
        $productRow= $this->serviceClass->getByField($skuid, 'product_id');
        $productCategory  = Service_ProductCategory::getByField($productRow['pc_id'],'pc_id',"*");
        $productRow['pc_name'] = $productCategory['pc_name'];
        if(empty($productRow['pu_code'])){ $productRow['pu_code'] = '007';}
        if($productRow['pu_code']){
            $pUm = Service_ProductUom::getByField($productRow['pu_code'],'pu_code',"*");
            $productRow['pu_name'] = $pUm['pu_name'];
        }else{
            $productRow['pu_name'] = "";
        }
        // 供应商信息
        if ($productRow['distributor_id']) {
          $productRow['distributor'] = Service_Distributor::getByPrimaryKey($productRow['distributor_id']);
        }
        $this->view->product = $productRow;//产品日记
        $logService = new Service_ProductLog();
        $logs = $logService->getByCondition(array('product_id'=>$skuid),"*");
        foreach($logs as $key=>$value){
            $customerService = new Service_Customer();
            $c = $customerService->getByField($value['customer_id'],"customer_id","*");
            $logs[$key]['customer_code'] = $c['customer_code'];
            if($value['user_id']=="-1"){
                if($value['account_id']=="0"){
                    $logs[$key]['operater'] = $c['customer_code'];
                }else{
                    $account = Service_Account::getByField($value['account_id'],"account_id","*");
                    $logs[$key]['operater'] = $account['account_name'];
                }
            }else{
                $user = Service_User::getByField($value['user_id'],'user_id',"*");
                $logs[$key]['operater'] = $user['user_name'];
            }
        }
        $this->view->logs = $logs;//产品日记
        $productInventory = new Service_ProductInventory();
        $productInventoryLog = new Service_ProductInventoryLog();
        $inventoryLog = $productInventoryLog->getJoinProductByCondition(array('product_id'=>$skuid),"*");
        $inventoryDetail = $productInventory->getByField($skuid,'product_id');
        foreach($inventoryLog as $key=>$value){
            $preRcode= substr($value['reference_code'], 0,3);
            switch ($preRcode) {
                case 'BHR':
                    $inventoryLog[$key]['application_code'] = 'BHR';
                    break;
                case 'SOE':
                    $inventoryLog[$key]['application_code'] = 'SOE';
                    break;
                case 'SWO':
                    $inventoryLog[$key]['application_code'] = 'SWO';
                    break;
                default:
                    break;
            }
        }
        // print_r($inventoryLog);exit;
        $this->view->productInventoryLog = $inventoryLog;//产品库存日志
        $this->view->inventoryDetail = $inventoryDetail;//产品库存

        $oService = new Service_Orders();
        $opService = new Service_OrderProduct();
        $orderProduct = $opService->getByCondition(array('product_id'=>$skuid),"*");
        foreach ($orderProduct as $key => $value) {
            $orders = $oService->getByField($value['order_id']);
            if($orders['order_mode_type']==0 && in_array($orders['order_status'], array(4,5,6,7,8,9,10))){
                $oqtySum += $value['op_quantity'];
            }
        }
        $oqtySum = $oqtySum ? $oqtySum : 0;
        $this->view->oqtySum = $oqtySum;//待出库库存

        $rdService = new Service_ReceivingDetail();
        $rService = new Service_Receiving();
        $productAsn = $rdService->getByCondition(array('product_id'=>$skuid),"*");
        foreach ($productAsn as $key => $value) {
            $receiving = $rService->getByField($value['receiving_id']);
            if($receiving['receive_model_type']==0 && in_array($receiving['receiving_status'], array(4,5,6)) && in_array($value['rd_status'], array(0,1))){
                $rqtySum += $value['rd_receiving_qty'];
            }
        }
        $rqtySum = $rqtySum ? $rqtySum : 0;
        $this->view->rqtySum = $rqtySum;//待上架库存
        // $this->view->productAsn = $productAsn;//产品ASN
        // $swapOrderDetail=new Service_SwapOrderDetail();
        // $swapOrderout = $swapOrderDetail->getByCondition(array('product_id'=>$skuid),"*");
        // $swapOrderin = Service_SwapOrderDetail::getByCondition(array('to_product_id'=>$skuid),"*");
        // $this->view->swapOrderout = $swapOrderout;//易货单
        // $this->view->swapOrderin = $swapOrderin;
        $inventoryBatchService = new Service_InventoryBatch();
        $inventoryBatchList = $inventoryBatchService->getByCondition(array('product_id'=>$skuid),"*");
        $this->view->inventoryBatchList = $inventoryBatchList;//产品批次库存

        $hsElementMap = Service_HsElementMap::getByCondition(array('product_id'=>$skuid),"*");
        if(!empty($hsElementMap)){
            foreach($hsElementMap as $k=>$v){
              $HE = Service_HsElement::getByField($v['he_id'],"he_id","*");
              $hsElementMap[$k]['HE'] = $HE;
              $HUM = Service_HsUomMap::getByField($v['product_id'],"product_id","*");
              $hsElementMap[$k]['HUM'] = $HUM;
              $HU = Service_HsUom::getByField($HUM['hu_id'],"hu_id","*");
              $productUom = Service_ProductUom::getByField($HU['pu_code_law'],"pu_code","*");
              $HU['pu_name'] = $productUom['pu_name'];
              $productUomSecond = Service_ProductUom::getByField($HU['pu_code_second'],"pu_code","*");
              $HU['pu_name_second'] = $productUomSecond['pu_name'];
              $hsElementMap[$k]['HU'] = $HU;
          }
      }else{
       $row = array();
       $HUM = Service_HsUomMap::getByField($skuid,"product_id","*");
        if($HUM){
            $row['HUM'] =  $HUM;
            $row['HE']['hs_code'] =  $productRow['hs_code'];
            $HU = Service_HsUom::getByField($HUM['hu_id'],"hu_id","*");
            $productUom = Service_ProductUom::getByField($HU['pu_code_law'],"pu_code","*");
            $HU['pu_name'] = $productUom['pu_name'];
            $productUomSecond = Service_ProductUom::getByField($HU['pu_code_second'],"pu_code","*");
            $HU['pu_name_second'] = $productUomSecond['pu_name'];
            $row['HU'] = $HU;
        }
        $hsElementMap[] = $row;
    }
    $userRight = Service_UserRight::getByField("/product/product/change","ur_url","*");
    $urmCondition = array(
        'ur_id'=>$userRight['ur_id'],
        'user_id'=>$this->user_id
    );
    $userRightMap = Service_UserRightMap::getByCondition($urmCondition,"count(*)");
    $userEditPg = Service_UserRight::getByField("/product/product/editpg","ur_url","*");
    $this->view->userEditPg = Service_UserRightMap::getByCondition(array( 'ur_id'=>$userEditPg['ur_id'],),"count(*)");
    $this->view->changeAuth = $userRightMap;
    $this->view->hsElementMap = $hsElementMap;
    echo Ec::renderTpl($this->tplDirectory . "product-search-detail-log.tpl", 'layout');
}


}
