Browse Source

提交昨晚修改

longyi 5 tháng trước cách đây
mục cha
commit
969321a6a8

+ 30 - 15
core/CoreApp/controllers/Queueu9.php

@@ -75,26 +75,39 @@ class Queueu9 extends Start_Controller {
 
      //执行小单的流转到临时仓的队列  
     public function _xdls(){
-        die;
+        //die;
+        echo "<pre>";
         //第一步生成 许昌成品库的调出单
-        $list =  $this->zzquque_u9->find_all("type = 10 and dc_status = 0 and cg_status = 0 and xs_status = 0 ",'*','id asc',0,5);
-        $do_list = [];
-        foreach($list as $k=>$v){
-            $tmp_info = $this->logic_order->getInfoByPlat($v['platform'],$v['order_no']);
-            $tmp_info['zq_u9_id'] = $v['id'];
-            $do_list[] = $tmp_info;
-        }
-        $this->logic_u9xg->xdlsOneStep($do_list);
-        sleep(3);
+        // $list =  $this->zzquque_u9->find_all("type = 10 and dc_status = 0 and cg_status = 0 and xs_status = 0 ",'*','id asc',0,1);
+        // $do_list = [];
+        // foreach($list as $k=>$v){
+        //     $tmp_info = $this->logic_order->getInfoByPlat($v['platform'],$v['order_no']);
+        //     $tmp_info['zq_u9_id'] = $v['id'];
+        //     $do_list[] = $tmp_info;
+        // }
+        
+        // $this->logic_u9xg->xdlsOneStep($do_list);
+        
+
         //新加一步  查询修改调出单的审核结果
-        $list = $this->zzquque_u9->find_all("type = 10 and dc_status = 1 and cg_status = 0 and xs_status = 0 ",'*','id asc',0,5);
+        $list = $this->zzquque_u9->find_all("type = 10 and dc_status = 1 and cg_status = 0 and xs_status = 0 ",'*','id asc',0,8);
         $this->logic_u9xg->xdlsOneExtraStep($list);
-
         
-        //第二步 提交审核第一步的采购单和销售单
-        $list =  $this->zzquque_u9->find_all("type = 10 and dc_status = 3 and cg_status = 1 and xs_status = 1  ");
-      
+        //var_dump($list);
+        //第二步 创建的采购单和销售单
+        $list =  $this->zzquque_u9->find_all("type = 10 and dc_status = 3 and dc_data_status = 1 and cg_status = 0 and xs_status = 0  ");
+        // var_dump($list);
+        // die;
+        //var_dump($list);
         $this->logic_u9xg->xdlsTwoStep($list);
+        //审核销售单和采购单
+        $list = $this->zzquque_u9->find_all("type = 10 and dc_status = 3 and dc_data_status = 1 and cg_status = 1 and xs_status = 1");
+        //var_dump($list);
+        $this->logic_u9xg->xdlsTwoExtraStep($list);
+        
+        sleep(3);
+        
+        
         //第三步  查询调出单生成的调入单是否生成 如果生成了就审核 如果没生成 说明异常了 这种都是按步骤走的
         $list =  $this->zzquque_u9->find_all("type = 10  and dc_status = 3 and cg_status = 3 and xs_status = 3 and  dr_status = 0");
         $this->logic_u9xg->xdlsThreeStep($list);
@@ -105,8 +118,10 @@ class Queueu9 extends Start_Controller {
             $tmp_info = $this->logic_order->getInfoByPlat($v['platform'],$v['order_no']);
             $tmp_info['zq_u9_id'] = $v['id'];
             $tmp_info['dc_no'] = $v['dc_no'];
+            $tmp_info['dc_data'] = $v['dc_data'];
             $do_list[] = $tmp_info;
         }
+       
         $this->logic_u9xg->xdlsFourStep($do_list);
 
 

+ 16 - 9
core/CoreApp/controllers/Zzququeu9.php

@@ -7,6 +7,7 @@ class Zzququeu9 extends Start_Controller {
         $this->load->_model('Model_zzquque_u9','zzquque_u9');
         $this->load->_model("Model_logic_order","logic_order");
         $this->load->_model("Model_logic_u9xgsd","logic_u9xgsd");
+        $this->load->_model('Model_zzququeu9_logs','zzququeu9_logs');
     }
     public function _remap($arg,$arg_array)
     {
@@ -88,13 +89,19 @@ class Zzququeu9 extends Start_Controller {
                     }elseif($v['dc_status'] == 1){
                          $dc_no = "<span data-action='dc' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交调出单</span>";
                     }elseif($v['dc_status'] == -1){
-                         $dc_no = "<span data-action='dc' data-process='1' data-id='".$v['id']."' onclick='doAction(this)'>创建调出单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $error = $this->zzququeu9_logs->find_all("oid = ".$v['id']." and one_type = 1 and two_type = 1 ","*",'id desc',0,1);
+                         if($error[0]['apply_api']=='cjlp'){
+                             $tmp_str = "料品同步失败";
+                         }else{
+                             $tmp_str = "创建调出单失败";
+                         }
+                         $dc_no = "<span data-action='dc' data-process='1' data-id='".$v['id']."' onclick='doAction(this)'>创建调出单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="'.$tmp_str.'"></i><p>';
                     }elseif($v['dc_status'] == 2){
                          $dc_no = "<span data-action='dc' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核调出单</span>";
                     }elseif($v['dc_status'] == -2){
-                         $dc_no = "<span data-action='dc' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交调出单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $dc_no = "<span data-action='dc' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交调出单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="提交调出单失败"></i><p>';
                     }elseif($v['dc_status'] == -3){
-                         $dc_no = "<span data-action='dc' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核调出单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $dc_no = "<span data-action='dc' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核调出单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="审核调出单失败"></i><p>';
                     }
                     if(!empty($v['dc_no'])){
                          $dc_no = $v['dc_no']."<br/>".$dc_no;
@@ -105,13 +112,13 @@ class Zzququeu9 extends Start_Controller {
                     }elseif($v['cg_status'] == 1){
                          $cg_no .= "<span data-action='cg' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交采购单</span>";
                     }elseif($v['cg_status'] == -1){
-                         $cg_no .= "<span data-action='cg' data-process='1' data-id='".$v['id']."' onclick='doAction(this)'>创建采购单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $cg_no .= "<span data-action='cg' data-process='1' data-id='".$v['id']."' onclick='doAction(this)'>创建采购单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="采购单创建失败"></i><p>';
                     }elseif($v['cg_status'] == 2){
                          $cg_no .= "<span data-action='cg' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核采购单</span>";
                     }elseif($v['cg_status'] == -2){
-                         $cg_no .= "<span data-action='cg' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交采购单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $cg_no .= "<span data-action='cg' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交采购单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="采购单提交失败"></i><p>';
                     }elseif($v['cg_status'] == -3){
-                         $cg_no .= "<span data-action='cg' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核采购单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $cg_no .= "<span data-action='cg' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核采购单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="采购单审核失败"></i><p>';
                     }
                     if(!empty($v['cg_no'])){
                          $cg_no = $v['cg_no']."<br/>".$cg_no;
@@ -122,13 +129,13 @@ class Zzququeu9 extends Start_Controller {
                     }elseif($v['xs_status'] == 1){
                          $xs_no .= "<span data-action='xs' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交销售单</span>";
                     }elseif($v['xs_status'] == -1){
-                         $xs_no .= "<span data-action='xs' data-process='1' data-id='".$v['id']."' onclick='doAction(this)'>创建销售单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $xs_no .= "<span data-action='xs' data-process='1' data-id='".$v['id']."' onclick='doAction(this)'>创建销售单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="销售单创建失败"></i><p>';
                     }elseif($v['xs_status'] == 2){
                          $xs_no .= "<span data-action='xs' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核销售单</span>";
                     }elseif($v['xs_status'] == -2){
-                         $xs_no .= "<span data-action='xs' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交销售单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $xs_no .= "<span data-action='xs' data-process='2' data-id='".$v['id']."' onclick='doAction(this)'>提交销售单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="销售单提交失败"></i><p>';
                     }elseif($v['xs_status'] == -3){
-                         $xs_no .= "<span data-action='xs' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核销售单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="123"></i><p>';
+                         $xs_no .= "<span data-action='xs' data-process='3' data-id='".$v['id']."' onclick='doAction(this)'>审核销售单</span>".'<p style="color:blue"><i  class="method fa fa-exclamation-circle" data-t="销售单审核失败"></i><p>';
                     }
                     if(!empty($v['xs_no'])){
                          $xs_no = $v['xs_no']."<br/>".$xs_no;

+ 76 - 3
core/CoreApp/models/Model_apiyyv1.php

@@ -69,6 +69,19 @@ class Model_apiyyv1 extends Lin_Model
 		$res = $this->sendReq($url,$header,json_encode($list));
 		return array($res,$list);
 	}
+	/**
+	 * 生成u9的销售单
+	 * 只是财务记录 不牵扯到库存
+	 */
+	public function xsdTwoCreate($params,$token){
+		$list = $this->xsdTwoDataTrans($params);
+		$url = '/U9C/webapi/SO/Create';
+		$url = $this->base_url.$url;
+		$header[] = "Content-Type: application/json";
+        $header[] = "Token: ".$token;
+		$res = $this->sendReq($url,$header,json_encode($list));
+		return array($res,$list);
+	}
 	/**
 	 * 销售单提交
 	 */
@@ -329,7 +342,8 @@ class Model_apiyyv1 extends Lin_Model
 	}
 	//由于逻辑修改造成 需要查询调出单是审核完毕
 	public function xdlsCxDcd($dcd_no,$token){
-		$list["SqlString"] = "select a.DocNo,a.Status,b.ItemInfo_ItemCode,b.CostUOMQty,b.CostPrice from  InvDoc_TransferOut as a left join InvDoc_TransOutLine as b on a.id = b.TransferOut where a.Status = 2 and a.DocNo = '".$dcd_no."'";
+		$list["SqlString"] = "select a.DocNo,a.Status,a.DescFlexField_PubDescSeg2,a.DescFlexField_PubDescSeg4,a.DescFlexField_PubDescSeg5,b.ItemInfo_ItemCode,b.CostUOMQty,b.CostPrice,b.ItemInfo_ItemName from  InvDoc_TransferOut as a left join InvDoc_TransOutLine as b on a.id = b.TransferOut where a.Status = 2 and a.DocNo = '".$dcd_no."'";
+		//$list["SqlString"] = "select a.*,b.* from  InvDoc_TransferOut as a left join InvDoc_TransOutLine as b on a.id = b.TransferOut where a.Status = 2 and a.DocNo = '".$dcd_no."'";
 		$url = '/U9C/webapi/QueryCommon/QueryInfoBySql';
 		$url = $this->base_url.$url;
 		$header[] = "Content-Type: application/json";
@@ -404,6 +418,65 @@ class Model_apiyyv1 extends Lin_Model
 	}
 	//销售单的数据转化
 	public function xsdDataTrans($params){
+		$so_lines = [];
+		foreach($params['list'] as $k=>$v){
+			
+			$so_lines[] = [
+				'TU'=>"条",//销售单位编码
+				'ItemCode'=>$v['jm'],//用友的编码
+				'PU'=>'条',//计价单位编码
+				"ShipTogetherFlag"=>-1,//成套收发货标志
+				'DocLineNo'=>$k+1,
+				'CustomerItemNo'=>'',//客户料号
+				'CustomerItemName'=>'',//客户品名 
+				'FinallyPriceTC'=>$v['final_price'],//最终价  单价
+				'PubDescSeg10'=>'',
+				'SOShiplineDTOList'=>[  //销售订单计划行
+					[
+						'IsMRPRequire',  //MRP需求
+						'DemandType',//需求分类
+						'RequireDate'=>date('m/d/Y H:i:s',$params['time']),
+					]
+				],
+				'RecTerm'=>'',//目前找不到了
+				'FreeType'=>($v['final_price'] < 0.01)?0: -1,//免费品类型 (无默认值请传-1;赠品请传0;备损品请传1)   徐凯设定的是  如果钱小于0.01  那么就传0 其他的传递-1
+				'UsableQtyOfInv'=>0,//文档中未查询到
+				'PubDescSeg3'=>'',
+				'PubDescSeg4'=>'',
+				'PriceList'=>'',//价表编码 (该属性可为空,且无默认值)
+				'TaxMoneyTC'=>0,//税额 (该属性可为空,且无默认值)
+				'TaxSchedule'=>'YZ05',//税组合编码 (该属性可为空,且无默认值)  不知道这个是啥 徐凯的老代码是这么写的
+				'DescFlexField'=>[
+					'PubDescSeg3'=>'',
+				],
+				'OrderByQtyTU'=>$v['dcsl'],//销售数量 (该属性可为空,且无默认值)
+				'OrderByQtyPU'=>$v['dcsl'],//计价数量 (该属性可为空,且无默认值)
+				'OrderPriceTC'=>'',//定价 (该属性可为空,且无默认值)
+				'Memo'=>'',//备注
+			];
+		}
+		$data = [];
+		$data[] = [
+			"OrderBy"=>$params['yyid'],//用友的商户的id
+			"OtherID"=>$params['number'],//第三方传入ID
+			"SaleDepartment"=>"",//部门编码  可为空
+			"DocumentType"=>"SO1",//单据类型编码  标准销售单  So1是默认值
+			"DocNo"=>'',//单据类型编码
+			"AC"=>"C001",//人民币
+			"TC"=>"C001",//人民币
+			"ShipToSite"=>"",//收货位置编码
+			"PubDescSeg2"=>"",
+			"SOSrcType"=>0,
+			"Seller"=>"",//业务员编码  可为空
+			"ConfirmTerm"=>"",//但是现有文档没有
+			"Memo"=>$params['number'],//备注
+			"ShipRule"=>"",//但是现有文档没有
+			"SOLineDTOList"=>$so_lines,
+		];
+		return $data;
+	}
+	
+	public function xsdTwoDataTrans($params){
 		$so_lines = [];
 		foreach($params['list'] as $k=>$v){
 			
@@ -489,8 +562,8 @@ class Model_apiyyv1 extends Lin_Model
 			'OtherID'=>$params['number'],
 			'DescFlexField'=>(object)[
 			],
-			'TC'=>'C009',
-			'AC'=>'C009',
+			'TC'=>'C001',
+			'AC'=>'C001',
 			"Memo"=>$params['number'],
 			'Supplier'=>[
 				'Code'=>$params['gys'],//供应商编码  到时间找下

+ 550 - 0
core/CoreApp/models/Model_logic_u9xg - 副本.php

@@ -0,0 +1,550 @@
+<?php
+/**
+ * 此模型是为了支持从许昌销售公司调出库存到香港公司仓库的功能支持
+ */
+class Model_logic_u9xg extends Lin_Model {
+    public $xdzzcode = '130';//许昌销售公司编码
+    public $xdcp_code = '13001';//许昌成品库的编码  测试的时候就用龙盈工厂的仓库
+    public $xdxgzzcode = '140';//香港组织公司编码
+    public $xdxgls_code = '14003';//香港临时库的编码   测试的时候用销售公司成品库的编码
+    public $ztcode = '001';//账套的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 xdlsOneExtraStep($list){
+        foreach($list as $k=>$v){
+            $this->xdlsCxDcd($v);
+        }
+    }
+    //循环执行许昌仓的销售单 调出单和香港仓的采购单  提交  顺带的也执行审核
+    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['dc_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;
+            }
+            $dr_no = $r[0]['Data'][0]["docno"];
+           
+            $this->editData($v['id'],['dr_no'=>$dr_no,'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'],
+                        'order_no'=>$item['order_no'],
+                        'xs_no'=>$k,
+                        'xs_two_no'=>$k,
+                        'list'=>$v
+                    ];
+                }
+            }
+        }
+        foreach($final_list as $info){
+            $this->xdlsFiveStepAfter($info);
+        }
+       
+        
+    }
+
+    public function xdlsFiveStepAfter($info){
+        //先审核 然后在执行
+        $r = $this->xsSubAndCheck140($info);
+        if(!$r){
+            return ;
+        }
+        $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'=>-3,'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'=>3,'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(140));
+       
+      if($r['code'] !=1){
+            $this->editData($info['zq_u9_id'],['dc_status'=>-1,'update_time'=>time()],$info['number'],1,1,'lpck',[],$r['msg']);
+            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'=>$cgd_res[0]['Data'][0]["Code"],'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 xsSubAndCheck140($info){
+        $r = $this->apiyyv1->xsdSubmit([
+            'number'=>$info['xs_two_no']
+        ],$this->getToken(140));
+    
+        if(!$r[0]['Data'][0]['m_isSucess']){
+            $this->editData($info['zq_u9_id'],['xs_two_status'=>-2,'update_time'=>time()],$info['order_no'],2,2,'xs',$r[1],$r[0]);
+            return false;
+        }
+        $this->editData($info['zq_u9_id'],['xs_two_status'=>2,'update_time'=>time()],$info['order_no'],2,2,'xs',$r[1],$r[0]);
+        $rr = $this->apiyyv1->xsdApprove([
+            'number'=>$info['xs_two_no']
+        ],$this->getToken(140));
+        if(!$rr[0]['Data'][0]['m_isSucess']){
+            $this->editData($info['zq_u9_id'],['xs_two_status'=>-3,'update_time'=>time()],$info['order_no'],2,3,'xs',$rr[1],$rr[0]);
+            return false;
+        }   
+        $this->editData($info['zq_u9_id'],['xs_two_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'],['xs_two_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->tbXgLp($tb_info,$token);
+        return $this->tbXgLp($tb_info);
+    }
+    //将许昌仓的料品同步到香港仓
+    public function tbXgLp($tb_info){
+       
+        $rr = $this->apiyyv1->tbLp($tb_info,$this->getToken(130));
+        
+        if($rr[0]['Success']){
+            return $this->logic_tools->ret_arr(1,$rr);
+        }else{
+            return $this->logic_tools->ret_arr(-1,$rr);
+        }
+    }
+    //添加料品并且下发
+    // public function tjLpAndTb($tb_info,$token){
+    //     $r = $this->apiyyv1->cjLp($tb_info,$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")
+        ]);
+    }
+
+    public function xdlsCxDcd($info){
+        $r = $this->apiyyv1->xdlsCxDcd($info['dc_no'],$this->getToken(130));
+        if(empty($r[0]['Data'])){
+            return ;
+        }
+        //更新销售单数据
+        $xs_no = json_encode($r[0]['Data']);
+        $this->editData($info['id'],['dc_data'=>$xs_no,'dc_data_status'=>1,'dc_status'=>3,'update_time'=>time()],$info['order_no'],8,1,'dc_xc',$r[1],$r[0]);
+    }
+}

+ 85 - 44
core/CoreApp/models/Model_logic_u9xg.php

@@ -60,11 +60,12 @@ class Model_logic_u9xg extends Lin_Model {
     //循环执行许昌仓的销售单 调出单和香港仓的采购单  提交  顺带的也执行审核
     public function xdlsTwoStep($list){
         foreach($list as $k=>$v){
-            $r1 = $this->dcSubAndCheck($v);
-            if(!$r1){
-                continue;
-            }
-            
+           $this->xsAddXsAndCg($v);
+        }
+    }
+    //循环执行许昌仓的销售单 香港仓的采购单  提交  顺带的也执行审核
+    public function xdlsTwoExtraStep($list){
+        foreach($list as $k=>$v){    
             $r2 = $this->cgSubAndCheck($v);
             if(!$r2){
                 continue;
@@ -295,6 +296,62 @@ class Model_logic_u9xg extends Lin_Model {
     //     $this->editData($info['zq_u9_id'],['cg_no'=>$cgd_res[0]['Data'][0]["Code"],'cg_status'=>1,'update_time'=>time()],$info['number'],3,1,'cg',$cgd_res[1],$cgd_res[0]);
         return ;
     }
+    public function xsAddXsAndCg($info){
+        if(empty($info['dc_data'])){
+            return ;
+        }
+        $tmp_list = json_decode($info['dc_data'],true);
+        if(empty($tmp_list)){
+            return ;
+        }
+        $time = time();
+        $list = [];
+        foreach($tmp_list as $k=>$v){
+            $list[] = [
+                'jm'=>$v['iteminfo_itemcode'],
+                'zh'=>$v['iteminfo_itemname'],
+                'final_price'=>$v['costprice'],//目前先不设置 等后期财务说了再说
+                'dcsl'=>$v['costuomqty'],
+                'is_register'=>0,//商品是否被注册  先都当没注册  后面会先确认下
+            ];
+            
+        } 
+        $dc_params = [
+            'gys'=>$this->gys,//供应商
+            'number'=>$info['order_no'],//erp订单编码
+            "TransOutDocType_Code"=>"TransOut001",//组织间调拨
+            "time"=>$time,
+            'TransferDirection'=>0,//普通
+            'yyid'=>$tmp_list[0]['descflexfield_pubdescseg2'],//来源店铺  这种需要在店铺表中有
+            'shipremarks'=>$tmp_list[0]['descflexfield_pubdescseg5'],//订单的备注
+            '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(130));
+        if(empty($xsd_res[0]['Data'][0]['m_code'])){
+            $this->editData($info['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['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['id'],['cg_status'=>-1,'update_time'=>time()],$info['number'],3,1,'cg',$cgd_res[1],$cgd_res[0]);
+            return ;
+        }
+
+        $this->editData($info['id'],['cg_no'=>$cgd_res[0]['Data'][0]["Code"],'cg_status'=>1,'update_time'=>time()],$info['number'],3,1,'cg',$cgd_res[1],$cgd_res[0]);
+        return;
+    }
     
     // 提交审核调出单调出单 
     public function dcSubAndCheck($info){
@@ -387,47 +444,31 @@ class Model_logic_u9xg extends Lin_Model {
     public function xdlsAfterDetail($info,$typeclass,$classid){
        
        $time = time();
-       $list = [];
-       $fpdata = $info['fpdata'];
-       $fpdata_list = explode(';',trim( $fpdata,';'));
-       $whlabel_list = explode("|",trim($info['whlabel'],"|"));
-    
+        if(empty($info['dc_data'])){
+            return ;
+        }
+        $tmp_list = json_decode($info['dc_data'],true);
+        if(empty($tmp_list)){
+            return ;
+        }
        $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];
-            }
+       foreach($tmp_list as $k=>$v){
+           $total_goods_num += $v['costuomqty'];
        }
-       $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);
+       
+       $avg_price = floor(($info['shouldmoney']*1000)/$total_goods_num)/1000;
+       $list = [];
+       foreach($tmp_list as $k=>$v){
             $list[] = [
-                'jm'=>$tmp_ret['jm'],
-                'bm'=>$tmp_ret['bm'],
-                'zh'=>$tmp_ret['zh'],
+                'jm'=>$v['iteminfo_itemcode'],
+                'zh'=>$v['iteminfo_itemname'],
                 'final_price'=>$avg_price,//目前先不设置 等后期财务说了再说
-                'title'=>isset($tmp_arr[1])?$tmp_arr[1]:'无',
-                'dcsl'=>$tmp_arr[2],
+                'dcsl'=>$v['costuomqty'],
                 'is_register'=>0,//商品是否被注册  先都当没注册  后面会先确认下
             ];
-       }
-       $shop = $this->shop->read($info['shop']);
-       if(empty($shop['yyid'])){
-            //如果没有在u9上设置店铺的组织 那么需要设置
-            $this->editData($info['zq_u9_id'],['xs_two_status'=>-1,'update_time'=>time()],$info['number'],1,1,'',[],$this->logic_tools->ret_arr(-1,'店铺没有在u9平台设置参数'));
-            return ;
-       }
+            
+       } 
+       
 
        $dc_params = [
             'gys'=>$this->gys,//供应商
@@ -435,8 +476,8 @@ class Model_logic_u9xg extends Lin_Model {
             "TransOutDocType_Code"=>"TransOut001",//组织间调拨
             "time"=>$time,
             'TransferDirection'=>0,//普通
-            'yyid'=>$shop['yyid'],//来源店铺  这种需要在店铺表中有
-            'shipremarks'=>$info['shipremarks'],//订单的备注
+            'yyid'=>$tmp_list[0]['descflexfield_pubdescseg2'],//来源店铺  这种需要在店铺表中有
+            'shipremarks'=>$tmp_list[0]['descflexfield_pubdescseg5'],//订单的备注
             'dcckbm'=>$this->xdcp_code,//调出仓库编码
             'drckbm'=>$this->xdxgls_code,//调入仓库编码
             'drzz_code'=>$this->xdxgzzcode,//调入组织Code
@@ -448,8 +489,8 @@ class Model_logic_u9xg extends Lin_Model {
       
 
        //创建香港仓的销售单
-       $xsd_res = $this->apiyyv1->xsdCreate($dc_params,$this->getToken(140));
-
+       $xsd_res = $this->apiyyv1->xsdTwoCreate($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 ;

+ 243 - 214
template/erp/zzququeu9.html

@@ -1,215 +1,244 @@
-{Template header}
-<script src="{$theme}js/system.js"></script>
-<script type="text/javascript" src="{$theme}js/layer/layer.js"></script>
-<style>
-    .layui-layer-page .layui-layer-content {
-        overflow: none;
-    }
-    
-    .layui-layer-content ul {
-        padding: 0 8px;
-    }
-    
-    .layui-layer-content ul li {
-        margin: 8px 0;
-    }
-    
-    #layui-layer1 {
-        overflow: auto;
-    }
-    
-    .layui-form-checked {
-        margin-left: 10px;
-        display: inline-block;
-    }
-    .shou_btn{
-        width: 70px;
-        height: 30px;
-        line-height: 30px;
-        background: #2ca8a1;
-        text-align: center;
-        color: #fff;
-        border-radius: 5px;
-        display: inline-block;
-        margin-left: 20px;
-        cursor: pointer;
-    }
-</style>
-
-<body>
-    <div class="warp">
-        <div class="fixed">
-            <ul class="search">
-                <li>
-                    <li>编号:<input value="" name="order_no" type="text"></li>
-                    <li>出库时间<input id="timetk" value="{date('Y-m-d',time()-29*24*3600)} 0:00" name="timetk" type="text" onClick="laydate({istime: true,format:'YYYY-MM-DD hh:mm'})"> 至&nbsp;&nbsp;&nbsp;&nbsp; <input id="timetj" value="{date('Y-m-d',time()+24*3600)} 0:00"
-                            name="timetj" type="text" onClick="laydate({istime: true,format:'YYYY-MM-DD hh:mm'})"></li>
-                    <li>
-                        状态:
-                        <select name="status" style="width:150px;" class="select">
-                                <option value="">请选择</option>
-                                <option value="1">调出单(许昌销售)异常</option>
-                                <option value="2">采购单(香港公司)异常</option>
-                                <option value="3">销售单(许昌销售)异常</option>
-                                <option value="4">调入单(香港公司)异常</option>
-                                <option value="5">销售单(香港销售)异常</option>
-                                <option value="6">标准出货单(香港销售)异常</option>
-                                
-                        </select>
-                    </li>
-                    <li><span>确 定</span></li>
-            </ul>
-            <div class="control">
-    
-                <a href="javascript:void(0);" class="btn btn-success" onclick="addData()">添 加</a>
-                
-                <!-- <a href="javascript:void(0);" style="font-size: 15px;" class="check">删 除</a>
-                <a href="javascript:void(0);" style="font-size: 15px;background-color: #f39c12;" onclick="excelexport()">按条件导出</a> -->
-                </div>
-            
-            <table class="datatitle data" border="0" style="border-collapse:collapse;">
-                <tr>
-                    <td><label onClick=""><input name="checkbox" type="checkbox" class="regular-checkbox"></label></td>
-                    <td>编号</td>
-                    <td>类型</td>
-                    <td>调出单(许昌销售)</td>
-                    <td>采购单(香港公司)</td>
-                    <td>销售单(许昌销售)</td>
-                    <td>调入单(香港公司)</td>
-                    <td>销售单(香港公司)</td>
-                    <td>标准出货单(香港公司)</td>
-                    <!-- <td>标准收货单</td> -->
-                    <td>添加时间</td>
-                    <td>最后更新时间</td>
-                </tr>
-            </table>
-        </div>
-        <table class="datatext data" border="0" style="border-collapse:collapse;">
-        </table>
-        <div class="lbwlxq"></div>
-        <div class="bomf"></div>
-    </div>
-    <div class="ts"><p class="tsn"></p></div>
-    <div class="systemwindow">
-    <div>
-    <p></p>
-    <p><font class="button">确 定</font><font class="esc">取 消</font></p>
-    </div>
-    </div>
-    
-    <script>
-       
-        customon = 1;
-        var dataurl = "/zzququeu9";
-        function custom() {
-            $(".data tr").each(function() {
-                $(this).find('td:eq(0)').css("width", "1%");
-                $(this).find('td:eq(1)').css("width", "8%");
-                $(this).find('td:eq(2)').css("width", "8%");
-                $(this).find('td:eq(3)').css("width", "8%");
-                $(this).find('td:eq(4)').css("width", "8%");
-                $(this).find('td:eq(5)').css("width", "8%");
-                $(this).find('td:eq(6)').css("width", "8%");
-                $(this).find('td:eq(7)').css("width", "8%");
-                $(this).find('td:eq(8)').css("width", "8%");
-                $(this).find('td:eq(9)').css("width", "8%");
-                $(this).find('td:eq(10)').css("width", "8%");
-                // $(this).find('td:eq(11)').css("width", "8%");
-            });
-        }
-
-        function doAction(that){
-            let action = $(that).data('action')
-            let process = $(that).data('process')
-            let id = $(that).data('id')
-            layx.load('loadId','提交中,请稍后',{shadable:0.6});
-            $.ajax({
-                url:"/zzququeu9/"+action+"/"+process+"/"+id,
-                data:{},
-                type:"post",
-                dataType:"json",
-                success:function(a){
-                    layx.destroy('loadId');
-                    if (a && a.success) {
-                        $(".systemwindow div p:eq(0)").html(a.msg);
-                        $(".systemwindow div p:eq(1)").html("<font  onclick='doCheck()'>确 定</font>");
-                        $(".systemwindow").show();
-                    }else{
-                        $(".systemwindow div p:eq(0)").text(a.msg);
-                        $(".systemwindow div p:eq(1)").html("<p><font onclick='doCheck()'>确 定</font></p>");
-                        $(".systemwindow").show();
-                    }
-                }
-            })
-        }
-
-
-    //记录重发单的信息
-    function addData(){
-        layx.html('no-icon', '<span style="font-size:18px;padding-left:10px">录入订单编码</span>', layx.multiLine(function() {
-            /*
-            <style type="text/css">
-                p{
-                        padding:10px;
-                }
-                .order_no {width:98%;margin:0px;height:90px}
-            </style>
-            <p><textarea class='order_no' name="order_no" style="border: 1px solid #000" placeholder="请输入要执行订单编码" ></textarea></p>
-            */
-        }), {
-            minMenu: false,
-            closeMenu: false,
-            movable: false,
-            shadable: true,
-            width: 300,
-            height: 50,
-            statusBar: true,
-            buttons: [
-                {
-                    label: '取消',
-                    callback: function(id, button, event) {
-                        layx.destroy(id);
-                    },
-                    style: 'color:#000;font-size:16px;'
-                },
-                {
-                    label: '提交',
-                    callback: function(id, button, event) {
-                        let order_no = $(".order_no").val()
-                        layx.destroy(id);
-                        
-                        layx.load('loadId','提交中,请稍后',{shadable:0.6});
-                        $.post("/zzququeu9/add",{
-                            order_no:order_no
-                        },function(a){
-                            layx.destroy('loadId');
-                            if (a && a.success) {
-                                $(".systemwindow div p:eq(0)").html(a.msg);
-                                $(".systemwindow div p:eq(1)").html("<font  onclick='doCheck()'>确 定</font>");
-                                $(".systemwindow").show();
-                            }else{
-                                $(".systemwindow div p:eq(0)").text(a.msg);
-                                $(".systemwindow div p:eq(1)").html("<p><font onclick='doCheck()'>确 定</font></p>");
-                                $(".systemwindow").show();
-                            }
-                        },'json')
-                        
-                    },
-                    style: 'color:#000;font-size:16px;'
-                }
-            ]
-        });
-    }
-
-    function doCheck(){
-        $(".systemwindow").hide();
-        setTimeout('searchspan(2)', 500);
-    }
-
-        
-    </script>
-    <script type="text/javascript" src="{$theme}js/laydate.js"></script>
-    <script type="text/javascript" src="{$theme}js/print.js?v=202007160001"></script>
-
-
+{Template header}
+<script src="{$theme}js/system.js"></script>
+<script type="text/javascript" src="{$theme}js/layer/layer.js"></script>
+<style>
+    .layui-layer-page .layui-layer-content {
+        overflow: none;
+    }
+    
+    .layui-layer-content ul {
+        padding: 0 8px;
+    }
+    
+    .layui-layer-content ul li {
+        margin: 8px 0;
+    }
+    
+    #layui-layer1 {
+        overflow: auto;
+    }
+    
+    .layui-form-checked {
+        margin-left: 10px;
+        display: inline-block;
+    }
+    .shou_btn{
+        width: 70px;
+        height: 30px;
+        line-height: 30px;
+        background: #2ca8a1;
+        text-align: center;
+        color: #fff;
+        border-radius: 5px;
+        display: inline-block;
+        margin-left: 20px;
+        cursor: pointer;
+    }
+</style>
+
+<body>
+    <div class="warp">
+        <div class="fixed">
+            <ul class="search">
+                <li>
+                    <li>编号:<input value="" name="order_no" type="text"></li>
+                    <li>出库时间<input id="timetk" value="{date('Y-m-d',time()-29*24*3600)} 0:00" name="timetk" type="text" onClick="laydate({istime: true,format:'YYYY-MM-DD hh:mm'})"> 至&nbsp;&nbsp;&nbsp;&nbsp; <input id="timetj" value="{date('Y-m-d',time()+24*3600)} 0:00"
+                            name="timetj" type="text" onClick="laydate({istime: true,format:'YYYY-MM-DD hh:mm'})"></li>
+                    <li>
+                        状态:
+                        <select name="status" style="width:150px;" class="select">
+                                <option value="">请选择</option>
+                                <option value="1">调出单(许昌销售)异常</option>
+                                <option value="2">采购单(香港公司)异常</option>
+                                <option value="3">销售单(许昌销售)异常</option>
+                                <option value="4">调入单(香港公司)异常</option>
+                                <option value="5">销售单(香港销售)异常</option>
+                                <option value="6">标准出货单(香港销售)异常</option>
+                                
+                        </select>
+                    </li>
+                    <li><span>确 定</span></li>
+            </ul>
+            <div class="control">
+    
+                <a href="javascript:void(0);" class="btn btn-success" onclick="addData()">添 加</a>
+                
+                <!-- <a href="javascript:void(0);" style="font-size: 15px;" class="check">删 除</a>
+                <a href="javascript:void(0);" style="font-size: 15px;background-color: #f39c12;" onclick="excelexport()">按条件导出</a> -->
+                </div>
+            
+            <table class="datatitle data" border="0" style="border-collapse:collapse;">
+                <tr>
+                    <td><label onClick=""><input name="checkbox" type="checkbox" class="regular-checkbox"></label></td>
+                    <td>编号</td>
+                    <td>类型</td>
+                    <td>调出单(许昌销售)</td>
+                    <td>采购单(香港公司)</td>
+                    <td>销售单(许昌销售)</td>
+                    <td>调入单(香港公司)</td>
+                    <td>销售单(香港公司)</td>
+                    <td>标准出货单(香港公司)</td>
+                    <!-- <td>标准收货单</td> -->
+                    <td>添加时间</td>
+                    <td>最后更新时间</td>
+                </tr>
+            </table>
+        </div>
+        <table class="datatext data" border="0" style="border-collapse:collapse;">
+        </table>
+        <div class="lbwlxq"></div>
+        <div class="bomf"></div>
+    </div>
+    <div class="ts"><p class="tsn"></p></div>
+    <div class="systemwindow">
+    <div>
+    <p></p>
+    <p><font class="button">确 定</font><font class="esc">取 消</font></p>
+    </div>
+    </div>
+    
+    
+    <div class="lbwlxq"></div>
+    <div class="bomf"></div>
+
+    
+    <script>
+       
+        customon = 1;
+        var dataurl = "/zzququeu9";
+        function custom() {
+            $(".data tr").each(function() {
+                $(this).find('td:eq(0)').css("width", "1%");
+                $(this).find('td:eq(1)').css("width", "8%");
+                $(this).find('td:eq(2)').css("width", "8%");
+                $(this).find('td:eq(3)').css("width", "8%");
+                $(this).find('td:eq(4)').css("width", "8%");
+                $(this).find('td:eq(5)').css("width", "8%");
+                $(this).find('td:eq(6)').css("width", "8%");
+                $(this).find('td:eq(7)').css("width", "8%");
+                $(this).find('td:eq(8)').css("width", "8%");
+                $(this).find('td:eq(9)').css("width", "8%");
+                $(this).find('td:eq(10)').css("width", "8%");
+                // $(this).find('td:eq(11)').css("width", "8%");
+            });
+        }
+
+        function doAction(that){
+            let action = $(that).data('action')
+            let process = $(that).data('process')
+            let id = $(that).data('id')
+            layx.load('loadId','提交中,请稍后',{shadable:0.6});
+            $.ajax({
+                url:"/zzququeu9/"+action+"/"+process+"/"+id,
+                data:{},
+                type:"post",
+                dataType:"json",
+                success:function(a){
+                    layx.destroy('loadId');
+                    if (a && a.success) {
+                        $(".systemwindow div p:eq(0)").html(a.msg);
+                        $(".systemwindow div p:eq(1)").html("<font  onclick='doCheck()'>确 定</font>");
+                        $(".systemwindow").show();
+                    }else{
+                        $(".systemwindow div p:eq(0)").text(a.msg);
+                        $(".systemwindow div p:eq(1)").html("<p><font onclick='doCheck()'>确 定</font></p>");
+                        $(".systemwindow").show();
+                    }
+                }
+            })
+        }
+
+
+    //记录重发单的信息
+    function addData(){
+        layx.html('no-icon', '<span style="font-size:18px;padding-left:10px">录入订单编码</span>', layx.multiLine(function() {
+            /*
+            <style type="text/css">
+                p{
+                        padding:10px;
+                }
+                .order_no {width:98%;margin:0px;height:90px}
+            </style>
+            <p><textarea class='order_no' name="order_no" style="border: 1px solid #000" placeholder="请输入要执行订单编码" ></textarea></p>
+            */
+        }), {
+            minMenu: false,
+            closeMenu: false,
+            movable: false,
+            shadable: true,
+            width: 300,
+            height: 50,
+            statusBar: true,
+            buttons: [
+                {
+                    label: '取消',
+                    callback: function(id, button, event) {
+                        layx.destroy(id);
+                    },
+                    style: 'color:#000;font-size:16px;'
+                },
+                {
+                    label: '提交',
+                    callback: function(id, button, event) {
+                        let order_no = $(".order_no").val()
+                        layx.destroy(id);
+                        
+                        layx.load('loadId','提交中,请稍后',{shadable:0.6});
+                        $.post("/zzququeu9/add",{
+                            order_no:order_no
+                        },function(a){
+                            layx.destroy('loadId');
+                            if (a && a.success) {
+                                $(".systemwindow div p:eq(0)").html(a.msg);
+                                $(".systemwindow div p:eq(1)").html("<font  onclick='doCheck()'>确 定</font>");
+                                $(".systemwindow").show();
+                            }else{
+                                $(".systemwindow div p:eq(0)").text(a.msg);
+                                $(".systemwindow div p:eq(1)").html("<p><font onclick='doCheck()'>确 定</font></p>");
+                                $(".systemwindow").show();
+                            }
+                        },'json')
+                        
+                    },
+                    style: 'color:#000;font-size:16px;'
+                }
+            ]
+        });
+    }
+
+    function doCheck(){
+        $(".systemwindow").hide();
+        setTimeout('searchspan(2)', 500);
+    }
+    
+    $(".datatext").on('mouseover mouseout',".method",function(event) {
+        if (event.type === "mouseover") {
+         $(this).parent().parent("td").append('<font style="position: absolute;z-index: 1;border-radius:3px;border: 1px solid #39F;padding:0 10px;background-color: #FFF;box-shadow: rgba(0, 0, 0, 0.3) 1px 1px 24px;">'+$(this).data("t")+'</font>');
+        }else if(event.type == "mouseout"){
+         $(this).parent().siblings("font").remove();
+        }
+    });
+    $(".data").on('mouseover',".lbwlxx",function() {
+        var offset = $(this).offset();
+        ///得到位置
+        var left1 = offset.left + 20;
+        ///得到位置
+        var top1 = offset.top + 20;
+        $(".lbwlxq").css({'top': top1, 'left': left1});
+        $(".lbwlxx").mouseover(function(){
+            $(".lbwlxq").html($(this).find('font').html());
+            $(".lbwlxq").show();
+        });
+        $(".data").on('mouseout',".lbwlxx",function() {
+            $(".lbwlxq").html("");
+            $(".lbwlxq").hide();
+        });
+    });
+
+        
+    </script>
+    <script type="text/javascript" src="{$theme}js/laydate.js"></script>
+    <script type="text/javascript" src="{$theme}js/print.js?v=202007160001"></script>
+
+
     {Template footer}