cqpCow 1 年之前
父節點
當前提交
4fd32de979
共有 2 個文件被更改,包括 89 次插入40 次删除
  1. 2 0
      app/Model/OrderOperation.php
  2. 87 40
      app/Service/CheckService.php

+ 2 - 0
app/Model/OrderOperation.php

@@ -32,6 +32,7 @@ class OrderOperation extends Model
     const seventeen = 17;
     const eighteen = 18;
     const nineteen = 19;
+    const twenty = 20;
 
     public static $type = [
         self::one => '指派销售',
@@ -53,5 +54,6 @@ class OrderOperation extends Model
         self::seventeen => '合同修改协同人',
         self::eighteen => '合同分配',
         self::nineteen => '合同移交',
+        self::twenty => '采购确认弃审',
     ];
 }

+ 87 - 40
app/Service/CheckService.php

@@ -70,7 +70,7 @@ class CheckService extends Service
     //改为待审核状态
     public static $opt_1case = [
         self::two => 'waitInvoice',//发货单
-        self::three => 'waitPurchase',//采购单 入库
+//        self::three => 'waitPurchase',//采购单 入库
         self::five => 'waitConstruction',//施工单
         self::six => 'waitReturnExchange',//退换货单
         self::seven => 'waitPurchaseConfirm', //采购单确认
@@ -78,6 +78,7 @@ class CheckService extends Service
     ];
 
     public static $finished = [
+        self::three => 'confirmPurchaseOrder',//采购单 入库
         self::four => 'settleSalesOrder', // 合同 安装件 合同公司完结
         self::nine => 'settleSalesOrderCustomer', // 合同 安装件 合同客户完结
     ];
@@ -85,7 +86,7 @@ class CheckService extends Service
     //单据操作
     public static $opt_case = [
         self::two => 'confirmInvoiceOrder',
-        self::three => 'confirmPurchaseOrder',
+//        self::three => 'confirmPurchaseOrder',
         self::five => 'confirmConstruction',
         self::six => 'confirmReturnExchangeOrder',
         self::seven => 'confirmPurchaseOrderState',
@@ -109,7 +110,8 @@ class CheckService extends Service
     //审核通过后 驳回
     public static $opt_case_reject = [
         self::four => 'reject_sales', // 合同
-        self::three => 'reject_purchase', //采购
+//        self::three => 'reject_purchase', //采购入库
+        self::seven => 'reject_purchase_confirm', //采购确认驳回
         self::five => 'reject_construction',//施工单
         self::six => 'reject_return_exchange',//退换货
     ];
@@ -142,6 +144,7 @@ class CheckService extends Service
         self::six => OrderOperation::ten, //退换货弃审
         self::five => OrderOperation::twl, //施工单弃审
         self::three => OrderOperation::fif,//采购单入库弃审
+        self::seven => OrderOperation::twenty,//采购单确认弃审
     ];
 
     //改为待审核---------------------------------
@@ -311,15 +314,9 @@ class CheckService extends Service
             ->where('del_time',0)
             ->first();
         if(empty($model)) return [false, '采购订单不存在或已被删除'];
-        if($model->state != PurchaseOrder::STATE_Three) return [false, '请确认采购订单状态,操作失败'];
-
-        if($data['type'] == self::TYPE_ONE){
-            $model->state = PurchaseOrder::STATE_Four;
-            $model->save();
-        }else{
-            $model->state = PurchaseOrder::STATE_TWO;
-            $model->save();
-        }
+        if($model->state != PurchaseOrder::STATE_TWO) return [false, '请确认采购订单状态,操作失败'];
+        $model->state = PurchaseOrder::STATE_Four;
+        $model->save();
 
         return [true, $model->toArray()];
     }
@@ -744,6 +741,20 @@ class CheckService extends Service
         return [true, $model->toArray()];
     }
 
+    public function reject_purchase_confirm($data){
+        $model = PurchaseOrder::where('order_number', $data['order_number'])
+            ->where('del_time',0)
+            ->first();
+        if(empty($model)) return [false, '采购单不存在或已被删除'];
+        //安装件
+        if($model->state != PurchaseOrder::STATE_TWO) return [false, '请确认采购单状态,操作失败'];
+
+        $model->state = PurchaseOrder::STATE_ZERO;
+        $model->save();
+
+        return [true, $model->toArray()];
+    }
+
     public function reject_construction($data){
         $model = Construction::where('order_number', $data['order_number'])
             ->where('del_time',0)
@@ -926,6 +937,7 @@ class CheckService extends Service
 
         //单据状态改为待审批方法
         $function = self::$opt_1case[$data['opt_case']] ?? '';
+        //单据不走审批流
         $function2 = self::$finished[$data['opt_case']] ?? '';
         try{
             DB::beginTransaction();
@@ -934,16 +946,7 @@ class CheckService extends Service
                 list($bool,$msg) = $this->$function2($data);
                 if($bool) {
                     $order = $msg;
-
-                    if(! empty(self::$operation_order2[$data['opt_case']])){
-                        $type = self::$operation_order2[$data['opt_case']];
-                        (new OrderOperationService())->add([
-                            'order_number' => $order['order_number'],
-                            'msg' => OrderOperation::$type[$type],
-                            'type' => $type
-                        ],$user);
-                    }
-
+                    $this->createRecordAndInventoryMy($data,$user,$order);
                     DB::commit();
                     return [true, ''];
                 }else{
@@ -952,27 +955,29 @@ class CheckService extends Service
                 }
             }
 
-            //更新单据的状态 从未审核变成待审核
-            list($bool,$msg) = $this->$function($data);
+            //从未审核变成待审核
+            if($function){
+                list($bool,$msg) = $this->$function($data);
 
-            if(! $bool){
-                DB::rollBack();
-                return [false, $msg];
-            }
+                if(! $bool){
+                    DB::rollBack();
+                    return [false, $msg];
+                }
 
-            //创建审批流
-            $args = [
-                'order_no' => $data['order_number'],
-                'menu_id' => $data['menu_id'] ?? 0,
-                'opt_case' => $data['opt_case'],
-                'order' => $msg,
-            ];
+                //创建审批流
+                $args = [
+                    'order_no' => $data['order_number'],
+                    'menu_id' => $data['menu_id'] ?? 0,
+                    'opt_case' => $data['opt_case'],
+                    'order' => $msg,
+                ];
 
-            $oa = new OaService($user);
-            list($bool,$msg) = $oa->createOaOrder($args);
-            if(! $bool) {
-                DB::rollBack();
-                if($msg) return [false,$msg];
+                $oa = new OaService($user);
+                list($bool,$msg) = $oa->createOaOrder($args);
+                if(! $bool) {
+                    DB::rollBack();
+                    if($msg) return [false,$msg];
+                }
             }
 
             DB::commit();
@@ -1282,4 +1287,46 @@ class CheckService extends Service
             }
         }
     }
+
+    //不需要走审批流 直接调用
+    public function createRecordAndInventoryMy($data = [],$user = [],$order = []){
+        if($data['type'] == self::TYPE_THREE){
+        }else{
+            //具体方法
+            $record = self::$record[$data['opt_case']] ?? "";
+            try{
+                DB::beginTransaction();
+
+                if($record) {
+                    //流水
+                    list($bool,$msg) = $this->$record($data, $order);
+                    if(! $bool) {
+                        DB::rollBack();
+                        return [false, $msg];
+                    }
+                    //库存
+                    list($bool,$msg) = $this->changeInventory($data, $order);
+                    if(! $bool) {
+                        DB::rollBack();
+                        return [false, $msg];
+                    }
+                }
+
+                if(! empty(self::$operation_order[$data['opt_case']])){
+                    $type = self::$operation_order[$data['opt_case']];
+                    (new OrderOperationService())->add([
+                        'order_number' => $order['order_number'],
+                        'msg' => OrderOperation::$type[$type],
+                        'type' => $type
+                    ],$user);
+                }
+
+                DB::commit();
+                return [true, ''];
+            }catch (\Throwable $exception){
+                DB::rollBack();
+                return [false, $exception->getMessage().$exception->getLine()];
+            }
+        }
+    }
 }