cqp před 2 měsíci
rodič
revize
d2ad7bafa5

+ 8 - 2
app/Service/ConstructionService.php

@@ -783,8 +783,14 @@ class ConstructionService extends Service
             if(empty($data['id'])) return [false,'ID不能为空'];
             $construction = Construction::where('del_time',0)
                 ->where('id',$data['id'])->first();
-            if(empty($construction)) return [false, '施工单单据不存在或已被删除'];
-            if($construction->state > Construction::STATE_ZERO) return [false,'请确认施工单单据状态,修改失败'];
+            if(empty($construction)) return [false, '施工单不存在或已被删除'];
+            $construction = $construction->toArray();
+            if($construction['state'] > Construction::STATE_ZERO) return [false,'请确认施工单单据状态,修改失败'];
+
+            //订单编辑提交限制
+            $current_top_depart_id = $this->getMyTopDepart($user);
+            list($status, $msg) = $this->returnOrderEditErrorCommon($current_top_depart_id, $construction['top_depart_id']);
+            if(! $status) return [false, $msg];
         }
 
         return [true, [$product_submit, $product_save]];

+ 5 - 0
app/Service/InventoryService.php

@@ -2,6 +2,7 @@
 
 namespace App\Service;
 
+use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\Inventory;
 use App\Model\InventorySub;
@@ -337,6 +338,10 @@ class InventoryService extends Service
             $order = $model->toArray();
             if($order['state'] != Inventory::STATE_ZERO) return [false, '请确认单据状态,编辑失败'];
             if($order['storehouse_id'] != $data['storehouse_id']) return [false, '仓库不允许编辑'];
+            //订单编辑提交限制
+            $current_top_depart_id = $this->getMyTopDepart($user);
+            list($status, $msg) = $this->returnOrderEditErrorCommon($current_top_depart_id, $order['top_depart_id']);
+            if(! $status) return [false, $msg];
         }
 
         //校验是否存在产品盘点

+ 9 - 0
app/Service/InvoiceOrderService.php

@@ -385,7 +385,16 @@ class InvoiceOrderService extends Service
             $data['order_number'] = $order_number;
         }else{
             if($this->isEmpty($data,'id')) return [false,'发货单ID不能为空!'];
+            $order = InvoiceOrder::where('del_time',0)->where('id',$data['id'])->first();
+            if(empty($order)) return [false,'发货单不存在或已被删除'];
+            $order = $order->toArray();
+            if(! in_array($order['state'], [InvoiceOrder::STATE_ZERO])) return [false, '请确认发货单状态,编辑失败'];
             if($this->isEmpty($data,'order_number')) return [false,'发货单号不能为空!'];
+
+            //订单编辑提交限制
+            $current_top_depart_id = $this->getMyTopDepart($user);
+            list($status, $msg) = $this->returnOrderEditErrorCommon($current_top_depart_id, $order['top_depart_id']);
+            if(! $status) return [false, $msg];
         }
 
         return [true, [$product_submit, $product_save]];

+ 4 - 0
app/Service/PaymentReceiptService.php

@@ -510,6 +510,10 @@ class PaymentReceiptService extends Service
             if(empty($booking)) return [false,'收付款单不存在或已被删除'];
             $booking = $booking->toArray();
             if(! in_array($booking['state'],[PaymentReceipt::STATE_ZERO,PaymentReceipt::State_minus_one])) return [false,'请确认收付款单状态,编辑失败'];
+            //订单编辑提交限制
+            $current_top_depart_id = $this->getMyTopDepart($user);
+            list($status, $msg) = $this->returnOrderEditErrorCommon($current_top_depart_id, $booking['top_depart_id']);
+            if(! $status) return [false, $msg];
         }
 
         list($status,$msg) = $this->checkRule($data);

+ 7 - 1
app/Service/PurchaseOrderService.php

@@ -797,7 +797,13 @@ class PurchaseOrderService extends Service
             if($this->isEmpty($data,'order_number')) return [false,'采购单号不能为空!'];
             $purchase = PurchaseOrder::where('del_time',0)->where('order_number',$data['order_number'])->first();
             if(empty($purchase)) return [false, '采购单不存在或已被删除'];
-            if($purchase->state > PurchaseOrder::STATE_ZERO) return [false,'请确认采购单单据状态,修改失败'];
+            $purchase = $purchase->toArray();
+            if($purchase['state'] > PurchaseOrder::STATE_ZERO) return [false,'请确认采购单单据状态,修改失败'];
+
+            //订单编辑提交限制
+            $current_top_depart_id = $this->getMyTopDepart($user);
+            list($status, $msg) = $this->returnOrderEditErrorCommon($current_top_depart_id, $purchase['top_depart_id']);
+            if(! $status) return [false, $msg];
 
             $sports_bag_id_save = PurchaseOrderInfo::where('del_time',0)
                 ->where('purchase_order_id',$data['id'])

+ 5 - 0
app/Service/ReturnExchangeOrderService.php

@@ -669,6 +669,11 @@ class ReturnExchangeOrderService extends Service
             if(empty($booking)) return [false,'退换货单不存在或已被删除'];
             $booking = $booking->toArray();
             if(! in_array($booking['state'],[ReturnExchangeOrder::State_zero,ReturnExchangeOrder::State_minus_one])) return [false,'请确认退换货单状态,编辑失败'];
+
+            //订单编辑提交限制
+            $current_top_depart_id = $this->getMyTopDepart($user);
+            list($status, $msg) = $this->returnOrderEditErrorCommon($current_top_depart_id, $booking['top_depart_id']);
+            if(! $status) return [false, $msg];
         }
 
         return [true, [$product_submit_minus,$product_save_minus]];

+ 4 - 0
app/Service/SalesOrderService.php

@@ -1197,6 +1197,10 @@ class SalesOrderService extends Service
             if(empty($order)) return [false,'合同不存在或已被删除'];
             $order = $order->toArray();
             if(! in_array($order['state'], [SalesOrder::State_minus_one,SalesOrder::State_zero])) return [false, '请确认合同状态,编辑失败'];
+            //订单编辑提交限制
+            $current_top_depart_id = $this->getMyTopDepart($user);
+            list($status, $msg) = $this->returnOrderEditErrorCommon($current_top_depart_id, $order['top_depart_id']);
+            if(! $status) return [false, $msg];
 
             $sports_bag_id_save = SalesOrderProductInfo::where('del_time',0)
                 ->where('sales_order_id',$data['id'])

+ 23 - 0
app/Service/Service.php

@@ -4,6 +4,7 @@ namespace App\Service;
 
 
 use App\Jobs\OperationLog;
+use App\Model\Depart;
 use App\Model\Employee;
 use Illuminate\Support\Facades\Redis;
 use Illuminate\Support\Facades\Storage;
@@ -402,6 +403,28 @@ class Service
         return $user['depart_select']['depart_id'];
     }
 
+    public function getMyTopDepart($user){
+        if(empty($user)) return 0;
+        //当前门店
+        $current_top_depart_id = $user['depart_top'][0] ?? [];
+        $current_top_depart_id = $current_top_depart_id['depart_id'] ?? 0;
+
+        return $current_top_depart_id;
+    }
+
+    public function returnOrderEditErrorCommon($current_top_depart_id, $order_top_depart_id){
+        if($current_top_depart_id != $order_top_depart_id){
+            $depart_map = Depart::whereIn('id', [$current_top_depart_id, $order_top_depart_id])
+                ->pluck('title', 'id')
+                ->toArray();
+            $current_top_depart_title = $depart_map[$current_top_depart_id] ?? "";
+            $order_top_depart_title = $depart_map[$order_top_depart_id] ?? "";
+            return [false, "单据所属门店:" . $order_top_depart_title . ",当前所在门店:" . $current_top_depart_title . ",操作失败"];
+        }
+
+        return [true, ''];
+    }
+
     public function getTopId($id, $data) {
         foreach ($data as $item) {
             if ($item['id'] == $id) {