|  | @@ -1,497 +1,497 @@
 | 
	
		
			
				|  |  | -<?php
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | - * 此模型是为了支持从许昌销售公司调出库存到香港公司仓库的功能支持
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | -class Model_logic_u9xg extends Lin_Model {
 | 
	
		
			
				|  |  | -    public $xdzzcode = '120';//许昌销售公司编码
 | 
	
		
			
				|  |  | -    public $xdcp_code = '12006';//许昌成品库的编码  测试的时候就用龙盈工厂的仓库
 | 
	
		
			
				|  |  | -    public $xdxgzzcode = '130';//香港组织公司编码
 | 
	
		
			
				|  |  | -    public $xdxgls_code = '13001';//香港临时库的编码   测试的时候用销售公司成品库的编码
 | 
	
		
			
				|  |  | -    public $ztcode = '9988';//账套的code;
 | 
	
		
			
				|  |  | -    public $tb_org_arr =[101,110,130];//同步组织
 | 
	
		
			
				|  |  | -    public $gys = "98001";//供应商  98001  龙盈  98002  龙熠
 | 
	
		
			
				|  |  | -    //切记要修改token_120的token真正的token!!!!
 | 
	
		
			
				|  |  | -    function __construct(){
 | 
	
		
			
				|  |  | -        parent::__construct();
 | 
	
		
			
				|  |  | -        $this->load->_model('Model_settingtest','settingtest');
 | 
	
		
			
				|  |  | -        $this->load->_model("Model_apiyyv1",'apiyyv1');
 | 
	
		
			
				|  |  | -        $this->load->_model('Model_classid','classid');
 | 
	
		
			
				|  |  | -        $this->load->_model('Model_typeclass','typeclass');
 | 
	
		
			
				|  |  | -        $this->load->_model('Model_shop','shop');
 | 
	
		
			
				|  |  | -        $this->load->_model('Model_zzquque_u9','zzquque_u9');
 | 
	
		
			
				|  |  | -        $this->load->_model('Model_zzququeu9_logs','zzququeu9_logs');
 | 
	
		
			
				|  |  | -        $this->load->_model('Model_logic_tools','logic_tools');
 | 
	
		
			
				|  |  | -        $this->load->_model('Model_logic_u9tools','logic_u9tools');
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    public function getToken($type){
 | 
	
		
			
				|  |  | -        $name = "get_yytoken_".$type;
 | 
	
		
			
				|  |  | -        $token = $this->settingtest->$name();
 | 
	
		
			
				|  |  | -        return $token;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //转码准备数据
 | 
	
		
			
				|  |  | -    public function transPrepare(){
 | 
	
		
			
				|  |  | -        $classid = $this->classid->sku();
 | 
	
		
			
				|  |  | -        $tcall = $this->typeclass->find_all();
 | 
	
		
			
				|  |  | -        foreach ($tcall as $v)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            $tcjm[$v['id']] = array($v['jm'],$v['classid']);
 | 
	
		
			
				|  |  | -            $typeclass[$v['id']] = array('zh'=>$v['zh'],'classid'=>$v['classid'],'bm'=>$v['bm'],'title'=>$v['title'],'jm'=>$v['jm']);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        return [
 | 
	
		
			
				|  |  | -            'classid'=>$classid,
 | 
	
		
			
				|  |  | -            'typeclass'=>$typeclass,
 | 
	
		
			
				|  |  | -        ];
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //必须先建立许昌成品仓的销售单和调出单  香港仓的采购单  一次执行5单
 | 
	
		
			
				|  |  | -    //循环执行许昌成品仓的销售单 调出单和香港仓的采购单
 | 
	
		
			
				|  |  | -    public function  xdlsOneStep($list){
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  | -        $pre_data = $this->transPrepare();
 | 
	
		
			
				|  |  | -        foreach($list as $k=>$v){
 | 
	
		
			
				|  |  | -            $this->xdlsBeforeCreate($v,$pre_data['typeclass'],$pre_data['classid']);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //循环执行许昌仓的销售单 调出单和香港仓的采购单  提交  顺带的也执行审核
 | 
	
		
			
				|  |  | -    public function xdlsTwoStep($list){
 | 
	
		
			
				|  |  | -        foreach($list as $k=>$v){
 | 
	
		
			
				|  |  | -            $r1 = $this->dcSubAndCheck($v);
 | 
	
		
			
				|  |  | -            if(!$r1){
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | -            $r2 = $this->cgSubAndCheck($v);
 | 
	
		
			
				|  |  | -            if(!$r2){
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           $this->xsSubAndCheck($v);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //查询调出单生成的调入单是否生成 如果生成了就审核 如果没生成 说明异常了 这种都是按步骤走的
 | 
	
		
			
				|  |  | -    public function xdlsThreeStep($list){
 | 
	
		
			
				|  |  | -        $token_140 = $this->getToken(130);
 | 
	
		
			
				|  |  | -        foreach($list as $k=>$v){
 | 
	
		
			
				|  |  | -            $r = $this->apiyyv1->drdcxBydcd($v['order_no'],$token_140);
 | 
	
		
			
				|  |  | -            //如果获取对应调入单没有成功 
 | 
	
		
			
				|  |  | -            if(empty($r[0]['Data'][0]['docno'])){
 | 
	
		
			
				|  |  | -                $this->editData($v['id'],['dr_status'=>-1,'update_time'=>time()],$v['order_no'],6,1,'dr',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if(count($r[0]['Data'])>1){
 | 
	
		
			
				|  |  | -                foreach($r[0]['Data'] as $item){
 | 
	
		
			
				|  |  | -                    if($item['descflexfield_pubdescseg4'] == $v['order_no']){
 | 
	
		
			
				|  |  | -                        $dr_no = $item['docno'];
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }else{
 | 
	
		
			
				|  |  | -                $dr_no = $r[0]['Data'][0]['docno'];
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            $this->editData($v['id'],['dr_no'=>$r[0]['Data'][0]['docno'],'dr_status'=>1,'update_time'=>time()],$v['order_no'],6,1,'dr',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | -            //提交调入单 
 | 
	
		
			
				|  |  | -            $rr = $this->apiyyv1->drdSubmit(['number'=>$dr_no],$token_140);
 | 
	
		
			
				|  |  | -            if(!$rr[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | -                $this->editData($v['id'],['dr_status'=>-2,'update_time'=>time()],$v['order_no'],6,2,'dr',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            $this->editData($v['id'],['dr_status'=>2,'update_time'=>time()],$v['order_no'],6,2,'dr',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            //审核调入单
 | 
	
		
			
				|  |  | -            $rrr = $this->apiyyv1->drdApprove(['number'=>$dr_no],$token_140);
 | 
	
		
			
				|  |  | -            if(!$rrr[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | -                $this->editData($v['id'],['dr_status'=>-3,'update_time'=>time()],$v['order_no'],6,3,'dr',$rrr[1],$rrr[0]);
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            $this->editData($v['id'],['dr_status'=>3,'update_time'=>time()],$v['order_no'],6,3,'dr',$rrr[1],$rrr[0]);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //建立香港的销售单 标准出库单有源的需要先审核
 | 
	
		
			
				|  |  | -    public function xdlsFourStep($list){
 | 
	
		
			
				|  |  | -        $pre_data = $this->transPrepare();
 | 
	
		
			
				|  |  | -        foreach($list as $k=>$v){
 | 
	
		
			
				|  |  | -            $this->xdlsAfterDetail($v,$pre_data['typeclass'],$pre_data['classid']);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //审核香港销售单 同时生成标准出库单 
 | 
	
		
			
				|  |  | -    public function xdlsFiveStep($list){
 | 
	
		
			
				|  |  | -        $token_140 = $this->getToken(130);
 | 
	
		
			
				|  |  | -        // $xs_no_list = array_column($list,'xs_two_no');
 | 
	
		
			
				|  |  | -        echo "<pre>";
 | 
	
		
			
				|  |  | -        // $r = $this->apiyyv1->xscsByordernos($xs_no_list,$token_140);
 | 
	
		
			
				|  |  | -        // var_dump($r);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | -            //创建标准出库单
 | 
	
		
			
				|  |  | -            $v = [
 | 
	
		
			
				|  |  | -                'xs_no'=>'SO2502280046',
 | 
	
		
			
				|  |  | -                'drckbm'=>$this->xdxgls_code,
 | 
	
		
			
				|  |  | -                'list'=>[
 | 
	
		
			
				|  |  | -                    [
 | 
	
		
			
				|  |  | -                        'dcsl'=>1,
 | 
	
		
			
				|  |  | -                    ]
 | 
	
		
			
				|  |  | -                   
 | 
	
		
			
				|  |  | -                ]
 | 
	
		
			
				|  |  | -            ];
 | 
	
		
			
				|  |  | -            $bzch_res = $this->apiyyv1->bzchCreate($v,$token_140);
 | 
	
		
			
				|  |  | -            var_dump($bzch_res);
 | 
	
		
			
				|  |  | -            die;
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -            if(empty($bzch_res[0]['Data'][0]['m_code'])){
 | 
	
		
			
				|  |  | -                $this->editData($info['zq_u9_id'],['bzch_status'=>-1,'update_time'=>time()],$info['number'],4,1,'bzch',$bzch_res[1],$bzch_res[0]);
 | 
	
		
			
				|  |  | -                return ;
 | 
	
		
			
				|  |  | -           }
 | 
	
		
			
				|  |  | -           //更新销售单数据
 | 
	
		
			
				|  |  | -           $bzch_no = $bzch_res[0]['Data'][0]["m_code"];
 | 
	
		
			
				|  |  | -           $this->editData($info['zq_u9_id'],['bzch_no'=>$bzch_no,'bzch_status'=>1,'update_time'=>time()],$info['number'],4,1,'bzch',$bzch_res[1],$bzch_res[0]);
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //审核香港标准出库单
 | 
	
		
			
				|  |  | -    public function xdlsSixStep($list){
 | 
	
		
			
				|  |  | -        $token_140 = $this->getToken(130);
 | 
	
		
			
				|  |  | -        foreach($list as $k =>$v){
 | 
	
		
			
				|  |  | -            $bzch_res = $this->apiyyv1->bzchSubmitAndApprove(['number'=>$v['bzch_no']],$token_140);
 | 
	
		
			
				|  |  | -            var_dump($bzch_res);
 | 
	
		
			
				|  |  | -            if(empty($bzch_res[0]['Data'][0]['m_code'])){
 | 
	
		
			
				|  |  | -                $this->editData($v['id'],['bzch_status'=>-1,'update_time'=>time()],$v['order_no'],4,3,'bzch',$bzch_res[1],$bzch_res[0]);
 | 
	
		
			
				|  |  | -                return ;
 | 
	
		
			
				|  |  | -           }
 | 
	
		
			
				|  |  | -           //更新销售单数据
 | 
	
		
			
				|  |  | -           $bzch_no = $bzch_res[0]['Data'][0]["m_code"];
 | 
	
		
			
				|  |  | -           $this->editData($v['id'],['bzch_no'=>$bzch_no,'bzch_status'=>1,'update_time'=>time()],$v['order_no'],4,3,'bzch',$bzch_res[1],$bzch_res[0]);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    //由于调出单生成可能不会申请后实时出现 需要差几分钟再去申请,避免这种错误
 | 
	
		
			
				|  |  | -    //从许昌成品库调出库存到香港临时仓
 | 
	
		
			
				|  |  | -    //创建 调出单 销售单 采购单
 | 
	
		
			
				|  |  | -    //必须先建立许昌成品仓的销售单和调出单  香港仓的采购单  因为u9生成需要时间  然后在进行 审核 
 | 
	
		
			
				|  |  | -    public function xdlsBeforeCreate($info,$typeclass,$classid){
 | 
	
		
			
				|  |  | -       $time = time();
 | 
	
		
			
				|  |  | -       $token_130 =  $this->getToken(120);
 | 
	
		
			
				|  |  | -       $list = [];
 | 
	
		
			
				|  |  | -       $fpdata = $info['fpdata'];
 | 
	
		
			
				|  |  | -       $fpdata_list = explode(';',trim( $fpdata,';'));
 | 
	
		
			
				|  |  | -       $whlabel_list = explode("|",trim($info['whlabel'],"|"));
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -       $total_goods_num = 0;//订单产品总数量
 | 
	
		
			
				|  |  | -       foreach($whlabel_list as $k=>$v){
 | 
	
		
			
				|  |  | -            $tmp_data = explode("-",trim($v,'-'));
 | 
	
		
			
				|  |  | -            if(isset($tmp_data[1])){
 | 
	
		
			
				|  |  | -                $total_goods_num += $tmp_data[1];
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -       $avg_price = floor(($info['skje']*1000)/$total_goods_num)/1000;
 | 
	
		
			
				|  |  | -       foreach($fpdata_list as $k=>$v){
 | 
	
		
			
				|  |  | -            $tmp_str = str_replace(array('-163-','-164-','-165-','-166-'),'-',$v);
 | 
	
		
			
				|  |  | -            $tmp_arr = explode('|',trim($tmp_str,'|'));
 | 
	
		
			
				|  |  | -            if(stripos($tmp_arr[0],',') !== false){
 | 
	
		
			
				|  |  | -                $ft = explode(',',$tmp_arr[0]);
 | 
	
		
			
				|  |  | -                $features = explode('-',trim($ft[1],'-'));
 | 
	
		
			
				|  |  | -                $features[] = $ft[0];
 | 
	
		
			
				|  |  | -            }else{
 | 
	
		
			
				|  |  | -                $features = explode('-',trim($tmp_arr[0],'-'));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            $sku = implode("-",$features);
 | 
	
		
			
				|  |  | -            $tmp_ret = $this->logic_u9tools->getOneU9bm($sku,$classid,$typeclass);
 | 
	
		
			
				|  |  | -            $list[] = [
 | 
	
		
			
				|  |  | -                'jm'=>$tmp_ret['jm'],
 | 
	
		
			
				|  |  | -                'bm'=>$tmp_ret['bm'],
 | 
	
		
			
				|  |  | -                'zh'=>$tmp_ret['zh'],
 | 
	
		
			
				|  |  | -                'final_price'=>$avg_price,//目前先不设置 等后期财务说了再说
 | 
	
		
			
				|  |  | -                'title'=>isset($tmp_arr[1])?$tmp_arr[1]:'无',
 | 
	
		
			
				|  |  | -                'dcsl'=>$tmp_arr[2],
 | 
	
		
			
				|  |  | -                'is_register'=>0,//商品是否被注册  先都当没注册  后面会先确认下
 | 
	
		
			
				|  |  | -            ];
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -       $shop = $this->shop->read($info['shop']);
 | 
	
		
			
				|  |  | -       if(empty($shop['yyid'])){
 | 
	
		
			
				|  |  | -            //如果没有在u9上设置店铺的组织 那么需要设置
 | 
	
		
			
				|  |  | -            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'',[],$this->logic_tools->ret_arr(-1,'店铺没有在u9平台设置参数'));
 | 
	
		
			
				|  |  | -            return ;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       $dc_params = [
 | 
	
		
			
				|  |  | -            'gys'=>$this->gys,//供应商
 | 
	
		
			
				|  |  | -            'number'=>$info['number'],//erp订单编码
 | 
	
		
			
				|  |  | -            "TransOutDocType_Code"=>"TransOut001",//组织间调拨
 | 
	
		
			
				|  |  | -            "time"=>$time,
 | 
	
		
			
				|  |  | -            'TransferDirection'=>0,//普通
 | 
	
		
			
				|  |  | -            'yyid'=>$shop['yyid'],//来源店铺  这种需要在店铺表中有
 | 
	
		
			
				|  |  | -            'shipremarks'=>$info['shipremarks'],//订单的备注
 | 
	
		
			
				|  |  | -            'dcckbm'=>$this->xdcp_code,//调出仓库编码
 | 
	
		
			
				|  |  | -            'drckbm'=>$this->xdxgls_code,//调入仓库编码
 | 
	
		
			
				|  |  | -            'drzz_code'=>$this->xdxgzzcode,//调入组织Code
 | 
	
		
			
				|  |  | -            'owner_code'=>$this->xdzzcode,//货主组织Code
 | 
	
		
			
				|  |  | -            'ztcode'=>$this->ztcode,//账套
 | 
	
		
			
				|  |  | -            'tb_org_arr'=>$this->tb_org_arr,//要同步的组织列表
 | 
	
		
			
				|  |  | -            'list'=>$list
 | 
	
		
			
				|  |  | -       ];
 | 
	
		
			
				|  |  | -       //调出单检测是否存在
 | 
	
		
			
				|  |  | -       $cxdcd_r = $this->apiyyv1->xcDcdByOtherId($dc_params['number'],$token_130);
 | 
	
		
			
				|  |  | -       $ret_data = $cxdcd_r[0]['Data'];
 | 
	
		
			
				|  |  | -       if(isset($ret_data[0])){
 | 
	
		
			
				|  |  | -            $descflexfield_pubdescseg4 = $ret_data[0]['descflexfield_pubdescseg4'];
 | 
	
		
			
				|  |  | -            if($dc_params['number'] == $descflexfield_pubdescseg4){
 | 
	
		
			
				|  |  | -                return ;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       //检测料品是否在u9被添加
 | 
	
		
			
				|  |  | -       $r = $this->checkLp($dc_params,$token_130);
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  | -       if($r['code'] !=1){
 | 
	
		
			
				|  |  | -            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'lpck',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -            return ;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -       //创建调出单
 | 
	
		
			
				|  |  | -       $dcd_res = $this->apiyyv1->dcdCrate($dc_params,$token_130);
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -       if(empty($dcd_res[0]['Data'][0]["Code"])){
 | 
	
		
			
				|  |  | -            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'dc',$dcd_res[1],$dcd_res[0]);
 | 
	
		
			
				|  |  | -            return ;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -        //更新
 | 
	
		
			
				|  |  | -       $dcd_no =  $dcd_res[0]['Data'][0]["Code"];
 | 
	
		
			
				|  |  | -       $this->editData($info['zq_u9_id'],['dc_no'=>$dcd_no,'dc_status'=>1,'update_time'=>time()],$info['number'],1,1,'dc',$dcd_res[1],$dcd_res[0]);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        //创建许昌成品库的销售单
 | 
	
		
			
				|  |  | -        $xsd_res = $this->apiyyv1->xsdCreate($dc_params,$token_130);
 | 
	
		
			
				|  |  | -        if(empty($xsd_res[0]['Data']['m_code'])){
 | 
	
		
			
				|  |  | -            $this->editData($info['zq_u9_id'],['xc_status'=>-1,'update_time'=>time()],$info['number'],2,1,'xs',$xsd_res[1],$xsd_res[0]);
 | 
	
		
			
				|  |  | -            return ;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        //更新销售单数据
 | 
	
		
			
				|  |  | -       $xs_no = $xsd_res[0]['Data'][0]["m_code"];
 | 
	
		
			
				|  |  | -       $this->editData($info['zq_u9_id'],['xs_no'=>$xs_no,'xc_status'=>1,'update_time'=>time()],$info['number'],2,1,'xs',$xsd_res[1],$xsd_res[0]);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        //创建香港公司的采购单
 | 
	
		
			
				|  |  | -        $token_140 = $this->getToken(120);
 | 
	
		
			
				|  |  | -        $cgd_res = $this->apiyyv1->cgdCreate($dc_params,$token_140);
 | 
	
		
			
				|  |  | -        if(empty($cgd_res[0]['Data'][0]["Code"])){
 | 
	
		
			
				|  |  | -            $this->editData($info['zq_u9_id'],['cg_status'=>-1,'update_time'=>time()],$info['number'],3,1,'cg',$cgd_res[1],$cgd_res[0]);
 | 
	
		
			
				|  |  | -            return ;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        $this->editData($info['zq_u9_id'],['cg_no'=>$xs_no,'cg_status'=>1,'update_time'=>time()],$info['number'],3,1,'cg',$cgd_res[1],$cgd_res[0]);
 | 
	
		
			
				|  |  | -        return ;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -    // 提交审核调出单调出单 
 | 
	
		
			
				|  |  | -    public function dcSubAndCheck($info){
 | 
	
		
			
				|  |  | -        $token_130 = $this->getToken(120);
 | 
	
		
			
				|  |  | -        $r = $this->apiyyv1->dcdSubmit([
 | 
	
		
			
				|  |  | -            'number'=>$info['dc_no']
 | 
	
		
			
				|  |  | -        ],$token_130);
 | 
	
		
			
				|  |  | -        if(!$r[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | -            $this->editData($info['id'],['dc_status'=>-2,'update_time'=>time()],$info['order_no'],1,2,'dc',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        //更新调出单
 | 
	
		
			
				|  |  | -        $this->editData($info['id'],['dc_status'=>2,'update_time'=>time()],$info['order_no'],1,2,'dc',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -        $rr = $this->apiyyv1->dcdApprove([
 | 
	
		
			
				|  |  | -            'number'=>$info['dc_no']
 | 
	
		
			
				|  |  | -        ],$token_130);
 | 
	
		
			
				|  |  | -        if(!$rr[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | -            $this->editData($info['id'],['dc_status'=>-3,'update_time'=>time()],$info['order_no'],1,3,'dc',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        $this->editData($info['id'],['dc_status'=>3,'update_time'=>time()],$info['order_no'],1,3,'dc',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | -        return true;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //提交审核采购单
 | 
	
		
			
				|  |  | -    public function cgSubAndCheck($info){
 | 
	
		
			
				|  |  | -        $token_140 = $this->getToken(120);
 | 
	
		
			
				|  |  | -        $r = $this->apiyyv1->cgdSubmit([
 | 
	
		
			
				|  |  | -            'number'=>$info['cg_no']
 | 
	
		
			
				|  |  | -        ],$token_140);
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  | -        if(!$r[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | -            $this->editData($info['id'],['cg_status'=>-2,'update_time'=>time()],$info['order_no'],3,2,'cg',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        //更新采购单
 | 
	
		
			
				|  |  | -        $this->editData($info['id'],['cg_status'=>2,'update_time'=>time()],$info['order_no'],3,2,'cg',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -        $rr = $this->apiyyv1->cgdApprove([
 | 
	
		
			
				|  |  | -            'number'=>$info['cg_no']
 | 
	
		
			
				|  |  | -        ],$token_140);    
 | 
	
		
			
				|  |  | -        if(!$rr[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | -            $this->editData($info['id'],['cg_status'=>-3,'update_time'=>time()],$info['order_no'],3,3,'cg',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }   
 | 
	
		
			
				|  |  | -        $this->editData($info['id'],['cg_status'=>3,'update_time'=>time()],$info['order_no'],3,3,'cg',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | -        return true;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //提交审核销售单
 | 
	
		
			
				|  |  | -    public function xsSubAndCheck($info){
 | 
	
		
			
				|  |  | -        $token_130 = $this->getToken(120);
 | 
	
		
			
				|  |  | -        $r = $this->apiyyv1->xsdSubmit([
 | 
	
		
			
				|  |  | -            'number'=>$info['xs_no']
 | 
	
		
			
				|  |  | -        ],$token_130);
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -        if(!$r[0]['Data'][0]['m_isSucess']){
 | 
	
		
			
				|  |  | -            $this->editData($info['id'],['xs_status'=>-2,'update_time'=>time()],$info['order_no'],2,2,'xs',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        $this->editData($info['id'],['xs_status'=>2,'update_time'=>time()],$info['order_no'],2,2,'xs',$r[1],$r[0]);
 | 
	
		
			
				|  |  | -        $rr = $this->apiyyv1->xsdApprove([
 | 
	
		
			
				|  |  | -            'number'=>$info['xs_no']
 | 
	
		
			
				|  |  | -        ],$token_130);
 | 
	
		
			
				|  |  | -        if(!$rr[0]['Data'][0]['m_isSucess']){
 | 
	
		
			
				|  |  | -            $this->editData($info['id'],['xs_status'=>-3,'update_time'=>time()],$info['order_no'],2,3,'xs',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }   
 | 
	
		
			
				|  |  | -        $this->editData($info['id'],['xs_status'=>3,'update_time'=>time()],$info['order_no'],2,3,'xs',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | -        return true;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    //建立销售单 和出货单
 | 
	
		
			
				|  |  | -    public function xdlsAfterDetail($info,$typeclass,$classid){
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  | -       $time = time();
 | 
	
		
			
				|  |  | -       $token_140 = $this->getToken(130);
 | 
	
		
			
				|  |  | -       $list = [];
 | 
	
		
			
				|  |  | -       $fpdata = $info['fpdata'];
 | 
	
		
			
				|  |  | -       $fpdata_list = explode(';',trim( $fpdata,';'));
 | 
	
		
			
				|  |  | -       $whlabel_list = explode("|",trim($info['whlabel'],"|"));
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -       $total_goods_num = 0;//订单产品总数量
 | 
	
		
			
				|  |  | -       foreach($whlabel_list as $k=>$v){
 | 
	
		
			
				|  |  | -            $tmp_data = explode("-",trim($v,'-'));
 | 
	
		
			
				|  |  | -            if(isset($tmp_data[1])){
 | 
	
		
			
				|  |  | -                $total_goods_num += $tmp_data[1];
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -       $avg_price = floor(($info['skje']*1000)/$total_goods_num)/1000;
 | 
	
		
			
				|  |  | -       foreach($fpdata_list as $k=>$v){
 | 
	
		
			
				|  |  | -            $tmp_str = str_replace(array('-163-','-164-','-165-','-166-'),'-',$v);
 | 
	
		
			
				|  |  | -            $tmp_arr = explode('|',trim($tmp_str,'|'));
 | 
	
		
			
				|  |  | -            if(stripos($tmp_arr[0],',') !== false){
 | 
	
		
			
				|  |  | -                $ft = explode(',',$tmp_arr[0]);
 | 
	
		
			
				|  |  | -                $features = explode('-',trim($ft[1],'-'));
 | 
	
		
			
				|  |  | -                $features[] = $ft[0];
 | 
	
		
			
				|  |  | -            }else{
 | 
	
		
			
				|  |  | -                $features = explode('-',trim($tmp_arr[0],'-'));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            $sku = implode("-",$features);
 | 
	
		
			
				|  |  | -            $tmp_ret = $this->logic_u9tools->getOneU9bm($sku,$classid,$typeclass);
 | 
	
		
			
				|  |  | -            $list[] = [
 | 
	
		
			
				|  |  | -                'jm'=>$tmp_ret['jm'],
 | 
	
		
			
				|  |  | -                'bm'=>$tmp_ret['bm'],
 | 
	
		
			
				|  |  | -                'zh'=>$tmp_ret['zh'],
 | 
	
		
			
				|  |  | -                'final_price'=>$avg_price,//目前先不设置 等后期财务说了再说
 | 
	
		
			
				|  |  | -                'title'=>isset($tmp_arr[1])?$tmp_arr[1]:'无',
 | 
	
		
			
				|  |  | -                'dcsl'=>$tmp_arr[2],
 | 
	
		
			
				|  |  | -                'is_register'=>0,//商品是否被注册  先都当没注册  后面会先确认下
 | 
	
		
			
				|  |  | -            ];
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -       $shop = $this->shop->read($info['shop']);
 | 
	
		
			
				|  |  | -       if(empty($shop['yyid'])){
 | 
	
		
			
				|  |  | -            //如果没有在u9上设置店铺的组织 那么需要设置
 | 
	
		
			
				|  |  | -            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'',[],$this->logic_tools->ret_arr(-1,'店铺没有在u9平台设置参数'));
 | 
	
		
			
				|  |  | -            return ;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       $dc_params = [
 | 
	
		
			
				|  |  | -            'gys'=>$this->gys,//供应商
 | 
	
		
			
				|  |  | -            'number'=>$info['number'],//erp订单编码
 | 
	
		
			
				|  |  | -            "TransOutDocType_Code"=>"TransOut001",//组织间调拨
 | 
	
		
			
				|  |  | -            "time"=>$time,
 | 
	
		
			
				|  |  | -            'TransferDirection'=>0,//普通
 | 
	
		
			
				|  |  | -            'yyid'=>$shop['yyid'],//来源店铺  这种需要在店铺表中有
 | 
	
		
			
				|  |  | -            'shipremarks'=>$info['shipremarks'],//订单的备注
 | 
	
		
			
				|  |  | -            'dcckbm'=>$this->xdcp_code,//调出仓库编码
 | 
	
		
			
				|  |  | -            'drckbm'=>$this->xdxgls_code,//调入仓库编码
 | 
	
		
			
				|  |  | -            'drzz_code'=>$this->xdxgzzcode,//调入组织Code
 | 
	
		
			
				|  |  | -            'owner_code'=>$this->xdzzcode,//货主组织Code
 | 
	
		
			
				|  |  | -            'ztcode'=>$this->ztcode,//账套
 | 
	
		
			
				|  |  | -            'tb_org_arr'=>$this->tb_org_arr,//要同步的组织列表
 | 
	
		
			
				|  |  | -            'list'=>$list
 | 
	
		
			
				|  |  | -       ];
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       //创建许昌成品库的销售单
 | 
	
		
			
				|  |  | -       $xsd_res = $this->apiyyv1->xsdCreate($dc_params,$token_140);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       if(empty($xsd_res[0]['Data'][0]['m_code'])){
 | 
	
		
			
				|  |  | -             $this->editData($info['zq_u9_id'],['xs_two_status'=>-1,'update_time'=>time()],$info['number'],7,1,'xs_two',$xsd_res[1],$xsd_res[0]);
 | 
	
		
			
				|  |  | -             return ;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        //更新销售单数据
 | 
	
		
			
				|  |  | -        $xs_no = $xsd_res[0]['Data'][0]["m_code"];
 | 
	
		
			
				|  |  | -        $this->editData($info['zq_u9_id'],['xs_two_no'=>$xs_no,'xs_two_status'=>1,'update_time'=>time()],$info['number'],7,1,'xs_two',$xsd_res[1],$xsd_res[0]);
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -   
 | 
	
		
			
				|  |  | -    //检查u9编码是否存在  如果不存在 请先添加并
 | 
	
		
			
				|  |  | -    protected function checkLp($info,$token){
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        //未注册的货品的列表
 | 
	
		
			
				|  |  | -        $unregister_goods = [];
 | 
	
		
			
				|  |  | -        // $info['list'][1]['jm'] ="9A-#NB-STW-20-FP-5*5C-C-180%-ww2";
 | 
	
		
			
				|  |  | -        // $info['list'][1]['zh'] ="测试数据请删除2--".$info['list'][1]['zh'];
 | 
	
		
			
				|  |  | -        // $info['list'][0]['jm'] ="9A-#NB-STW-22-ww2";
 | 
	
		
			
				|  |  | -        // $info['list'][0]['zh'] ="测试数据请删除2--".$info['list'][0]['zh'];
 | 
	
		
			
				|  |  | -        $r = $this->apiyyv1->cxLp($info['list'],$token);
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  | -        if(!$r[0]['Success']){
 | 
	
		
			
				|  |  | -            return $this->logic_tools->ret_arr(-1,'查询商品信息异常'.json_encode($r,JSON_UNESCAPED_UNICODE));
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        foreach($r[0]['Data'] as $k=>$v)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            foreach($info['list'] as $kk => $vv){
 | 
	
		
			
				|  |  | -                if($v['m_code'] == $vv['jm']){
 | 
	
		
			
				|  |  | -                    $info['list'][$kk]['is_register'] = 1;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        foreach($info['list'] as $k => $v){
 | 
	
		
			
				|  |  | -            if($v['is_register'] == 0){
 | 
	
		
			
				|  |  | -                $unregister_goods[] = $v;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if(empty($unregister_goods)){
 | 
	
		
			
				|  |  | -            return $this->logic_tools->ret_arr(1,"料品无异常");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        $tb_info =  $info;
 | 
	
		
			
				|  |  | -        $tb_info['list'] = $unregister_goods;
 | 
	
		
			
				|  |  | -        return $this->tjLpAndTb($tb_info,$token);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    //添加料品并且下发
 | 
	
		
			
				|  |  | -    public function tjLpAndTb($tb_info,$token){
 | 
	
		
			
				|  |  | -        $r = $this->apiyyv1->cjLp($tb_info['list'],$token);
 | 
	
		
			
				|  |  | -        if($r[0]["Success"]){
 | 
	
		
			
				|  |  | -            $rr = $this->apiyyv1->tbLp($tb_info,$token);
 | 
	
		
			
				|  |  | -            if($rr[0]['Success']){
 | 
	
		
			
				|  |  | -                return $this->logic_tools->ret_arr(1,$rr);
 | 
	
		
			
				|  |  | -            }else{
 | 
	
		
			
				|  |  | -                return $this->logic_tools->ret_arr(-1,$rr);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }else{
 | 
	
		
			
				|  |  | -            return $this->logic_tools->ret_arr(-1,$r);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    //根据返回的状态修改对应的值
 | 
	
		
			
				|  |  | -    protected function editData($zq_u9_id,$z_qu_arr,$number,$one_type,$two_type,$apply_api,$apply_data,$ret_data){
 | 
	
		
			
				|  |  | -        $this->zzquque_u9->save($z_qu_arr,$zq_u9_id);
 | 
	
		
			
				|  |  | -        $this->zzququeu9_logs->insert([
 | 
	
		
			
				|  |  | -            'oid'=>$zq_u9_id,
 | 
	
		
			
				|  |  | -            'number'=>$number,
 | 
	
		
			
				|  |  | -            'one_type'=>$one_type,
 | 
	
		
			
				|  |  | -            'two_type'=>$two_type,
 | 
	
		
			
				|  |  | -            'apply_api'=>$apply_api,
 | 
	
		
			
				|  |  | -            'apply_data'=>json_encode($apply_data,JSON_UNESCAPED_UNICODE),
 | 
	
		
			
				|  |  | -            'ret_data'=>json_encode($ret_data,JSON_UNESCAPED_UNICODE),
 | 
	
		
			
				|  |  | -            'create_time'=>time(),
 | 
	
		
			
				|  |  | -            'read_time'=>date("Y-m-d H:i:s")
 | 
	
		
			
				|  |  | -        ]);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +<?php
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 此模型是为了支持从许昌销售公司调出库存到香港公司仓库的功能支持
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +class Model_logic_u9xg extends Lin_Model {
 | 
	
		
			
				|  |  | +    public $xdzzcode = '130';//许昌销售公司编码
 | 
	
		
			
				|  |  | +    public $xdcp_code = '13001';//许昌成品库的编码  测试的时候就用龙盈工厂的仓库
 | 
	
		
			
				|  |  | +    public $xdxgzzcode = '140';//香港组织公司编码
 | 
	
		
			
				|  |  | +    public $xdxgls_code = '14003';//香港临时库的编码   测试的时候用销售公司成品库的编码
 | 
	
		
			
				|  |  | +    public $ztcode = '9988';//账套的code;
 | 
	
		
			
				|  |  | +    public $tb_org_arr =[101,110,130,140];//同步组织
 | 
	
		
			
				|  |  | +    public $gys = "98002";//供应商  98001  龙盈  98002  龙熠
 | 
	
		
			
				|  |  | +    //切记要修改token_120的token真正的token!!!!
 | 
	
		
			
				|  |  | +    function __construct(){
 | 
	
		
			
				|  |  | +        parent::__construct();
 | 
	
		
			
				|  |  | +        $this->load->_model('Model_settingtest','settingtest');
 | 
	
		
			
				|  |  | +        $this->load->_model("Model_apiyyv1",'apiyyv1');
 | 
	
		
			
				|  |  | +        $this->load->_model('Model_classid','classid');
 | 
	
		
			
				|  |  | +        $this->load->_model('Model_typeclass','typeclass');
 | 
	
		
			
				|  |  | +        $this->load->_model('Model_shop','shop');
 | 
	
		
			
				|  |  | +        $this->load->_model('Model_zzquque_u9','zzquque_u9');
 | 
	
		
			
				|  |  | +        $this->load->_model('Model_zzququeu9_logs','zzququeu9_logs');
 | 
	
		
			
				|  |  | +        $this->load->_model('Model_logic_tools','logic_tools');
 | 
	
		
			
				|  |  | +        $this->load->_model('Model_logic_u9tools','logic_u9tools');
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    public function getToken($type){
 | 
	
		
			
				|  |  | +        $name = "get_yytoken_".$type;
 | 
	
		
			
				|  |  | +        $token = $this->settingtest->$name();
 | 
	
		
			
				|  |  | +        return $token;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //转码准备数据
 | 
	
		
			
				|  |  | +    public function transPrepare(){
 | 
	
		
			
				|  |  | +        $classid = $this->classid->sku();
 | 
	
		
			
				|  |  | +        $tcall = $this->typeclass->find_all();
 | 
	
		
			
				|  |  | +        foreach ($tcall as $v)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            $tcjm[$v['id']] = array($v['jm'],$v['classid']);
 | 
	
		
			
				|  |  | +            $typeclass[$v['id']] = array('zh'=>$v['zh'],'classid'=>$v['classid'],'bm'=>$v['bm'],'title'=>$v['title'],'jm'=>$v['jm']);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return [
 | 
	
		
			
				|  |  | +            'classid'=>$classid,
 | 
	
		
			
				|  |  | +            'typeclass'=>$typeclass,
 | 
	
		
			
				|  |  | +        ];
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //必须先建立许昌成品仓的销售单和调出单  香港仓的采购单  一次执行5单
 | 
	
		
			
				|  |  | +    //循环执行许昌成品仓的销售单 调出单和香港仓的采购单
 | 
	
		
			
				|  |  | +    public function  xdlsOneStep($list){
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +        $pre_data = $this->transPrepare();
 | 
	
		
			
				|  |  | +        foreach($list as $k=>$v){
 | 
	
		
			
				|  |  | +            $this->xdlsBeforeCreate($v,$pre_data['typeclass'],$pre_data['classid']);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //循环执行许昌仓的销售单 调出单和香港仓的采购单  提交  顺带的也执行审核
 | 
	
		
			
				|  |  | +    public function xdlsTwoStep($list){
 | 
	
		
			
				|  |  | +        foreach($list as $k=>$v){
 | 
	
		
			
				|  |  | +            $r1 = $this->dcSubAndCheck($v);
 | 
	
		
			
				|  |  | +            if(!$r1){
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            $r2 = $this->cgSubAndCheck($v);
 | 
	
		
			
				|  |  | +            if(!$r2){
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +           $this->xsSubAndCheck($v);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //查询调出单生成的调入单是否生成 如果生成了就审核 如果没生成 说明异常了 这种都是按步骤走的
 | 
	
		
			
				|  |  | +    public function xdlsThreeStep($list){
 | 
	
		
			
				|  |  | +        foreach($list as $k=>$v){
 | 
	
		
			
				|  |  | +            $r = $this->apiyyv1->drdcxBydcd($v['order_no'],$this->getToken(140));
 | 
	
		
			
				|  |  | +            //如果获取对应调入单没有成功 
 | 
	
		
			
				|  |  | +            if(empty($r[0]['Data'][0]['docno'])){
 | 
	
		
			
				|  |  | +                $this->editData($v['id'],['dr_status'=>-1,'update_time'=>time()],$v['order_no'],6,1,'dr',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(count($r[0]['Data'])>1){
 | 
	
		
			
				|  |  | +                foreach($r[0]['Data'] as $item){
 | 
	
		
			
				|  |  | +                    if($item['descflexfield_pubdescseg4'] == $v['order_no']){
 | 
	
		
			
				|  |  | +                        $dr_no = $item['docno'];
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                $dr_no = $r[0]['Data'][0]['docno'];
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            $this->editData($v['id'],['dr_no'=>$r[0]['Data'][0]['docno'],'dr_status'=>1,'update_time'=>time()],$v['order_no'],6,1,'dr',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            //提交调入单 
 | 
	
		
			
				|  |  | +            $rr = $this->apiyyv1->drdSubmit(['number'=>$dr_no],$this->getToken(140));
 | 
	
		
			
				|  |  | +            if(!$rr[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | +                $this->editData($v['id'],['dr_status'=>-2,'update_time'=>time()],$v['order_no'],6,2,'dr',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            $this->editData($v['id'],['dr_status'=>2,'update_time'=>time()],$v['order_no'],6,2,'dr',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //审核调入单
 | 
	
		
			
				|  |  | +            $rrr = $this->apiyyv1->drdApprove(['number'=>$dr_no],$this->getToken(140));
 | 
	
		
			
				|  |  | +            if(!$rrr[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | +                $this->editData($v['id'],['dr_status'=>-3,'update_time'=>time()],$v['order_no'],6,3,'dr',$rrr[1],$rrr[0]);
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            $this->editData($v['id'],['dr_status'=>3,'update_time'=>time()],$v['order_no'],6,3,'dr',$rrr[1],$rrr[0]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //建立香港的销售单 标准出库单有源的需要先审核
 | 
	
		
			
				|  |  | +    public function xdlsFourStep($list){
 | 
	
		
			
				|  |  | +        $pre_data = $this->transPrepare();
 | 
	
		
			
				|  |  | +        foreach($list as $k=>$v){
 | 
	
		
			
				|  |  | +            $this->xdlsAfterDetail($v,$pre_data['typeclass'],$pre_data['classid']);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //审核香港销售单 同时生成标准出库单 
 | 
	
		
			
				|  |  | +    public function xdlsFiveStep($list){
 | 
	
		
			
				|  |  | +        $xs_no_list = array_column($list,'xs_two_no');
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +        $r = $this->apiyyv1->xscsByordernos($xs_no_list,$this->getToken(140));
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +        if(empty($r[0]['Data'])){
 | 
	
		
			
				|  |  | +            return ;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $tmp_list = [];
 | 
	
		
			
				|  |  | +        foreach($r[0]['Data'] as $k=>$v){
 | 
	
		
			
				|  |  | +            $v['dcsl'] = $v['shipplanqtypu'];
 | 
	
		
			
				|  |  | +            $tmp_list[$v['docno']][] = $v;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $final_list = [];
 | 
	
		
			
				|  |  | +        foreach($tmp_list as $k=>$v){
 | 
	
		
			
				|  |  | +            foreach($list as $item){
 | 
	
		
			
				|  |  | +                if($item['xs_two_no']  == $k){
 | 
	
		
			
				|  |  | +                    $final_list[] = [
 | 
	
		
			
				|  |  | +                        'zq_u9_id'=>$item['id'],
 | 
	
		
			
				|  |  | +                        'drckbm'=>$this->xdxgls_code,
 | 
	
		
			
				|  |  | +                        'number'=>$item['order_no'],
 | 
	
		
			
				|  |  | +                        'xs_no'=>$k,
 | 
	
		
			
				|  |  | +                        'xs_no_two'=>$k,
 | 
	
		
			
				|  |  | +                        'list'=>$v
 | 
	
		
			
				|  |  | +                    ];
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        foreach($final_list as $info){
 | 
	
		
			
				|  |  | +            $bzch_res = $this->apiyyv1->bzchCreate($info,$this->getToken(140));
 | 
	
		
			
				|  |  | +            if(empty($bzch_res[0]['Data'][0]['m_code'])){
 | 
	
		
			
				|  |  | +                $this->editData($info['zq_u9_id'],['bzch_status'=>-1,'update_time'=>time()],$info['number'],4,1,'bzch',$bzch_res[1],$bzch_res[0]);
 | 
	
		
			
				|  |  | +                return ;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +           
 | 
	
		
			
				|  |  | +            //更新销售单数据
 | 
	
		
			
				|  |  | +            $bzch_no = $bzch_res[0]['Data'][0]["m_code"];
 | 
	
		
			
				|  |  | +            $this->editData($info['zq_u9_id'],['bzch_no'=>$bzch_no,'bzch_status'=>1,'update_time'=>time()],$info['number'],4,1,'bzch',$bzch_res[1],$bzch_res[0]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //审核香港标准出库单
 | 
	
		
			
				|  |  | +    public function xdlsSixStep($list){
 | 
	
		
			
				|  |  | +        foreach($list as $k =>$v){
 | 
	
		
			
				|  |  | +            $bzch_res = $this->apiyyv1->bzchSubmitAndApprove(['number'=>$v['bzch_no']],$this->getToken(140));
 | 
	
		
			
				|  |  | +            if(empty($bzch_res[0]['Data'][0]['m_code'])){
 | 
	
		
			
				|  |  | +                $this->editData($v['id'],['bzch_status'=>-1,'update_time'=>time()],$v['order_no'],4,3,'bzch',$bzch_res[1],$bzch_res[0]);
 | 
	
		
			
				|  |  | +                return ;
 | 
	
		
			
				|  |  | +           }
 | 
	
		
			
				|  |  | +           //更新销售单数据
 | 
	
		
			
				|  |  | +           $bzch_no = $bzch_res[0]['Data'][0]["m_code"];
 | 
	
		
			
				|  |  | +           $this->editData($v['id'],['bzch_no'=>$bzch_no,'bzch_status'=>1,'update_time'=>time()],$v['order_no'],4,3,'bzch',$bzch_res[1],$bzch_res[0]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //由于调出单生成可能不会申请后实时出现 需要差几分钟再去申请,避免这种错误
 | 
	
		
			
				|  |  | +    //从许昌成品库调出库存到香港临时仓
 | 
	
		
			
				|  |  | +    //创建 调出单 销售单 采购单
 | 
	
		
			
				|  |  | +    //必须先建立许昌成品仓的销售单和调出单  香港仓的采购单  因为u9生成需要时间  然后在进行 审核 
 | 
	
		
			
				|  |  | +    public function xdlsBeforeCreate($info,$typeclass,$classid){
 | 
	
		
			
				|  |  | +       $time = time();
 | 
	
		
			
				|  |  | +       $list = [];
 | 
	
		
			
				|  |  | +       $fpdata = $info['fpdata'];
 | 
	
		
			
				|  |  | +       $fpdata_list = explode(';',trim( $fpdata,';'));
 | 
	
		
			
				|  |  | +       $whlabel_list = explode("|",trim($info['whlabel'],"|"));
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +       $total_goods_num = 0;//订单产品总数量
 | 
	
		
			
				|  |  | +       foreach($whlabel_list as $k=>$v){
 | 
	
		
			
				|  |  | +            $tmp_data = explode("-",trim($v,'-'));
 | 
	
		
			
				|  |  | +            if(isset($tmp_data[1])){
 | 
	
		
			
				|  |  | +                $total_goods_num += $tmp_data[1];
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       $avg_price = floor(($info['skje']*1000)/$total_goods_num)/1000;
 | 
	
		
			
				|  |  | +       foreach($fpdata_list as $k=>$v){
 | 
	
		
			
				|  |  | +            $tmp_str = str_replace(array('-163-','-164-','-165-','-166-'),'-',$v);
 | 
	
		
			
				|  |  | +            $tmp_arr = explode('|',trim($tmp_str,'|'));
 | 
	
		
			
				|  |  | +            if(stripos($tmp_arr[0],',') !== false){
 | 
	
		
			
				|  |  | +                $ft = explode(',',$tmp_arr[0]);
 | 
	
		
			
				|  |  | +                $features = explode('-',trim($ft[1],'-'));
 | 
	
		
			
				|  |  | +                $features[] = $ft[0];
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                $features = explode('-',trim($tmp_arr[0],'-'));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            $sku = implode("-",$features);
 | 
	
		
			
				|  |  | +            $tmp_ret = $this->logic_u9tools->getOneU9bm($sku,$classid,$typeclass);
 | 
	
		
			
				|  |  | +            $list[] = [
 | 
	
		
			
				|  |  | +                'jm'=>$tmp_ret['jm'],
 | 
	
		
			
				|  |  | +                'bm'=>$tmp_ret['bm'],
 | 
	
		
			
				|  |  | +                'zh'=>$tmp_ret['zh'],
 | 
	
		
			
				|  |  | +                'final_price'=>$avg_price,//目前先不设置 等后期财务说了再说
 | 
	
		
			
				|  |  | +                'title'=>isset($tmp_arr[1])?$tmp_arr[1]:'无',
 | 
	
		
			
				|  |  | +                'dcsl'=>$tmp_arr[2],
 | 
	
		
			
				|  |  | +                'is_register'=>0,//商品是否被注册  先都当没注册  后面会先确认下
 | 
	
		
			
				|  |  | +            ];
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       $shop = $this->shop->read($info['shop']);
 | 
	
		
			
				|  |  | +       if(empty($shop['yyid'])){
 | 
	
		
			
				|  |  | +            //如果没有在u9上设置店铺的组织 那么需要设置
 | 
	
		
			
				|  |  | +            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'',[],$this->logic_tools->ret_arr(-1,'店铺没有在u9平台设置参数'));
 | 
	
		
			
				|  |  | +            return ;
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +       $dc_params = [
 | 
	
		
			
				|  |  | +            'gys'=>$this->gys,//供应商
 | 
	
		
			
				|  |  | +            'number'=>$info['number'],//erp订单编码
 | 
	
		
			
				|  |  | +            "TransOutDocType_Code"=>"TransOut001",//组织间调拨
 | 
	
		
			
				|  |  | +            "time"=>$time,
 | 
	
		
			
				|  |  | +            'TransferDirection'=>0,//普通
 | 
	
		
			
				|  |  | +            'yyid'=>$shop['yyid'],//来源店铺  这种需要在店铺表中有
 | 
	
		
			
				|  |  | +            'shipremarks'=>$info['shipremarks'],//订单的备注
 | 
	
		
			
				|  |  | +            'dcckbm'=>$this->xdcp_code,//调出仓库编码
 | 
	
		
			
				|  |  | +            'drckbm'=>$this->xdxgls_code,//调入仓库编码
 | 
	
		
			
				|  |  | +            'drzz_code'=>$this->xdxgzzcode,//调入组织Code
 | 
	
		
			
				|  |  | +            'owner_code'=>$this->xdzzcode,//货主组织Code
 | 
	
		
			
				|  |  | +            'ztcode'=>$this->ztcode,//账套
 | 
	
		
			
				|  |  | +            'tb_org_arr'=>$this->tb_org_arr,//要同步的组织列表
 | 
	
		
			
				|  |  | +            'list'=>$list
 | 
	
		
			
				|  |  | +       ];
 | 
	
		
			
				|  |  | +       //调出单检测是否存在
 | 
	
		
			
				|  |  | +       $cxdcd_r = $this->apiyyv1->xcDcdByOtherId($dc_params['number'],$this->getToken(130));
 | 
	
		
			
				|  |  | +    //    $ret_data = $cxdcd_r[0]['Data'];
 | 
	
		
			
				|  |  | +    //    if(isset($ret_data[0])){
 | 
	
		
			
				|  |  | +    //         $descflexfield_pubdescseg4 = $ret_data[0]['descflexfield_pubdescseg4'];
 | 
	
		
			
				|  |  | +    //         if($dc_params['number'] == $descflexfield_pubdescseg4){
 | 
	
		
			
				|  |  | +    //             return ;
 | 
	
		
			
				|  |  | +    //         }
 | 
	
		
			
				|  |  | +    //    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +       //检测料品是否在u9被添加
 | 
	
		
			
				|  |  | +       $r = $this->checkLp($dc_params,$this->getToken(130));
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +       if($r['code'] !=1){
 | 
	
		
			
				|  |  | +            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'lpck',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +            return ;
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +       //创建调出单
 | 
	
		
			
				|  |  | +       $dcd_res = $this->apiyyv1->dcdCrate($dc_params,$this->getToken(130));
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +       if(empty($dcd_res[0]['Data'][0]["Code"])){
 | 
	
		
			
				|  |  | +            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'dc',$dcd_res[1],$dcd_res[0]);
 | 
	
		
			
				|  |  | +            return ;
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +        //更新
 | 
	
		
			
				|  |  | +       $dcd_no =  $dcd_res[0]['Data'][0]["Code"];
 | 
	
		
			
				|  |  | +       $this->editData($info['zq_u9_id'],['dc_no'=>$dcd_no,'dc_status'=>1,'update_time'=>time()],$info['number'],1,1,'dc',$dcd_res[1],$dcd_res[0]);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //创建许昌成品库的销售单
 | 
	
		
			
				|  |  | +        $xsd_res = $this->apiyyv1->xsdCreate($dc_params,$this->getToken(130));
 | 
	
		
			
				|  |  | +        if(empty($xsd_res[0]['Data'][0]['m_code'])){
 | 
	
		
			
				|  |  | +            $this->editData($info['zq_u9_id'],['xs_status'=>-1,'update_time'=>time()],$info['number'],2,1,'xs',$xsd_res[1],$xsd_res[0]);
 | 
	
		
			
				|  |  | +            return ;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //更新销售单数据
 | 
	
		
			
				|  |  | +       $xs_no = $xsd_res[0]['Data'][0]["m_code"];
 | 
	
		
			
				|  |  | +       $this->editData($info['zq_u9_id'],['xs_no'=>$xs_no,'xs_status'=>1,'update_time'=>time()],$info['number'],2,1,'xs',$xsd_res[1],$xsd_res[0]);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //创建香港公司的采购单
 | 
	
		
			
				|  |  | +        $cgd_res = $this->apiyyv1->cgdCreate($dc_params,$this->getToken(140));
 | 
	
		
			
				|  |  | +        if(empty($cgd_res[0]['Data'][0]["Code"])){
 | 
	
		
			
				|  |  | +            $this->editData($info['zq_u9_id'],['cg_status'=>-1,'update_time'=>time()],$info['number'],3,1,'cg',$cgd_res[1],$cgd_res[0]);
 | 
	
		
			
				|  |  | +            return ;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $this->editData($info['zq_u9_id'],['cg_no'=>$xs_no,'cg_status'=>1,'update_time'=>time()],$info['number'],3,1,'cg',$cgd_res[1],$cgd_res[0]);
 | 
	
		
			
				|  |  | +        return ;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    // 提交审核调出单调出单 
 | 
	
		
			
				|  |  | +    public function dcSubAndCheck($info){
 | 
	
		
			
				|  |  | +        $r = $this->apiyyv1->dcdSubmit([
 | 
	
		
			
				|  |  | +            'number'=>$info['dc_no']
 | 
	
		
			
				|  |  | +        ],$this->getToken(130));
 | 
	
		
			
				|  |  | +        if(!$r[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | +            $this->editData($info['id'],['dc_status'=>-2,'update_time'=>time()],$info['order_no'],1,2,'dc',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //更新调出单
 | 
	
		
			
				|  |  | +        $this->editData($info['id'],['dc_status'=>2,'update_time'=>time()],$info['order_no'],1,2,'dc',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +        $rr = $this->apiyyv1->dcdApprove([
 | 
	
		
			
				|  |  | +            'number'=>$info['dc_no']
 | 
	
		
			
				|  |  | +        ],$this->getToken(130));
 | 
	
		
			
				|  |  | +        if(!$rr[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | +            $this->editData($info['id'],['dc_status'=>-3,'update_time'=>time()],$info['order_no'],1,3,'dc',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $this->editData($info['id'],['dc_status'=>3,'update_time'=>time()],$info['order_no'],1,3,'dc',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //提交审核采购单
 | 
	
		
			
				|  |  | +    public function cgSubAndCheck($info){
 | 
	
		
			
				|  |  | +        $r = $this->apiyyv1->cgdSubmit([
 | 
	
		
			
				|  |  | +            'number'=>$info['cg_no']
 | 
	
		
			
				|  |  | +        ],$this->getToken(140));
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +        if(!$r[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | +            $this->editData($info['id'],['cg_status'=>-2,'update_time'=>time()],$info['order_no'],3,2,'cg',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //更新采购单
 | 
	
		
			
				|  |  | +        $this->editData($info['id'],['cg_status'=>2,'update_time'=>time()],$info['order_no'],3,2,'cg',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +        $rr = $this->apiyyv1->cgdApprove([
 | 
	
		
			
				|  |  | +            'number'=>$info['cg_no']
 | 
	
		
			
				|  |  | +        ],$this->getToken(140));    
 | 
	
		
			
				|  |  | +        if(!$rr[0]['Data'][0]['IsSucess']){
 | 
	
		
			
				|  |  | +            $this->editData($info['id'],['cg_status'=>-3,'update_time'=>time()],$info['order_no'],3,3,'cg',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }   
 | 
	
		
			
				|  |  | +        $this->editData($info['id'],['cg_status'=>3,'update_time'=>time()],$info['order_no'],3,3,'cg',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //提交审核销售单
 | 
	
		
			
				|  |  | +    public function xsSubAndCheck($info){
 | 
	
		
			
				|  |  | +        $r = $this->apiyyv1->xsdSubmit([
 | 
	
		
			
				|  |  | +            'number'=>$info['xs_no']
 | 
	
		
			
				|  |  | +        ],$this->getToken(130));
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +        if(!$r[0]['Data'][0]['m_isSucess']){
 | 
	
		
			
				|  |  | +            $this->editData($info['id'],['xs_status'=>-2,'update_time'=>time()],$info['order_no'],2,2,'xs',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $this->editData($info['id'],['xs_status'=>2,'update_time'=>time()],$info['order_no'],2,2,'xs',$r[1],$r[0]);
 | 
	
		
			
				|  |  | +        $rr = $this->apiyyv1->xsdApprove([
 | 
	
		
			
				|  |  | +            'number'=>$info['xs_no']
 | 
	
		
			
				|  |  | +        ],$this->getToken(130));
 | 
	
		
			
				|  |  | +        if(!$rr[0]['Data'][0]['m_isSucess']){
 | 
	
		
			
				|  |  | +            $this->editData($info['id'],['xs_status'=>-3,'update_time'=>time()],$info['order_no'],2,3,'xs',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }   
 | 
	
		
			
				|  |  | +        $this->editData($info['id'],['xs_status'=>3,'update_time'=>time()],$info['order_no'],2,3,'xs',$rr[1],$rr[0]);
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //建立销售单 和出货单
 | 
	
		
			
				|  |  | +    public function xdlsAfterDetail($info,$typeclass,$classid){
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +       $time = time();
 | 
	
		
			
				|  |  | +       $list = [];
 | 
	
		
			
				|  |  | +       $fpdata = $info['fpdata'];
 | 
	
		
			
				|  |  | +       $fpdata_list = explode(';',trim( $fpdata,';'));
 | 
	
		
			
				|  |  | +       $whlabel_list = explode("|",trim($info['whlabel'],"|"));
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +       $total_goods_num = 0;//订单产品总数量
 | 
	
		
			
				|  |  | +       foreach($whlabel_list as $k=>$v){
 | 
	
		
			
				|  |  | +            $tmp_data = explode("-",trim($v,'-'));
 | 
	
		
			
				|  |  | +            if(isset($tmp_data[1])){
 | 
	
		
			
				|  |  | +                $total_goods_num += $tmp_data[1];
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       $avg_price = floor(($info['skje']*1000)/$total_goods_num)/1000;
 | 
	
		
			
				|  |  | +       foreach($fpdata_list as $k=>$v){
 | 
	
		
			
				|  |  | +            $tmp_str = str_replace(array('-163-','-164-','-165-','-166-'),'-',$v);
 | 
	
		
			
				|  |  | +            $tmp_arr = explode('|',trim($tmp_str,'|'));
 | 
	
		
			
				|  |  | +            if(stripos($tmp_arr[0],',') !== false){
 | 
	
		
			
				|  |  | +                $ft = explode(',',$tmp_arr[0]);
 | 
	
		
			
				|  |  | +                $features = explode('-',trim($ft[1],'-'));
 | 
	
		
			
				|  |  | +                $features[] = $ft[0];
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                $features = explode('-',trim($tmp_arr[0],'-'));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            $sku = implode("-",$features);
 | 
	
		
			
				|  |  | +            $tmp_ret = $this->logic_u9tools->getOneU9bm($sku,$classid,$typeclass);
 | 
	
		
			
				|  |  | +            $list[] = [
 | 
	
		
			
				|  |  | +                'jm'=>$tmp_ret['jm'],
 | 
	
		
			
				|  |  | +                'bm'=>$tmp_ret['bm'],
 | 
	
		
			
				|  |  | +                'zh'=>$tmp_ret['zh'],
 | 
	
		
			
				|  |  | +                'final_price'=>$avg_price,//目前先不设置 等后期财务说了再说
 | 
	
		
			
				|  |  | +                'title'=>isset($tmp_arr[1])?$tmp_arr[1]:'无',
 | 
	
		
			
				|  |  | +                'dcsl'=>$tmp_arr[2],
 | 
	
		
			
				|  |  | +                'is_register'=>0,//商品是否被注册  先都当没注册  后面会先确认下
 | 
	
		
			
				|  |  | +            ];
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       $shop = $this->shop->read($info['shop']);
 | 
	
		
			
				|  |  | +       if(empty($shop['yyid'])){
 | 
	
		
			
				|  |  | +            //如果没有在u9上设置店铺的组织 那么需要设置
 | 
	
		
			
				|  |  | +            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'',[],$this->logic_tools->ret_arr(-1,'店铺没有在u9平台设置参数'));
 | 
	
		
			
				|  |  | +            return ;
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +       $dc_params = [
 | 
	
		
			
				|  |  | +            'gys'=>$this->gys,//供应商
 | 
	
		
			
				|  |  | +            'number'=>$info['number'],//erp订单编码
 | 
	
		
			
				|  |  | +            "TransOutDocType_Code"=>"TransOut001",//组织间调拨
 | 
	
		
			
				|  |  | +            "time"=>$time,
 | 
	
		
			
				|  |  | +            'TransferDirection'=>0,//普通
 | 
	
		
			
				|  |  | +            'yyid'=>$shop['yyid'],//来源店铺  这种需要在店铺表中有
 | 
	
		
			
				|  |  | +            'shipremarks'=>$info['shipremarks'],//订单的备注
 | 
	
		
			
				|  |  | +            'dcckbm'=>$this->xdcp_code,//调出仓库编码
 | 
	
		
			
				|  |  | +            'drckbm'=>$this->xdxgls_code,//调入仓库编码
 | 
	
		
			
				|  |  | +            'drzz_code'=>$this->xdxgzzcode,//调入组织Code
 | 
	
		
			
				|  |  | +            'owner_code'=>$this->xdzzcode,//货主组织Code
 | 
	
		
			
				|  |  | +            'ztcode'=>$this->ztcode,//账套
 | 
	
		
			
				|  |  | +            'tb_org_arr'=>$this->tb_org_arr,//要同步的组织列表
 | 
	
		
			
				|  |  | +            'list'=>$list
 | 
	
		
			
				|  |  | +       ];
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +       //创建许昌成品库的销售单
 | 
	
		
			
				|  |  | +       $xsd_res = $this->apiyyv1->xsdCreate($dc_params,$this->getToken(140));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +       if(empty($xsd_res[0]['Data'][0]['m_code'])){
 | 
	
		
			
				|  |  | +             $this->editData($info['zq_u9_id'],['xs_two_status'=>-1,'update_time'=>time()],$info['number'],7,1,'xs_two',$xsd_res[1],$xsd_res[0]);
 | 
	
		
			
				|  |  | +             return ;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //更新销售单数据
 | 
	
		
			
				|  |  | +        $xs_no = $xsd_res[0]['Data'][0]["m_code"];
 | 
	
		
			
				|  |  | +        $this->editData($info['zq_u9_id'],['xs_two_no'=>$xs_no,'xs_two_status'=>1,'update_time'=>time()],$info['number'],7,1,'xs_two',$xsd_res[1],$xsd_res[0]);
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  | +    //检查u9编码是否存在  如果不存在 请先添加并
 | 
	
		
			
				|  |  | +    protected function checkLp($info,$token){
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        //未注册的货品的列表
 | 
	
		
			
				|  |  | +        $unregister_goods = [];
 | 
	
		
			
				|  |  | +        // $info['list'][1]['jm'] ="9A-#NB-STW-20-FP-5*5C-C-180%-ww2";
 | 
	
		
			
				|  |  | +        // $info['list'][1]['zh'] ="测试数据请删除2--".$info['list'][1]['zh'];
 | 
	
		
			
				|  |  | +        // $info['list'][0]['jm'] ="9A-#NB-STW-22-ww2";
 | 
	
		
			
				|  |  | +        // $info['list'][0]['zh'] ="测试数据请删除2--".$info['list'][0]['zh'];
 | 
	
		
			
				|  |  | +        $r = $this->apiyyv1->cxLp($info['list'],$token);
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +        if(!$r[0]['Success']){
 | 
	
		
			
				|  |  | +            return $this->logic_tools->ret_arr(-1,'查询商品信息异常'.json_encode($r,JSON_UNESCAPED_UNICODE));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        foreach($r[0]['Data'] as $k=>$v)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            foreach($info['list'] as $kk => $vv){
 | 
	
		
			
				|  |  | +                if($v['m_code'] == $vv['jm']){
 | 
	
		
			
				|  |  | +                    $info['list'][$kk]['is_register'] = 1;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        foreach($info['list'] as $k => $v){
 | 
	
		
			
				|  |  | +            if($v['is_register'] == 0){
 | 
	
		
			
				|  |  | +                $unregister_goods[] = $v;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(empty($unregister_goods)){
 | 
	
		
			
				|  |  | +            return $this->logic_tools->ret_arr(1,"料品无异常");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $tb_info =  $info;
 | 
	
		
			
				|  |  | +        $tb_info['list'] = $unregister_goods;
 | 
	
		
			
				|  |  | +        return $this->tjLpAndTb($tb_info,$token);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //添加料品并且下发
 | 
	
		
			
				|  |  | +    public function tjLpAndTb($tb_info,$token){
 | 
	
		
			
				|  |  | +        $r = $this->apiyyv1->cjLp($tb_info['list'],$token);
 | 
	
		
			
				|  |  | +        if($r[0]["Success"]){
 | 
	
		
			
				|  |  | +            $rr = $this->apiyyv1->tbLp($tb_info,$token);
 | 
	
		
			
				|  |  | +            if($rr[0]['Success']){
 | 
	
		
			
				|  |  | +                return $this->logic_tools->ret_arr(1,$rr);
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                return $this->logic_tools->ret_arr(-1,$rr);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            return $this->logic_tools->ret_arr(-1,$r);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //根据返回的状态修改对应的值
 | 
	
		
			
				|  |  | +    protected function editData($zq_u9_id,$z_qu_arr,$number,$one_type,$two_type,$apply_api,$apply_data,$ret_data){
 | 
	
		
			
				|  |  | +        $this->zzquque_u9->save($z_qu_arr,$zq_u9_id);
 | 
	
		
			
				|  |  | +        $this->zzququeu9_logs->insert([
 | 
	
		
			
				|  |  | +            'oid'=>$zq_u9_id,
 | 
	
		
			
				|  |  | +            'number'=>$number,
 | 
	
		
			
				|  |  | +            'one_type'=>$one_type,
 | 
	
		
			
				|  |  | +            'two_type'=>$two_type,
 | 
	
		
			
				|  |  | +            'apply_api'=>$apply_api,
 | 
	
		
			
				|  |  | +            'apply_data'=>json_encode($apply_data,JSON_UNESCAPED_UNICODE),
 | 
	
		
			
				|  |  | +            'ret_data'=>json_encode($ret_data,JSON_UNESCAPED_UNICODE),
 | 
	
		
			
				|  |  | +            'create_time'=>time(),
 | 
	
		
			
				|  |  | +            'read_time'=>date("Y-m-d H:i:s")
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |