wugg 2 年之前
父節點
當前提交
cad255cc08
共有 3 個文件被更改,包括 392 次插入415 次删除
  1. 116 98
      app/admin/controller/Purchin.php
  2. 41 42
      app/admin/controller/Resign.php
  3. 235 275
      app/admin/controller/Sale.php

+ 116 - 98
app/admin/controller/Purchin.php

@@ -201,7 +201,7 @@ class Purchin extends BaseController
 //            $send_way = Db::name("good_zixun")->where(["spuCode" => $cgdinfo['spuCode'], "is_del" => 0])->value('send_way');
 //            if ($send_way) $status = 4;
 //        }
-        if($sendtype==2){
+        if($sendtype==2 || $cgdinfo!=1){
             $status=4;
         }
         $orin = [
@@ -242,31 +242,34 @@ class Purchin extends BaseController
                     $cgdinfo['updatetime']=date("Y-m-d H:i:s");
                     $up=Db::name("purchease_order")->save($cgdinfo);
                     if($up){
-                        $good = Db::name("good_stock")->where(["wsm_code"=>$cgdinfo['wsm_code'],"spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
-                        if(empty($good)) {
-                            $good=[
-                                "spuCode"=>$cgdinfo['spuCode'],
-                                "wsm_code"=>$cgdinfo['wsm_code'],
-                                "usable_stock"=>0,
-                                "wait_out_stock"=>0,
-                                "wait_in_stock"=>0,
-                                "total_stock"=>0,
-                                "addtime"=>date("Y-m-d H:i:s"),
-                                "updatetime"=>date("Y-m-d H:i:s"),
-                            ];
-                            $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'', "action_type"=>"create"];
-                        }else{
-                            $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'', "action_type"=>"edit"];
-                        }
-                        $good['wait_in_stock']+=$send_num;
-                        $good['updatetime'] = date("Y-m-d H:i:s");
-                        $upd=  Db::name("good_stock")->save($good);
-                        if($upd==false){
-                            Db::rollback();
-                            return error_show(1004,"新建失败");
-                        }
-                            $good_data[]=['good_log_code'=>$cgdNo,"stock_id"=>isset($good['id'])? $good['id']:Db::name("good_stock")->getLastInsID(),"type"=>1,'stock'=>$send_num,"stock_name"=>"usable_stock"];
+                        if($cgdinfo['order_type']!=1){
+                            $good = Db::name("good_stock")->where(["wsm_code"=>$cgdinfo['wsm_code'],"spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
+                            if(empty($good)) {
+                                $good=[
+                                    "spuCode"=>$cgdinfo['spuCode'],
+                                    "wsm_code"=>$cgdinfo['wsm_code'],
+                                    "usable_stock"=>0,
+                                    "wait_out_stock"=>0,
+                                    "wait_in_stock"=>0,
+                                    "total_stock"=>0,
+                                    "addtime"=>date("Y-m-d H:i:s"),
+                                    "updatetime"=>date("Y-m-d H:i:s"),
+                                ];
+                                $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'', "action_type"=>"create"];
+                            }else{
+                                $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'', "action_type"=>"edit"];
+                            }
+                            $good['wait_in_stock']+=$send_num;
+                            $good['updatetime'] = date("Y-m-d H:i:s");
+                            $upd=  Db::name("good_stock")->save($good);
+                            if($upd==false){
+                                Db::rollback();
+                                return error_show(1004,"新建失败");
+                            }
+                            $good_data[]=['good_log_code'=>$cgdNo,"stock_id"=>isset($good['id'])? $good['id']:Db::name("good_stock")->getLastInsID(),"type"=>1,'stock'=>$send_num,"stock_name"=>"wait_in_stock"];
                             GoodLog::LogAdd($this->post['token'],$good_data,'RKD');
+                        }
+
                             ActionLog::logAdd($this->post['token'],$order,"RKD", 1,$good  );
                             $process=["order_code"=>$cgdNo,"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD'];
                             ProcessOrder::AddProcess($this->post['token'],$process);
@@ -299,7 +302,7 @@ class Purchin extends BaseController
                             "wsm_code"=>$cgdinfo['wsm_code'],
                             "usable_stock"=>0,
                             "wait_out_stock"=>0,
-                            "wait_in_stock"=>0,
+                            "wait_in_stock"=>$send_num,
                             "total_stock"=>0,
                             "addtime"=>date("Y-m-d H:i:s"),
                             "updatetime"=>date("Y-m-d H:i:s"),
@@ -308,16 +311,18 @@ class Purchin extends BaseController
                     }else{
                         $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'', "action_type"=>"edit"];
                     }
+                    $good['wait_in_stock']-=$send_num;
                     $good['usable_stock']+=$send_num;
                     $good['total_stock']=$good['usable_stock']+$good['wait_out_stock'];
                     $good['updatetime'] = date("Y-m-d H:i:s");
                     $upd=  Db::name("good_stock")->save($good);
                     //商品变动日志表,good_log_code字段存储采购单单号
                     $good_data[]=['good_log_code'=>$cgdNo,"stock_id"=>isset($good['id'])? $good['id']:Db::name("good_stock")->getLastInsID(),"type"=>1,'stock'=>$send_num,"stock_name"=>"usable_stock"];
+                    $good_data[]=['good_log_code'=>$cgdNo,"stock_id"=>isset($good['id'])? $good['id']:Db::name("good_stock")->getLastInsID(),"type"=>2,'stock'=>$send_num,"stock_name"=>"wait_in_stock"];
                     if($upd){
                         GoodLog::LogAdd($this->post['token'],$good_data,'RKD');
                         ActionLog::logAdd($this->post['token'],$order,"RKD", 1,$good  );
-                        if($cgdinfo['send_status']==3){
+                        if($cgdinfo['send_status']==3 && $cgdinfo['order_type']!=1){
                             $send=Db::name("order_send")->where(["cgdNo"=>$cgdNo,"status"=>1])->column("outCode");
                             if(!empty($send)){
                                 $out =Db::name("order_out")->where(["outCode"=>$send,"status"=>0])->select()
@@ -341,7 +346,7 @@ class Purchin extends BaseController
                                             ProcessOrder::AddProcess($this->post['token'], [
                                                 "order_type" => 'CKD',
                                                 "order_code" => $v_outCode['outCode'],//出库单号
-                                                "order_id" => 0,
+                                                "order_id" => $v_outCode['id'],
                                                 "order_status" => 1
                                             ]);
                                         }
@@ -615,6 +620,7 @@ class Purchin extends BaseController
                         Db::rollback();
                         return error_show(1002,"未找到采购单数据");
                     }
+
                     $good = Db::name("good_stock")->where(["wsm_code"=>$info['wsm_code'], "spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
 
                     if(empty($good)) {
@@ -623,7 +629,7 @@ class Purchin extends BaseController
                           "wsm_code"=>$info['wsm_code'],
                           "usable_stock"=>0,
                           "wait_out_stock"=>0,
-                          "wait_in_stock"=>0,
+                          "wait_in_stock"=>$info['wsm_num'],
                           "total_stock"=>0,
                           "addtime"=>date("Y-m-d H:i:s"),
                           "updatetime"=>date("Y-m-d H:i:s"),
@@ -643,46 +649,7 @@ class Purchin extends BaseController
                     $good_data[] = ['good_log_code' => $incode, "stock_id" => isset($good['id']) ? $good['id'] : Db::name("good_stock")->getLastInsID(), "type" => 1, 'stock' => $info['wsm_num'], "stock_name" => "usable_stock"];
                     if($upd){
                         GoodLog::LogAdd($this->post['token'],$good_data,'RKD');
-                        ActionLog::logAdd($this->post['token'],$order,"RKD", 1,$good  );
-//                        if($cgdinfo['send_status']==3){
-//                            $send=Db::name("order_send")->where(["cgdNo"=>$info['cgdNo'],"status"=>1])->column("outCode");
-//                            if(!empty($send)){
-//                                $out =Db::name("order_out")->where(["outCode"=>$send,"status"=>0,"is_del"=>0])->select()
-//                                    ->toArray();
-//                                if(!empty($out)){
-//                                    $up =Db::name("order_out")->where(["outCode"=>$send,"status"=>0,"is_del"=>0])->update
-//                                    (["status"=>1,"updatetime"=>date('Y-m-d H:i:s')]);
-//                                    if($up==false){
-//                                        Db::rollback();
-//                                        return error_show(1004,"出库单出库失败");
-//                                    }
-//                                    $good1 = Db::name("good_stock")->where(["wsm_code"=>$cgdinfo['wsm_code'], "spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
-//                                    if($good1==false){
-//                                        Db::rollback();
-//                                        return error_show(1004,"未找到对应商品库存");
-//                                    }
-//                                    $out_num = intval(array_sum(array_column($out,"send_num")));
-//                                    if($out_num>$good1['usable_stock']){
-//                                        Db::rollback();
-//                                        return error_show(1004,"库存数量不足发货");
-//                                    }
-//                                    $good1['usable_stock']-=$out_num;
-//                                    $good1['wait_out_stock']+=$out_num;
-//                                    $good1['total_stock']=$good1['usable_stock']+$good1['wait_out_stock'];
-//                                    $good1['updatetime'] = date("Y-m-d H:i:s");
-//                                    $upd=  Db::name("good_stock")->save($good1);
-//                                    if($upd==false){
-//                                        Db::rollback();
-//                                        return error_show(1004,"库存数量更新失败");
-//                                    }
-//                                    $sendp=Db::name("order_send")->where(["cgdNo"=>$info['cgdNo'],"outCode"=>$out,"status"=>1])->save (["status"=>2]);
-//                                    if($sendp==false){
-//                                        Db::rollback();
-//                                        return error_show(1004,"库存发货失败");
-//                                    }
-//                                }
-//                            }
-//                        }
+                        ActionLog::logAdd($this->post['token'],$order,"RKD", 1,$good);
                         Db::commit();
                         return app_show(0,'商品入库成功');
                     }else{
@@ -750,7 +717,7 @@ class Purchin extends BaseController
        try{
 
 //        $info['status'] =$info['wsm_num']==$wsm_num ? 4 :5;
-           $info['status'] = $info['send_num'] == $wsm_num ? 4 : 5;//艳蓉说,这里不能用入库数量比较,应该是用入库数量,即总数来比较
+       $info['status'] = $info['send_num'] == $wsm_num ? 4 : 5;//艳蓉说,这里不能用入库数量比较,应该是用入库数量,即总数来比较
         $info['is_th'] =$return_num>0 ?1:0;
         $info['updatetime'] = date("Y-m-d H:i:s");
         $up= Db::name("purchease_in")->save($info);
@@ -760,36 +727,38 @@ class Purchin extends BaseController
                 Db::rollback();
                 return error_show(1002,"未找到采购单数据");
             }
-            $good = Db::name("good_stock")->where(["wsm_code"=>$info['wsm_code'], "spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
-
-            if(empty($good)) {
-                $good=[
-                    "spuCode"=>$cgdinfo['spuCode'],
-                    "wsm_code"=>$info['wsm_code'],
-                    "usable_stock"=>0,
-                    "wait_out_stock"=>0,
-                    "wait_in_stock"=>0,
-                    "total_stock"=>0,
-                    "addtime"=>date("Y-m-d H:i:s"),
-                    "updatetime"=>date("Y-m-d H:i:s"),
-                ];
-                $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'',
-                    "action_type"=>"create"];
+            if($info['status']==4){
+                $good = Db::name("good_stock")->where(["wsm_code"=>$info['wsm_code'], "spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
+                if(empty($good)) {
+                    $good=[
+                        "spuCode"=>$cgdinfo['spuCode'],
+                        "wsm_code"=>$info['wsm_code'],
+                        "usable_stock"=>0,
+                        "wait_out_stock"=>0,
+                        "wait_in_stock"=>$wsm_num,
+                        "total_stock"=>0,
+                        "addtime"=>date("Y-m-d H:i:s"),
+                        "updatetime"=>date("Y-m-d H:i:s"),
+                    ];
+                    $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'',
+                        "action_type"=>"create"];
 
-            }else{
-                $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'', "action_type"=>"edit"];
-            }
-            $good['usable_stock']+=$wsm_num;
-            $good['wait_in_stock']-=$wsm_num;
-            $good['total_stock']=$good['usable_stock']+$good['wait_out_stock'];
-            $good['updatetime'] = date("Y-m-d H:i:s");
-            $upd=  Db::name("good_stock")->save($good);
-            if($upd==false){
-                Db::rollback();
-                return error_show(1002,"库存更新失败");
+                }else{
+                    $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'', "action_type"=>"edit"];
+                }
+                $good['usable_stock']+=$wsm_num;
+                $good['wait_in_stock']-=$wsm_num;
+                $good['total_stock']=$good['usable_stock']+$good['wait_out_stock'];
+                $good['updatetime'] = date("Y-m-d H:i:s");
+                $upd=  Db::name("good_stock")->save($good);
+                if($upd==false){
+                    Db::rollback();
+                    return error_show(1002,"库存更新失败");
+                }
+                $good_data[]=["stock_id"=>isset($good['id'])? $good['id']:Db::name("good_stock")->getLastInsID(),"type"=>1, 'stock'=>$info['wsm_num'],"stock_name"=>"usable_stock"];
+                GoodLog::LogAdd($this->post['token'],$good_data,'RKD');
             }
-            $good_data[]=["stock_id"=>isset($good['id'])? $good['id']:Db::name("good_stock")->getLastInsID(),"type"=>1, 'stock'=>$info['wsm_num'],"stock_name"=>"usable_stock"];
-            GoodLog::LogAdd($this->post['token'],$good_data,'RKD');
+
             $process=["order_code"=>$info['wsm_in_code'],"order_id"=>$info['id'],"order_status"=>$info['status'],"order_type"=>'RKD'];
             ProcessOrder::AddProcess($this->post['token'],$process);
 
@@ -848,6 +817,11 @@ class Purchin extends BaseController
         if(empty($return)){
             return error_show(1004,"未找到退货单数据");
         }
+        $cgdinfo=Db::name("purchease_order")->where(['cgdNo'=>$info['cgdNo'],"is_del"=>0])->find();
+        if(empty($cgdinfo)){
+            Db::rollback();
+            return error_show(1002,"未找到采购单数据");
+        }
         $post_code = isset($this->post['post_code']) &&$this->post['post_code']!=="" ? trim($this->post['post_code']):"" ;
         if($post_code==""){
             return error_show(1004,"参数 post_code 不能为空");
@@ -881,7 +855,51 @@ class Purchin extends BaseController
                     ActionLog::logAdd($this->post['token'],$stn,"RKD",5,$stn);
                     $process=["order_code"=>$info['wsm_in_code'],"order_id"=>$info['id'],"order_status"=>5,"order_type"=>'RKD'];
                     ProcessOrder::AddProcess($this->post['token'],$process);
+                    if($info['status']==6){
+                        $good = Db::name("good_stock")->where(["wsm_code"=>$info['wsm_code'], "spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
+                        if(empty($good)) {
+                            $good=[
+                                "spuCode"=>$cgdinfo['spuCode'],
+                                "wsm_code"=>$info['wsm_code'],
+                                "usable_stock"=>0,
+                                "wait_out_stock"=>0,
+                                "wait_in_stock"=>$info['wsm_num'],
+                                "total_stock"=>0,
+                                "addtime"=>date("Y-m-d H:i:s"),
+                                "updatetime"=>date("Y-m-d H:i:s"),
+                            ];
+                            $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'',
+                                "action_type"=>"create"];
 
+                        }else{
+                            $order = ["order_code"=>$good['spuCode'],"status"=>1,"action_remark"=>'', "action_type"=>"edit"];
+                        }
+                        $good['usable_stock']+=$info['wsm_num'];
+                        $good['wait_in_stock']-=$info['wsm_num'];
+                        $good['total_stock']=$good['usable_stock']+$good['wait_out_stock'];
+                        $good['updatetime'] = date("Y-m-d H:i:s");
+                        $upd=  Db::name("good_stock")->save($good);
+                        if($upd==false){
+                            Db::rollback();
+                            return error_show(1002,"库存更新失败");
+                        }
+                        $good_data[]=["stock_id"=>isset($good['id'])? $good['id']:Db::name("good_stock")->getLastInsID(),"type"=>1, 'stock'=>$info['wsm_num'],"stock_name"=>"usable_stock"];
+                        GoodLog::LogAdd($this->post['token'],$good_data,'RKD');
+                    }
+                    $cgdinfo['wsend_num']+=$return['reissue_num'];
+                    $cgdinfo['send_num']-=$return['return_num'];
+                    $cgdinfo['send_status']=$cgdinfo['wsend_num']==0 ? 3:($cgdinfo['send_num']==0 ?1:2);
+                    $cgdinfo['status']=$cgdinfo['wsend_num']==0 ? 3:($cgdinfo['send_num']==0 ?1:2);
+                    $cgdinfo['updatetime']=date("Y-m-d H:i:s");
+                    $up=Db::name("purchease_order")->save($cgdinfo);
+                    if($up==false){
+                        Db::rollback();
+                        return error_show(1004,"采购单数量更新失败");
+                    }
+                    $order = ["order_code"=>$cgdinfo['cgdNo'],"status"=>$cgdinfo['status'],"action_remark"=>'',"action_type"=>"edit"];
+                    ActionLog::logAdd($this->post['token'],$order,"CGD", $cgdinfo['status'],$cgdinfo);
+                    $process=["order_code"=>$cgdinfo['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD'];
+                    ProcessOrder::AddProcess($this->post['token'],$process);
                     Db::commit();
                     return  app_show(0,"退货发货成功");
                 }else{

+ 41 - 42
app/admin/controller/Resign.php

@@ -137,10 +137,16 @@ class Resign extends BaseController
             return error_show(1004,"参数remark不能为空");
         }
         $good =Db::name("good_basic")->where([["spuCode","=",$good_code],["is_del","=",0]])->find();
+
         if($good==false){
             return error_show(1004,"未找到商品数据");
         }
-
+        //查验仓库库存数量
+        $stock =Db::name("good_stock")->alias("a")->leftJoin("warehouse_info b","a.wsm_code=b.wsm_code")->where
+        (["spuCode"=>$good_code, "a.is_del"=>0,"a.status"=>1,"b.companyNo"=>$good['companyNo']])->field("a.id,a.usable_stock,a.wait_out_stock")->find();
+        if(isset($stock['usable_stock'])&& $stock['usable_stock']!=0){
+            return error_show(1003,"库存数量为 {$stock['usable_stock']} 无法备库");
+        }
         //校验数量
         $goodnake = Db::name("good_nake")
             ->field('id,min_num')
@@ -166,7 +172,6 @@ class Resign extends BaseController
             "spuCode"=>$good['spuCode'],
             "good_name"=>$good['good_name'],
             "good_num"=>$good_num,
-//            "skuCode"=>$good['skuCode'],
             "wsm_code"=>'',
             "companyNo"=>$good['companyNo'],
             "supplierNo"=>$good['supplierNo'],
@@ -211,6 +216,12 @@ class Resign extends BaseController
         if((!empty($data) && $data['code']!=0) ||empty($data) ){
             return error_show($data['code'],$data['message']);
         }
+        //查验仓库库存数量
+        $stock =Db::name("good_stock")->alias("a")->leftJoin("warehouse_info b","a.wsm_code=b.wsm_code")->where
+        (["spuCode"=>$info['spuCode'], "a.is_del"=>0,"a.status"=>1,"b.companyNo"=>$info['companyNo']])->field("a.id,a.usable_stock,a.wait_out_stock")->find();
+        if(isset($stock['usable_stock'])&& $stock['usable_stock']!=0){
+            return error_show(1003,"库存数量为 {$stock['usable_stock']} 无法备库");
+        }
         $userinfo = $data['data'];
         $bk_code=makeNo("BK");
         $info['bk_code']=$bk_code;
@@ -823,45 +834,33 @@ class Resign extends BaseController
                     "order_id" => $up,
                     "order_status" => $cg['status']
                 ]);
-
-                $data=[
-                    "cgdNo"=>$cgdCode,
-                    "spuCode"=>$info['spuCode'],
-                    "total_num"=>$info['good_num'],
-                    "merge_num"=>0,
-                    "balance_num"=>$info['good_num'],
-                    "addtime"=>date("Y-m-d H:i:s"),
-                    "updatetime"=>date("Y-m-d H:i:s")
-                ];
-                $in =Db::name("order_bk")->insert($data);
-                if($in) {
-//                    $good = Db::name("good_stock")->where(["wsm_code" => $info['wsm_code'], "spuCode" => $info['spuCode'], "is_del" => 0])->find();
-//                    if ($good == false) {
-//                        $good = [
-//                            "spuCode" => $info['spuCode'],
-//                            "wsm_code" => $info['wsm_code'],
-//                            "usable_stock" => 0,
-//                            "wait_out_stock" => 0,
-//                            "wait_in_stock" => 0,
-//                            "total_stock" => 0,
-//                            "addtime" => date("Y-m-d H:i:s"),
-//                            "updatetime" => date("Y-m-d H:i:s"),
-//                        ];
-//                        $order = ["order_code" => $info['spuCode'], "status" => 1, "action_remark" => '', "action_type" => "create"];
-//                    } else {
-//                        $order = ["order_code" => $info['spuCode'], "status" => 1, "action_remark" => '', "action_type" => "edit"];
-//                    }
-//                    $good['wait_in_stock'] += $info['good_num'];
-//                    $good['updatetime'] = date("Y-m-d H:i:s");
-//                    $upd = Db::name("good_stock")->save($good);
-//                    $good_data[] = ['good_log_code' => $cgdCode,"stock_id" => isset($good['id']) ? $good['id'] : Db::name("good_stock")->getLastInsID(), "type" => 1,
-//                        'stock' => $info['good_num'], "stock_name" => "wait_in_stock"];
-//                    if ($upd) {
-                    //商品变动日志表,good_log_code字段存储采购单号
-//                        GoodLog::LogAdd($this->post['token'], $good_data, 'RKD');
-//                        ActionLog::logAdd($this->post['token'], $order, "RKD", 1, $good);
-//                        $process = ["order_code" => $cgdCode, "order_id" => Db::name("purchease_order")->getLastInsID(), "order_status" => $cg['status'], "order_type" => 'CGD'];
-//                        ProcessOrder::AddProcess($this->post['token'], $process);
+                    $good = Db::name("good_stock")->where(["wsm_code" => $info['wsm_code'], "spuCode" => $info['spuCode'], "is_del" => 0])->find();
+                    if ($good == false) {
+                        $good = [
+                            "spuCode" => $info['spuCode'],
+                            "wsm_code" => $info['wsm_code'],
+                            "usable_stock" => 0,
+                            "wait_out_stock" => 0,
+                            "wait_in_stock" => 0,
+                            "total_stock" => 0,
+                            "addtime" => date("Y-m-d H:i:s"),
+                            "updatetime" => date("Y-m-d H:i:s"),
+                        ];
+                        $order = ["order_code" => $info['spuCode'], "status" => 1, "action_remark" => '', "action_type" => "create"];
+                    } else {
+                        $order = ["order_code" => $info['spuCode'], "status" => 1, "action_remark" => '', "action_type" => "edit"];
+                    }
+                    $good['wait_in_stock'] += $info['good_num'];
+                    $good['updatetime'] = date("Y-m-d H:i:s");
+                    $upd = Db::name("good_stock")->save($good);
+                    $good_data[] = ['good_log_code' => $cgdCode,"stock_id" => isset($good['id']) ? $good['id'] : Db::name("good_stock")->getLastInsID(), "type" => 1,
+                        'stock' => $info['good_num'], "stock_name" => "wait_in_stock"];
+                    if ($upd) {
+                   // 商品变动日志表,good_log_code字段存储采购单号
+                        GoodLog::LogAdd($this->post['token'], $good_data, 'CGD');
+                        ActionLog::logAdd($this->post['token'], $order, "CGD", 1, $good);
+                        $process = ["order_code" => $cgdCode, "order_id" => Db::name("purchease_order")->getLastInsID(), "order_status" => $cg['status'], "order_type" => 'CGD'];
+                        ProcessOrder::AddProcess($this->post['token'], $process);
                         $info['wsm_code'] = $wsm_code;
                         $old_info_status = $info['status'];
                         $info['status'] = 2;
@@ -888,8 +887,8 @@ class Resign extends BaseController
                             return app_show(0, "采购单新建成功", ["cgdNo" => $cgdCode]);
                         }
 
-//                    }
                     }
+//                    }
                 }
                 Db::rollback();
                 return error_show(1004,"采购单新建失败");

+ 235 - 275
app/admin/controller/Sale.php

@@ -89,7 +89,8 @@ class Sale extends Base
             }
         }
         if($goodinfo['is_stock']==1){
-            $stock =Db::name("good_stock")->where(["spuCode"=>$spuCode,"is_del"=>0])->find();
+            $stock =Db::name("good_stock")->alias("a")->leftJoin("warehouse_info b","a.wsm_code=b.wsm_code")->where
+            (["spuCode"=>$spuCode, "a.is_del"=>0,"a.status"=>1,"b.companyNo"=>$supplierNo])->field("a.id,a.usable_stock,a.wait_out_stock")->find();
             if($stock==false||$stock['usable_stock']<$good_num){
                 return error_show(1003,"库存数量不足");
             }
@@ -192,6 +193,11 @@ class Sale extends Base
                 "is_activity"=>$is_activity===""?0:$is_activity,
                 "order_type"=>$order_type,
 //                "poNo"=>$poNo,
+                'good_weight'=>$ct['weight'],
+                'gold_price'=>$ct['cgd_gold_price'],
+                'cost_price'=>$ct['cost_fee'],
+                'diff_weight'=>0,
+                'diff_fee'=>0,
                 "workNo"=>$workNo,
                 "addtime"=>date("Y-m-d H:i:s"),
                 "updatetime"=>date("Y-m-d H:i:s"),
@@ -219,22 +225,28 @@ class Sale extends Base
                         return error_show(1002,"订单创建失败");
                     }
                 }else{
-                    $dd=[
-                        "orderCode"=>$orderCode,
-                        "spuCode"=>$spuCode,
-                        "total_num"=>$good_num,
-                        "merge_num"=>0,
-                        "balance_num"=>$good_num,
-                        "status"=>1,
-                        "is_del"=>0,
-                        "addtime"=>date("Y-m-d H:i:s"),
-                        "updatetime"=>date("Y-m-d H:i:s"),
-                    ];
-                    $db=Db::name("sale_bk")->insert($dd);
-                    if($db==false){
+                    $bol =$this->RelaCgd(['orderCode'=>$orderCode,"good_num"=>$good_num,"spuCode"=>$spuCode,"companyNo"=>$supplierNo]);
+                    if($bol==false){
                         Db::rollback();
-                        return error_show(1002,"咨询订单创建失败");
+                        return error_show(1002,"库存商品关联采购单失败");
+                    }
+                    if(isset($stock)){
+                        $stck = [
+                            "usable_stock"=>$stock['usable_stock']-$good_num,
+                            "wait_out_stock"=>$stock['wait_out_stock']+$good_num,
+                            "updatetime"=>date("Y-m-d H:i:s")
+                        ];
+                        $upad=Db::name("good_stock")->where($stock)->update($stck);
+                        if($upad==false){
+                            Db::rollback();
+                            return error_show(1002,"库存商品更新库存失败");
+                        }
+                        //商品变动日志表,good_log_code字段存储采购单号
+                        $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $datainfo, "type" => 2,'stock'=>$good_num, "stock_name" => "usable_stock"];
+                        $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $datainfo, "type" => 1,'stock'=>$good_num, "stock_name" => "wait_out_stock"];
+                        GoodLog::LogAdd($this->post['token'],$good_data,"XSQRD");
                     }
+
                 }
                 if($sendtype==1){
                     foreach ($addrlist as $value){
@@ -262,38 +274,25 @@ class Sale extends Base
                         $temp['arrive_time']=$arrtime;
                         $vmp = Db::name('order_addr')->insert($temp,true);
                         if($vmp>0){
-                            if($is_stock==0) {
-                                $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
-                                    ->select()->toArray();
-                                if (empty($order)) {
-                                    return error_show(1004, "未找到可以发货得采购单数据");
-                                }
-                                $num = $value['receipt_quantity'];
-                                $orsend = [];
-                                foreach ($order as $val) {
-                                    $outCode = makeNo("DF");
-                                    $tep = [];
-                                    $ornum = 0;
-                                    if ($val['wsend_num'] >= $num) {
-                                        $val['wsend_num'] -= $num;
-                                        $val['send_num'] += $num;
-                                        $ornum = $num;
-                                        $num = 0;
-                                    } else {
-                                        $num -= $val['wsend_num'];
-                                        $val['send_num'] += $val['wsend_num'];
-                                        $ornum = $val['wsend_num'];
-                                        $val['wsend_num'] = 0;
+                            if($is_stock==1) {
+                                    $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
+                                        ->lock(true)->find();
+                                    if ($order==false) {
+                                        return error_show(1004, "未找到可以发货得采购单数据");
                                     }
-                                    $or = Db::name("order_num")->save($val);
+                                    $num = $value['receipt_quantity'];
+                                    $outCode = makeNo("DF");
+                                    $order['wsend_num']-=$num;
+                                    $order['send_num']+=$num;
+                                    $or = Db::name("order_num")->save($order);
                                     if ($or == false) {
                                         Db::rollback();
                                         return error_show(1002, "发货地址添加创建失败");
                                     }
                                     $tep = [
-                                        "cgdNo" => $val['cgdNo'],
+                                        "cgdNo" => $order['cgdNo'],
                                         "outCode" => $outCode,
-                                        "send_num" => $ornum,
+                                        "send_num" => $num,
                                         "status" => 1,
                                         "addtime" => date("Y-m-d H:i:s"),
                                         "updatetime" => date("Y-m-d H:i:s")
@@ -303,7 +302,7 @@ class Sale extends Base
                                         Db::rollback();
                                         return error_show(1002, "发货地址添加创建失败");
                                     }
-                                    $cgdinfo = Db::name("purchease_order")->where(["cgdNo" => $val['cgdNo']])->find();
+                                    $cgdinfo = Db::name("purchease_order")->where(["cgdNo" => $order['cgdNo']])->find();
                                     if ($cgdinfo == false) {
                                         Db::rollback();
                                         return error_show(1002, "未匹配到采购数据");
@@ -318,12 +317,12 @@ class Sale extends Base
                                         "post_code" => "",
                                         "post_fee" => 0,
                                         "sendtime" => date("Y-m-d H:i:s"),
-                                        "send_num" => $ornum,
+                                        "send_num" => $num,
                                         "check_num" => 0,
                                         "error_num" => 0,
                                         "wsm_code" => $cgdinfo['wsm_code'],
                                         "order_type" =>1,
-                                        "status" => 0,
+                                        "status" => 1,
                                         "addtime" => date("Y-m-d H:i:s"),
                                         "updatetime" => date("Y-m-d H:i:s")
                                     ];
@@ -348,7 +347,6 @@ class Sale extends Base
                                         ]);
                                     }
                                 }
-                            }
                         }else{
                             Db::rollback();
                             return error_show(1002,"发货地址添加创建失败");
@@ -807,6 +805,11 @@ class Sale extends Base
                 "is_activity"=>0,
                 "proof_id"=>0,
                 "order_type"=>3,
+                'good_weight'=>$zxinfo['good_weight'],
+                'gold_price'=>$zxinfo['sale_price'],
+                'cost_price'=>$zxinfo['sale_cost_fee'],
+                'diff_weight'=>0,
+                'diff_fee'=>0,
                 "addtime"=>date("Y-m-d H:i:s"),
                 "updatetime"=>date("Y-m-d H:i:s"),
                 'total_price' => round($sale_price * $good_num, 2),
@@ -1071,6 +1074,7 @@ class Sale extends Base
                     $good['addrlist'] = $value['addrlist'];
                 }
                 if($feedback['data_source']==1){
+
                     $feed=$this->project_good($good);
                 }else{
                     $feed=$this->project_zx($good);
@@ -1203,6 +1207,11 @@ class Sale extends Base
             "is_activity"=>0,
             "proof_id"=>0,
             "order_type"=>4,
+            'good_weight'=>$goodinfo['good_weight'],
+            'gold_price'=>$goodinfo['sale_price'],
+            'cost_price'=>$goodinfo['sale_cost_fee'],
+            'diff_weight'=>0,
+            'diff_fee'=>0,
             "addtime"=>date("Y-m-d H:i:s"),
             "updatetime"=>date("Y-m-d H:i:s"),
             'total_price'=>round($data['sale_price']*$data['good_num'],2),
@@ -1365,18 +1374,18 @@ class Sale extends Base
             ->find();
 
         if($good==false){
-            return false;
+            return 4; //商品信息未找到
         }
         $goodlass = Db::name("good_ladder")->where(["skuCode"=>$data['skuCode'],"is_del"=>0,"status"=>1])->where([["min_num",
             "<=",$data['good_num']]])->order("min_num desc")->find();
         if($goodlass==false){
-            return false;
+            return 4;//商品信息未找到
         }
         $sale_price = $goodlass['sale_price'];
         $origin = Db::name("good_nake")->where([["spuCode","=",$data['spuCode']],["min_num","<=",$data['good_num']],
             ["is_del","=",0]])->order("min_num desc")->find();
         if($origin==false){
-            return false;
+            return 4;//商品信息未找到
         }
         $origin_price = $origin['nake_total'];
         $orderCode=makeNo("QR");
@@ -1409,6 +1418,11 @@ class Sale extends Base
             "is_activity"=>0,
             "proof_id"=>0,
             "order_type"=>2,
+            'good_weight'=>$good['weight'],
+            'gold_price'=>$good['cgd_gold_price'],
+            'cost_price'=>$good['cost_fee'],
+            'diff_weight'=>0,
+            'diff_fee'=>0,
             "addtime"=>date("Y-m-d H:i:s"),
             "updatetime"=>date("Y-m-d H:i:s"),
             'total_price'=>round($sale_price*$data['good_num'],2),
@@ -1440,32 +1454,38 @@ class Sale extends Base
             if($good['is_stock']==0) {
                 $bol = $this->createCgd($cgd);
                 if ($bol == false) {
-                    return false;
+                    return 3;//关联采购失败
                 }
             }else{
 
-                    $dd=[
-                        "orderCode"=>$orderCode,
-                        "spuCode"=>$good['spuCode'],
-                        "total_num"=>$data['good_num'],
-                        "merge_num"=>0,
-                        "balance_num"=>$data['good_num'],
-                        "status"=>1,
-                        "is_del"=>0,
-                        "addtime"=>date("Y-m-d H:i:s"),
-                        "updatetime"=>date("Y-m-d H:i:s"),
+                    $stock =Db::name("good_stock")->alias("a")->leftJoin("warehouse_info b","a.wsm_code=b.wsm_code")->where
+                    (["spuCode"=>$good['spuCode'], "a.is_del"=>0,"a.status"=>1,"b.companyNo"=>$data['companyNo']])->field("a.id,a.usable_stock,a.wait_out_stock")->find();
+                    if($stock==false||$stock['usable_stock']<$data['good_num']){
+                        return 1; //库存不足
+                    }
+
+                $bol =$this->RelaCgd(['orderCode'=>$orderCode,"good_num"=>$data['good_num'],"spuCode"=>$good['spuCode'],"companyNo"=>$data['companyNo']]);
+                if($bol==false){
+                    return 3;//关联采购失败
+                }
+                if(isset($stock)){
+                    $stck = [
+                        "usable_stock"=>$stock['usable_stock']-$data['good_num'],
+                        "wait_out_stock"=>$stock['wait_out_stock']+$data['good_num'],
+                        "updatetime"=>date("Y-m-d H:i:s")
                     ];
-                    $db=Db::name("sale_bk")->insert($dd);
-                    if($db==false){
-                        return false;
+                    $upad=Db::name("good_stock")->where($stock)->update($stck);
+                    if($upad==false){
+                        return 2; //库存更新失败
                     }
+                    //商品变动日志表,good_log_code字段存储采购单号
+                    $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $datainfo, "type" => 2,'stock'=>$data['good_num'], "stock_name" => "usable_stock"];
+                    $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $datainfo, "type" => 1,'stock'=>$data['good_num'], "stock_name" => "wait_out_stock"];
+                    GoodLog::LogAdd($this->post['token'],$good_data,"XSQRD");
+                }
+
             }
                 if ($data['sendtype']==1&&!empty($data['addrlist'])) {
-//                    $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
-//                        ->find();
-//                    if ($order == false) {
-//                     return false;
-//                    }
                     foreach ($data['addrlist'] as $value) {
                         $temp = [];
                         $addrs = [];
@@ -1491,54 +1511,80 @@ class Sale extends Base
                         $temp['arrive_time'] = $data['arrtime'];
                         $vmp = Db::name('order_addr')->insert($temp, true);
                         if ($vmp > 0) {
-//                            if($good['is_stock']!=1){
-//                                $outCode = makeNo("CK");
-//                                $out = [
-//                                    "orderCode" => $orderCode,
-//                                    "outCode" => $outCode,
-//                                    "apply_id"=>$data['rm'],
-//                                    "apply_name"=>$data['ri'],
-//                                    "addrid" => $vmp,
-//                                    "post_name" => "",
-//                                    "post_code" => "",
-//                                    "post_fee" => 0,
-//                                    "sendtime" => date("Y-m-d H:i:s"),
-//                                    "send_num" => $value['receipt_quantity'],
-//                                    "check_num" => 0,
-//                                    "error_num" => 0,
-//                                    "wsm_code" => "",
-//                                    "order_type" => 4,
-//                                    "status" => 0,
-//                                    "addtime" => date("Y-m-d H:i:s"),
-//                                    "updatetime" => date("Y-m-d H:i:s")
-//                                ];
-//                                $ou = Db::name("order_out")->insert($out);
-//                                if ($ou == false) {
-//                                    return false;
-//                                }
-//                                $order['send_num'] += $value['receipt_quantity'];
-//                                $order['wsend_num'] -= $value['receipt_quantity'];
-//                                if ($order['wsend_num'] < 0) {
-//                                    return false;
-//                                }
-//                                $ups = Db::name("order_num")->save($order);
-//                                if ($ups) {
-//                                    $tep = [
-//                                        "cgdNo" => $order['cgdNo'],
-//                                        "outCode" => $outCode,
-//                                        "send_num" => $value['receipt_quantity'],
-//                                        "status" => 1,
-//                                        "addtime" => date("Y-m-d H:i:s"),
-//                                        "updatetime" => date("Y-m-d H:i:s")
-//                                    ];
-//                                    $sen = Db::name("order_send")->insert($tep);
-//                                    if ($sen == false) {
-//                                        return false;
-//                                    }
-//                                }
-//                            }
-                        } else {
-                            return false;
+                            if ($good['is_stock'] == 1) {
+                                $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
+                                    ->lock(true)->find();
+                                if ($order == false) {
+                                    return 3;
+                                }
+                                $num = $value['receipt_quantity'];
+                                $outCode = makeNo("DF");
+                                $order['wsend_num'] -= $num;
+                                $order['send_num'] += $num;
+                                $or = Db::name("order_num")->save($order);
+                                if ($or == false) {
+
+                                    return 3;
+                                }
+                                $tep = [
+                                    "cgdNo" => $order['cgdNo'],
+                                    "outCode" => $outCode,
+                                    "send_num" => $num,
+                                    "status" => 1,
+                                    "addtime" => date("Y-m-d H:i:s"),
+                                    "updatetime" => date("Y-m-d H:i:s")
+                                ];
+                                $sen = Db::name("order_send")->save($tep);
+                                if ($sen == false) {
+
+                                    return 3;
+                                }
+                                $cgdinfo = Db::name("purchease_order")->where(["cgdNo" => $order['cgdNo']])->find();
+                                if ($cgdinfo == false) {
+
+                                    return 4;
+                                }
+                                $out = [
+                                    "orderCode" => $orderCode,
+                                    "outCode" => $outCode,
+                                    "apply_id" => $data['rm'],
+                                    "apply_name" => $data['ri'],
+                                    "addrid" => $vmp,
+                                    "post_name" => "",
+                                    "post_code" => "",
+                                    "post_fee" => 0,
+                                    "sendtime" => date("Y-m-d H:i:s"),
+                                    "send_num" => $num,
+                                    "check_num" => 0,
+                                    "error_num" => 0,
+                                    "wsm_code" => $cgdinfo['wsm_code'],
+                                    "order_type" => 1,
+                                    "status" => 1,
+                                    "addtime" => date("Y-m-d H:i:s"),
+                                    "updatetime" => date("Y-m-d H:i:s")
+                                ];
+                                $ou = Db::name("order_out")->insert($out);
+                                if ($ou == false) {
+                                    return 0;
+                                } else {
+                                    //修改状态,添加待办
+                                    ActionLog::logAdd($this->post['token'], [
+                                        "order_code" => $outCode,//出库单号
+                                        "status" => 0,//这里的status是之前的值
+                                        "action_remark" => '',//备注
+                                        "action_type" => "create"//新建create,编辑edit,更改状态status
+                                    ], "CKD", 0, $out);
+
+                                    ProcessOrder::AddProcess($this->post['token'], [
+                                        "order_type" => 'CKD',
+                                        "order_code" => $outCode,//出库单号
+                                        "order_id" => 0,
+                                        "order_status" => 0
+                                    ]);
+                                }
+                            } else {
+                                return false;
+                            }
                         }
                     }
                 }
@@ -2848,12 +2894,18 @@ class Sale extends Base
         $ri = isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
         $sendtime = isset($this->post['sendtime']) && $this->post['sendtime'] !== "" ? $this->post['sendtime'] : date("Y-m-d H:i:s");
         $order =Db::name("order_num")->where(["orderCode"=>$orderCode,"status"=>1])->where([["wsend_num",">=",0]])
-            ->select()->toArray();
+            ->find();
         if(empty($order)){
             return error_show(1004,"未找到可以发货得采购单数据");
         }
         Db::startTrans();
         try {
+            $order =Db::name("order_num")->where(["orderCode"=>$orderCode,"status"=>1])->where([["wsend_num",">=",0]])
+                ->lock(true)->find();
+            if($order==false){
+                Db::rollback();
+                return error_show(1004,"未找到可以发货得采购单数据");
+            }
             $addrlst =[
                 "orderCode"=>$orderCode,
                 "addr"=>$addr,
@@ -2880,33 +2932,24 @@ class Sale extends Base
                         Db::rollback();
                         return error_show(1002,"出库单新建失败");
                     }
-                    $num = $send_num;
-                    $data=[];
-                    foreach ($order as $val){
+
                         $outCode = makeNo("DF");
-                        $cgd =Db::name("purchease_order")->where(["cgdNo"=>$val['cgdNo']])->find();
-                        $tep=[];
-                        $ornum=0;
-                        if($val['wsend_num']>=$num){
-                            $val['wsend_num']-=$num;
-                            $val['send_num']+=$num;
-                            $ornum =$num;
-                            $num=0;
-                        }else{
-                            $num-=$val['wsend_num'];
-                            $val['send_num']+=$val['wsend_num'];
-                            $ornum =$val['wsend_num'];
-                            $val['wsend_num']=0;
+                        $cgd =Db::name("purchease_order")->where(["cgdNo"=>$order['cgdNo']])->find();
+                        if($cgd==false){
+                            Db::rollback();
+                            return error_show(1002,"未找到对应的采购单数据");
                         }
-                        $or =Db::name("order_num")->save($val);
+                        $order['wsend_num']-=$send_num;
+                        $order['send_num']+=$send_num;
+                        $or =Db::name("order_num")->save($order);
                         if($or==false){
                             Db::rollback();
                             return error_show(1002,"发货地址添加创建失败");
                         }
                         $tep=[
-                            "cgdNo"=>$val['cgdNo'],
+                            "cgdNo"=>$order['cgdNo'],
                             "outCode"=>$outCode,
-                            "send_num"=>$ornum,
+                            "send_num"=>$send_num,
                             "status"=>1,
                             "addtime"=>date("Y-m-d H:i:s"),
                             "updatetime"=>date("Y-m-d H:i:s")
@@ -2916,7 +2959,7 @@ class Sale extends Base
                             Db::rollback();
                             return error_show(1002,"发货地址添加创建失败");
                         }
-                        $data[] = [
+                        $data = [
                             "wsm_code" => isset($cgd['wsm_code'])? $cgd['wsm_code']:"",
                             "orderCode" => $orderCode,
                             "outCode" => $outCode,
@@ -2928,63 +2971,58 @@ class Sale extends Base
                             "post_code" =>"",
                             "post_fee" => "",
                             "sendtime" => $sendtime,
-                            "send_num" => $ornum,
+                            "send_num" => $send_num,
                             "check_num" => 0,
                             "error_num" => 0,
                             "status" => 1,
                             "addtime" => date("Y-m-d H:i:s"),
                             "updatetime" => date("Y-m-d H:i:s")
                         ];
-                        //维护商品所在仓库的库存 --- start
-                        $temp = Db::name('good_stock')
-                            ->field('id,usable_stock,wait_out_stock')
-                            ->where(['spuCode' => $val['spuCode'], 'wsm_code' => $cgd['wsm_code']])
-                            ->find();
-                        if ($temp == false) {
-                            Db::rollback();
-                            return error_show(1004, '库存不足');
-                        }
+                        if($der['is_stock']==0){
+                            //维护商品所在仓库的库存 --- start
+                            $temp = Db::name('good_stock')
+                                ->field('id,usable_stock,wait_out_stock')
+                                ->where(['spuCode' => $der['spuCode'], 'wsm_code' => $cgd['wsm_code']])
+                                ->find();
+                            if ($temp == false) {
+                                Db::rollback();
+                                return error_show(1004, '库存不足');
+                            }
 
-                        if (($temp['usable_stock'] - $ornum) < 0) {
-                            Db::rollback();
-                            return error_show(1004, '库存不足');
-                        }
+                            if (($temp['usable_stock'] - $send_num) < 0) {
+                                Db::rollback();
+                                return error_show(1004, '库存不足');
+                            }
 
-                        $up =Db::name('good_stock')
-                            ->where('id', $temp['id'])
-                            ->update([
-                                'usable_stock' => $temp['usable_stock'] - $ornum,
-                                'wait_out_stock' => $temp['wait_out_stock'] + $ornum,
-                                'updatetime' => date('Y-m-d H:i:s'),
-                            ]);
-                        if($up==false){
-                            Db::rollback();
-                            return error_show(1004, '库存更新失败');
-                        }
-                        if($num==0){
-                            break;
+                            $up =Db::name('good_stock')
+                                ->where('id', $temp['id'])
+                                ->update([
+                                    'usable_stock' => $temp['usable_stock'] - $send_num,
+                                    'wait_out_stock' => $temp['wait_out_stock'] + $send_num,
+                                    'updatetime' => date('Y-m-d H:i:s'),
+                                ]);
+                            if($up==false){
+                                Db::rollback();
+                                return error_show(1004, '库存更新失败');
+                            }
                         }
-                    }
-                    $datainfo = Db::name('order_out')->insertAll($data);
-                    if($datainfo>0){
 
-                        foreach ($data as $k => $v_data) {
+                    $datainfo = Db::name('order_out')->insert($data,true);
+                    if($datainfo>0){
                             //修改状态,添加待办
                             ActionLog::logAdd($this->post['token'], [
-                                "order_code" => $v_data['outCode'],//出库单号
-                                "status" => $v_data['status'],//这里的status是之前的值
+                                "order_code" => $data['outCode'],//出库单号
+                                "status" => $data['status'],//这里的status是之前的值
                                 "action_remark" => '',//备注
                                 "action_type" => "create"//新建create,编辑edit,更改状态status
-                            ], "CKD", $v_data['status'], $v_data);
+                            ], "CKD", $data['status'], $data);
 
                             ProcessOrder::AddProcess($this->post['token'], [
                                 "order_type" => 'CKD',
-                                "order_code" => $v_data['outCode'],//出库单号
-                                "order_id" => 0,
-                                "order_status" => $v_data['status']
+                                "order_code" => $data['outCode'],//出库单号
+                                "order_id" => $datainfo,
+                                "order_status" => $data['status']
                             ]);
-                        }
-
                         Db::commit();
                         return app_show(0,"出库单新建成功");
                     }
@@ -3062,7 +3100,7 @@ class Sale extends Base
                         return error_show(1002, "超出库存数量");
                     }
                     $stokc['wait_out_stock']-=$outinfo['send_num'];
-                    $stokc['intra_stock']+=$outinfo['send_num'];
+                  //  $stokc['intra_stock']+=$outinfo['send_num'];
                     $stokc['updatetime']=date("Y-m-d H:i:s");
                 }
                 $stoc= Db::name("good_stock")->save($stokc);
@@ -3083,113 +3121,35 @@ class Sale extends Base
 
     }
     public function RelaCgd($outinfo){
-        $der = Db::name('sale')->where(['orderCode' => $outinfo['orderCode']])->find();
-        if ($der == "") {
-          return false;
-        }
-        if($der['is_stock']==1){
-            $cgd = Db::name("order_bk")->where([["spuCode","=",$der['spuCode']],["is_del","=",0],["balance_num",">",0]])
-                ->select()->toArray();
-            if(empty($cgd)){
-                return false;
-            }
-            $send =$outinfo['send_num'];
-            $outsend=[];
-            foreach ($cgd as $value){
-                $temp=[];
-                if($value['balance_num']>=$send){
-                    $value['balance_num']-=$send;
-                    $value['merge_num']+=$send;
-                    $send=0;
-                    $temp['send_num'] =$send;
-                }else{
-                    $value['balance_num'] =0;
-                    $value['merge_num']+=$value['balance_num'];
-                    $send -= $value['balance_num'];
-                    $temp['send_num'] =$value['balance_num'];
-                }
-                $value['status'] = $value['balance_num']==0 ?2:$value['merge_num']==0?0:1 ;
-                $value['updatetime'] = date("Y-m-d H:i:s");
-                $bk = Db::name("order_bk")->save($value);
-                if($bk==false){
-                    return false;
-                }
-                $temp['cgdNo'] = $value['cgdNo'];
-                $temp['outCode'] = $outinfo['outCode'];
-                $temp['status'] = 1;
-                $temp['addtime']=date("Y-m-d H:i:s");
-                $temp['updatetime']=date("Y-m-d H:i:s");
-                $outsend[]=$temp;
-                $order = Db::name("order_num")->where(["orderCode"=>$der['orderCode'],"cgdNo"=>$value['cgdNo'],"spuCode"=>$der['spuCode'],"status"=>1])->find();
-                if($order==false){
-                    $order=[
-                        "orderCode"=>$der['orderCode'],
-                        "cgdNo"=>$value['cgdNo'],
-                        "spuCode"=>$der['spuCode'],
-                        "good_num"=>$der['good_num'],
-                        "wsend_num"=>$der['good_num']-$temp['send_num'],
-                        "send_num"=>$temp['send_num'],
-                        "status"=>1,
-                        "source"=>1
-                    ];
-                }else{
-                    $order['wsend_num']-=$temp['send_num'];
-                    $order['send_num']+=$temp['send_num'];
-                }
-                if($order['wsend_num']<0){
-                    return false;
-                }
-                $up =Db::name("order_num")->save($order);
-                if($up==false){
-                    return false;
-                }
-                if($send==0){
-                    break;
-                }
-            }
-            if(empty($temp)){
+            $cgd = Db::name("order_bk")->where([["spuCode","=",$outinfo['spuCode']],["is_del","=",0],["balance_num",">=",
+                $outinfo['good_num']],['companyNo',"=",$outinfo['companyNo']]])->lock(true)->find();
+            if($cgd==false){
                 return false;
             }
-            $insert = Db::name("order_send")->insertAll($outsend);
-            if($insert){
-                return true;
-            }else{
+            $cgd['balance_num']-=$outinfo['good_num'];
+            $cgd['merge_num']+=$outinfo['good_num'];
+            $cgd['updatetime']=date("Y-m-d H:i:s");
+            $up=Db::name("order_bk")->save($cgd);
+            if($up==false){
                 return false;
             }
-        }else{
-            $order = Db::name("order_num")->where(["orderCode"=>$der['orderCode'],"spuCode"=>$der['spuCode'],
-                    "status"=>1])->find();
+            $data=[
+                "orderCode"=>$outinfo['orderCode'],
+                "cgdNo"=>$cgd['cgdNo'],
+                "spuCode"=>$outinfo['spuCode'],
+                "companyNo"=>$outinfo['companyNo'],
+                "good_num"=>$outinfo['good_num'],
+                "wsend_num"=>$outinfo['good_num'],
+                "send_num"=>0,
+                "wait_num"=>$outinfo['good_num'],
+                "status"=>1,
+                "source"=>1,
+            ];
+            $order =Db::name("order_num")->save($data);
             if($order==false){
                 return false;
-            }else{
-                if($outinfo['send_num']> $order['wsend_num']){
-                    return false;
-                }
-                $order['wsend_num']-=$outinfo['send_num'];
-                $order['send_num']+=$outinfo['send_num'];
-                if($order['wsend_num']<0){
-                    return false;
-                }
-                $up =Db::name("order_num")->save($order);
-                if($up==false){
-                    return false;
-                }
-                $temp=[];
-                $temp['cgdNo'] = $order['cgdNo'];
-                $temp['outCode'] = $outinfo['outCode'];
-                $temp['send_num'] =$outinfo['send_num'];
-                $temp['status'] = 1;
-                $temp['addtime']=date("Y-m-d H:i:s");
-                $temp['updatetime']=date("Y-m-d H:i:s");
-                $insert = Db::name("order_send")->insert($temp);
-                if($insert){
-                    return true;
-                }else{
-                    return false;
-                }
             }
-        }
-
+            return true;
         }
 
     public function addother(){