loustwo 4 лет назад
Родитель
Сommit
e2cc1d2a54

+ 8 - 0
app/Http/Controllers/TestController.php

@@ -10,6 +10,7 @@ use App\MaterialBoxModel;
 use App\Order;
 use App\OrderDetail;
 use App\OrderIssue;
+use App\OrderIssueRejectedBill;
 use App\RejectedBill;
 use App\Services\OrderRejectedBillRelationService;
 use App\Services\OrderRejectingStatusService;
@@ -125,5 +126,12 @@ values(?,?,null,?,?,?,?,?,?,2)",[$code,$a->id,$item->depth,$item->width,$item->h
         $query = Order::query()->select('id')->where('client_code','22011700000161');
         dd(OrderDetail::query()->whereIn('order_id',$query)->get());
     }
+
+    public function syncOrderIssue()
+    {
+        $count = OrderIssue::query()->with()->whereIn('is_new_rejecting',['有','已处理'])->count();
+        dd($count);
+
+    }
 }
 

+ 15 - 8
app/Services/OrderRejectingStatusService.php

@@ -15,8 +15,8 @@ class OrderRejectingStatusService
     //计算退回件问题
     public function rejectedBillSyncRejectingStatus(RejectedBill $rejectedBill)
     {
-        $query = OrderIssueRejectedBill::query()->select('order_id')->where('logistic_number_return',$rejectedBill->logistic_number_return);
-        $order = Order::query()->whereIn('id',$query)->first();
+        $query = OrderIssueRejectedBill::query()->select('order_id')->where('logistic_number_return', $rejectedBill->logistic_number_return);
+        $order = Order::query()->whereIn('id', $query)->first();
         $this->syncRejectingStatus($order);
     }
 
@@ -27,11 +27,18 @@ class OrderRejectingStatusService
     {
         if (!$order) return;
         $rejecting_status = $this->getOrderRejectingStatus($order);
-
-        OrderDetail::query()->updateOrCreate(
-            ['order_id' => $order->id,],
-            ['rejecting_status' => $rejecting_status,'is_new_rejecting' => $rejecting_status === '无' ? '无' : '有']
-        );
+        $order_detail = OrderDetail::query()->where('order_id', $order->id)->first();
+        if (!$order_detail) {
+            OrderDetail::query()->create(
+                ['order_id' => $order->id, 'is_new_rejecting' => '有', 'rejecting_status' => $rejecting_status === '无' ? '无' : '有']
+            );
+            return;
+        }
+        if (in_array($order_detail->is_new_rejecting, ['有', '已处理']) && $rejecting_status != '无') {
+            $order_detail->update(['rejecting_status' => $rejecting_status]);
+        } else {
+            $order_detail->update(['rejecting_status' => $rejecting_status, $rejecting_status => $rejecting_status === '无' ? '无' : '有']);
+        }
     }
 
     public function getOrderRejectingStatus(Order $order): string
@@ -52,7 +59,7 @@ class OrderRejectingStatusService
     {
         $rejected_bill_items = $this->getRejectedBillItems($order);
         $map = [];
-        if(count($rejected_bill_items) == 0) return $map;
+        if (count($rejected_bill_items) == 0) return $map;
         foreach ($rejected_bill_items as $item) {
             $code = $item->barcode_goods;
             $amount = $item->amount;

+ 1 - 1
resources/views/order/workOrder/index.blade.php

@@ -74,7 +74,7 @@
                                               class="badge badge-danger bg-warning text-break">滞</span>
                                     @endcan
                                     <span v-show="isLogisticHandler(item)" class="badge badge-success">承</span>
-                                    <span v-show="item.is_new_rejecting ==='回库'" class="badge badge-danger">退</span>
+                                    <span v-show="item.order_detail && ['有','已处理'].includes(item.order_detail.is_new_rejecting)" class="badge badge-danger">退</span>
                                     <br>
                                     <span class="badge badge-info" v-show="item.order_detail"
                                           v-text="item.order_detail ? item.order_detail.rejecting_status : ''"></span>