Browse Source

Merge branch 'wugg-dev' of wugg/phpstock into version1.5

wugg 2 years ago
parent
commit
106aed9711
2 changed files with 80 additions and 63 deletions
  1. 78 62
      app/admin/controller/Sale.php
  2. 2 1
      app/admin/model/Workflow.php

+ 78 - 62
app/admin/controller/Sale.php

@@ -548,9 +548,6 @@ class Sale extends Base
             return error_show(1002, "未找到数据");
         }
         $arrtime = isset($this->post['arrtime'])&&$this->post['arrtime']!="" ?$this->post['arrtime']:"";
-        if($arrtime==""){
-            return error_show(1004,"参数arrtime不能为空");
-        }
         $token = isset($this->post['token']) && $this->post['token'] !=="" ?trim($this->post['token']):"";
         $apply_id =GetUserInfo($token);
         if(empty($apply_id)||$apply_id['code']!=0){
@@ -586,41 +583,30 @@ class Sale extends Base
                 $temp['is_del'] =0;
                 $temp['addtime'] =date("Y-m-d H:i:s");
                 $temp['updatetime'] =date("Y-m-d H:i:s");
-                $temp['arrive_time']=$arrtime;
+                if($arrtime!=""){
+                    $temp['arrive_time']=$arrtime;
+                }
                 $vmp = Db::name('order_addr')->insert($temp,true);
                 if($vmp>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;
+                    $order =Db::name("order_num")->where(["orderCode"=>$orderCode,"status"=>1])->where([["wsend_num",">=",0]])
+                        ->find();
+                        if(empty($order)||$order['wsend_num']<$num){
+                            return error_show(1004,"未找到可以发货得采购单数据");
                         }
-                        $or =Db::name("order_num")->save($val);
+
+                        $outCode=makeNo("DF");
+                        $order['send_num']+=$num;
+                        $order['wsend_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")
@@ -630,11 +616,71 @@ 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,"未匹配到采购数据");
                         }
+
+                            //维护商品所在仓库的库存 --- start
+                            $temp = Db::name('good_stock')
+                                ->field('id,usable_stock,wait_out_stock')
+                                ->where(['spuCode' => $order['spuCode'], 'wsm_code' => $cgdinfo['wsm_code']])
+                                ->find();
+                        if($etid['is_stock']==1){
+                            if ($temp == false) {
+                                Db::rollback();
+                                return error_show(1004, '库存不足');
+                            }
+                            if (($temp['usable_stock'] - $num) < 0) {
+                                Db::rollback();
+                                return error_show(1004, '库存不足');
+                            }
+
+                            $up =Db::name('good_stock')
+                                ->where('id', $temp['id'])
+                                ->update([
+                                    'usable_stock' => $temp['usable_stock'] - $num,
+                                    'wait_out_stock' => $temp['wait_out_stock'] + $num,
+                                    'updatetime' => date('Y-m-d H:i:s'),
+                                ]);
+                            if($up==false){
+                                Db::rollback();
+                                return error_show(1004, '库存更新失败');
+                            }
+                            $good_data[] = ['good_log_code' =>$outCode, "stock_id" =>$temp['id'], "type" => 1,'stock'=>$num, "stock_name" => "wait_out_stock"];
+                            $good_data[] = ['good_log_code' =>$outCode, "stock_id" =>$temp['id'], "type" => 2,'stock'=>$num, "stock_name" => "usable_stock"];
+                            GoodLog::LogAdd($this->post['token'],$good_data,"CKD");
+                            $status=1;
+                        }else{
+                            if ($temp == false) {
+                                    $status=0;
+                            }else{
+                                if (($temp['usable_stock'] - $num) < 0) {
+                                    Db::rollback();
+                                    return error_show(1004, '库存不足');
+                                }
+
+                                $up =Db::name('good_stock')
+                                    ->where('id', $temp['id'])
+                                    ->update([
+                                        'usable_stock' => $temp['usable_stock'] - $num,
+                                        'wait_out_stock' => $temp['wait_out_stock'] + $num,
+                                        'updatetime' => date('Y-m-d H:i:s'),
+                                    ]);
+                                if($up==false){
+                                    Db::rollback();
+                                    return error_show(1004, '库存更新失败');
+                                }
+                                $good_data[] = ['good_log_code' =>$outCode, "stock_id" =>$temp['id'], "type" => 1,'stock'=>$num, "stock_name" => "wait_out_stock"];
+                                $good_data[] = ['good_log_code' =>$outCode, "stock_id" =>$temp['id'], "type" => 2,'stock'=>$num, "stock_name" => "usable_stock"];
+                                GoodLog::LogAdd($this->post['token'],$good_data,"CKD");
+                                $status=1;
+                            }
+                        }
+
+
+
                         $out=[
                             "orderCode"=>$orderCode,
                             "outCode"=>$outCode,
@@ -645,12 +691,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"=>1,
                             "wsm_code"=>$cgdinfo['wsm_code'],
                             "order_type"=>$etid['order_type'],
-                            "status"=>0,
+                            "status"=>$status,
                             "addtime"=>date("Y-m-d H:i:s"),
                             "updatetime"=>date("Y-m-d H:i:s")
                         ];
@@ -671,42 +717,12 @@ class Sale extends Base
                                 "order_type" => 'CKD',
                                 "order_code" => $outCode,//出库单号
                                 "order_id" => Db::name("order_out")->getLastInsID(),
-                                "order_status" => 0,"before_status"=> 0
+                                "order_status" => $status,"before_status"=> 0
                             ]);
                         }
 
-                        //维护商品所在仓库的库存 --- start
-                        $temp = Db::name('good_stock')
-                            ->field('id,usable_stock,wait_out_stock')
-                            ->where(['spuCode' => $val['spuCode'], 'wsm_code' => $cgdinfo['wsm_code']])
-                            ->find();
-                        if ($temp == false) {
-                            Db::rollback();
-                            return error_show(1004, '库存不足');
-                        }
-
-                        if (($temp['usable_stock'] - $ornum) < 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, '库存更新失败');
-                        }
                         //维护商品所在仓库的库存 --- end
 
-                        if($num==0){
-                            break;
-                        }
-                    }
 
                 }else{
                     Db::rollback();

+ 2 - 1
app/admin/model/Workflow.php

@@ -60,6 +60,7 @@ class Workflow extends \think\Model
     public  static function  Addwait($data){
         $conf =Config::get("process");
         $action = isset($conf[$data['order_type']]) ? $conf[$data['order_type']]:[];
+        $order_status=1 ;
         if(!empty($action)){
             $last =end($action);
             $wait="";
@@ -72,7 +73,7 @@ class Workflow extends \think\Model
                         break;
                     }else{
                         $wait=$data['action_process'];
-                        $order_status=2 ;
+                        $order_status=2;
                     }
                 }
             }