Browse Source

提交数据

lvhao 15 hours ago
parent
commit
01572b9b2c

+ 2 - 2
core/CoreApp/controllers/Transfer.php

@@ -615,9 +615,9 @@ class Transfer extends Start_Controller {
 				$this->db->trans_begin();
 				$post['xbqnum'] = $xbqnum;
 				$kh = $this->shop->read($y['shop']);
-				//$this->logic_ding->sendToDing("小布表打印异常".json_encode($post));
+
 				$yy = $this->apiyy->_peihuo($post,$kh['yyid'],$y['number'],$post['xbqnum']);
-				$this->logic_ding->sendToDing("小布表打印异常".json_encode($yy)."|".json_encode($y['number']));
+				//$this->logic_ding->sendToDing("小布表打印异常".json_encode($yy)."|".json_encode($y['number']));
 			    if($yy['c'] == 0)
 			    {
 					$post['scapi'] = '99';

+ 226 - 1
core/CoreApp/models/Model_apiyyv1.php

@@ -70,6 +70,18 @@ class Model_apiyyv1 extends Lin_Model
 		$res = $this->sendReq($url,$header,json_encode($list));
 		return array($res,$list);
 	}
+	/**
+	 * 销售单状态查询 看看是否是审核状态
+	 */
+	public function xsdCxByNo($xcd_no,$token){
+		$list["SqlString"] = $list['SqlString'] = "select a.DocNo,a.Status,b.DocLineNo,c.DocSubLineNo,c.ShipPlanQtyPU,c.ItemInfo_ItemCode from SM_SO as a left join SM_SOLine as b on a.id = b.SO left join SM_SOShipline as c on c.SOLine = b.id where a.DocNo =  '".$xcd_no."'   order by a.CreatedOn desc ";;
+		$url = '/U9C/webapi/QueryCommon/QueryInfoBySql';
+		$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);
+	}
 	/**
 	 * 生成u9的销售单
 	 * 只是财务记录 不牵扯到库存
@@ -128,7 +140,7 @@ class Model_apiyyv1 extends Lin_Model
 		$res = $this->sendReq($url,$header,json_encode($list));
 		return array($res,$list);
 	}
-
+	//销售单按照多单号查询
 	public function xscsByordernos($xs_no_list,$token){
 		$str = '';
 		foreach($xs_no_list as $k=>$v){
@@ -266,8 +278,48 @@ class Model_apiyyv1 extends Lin_Model
 	 * 这个也是有源的是采购单  不过估计用不上   先不写
 	 */
 	public function bzshCreate($params,$token){
+		
+	}
 
+	/**
+	 * 生成成品入库单
+	 */
+	public function cprkCreate($params,$token){
+		$list = $this->cprkDataTrans($params);
+		$url = '/U9C/webapi/RcvRptDoc/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);
+	}
+	/**
+	 * 成品入库单提交
+	 */
+	public function cprkApprove($params,$token){
+		$url = '/U9C/webapi/RcvRptDoc/Approve';
+		$url = $this->base_url.$url;
+		$header[] = "Content-Type: application/json";
+        $header[] = "Token: ".$token;
+		$res = $this->sendReq($url,$header,json_encode($params));
+		return array($res,$params);
 	}
+	/**
+	 * 成品入库查询
+	 */
+	public function cprkCx($params,$token){
+		$url = '/U9C/webapi/RcvRptDoc/Query';
+		$url = $this->base_url.$url;
+		$header[] = "Content-Type: application/json";
+        $header[] = "Token: ".$token;
+		$res = $this->sendReq($url,$header,json_encode($params));
+		return array($res,$params);
+	}
+
+	/**
+	 * 成品入库单审核
+	 */
+
 	//根据erp的单号查询调出单是够存在
 	public function xcDcdByOtherId($dcd_no,$token){
 		$list["SqlString"] = "select DescFlexField_PubDescSeg4,DocNo from InvDoc_TransferOut  where  DescFlexField_PubDescSeg4 =  '".$dcd_no."'";
@@ -690,4 +742,177 @@ class Model_apiyyv1 extends Lin_Model
 		return $list;
 	}
 	
+	public function cprkDataTrans($params){
+		$list = [];
+		foreach($params['list'] as $k=>$v){
+			$tmp = [
+				"MOKey"=>[
+					"OtherID"=>"",
+					"ID"=>0,
+					"DocNo"=>$params['rkcode'],//需要填写入库 rkcode  传递
+					"OrgID"=>0,
+					"IsSuccess"=>1,
+					"ErrorInfo"=>"",
+					"CUD"=>0,
+				],
+				"Wh"=>[
+					"Code"=>$params['rev_wh_code'],//存储地点信息    传递
+				],
+				"LineNum"=>$k,//行号
+				"StorageType"=>4,//
+				"Grade"=>0,//等级
+				"Element"=>0,
+				"CompleteQty"=>$v['sl'],//申报数量(生产单位)
+				"CompleteQtyByWhUOM"=>$v['sl'],//申报数量(库存单位)
+				"CompleteQtyByCostUOM"=>$v['sl'],//申报数量(成本单位) 
+				"CUD"=>0,
+				"OwnerOrg"=>[
+					"Code"=>$params['org_code'],//货主组织编码
+				],
+				"OutputType"=>0,//产出类型 
+				"Item"=>[
+					"Code"=>$v['jm'],//编码  其实是用友的料号
+				],
+				"ScrapQty"=>0,//报废数量
+				"ScrapQtyByCostUOM"=>0,//报废数量(成本单位)
+				"PUToPBURate"=>0,//生产主-生产副
+				"CUToCBURate"=>0,//成本主-成本副
+				"PBUToCBURate"=>0,//生产-成本
+				"SourceRcvRptLine"=>[   //来源入库单行
+					"RcvRptDocDTO"=>[	//入库单DTO
+						"ID"=>0,	//唯一标示
+						"DocType"=>[	//单据类型
+							'Code'=>0,
+						],
+						"BusinessDate"=>'',//业务日期
+						"DocNo"=>"",//单号
+						"SourceDoc"=>[	//来源单据
+							"MOSrcDocType"=>0,//来源单据类型
+							"SrcDocOrg"=>0,//
+							"SrcDoc"=>[	//来源单据
+								"ID"=>$params['rkid'], //单据ID  徐凯传递的是$data['rkid']
+								"EntityType"=>'UFIDA.U9.MO.MO.MO',//单据类型
+							],
+							"SrcDocVer"=>'',//单据版本
+							"SrcDocLine"=>[
+								"ID"=>0,
+								"EntityType"=>'',
+							],
+							"SrcDocSubline"=>[
+								"ID"=>0,
+								"EntityType"=>'',
+							],
+							"SrcDocNo"=>$params['rkid'],//单据号  徐凯传递了$data['rkid']
+							"SrcDocLineNo"=>'',//行号
+							"SrcDocSublineNo"=>10+$k,
+							"SrcDocID"=>$params['rkid'],//来源单据ID  徐凯传递了$data['rkid']
+							"SrcDocLineID"=>0,
+							"SrcDocType"=>'',
+							
+						],
+						"DocDate"=>date("Y-m-d",time()),
+						"RcvOrg"=>[	//入库组织
+							"Code"=>$params['rec_code'],//入库组织编码  需填写
+						],
+						"Org"=>[
+							"Code"=>$params['org_code'],//组织编码  需填写
+						],
+						"Direction"=>0,
+						"DocState"=>0,
+						"RcvDep"=>[
+							"ID"=>0,
+							"Code"=>'',
+							"Name"=>''
+						],
+						"RcvPerson"=>[
+							"ID"=>0,
+							"Code"=>'',
+							"Name"=>''
+						],
+						"OtherID"=>"",
+					],
+					"ProductUOM"=>[
+						"Code"=>'条',
+					],
+					"ProductBaseUOM"=>[
+						"Code"=>'条',
+					],
+					"StoreUOM"=>[
+						"Code"=>'条',
+					],
+					"StoreBaseUOM"=>[
+						"Code"=>'条',
+					],
+					"CoUOM"=>[
+						"Code"=>'条',
+					],
+					"CostBaseUOM"=>[
+						"Code"=>'条',
+					],
+					"OperationState"=>0,
+					"OutputType"=>0,
+					"Item"=>[
+						"Code"=>$v['jm'],//料号  徐凯传递的是$data['jm']
+					],
+					"OwnerOrg"=>[
+						"Code"=>$params['org_code'],//货主组织编码  需填写
+					],
+					"PUToPBURate"=>0,
+					"SUToSBURate"=>0,
+					"PBUToSBURate"=>0,
+					"CUToCBURate"=>0,
+					"PBUToCBURate"=>0,
+					"Grade"=>0,
+					"Element"=>0,
+					"Wh"=>[
+						"Code"=>$params['rev_wh_code'],//存储地点信息  传递
+					],
+					"StorageType"=>4,
+					"RcvValiddate"=>0,
+					"RcvQtyByProductUOM"=>0,
+					"RcvQtyByWhUOM"=>0,
+					"RcvQtyByCostUom"=>0,
+					"RcvOrg"=>[	//入库组织
+						"Code"=>001,//编码
+					],
+					"PerformingOrg"=>[ //执行组织
+						"Code"=>001	//编码
+					],
+					"CUD"=>0,
+					"LineNum"=>0,
+					"MO"=>[	//生产订单 
+						"Code"=>$params['rkcode'],//徐凯写了 rkcode
+					],
+					"ID"=>0,
+				]
+			];
+			$list[] = $tmp;
+		}
+
+		$res = [
+			"DocNo"=>"",//
+			"CompleteList"=>$list,
+			"DescFlexField"=>[
+				"PubDescSeg2"=>$params['yyid'],//kh
+				"PubDescSeg4"=>$params['number'],//订单编码
+				"PubDescSeg5"=>$params['shipremarks'],//备注
+			],
+			"DocType"=>[
+				"Code"=>0,
+			],
+			"BusinessDate"=>(date("Y-m-d",time())),
+			"OtherID"=>'',//订单编码
+			"Direction"=>0,
+			"IsOffLine"=>1, //是否撤线报
+			"DocState"=>0,
+			"Remark"=>time(),
+			"RcvPerson"=>[
+				"Code"=>"ERP"
+			]
+		];
+
+		
+		return [$res];
+	}
+	
 }

+ 262 - 0
core/CoreApp/models/Model_logic_u9action.php

@@ -0,0 +1,262 @@
+<?php
+/**
+ * 系统自动处理在途库存的香港问题
+ */
+class Model_logic_u9action extends Lin_Model {
+   
+    //切记要修改token_120的token真正的token!!!!
+    function __construct(){
+        parent::__construct();
+        $this->load->_model('Model_settingtest','settingtest');
+        $this->load->_model("Model_apiyyv1","apiyyv1");
+        $this->load->_model("Model_logic_order","logic_order");
+        $this->load->_model("Model_logic_ding","logic_ding");
+        $this->load->_model("Model_zzquque_u9","zzquque_u9");
+        $this->load->_model("Model_systemtransfer","systemtransfer");
+        $this->load->_model("Model_shop","shop");
+        $this->load->_model("Model_zzququeu9_logs","zzququeu9_logs");
+    }
+    public function getToken($type){
+        $name = "get_yytoken_".$type;
+        $token = $this->settingtest->$name();
+        return $token;
+    }
+   
+    /**
+     * 工厂加工生产外销的订单
+     */
+    public function waixiao(){
+        //入库单这里用字段标准收货单进行了 处理  主要是不想动u9队列的字段了   所以这里用收货单的字段
+        $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 0 and xs_status = 0");
+        if(!empty($list)){
+            foreach($list as $k=>$v){
+                $this->doRkd($v);
+            }
+        }
+        sleep(3);
+        //审核的不需要再等待了
+        $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 1 and xs_status = 0 and bzch_status = 0");
+        if(!empty($list)){
+            foreach($list as $k=>$v){
+                $this->checkRkd($v);
+            }
+        }
+        $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 3 and xs_status = 0 and bzch_status = 0");
+        if(!empty($list)){
+            foreach($list as $k=>$v){
+                $this->createXsd($v);
+            }
+        }
+        sleep(3);
+        $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 3 and xs_status = 1 and bzch_status = 0");
+        if(!empty($list)){
+            foreach($list as $k=>$v){
+                $this->xcXsAndCreateScd($v);
+            }
+        }
+        sleep(3);
+        //审核标准出货单
+        $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 3 and xs_status = 3 and bzch_status = 1");
+        if(!empty($list)){
+            foreach($list as $k=>$v){
+                $this->checkBzch($v);
+            }
+        }
+       
+    }
+    //进行入库单操作
+    private function doRkd($data){
+        $token = $this->getToken(120);
+        if(empty($data['child_order_no'])){
+            $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$data['order_no'],20,1,'scrk_cj',$data,[
+                'code'=>-1,
+                'msg'=>'没有找到子订单号'
+            ]);
+            return ;
+        }
+
+        $info = $this->systemtransfer->read($data['child_order_no']);
+        $order_info = $this->logic_order->getInfo("number = '".$info['number']."'","number,shop");
+        $shop_info = $this->shop->read($order_info['shop']);
+        if(empty($shop_info)){
+            $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$data['order_no'],20,1,'scrk_cj',$data,[
+                'code'=>-1,
+                'msg'=>'没有找到子订单号'
+            ]);
+            return ;
+        }
+        $sc = explode('~',$info['scid']);
+        $info['rkid'] = $sc[0];//配货的生产id
+        $info['rkcode'] = $sc[1];//配货的生产单号
+        $params = [
+            'org_code'=>'120',
+            "org_wh_code"=>'02',
+            'rec_code'=>'120',
+            'rev_wh_code'=>'02',
+            'rkid'=>$info['rkid'],
+            'rkcode'=>$info['rkcode'],
+            'yyid'=>$shop_info['yyid'],
+            'number'=>$info['number'],
+            'shipremarks'=>$info['shipremarks'],
+            'list'=>[
+                [
+                    'sl'=>1,
+                    'jm'=>$info['jm'],
+                ]
+               
+            ]
+        ];
+        $res = $this->apiyyv1->cprkCreate($params,$token);
+        if(isset($res[0]['Data'][0]['m_isSucess'])&& $res[0]['Data'][0]['m_isSucess'] == 1){
+            $this->editData($data['id'],['bzsh_no'=>$res[0]['Data'][0]['m_code'],'bzsh_status'=>1,'update_time'=>time()],$info['number'],20,1,'scrk_cj',$res[1],$res[0]);
+        }else{
+            $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$info['number'],20,1,'scrk_cj',$res[1],$res[0]);
+        }
+        
+    }
+    //对入库单进行检查
+    private function checkRkd($info){
+        $token = $this->getToken(120);
+        $params = [
+            [
+                "DocNo"=>$info['bzsh_no']
+            ]
+        ];
+        $res = $this->apiyyv1->cprkApprove($params,$token);
+      
+        //如果入库审核失败 先查询 如果不存在就标记 存在就再次审核
+        if(!(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1)){
+            //查询单子是否存在
+            sleep(1);
+            $res = $this->apiyyv1->cprkCx($params,$token);
+            if(!(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1)){
+                //查询失败  这里不做状态变更  只是做记录
+              return  $this->editData($info['id'],['update_time'=>time()],$info['order_no'],20,2,'scrk_ck',$res[1],$res[0]);
+            }
+            $res = $this->apiyyv1->cprkApprove($params,$token);
+        }
+        //如果再错误就 没办法了
+        if(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1){
+            $this->editData($info['id'],['bzsh_status'=>3,'update_time'=>time()],$info['order_no'],20,3,'scrk_sh',$res[1],$res[0]);
+        }
+
+
+    }
+    //进行销售单操作
+    private function createXsd($info){
+            $order_info = $this->logic_order->getInfo('number = "'.$info['order_no'].'"',"number,shop,shouldmoney");
+            if(empty($order_info)){
+                return [];
+            }
+            $shop = $this->shop->read($order_info['shop']);
+            $tren_info = $this->systemtransfer->read($info['child_order_no']);
+            $token = $this->getToken('120');
+            $params = [
+                'yyid'=>$shop['yyid'],
+                'number'=>$info['order_no'],
+                'time'=>time(),
+                'list'=>[
+                    [
+                        'jm'=>$tren_info['jm'],
+                        'dcsl'=>1,
+                        'final_price'=>1,
+                    ]
+                ]
+            ];
+            $res = $this->apiyyv1->xsdCreate($params,$token);
+            if($res[0]['Data'][0]['m_isSucess'] != 1){
+                $this->editData($info['id'],['xs_status'=>-1,'update_time'=>time()],$info['order_no'],2,1,'xs',$res[1],$res[0]);
+            }else{
+                $this->editData($info['id'],['xs_no'=>$res[0]['Data'][0]['m_code'],'xs_status'=>1,'update_time'=>time()],$info['order_no'],2,1,'xs',$res[1],$res[0]);
+            }
+    }
+    //
+    private function checkXsd($info){
+
+    }
+
+    //对销售单进行检查 并创建标准出货单
+    private function xcXsAndCreateScd($info){
+        $token = $this->getToken(120);
+        $res = $this->apiyyv1->xsdCxByNo($info['xs_no'],$token);
+        //如果没审核 那么就不管
+        if(empty($res[0]['Data'])){
+            return ;
+        }
+        // 审核了 
+        $list = $res[0]['Data'];
+       
+        if($list[0]['status'] < 3){
+            return ;
+        }
+        foreach($list as $k=>$v){
+            $list[$k]['dcsl'] = 1;
+        }
+        $tran_info = $this->systemtransfer->read($info['child_order_no']);
+        $drckbm = '';
+        if(stripos($tran_info['features'],'-126-') !== false)
+		{
+            $drckbm = '12003';//进入发条库
+		}
+		else if(stripos($tran_info['features'],'-127-') !== false)
+		{
+            $drckbm = '12004';//进入发块库
+		}
+		else
+		{
+            $drckbm = '12006';//其它进入完成库
+		}
+        if(empty($drckbm)){
+            $this->editData($info['id'],['bzch_status'=>-1,'update_time'=>time()],$info['order_no'],5,1,'bzch',[],[
+                'code'=>-1,
+                'msg'=>'标准出库的信息异常,请查看'
+            ]);
+            return ;
+        }
+        $tmp_info = [
+            'zq_u9_id'=>$info['id'],
+            'drckbm'=> $drckbm,
+            'number'=>$info['order_no'],
+            'order_no'=>$info['order_no'],
+            'xs_no'=>$info['xs_no'],
+            'xs_two_no'=>$info['xs_no'],
+            'list'=>$list
+        ];
+        $res = $this->apiyyv1->bzchCreate($tmp_info,$token);
+        if($res[0]['Data'][0]['m_isSucess'] != 1){
+            $this->editData($info['id'],['bzch_status'=>-1,'update_time'=>time()],$info['order_no'],5,1,'bzch',$res[1],$res[0]);
+        }else{
+            $this->editData($info['id'],['bzch_no'=>$res[0]['Data'][0]['m_code'],'bzch_status'=>1,'xs_status'=>3,'update_time'=>time()],$info['order_no'],5,1,'bzch',$res[1],$res[0]);
+        }
+
+    }
+    //对标准出货单进行审核
+    private function checkBzch($info){
+        $res = $this->apiyyv1->bzchSubmitAndApprove(['number'=>$info['bzch_no']],$this->getToken(120));
+        print_r($res[0]);
+        print_r($res[1]);
+        if($res[0]['Data'][0]['m_isSucess'] != 1){
+            $this->editData($info['id'],['bzch_status'=>-2,'update_time'=>time()],$info['order_no'],5,2,'bzch_sh',$res[1],$res[0]);
+        }else{
+            $this->editData($info['id'],['bzch_no'=>$res[0]['Data'][0]['m_code'],'bzch_status'=>3,'update_time'=>time()],$info['order_no'],5,2,'bzch_sh',$res[1],$res[0]);
+        }
+    }
+
+
+
+    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")
+        ]);
+    }
+}
+