cqpCow 1 년 전
부모
커밋
9ebc52e929
1개의 변경된 파일69개의 추가작업 그리고 0개의 파일을 삭제
  1. 69 0
      app/Service/CheckService.php

+ 69 - 0
app/Service/CheckService.php

@@ -7,12 +7,14 @@ use App\Model\ConstructionProductInfo;
 use App\Model\InOutRecord;
 use App\Model\InvoiceOrder;
 use App\Model\InvoiceOrderInfo;
+use App\Model\Product;
 use App\Model\ProductInventory;
 use App\Model\PurchaseOrder;
 use App\Model\PurchaseOrderInfo;
 use App\Model\ReturnExchangeOrder;
 use App\Model\ReturnExchangeOrderProductInfo;
 use App\Model\SalesOrder;
+use App\Model\SalesOrderProductInfo;
 use App\Model\Setting;
 use Illuminate\Support\Facades\DB;
 
@@ -67,6 +69,11 @@ class CheckService extends Service
         self::six => 'recordReturnExchangeOrder'
     ];
 
+    //自动生成合同
+    public static $create = [
+        self::three => 'createPurchaseOrderSales', //分社合同生成
+    ];
+
     public function confirmInvoiceOrder($data){
         $model = InvoiceOrder::where('id',$data['id'])
             ->where('del_time',0)
@@ -148,6 +155,57 @@ class CheckService extends Service
         return [true,''];
     }
 
+    public function createPurchaseOrderSales($data, $order){
+        if(empty($order['is_purchase_to_main'])) return [true, ''];
+        $prefix = SalesOrder::$prefix[SalesOrder::Model_type_two];
+        $order_number = OrderNoService::createSalesOrderNumber($prefix);
+        $product = PurchaseOrderInfo::where('del_time',0)
+            ->where('purchase_order_id',$order['id'])
+            ->get()->toArray();
+        if(empty($product)) return [true, ''];
+
+        $model = new SalesOrder();
+        $model->model_type = SalesOrder::Model_type_two;
+        $model->sales_order_type = SalesOrder::Order_type_one;
+        $model->order_number = $order_number;
+        $model->crt_id = $order['crt_id'];
+        $model->depart_id = $order['depart_id'];
+        $model->top_depart_id = $order['top_depart_id'];
+        $model->other_fee = $order['other_fee'];
+        $model->discount_fee = $order['discount_fee'];
+        $model->contract_fee = $order['purchase_total'];
+        $model->save();
+
+        $pro = Product::whereIn('id',array_column($product,'product_id'))
+            ->select('cost','depart_price','id','retail_price')
+            ->get()->toArray();
+        $pro = array_column($pro,null,'id');
+
+        $insert = [];
+        foreach ($product as $value){
+            $tmp = $pro[$value['product_id']] ?? [];
+            $insert[] = [
+                'sales_order_id' => $model->id,
+                'product_id' => $value['product_id'],
+                'number' => $value['number'],
+                'price' => $value['price'],
+                'title' => $value['title'],
+                'code' => $value['code'],
+                'size' => $value['size'],
+                'unit' => $value['unit'],
+                'bar_code' => $value['bar_code'],
+                'cost' => $tmp['cost'] ?? 0,
+                'retail_price' => $tmp['retail_price'] ?? 0,
+                'depart_price' => $tmp['depart_price'] ?? 0,
+            ];
+        }
+
+        $bool = SalesOrderProductInfo::insert($insert);
+        if(! $bool) return [false,'合同生成失败!'];
+
+        return [true,''];
+    }
+
     public function confirmSalesOrder($data){
         $model = SalesOrder::where('id',$data['id'])->where('del_time',0)->first();
         if(empty($model)) return [false, '合同不存在或已被删除'];
@@ -275,6 +333,8 @@ class CheckService extends Service
         //具体方法
         $function = self::$opt_case[$data['opt_case']] ?? "";
         $record = self::$record[$data['opt_case']] ?? "";
+        $create = self::$create[$data['opt_case']] ?? "";
+
         try{
             DB::beginTransaction();
 
@@ -301,6 +361,15 @@ class CheckService extends Service
                 }
             }
 
+            //自动生成合同
+            if($create) {
+                $bool = $this->$create($data, $order);
+                if(! $bool) {
+                    DB::rollBack();
+                    return [false, $msg];
+                }
+            }
+
             DB::commit();
             return [true, ''];
         }catch (\Throwable $exception){