Browse Source

售后相关功能优化

wufeng 2 years ago
parent
commit
aeb08b1331

+ 28 - 5
app/admin/controller/After.php

@@ -1251,7 +1251,6 @@ class After extends Base
 
         if ($val->check($param) == false) return json_show(1004, $val->getError());
 
-
         $bkcode = $param['returnCode'];
         $company = $param['company'];
         $post_code = $param['post_code'];
@@ -1375,11 +1374,35 @@ class After extends Base
                         $upout = Db::name("order_out")->save($out);
                         if ($upout == false) throw new Exception('出库单数据更新失败');
 
-                        //发货工单
-                        Db::name('order_out_child')
+                        //发货工单,有可能会有多个,要按照顺序扣减发货数
+//                        Db::name('order_out_child')
+//                            ->where(['is_del' => 0, 'outCode' => $info["outCode"]])
+//                            ->dec('num', $info['error_num'])
+//                            ->update(['updatetime' => date("Y-m-d H:i:s")]);
+
+                        $error_num = $info['error_num'];
+                        $tmp_ooc = Db::name('order_out_child')
                             ->where(['is_del' => 0, 'outCode' => $info["outCode"]])
-                            ->dec('num', $info['error_num'])
-                            ->update(['updatetime' => date("Y-m-d H:i:s")]);
+                            ->field('id,num')
+                            ->select()
+                            ->toArray();
+                        foreach ($tmp_ooc as $tmp) {
+
+                            if ($tmp['num'] >= $error_num) {
+                                Db::name('order_out_child')
+                                    ->where(['is_del' => 0, 'id' => $tmp["id"]])
+                                    ->dec('num', $error_num)
+                                    ->update(['updatetime' => date("Y-m-d H:i:s")]);
+                                $error_num = 0;
+                            } else {
+                                Db::name('order_out_child')
+                                    ->where(['is_del' => 0, 'id' => $tmp["id"]])
+                                    ->update(['num' => 0, 'updatetime' => date("Y-m-d H:i:s")]);
+                                $error_num -= $tmp['num'];
+                            }
+                            if ($error_num == 0) break;
+
+                        }
 
                         //如果供应商承担,维护采购单
                         if ($info['return_tag'] == 1) {

+ 2 - 1
app/admin/controller/Reorder.php

@@ -852,7 +852,7 @@ class Reorder extends Base
 //            $info['is_th'] =$is_th ;
 //        }
 
-        if ($info['status'] == 9 && $param['status'] == 4) $info['is_th'] = 1;
+        if ( in_array($info['status'],[9,10]) && $param['status'] == 4) $info['is_th'] = 1;//除了8-11-12-4之外,其余9-4和10-4都属于供应商同意退货
 
         Db::startTrans();
         try {
@@ -1033,6 +1033,7 @@ class Reorder extends Base
                                 else $stock['wait_in_stock'] -= $info['num'];
 
                             } else {
+
                                 if ($stock['usable_stock'] + $stock['wait_out_stock'] < $info['num']) throw new Exception('商品可用库存不足退回数量');
                                 else {
 

+ 5 - 1
app/admin/controller/Sale.php

@@ -3727,7 +3727,7 @@ class Sale extends Base
             return error_show(1002, "参数orderCoder不能为空");
         }
         $retrun =Db::name("sale_return")->where([["orderCode","=",$orderCode],["is_del","=",0],["status","in",[1,2,3,
-        7,9,10]]])->count();
+        7,9,10,8,11,12]]])->count();
         if($retrun>0){
             return error_show(1005,"存在未完成退货订单数据");
         }
@@ -3872,6 +3872,7 @@ class Sale extends Base
                     "send_num" => $send_num,
                     "check_num" => 0,
                     "error_num" => 0,
+                    "send_status" => 1,
                     "status" => 1,
                     "addtime" => date("Y-m-d H:i:s"),
                     "updatetime" => date("Y-m-d H:i:s")
@@ -3922,6 +3923,9 @@ class Sale extends Base
                     //是否库存品,待办数据推送到的人有区别,
                     $process = [];
                     if ($data['status'] == 1) {
+
+                        if ($data['send_status'] == 1) OrderOutChild::makeChild($outCode);//尝试拆单
+
                         if ($der['is_stock'] == 1) {
                             //库存品,推给库管和库管-张凯旋
                             $roleid = config('app.wsm_cgder_role');

+ 1 - 1
app/admin/model/OrderOutChild.php

@@ -21,7 +21,7 @@ class OrderOutChild extends Model
         if ($outCode == '') throw new \Exception("工单发货单单号不能为空");
         $out = self::name("order_out")->where(["outCode" => $outCode, "is_del" => 0])->findOrEmpty();
         if ($out->isEmpty()) throw new \Exception("发货单信息未找到");
-        if ($out['send_status'] != 0) throw new \Exception("发货单拆单状态有误");
+        if ($out['send_status'] != 1) throw new \Exception("发货单拆单状态有误");
         $sale = self::name("sale")->where(["orderCode" => $out['orderCode'], "is_del" => 0])->findOrEmpty();
         if ($sale->isEmpty()) throw new \Exception("订单信息未找到");
         if ($sale['wsend_num'] < $out['send_num']) throw new \Exception("订单待发货数量不足");