Преглед изворни кода

修改Rejected 同步问题件

ajun пре 5 година
родитељ
комит
fcdcd5e8a8

+ 0 - 2
app/Http/Controllers/OrderIssueRejectedBillController.php

@@ -3,8 +3,6 @@
 namespace App\Http\Controllers;
 
 use App\OrderIssue;
-use App\OrderIssueRejectedBill;
-use App\RejectedBill;
 use App\Services\OrderIssueRejectedBillService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Gate;

+ 4 - 7
app/Http/Controllers/RejectedBillController.php

@@ -97,8 +97,6 @@ class RejectedBillController extends Controller
         $rejectedBill['id_operator'] = Auth::user()['id'];
         $rejectedBill->save();
         app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
-//        $rejectedBill->同步问题件退件状态();
-
         app('LogService')->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','id'=>$rejectedBill['id']];
     }
@@ -118,9 +116,7 @@ class RejectedBillController extends Controller
         $rejectedBill=RejectedBill::find($request->input('id'));
         $rejectedBill->fill($request->all());
         $rejectedBill->save();
-        app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
-//        $rejectedBill->同步问题件退件状态();
-
+        $rejectedBill->syncOrderIssue();
         app('LogService')->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true'];
     }
@@ -406,8 +402,9 @@ class RejectedBillController extends Controller
                 $rejectedBillItemService->insert($inner_items_params);
                 LogService::log(__METHOD__, "批量生成退货单详情", json_encode($inner_items_params), Auth::user()['id']);
             }
-            $rejectedBill_collect->each(function ($rejectedBill)use($service){
-                $service->syncOrderIssue($rejectedBill);
+            $rejectedBill_collect->each(function ($rejectedBill){
+                /** @var RejectedBill $rejectedBill */
+                $rejectedBill->syncOrderIssue();
             });
             return ['success'=>true];
         } catch (\Exception $e) {

+ 6 - 8
app/Http/Controllers/RejectedBillItemController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
 
 use App\Commodity;
 use App\Events\InformWMSReceivedEvent;
+use App\OrderIssue;
 use App\Owner;
 use App\RejectedBill;
 use App\RejectedBillItem;
@@ -95,9 +96,7 @@ class RejectedBillItemController extends Controller
 
 
         $rejectedBill = RejectedBill::query()->where('id',$request->input('id_rejected_bill'))->first();
-        app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
-//        $rejectedBIll->同步问题件();
-//        $rejectedBIll->同步问题件退件状态();
+        $rejectedBill->syncOrderIssue();     // 同步问题件 修改问题件退货状态
         app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','id'=>$rejectedBillItem['id']];
     }
@@ -118,9 +117,9 @@ class RejectedBillItemController extends Controller
             $rejectedBillItem->fill($request->all());
             $rejectedBillItem->update();
             //$rejectedBillItem->injectCommodityName();  Haozi 2020-12-09
-            $rejectedBill = RejectedBill::query()->where('id',$rejectedBillItem->id_rejected_bill)->with('orderIssue')->first();
-//            $rejectedBill->同步问题件退件状态();
-            app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
+            /** @var RejectedBill $rejectedBill */
+            $rejectedBill = RejectedBill::query()->where('id',$rejectedBillItem->id_rejected_bill)->first();
+            $rejectedBill->syncOrderIssue(); // 同步问题件 修改问题件退货状态
             app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return ['success'=>'true','id'=>$rejectedBillItem['id']];
         }
@@ -179,8 +178,7 @@ class RejectedBillItemController extends Controller
         }
         $item=$rejectedBillItems->first();
         $rejectedBill = RejectedBill::query()->find($item['id_rejected_bill']);
-        app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
-//        $rejectedBill->同步问题件();
+        $rejectedBill->syncOrderIssue();    // 同步问题件 修改问题件退货状态
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'请求处理退单:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
         $downloadedSkus = WMSReflectReceive::downloadedSkus($rejectedBill['logistic_number_return'],true);
         $isGotMoreThenDownloaded=WMSReflectReceiveSku::isItemsOverDownloadedSkus($rejectedBillItems,$downloadedSkus);

+ 2 - 0
app/Imports/RejectedImport.php

@@ -80,6 +80,7 @@ class RejectedImport implements ToCollection, WithHeadingRow
                     ]);
                     $item->save();
                 }
+                $bill->syncOrderIssue();
             }else{
                 $bill=new RejectedBill([
                     'id_owner'=>$id_owner,
@@ -89,6 +90,7 @@ class RejectedImport implements ToCollection, WithHeadingRow
                     'is_loaded'=>0,
                 ]);
                 $bill->save();
+                $bill->syncOrderIssue();
                 $item=RejectedBillItem::where('id_rejected_bill',$bill['id'])
                     ->where('barcode_goods',trim($barcode))->where('id_quality_label',$id_quality_label)->first();
                 if($item){

+ 30 - 0
app/RejectedBill.php

@@ -210,6 +210,7 @@ class RejectedBill extends Model
         if($orderIssue){
             $orderIssue->unJoinRejectedBill($this->logistic_number_return);
             $orderIssue->update(['is_new_rejecting'=>'无']);
+            $orderIssue->syncRejectingStatus();
         }
         return parent::delete(); // TODO: Change the autogenerated stub
     }
@@ -224,4 +225,33 @@ class RejectedBill extends Model
         if($order->consignee_phone)$this['mobile_sender'] ?: $this['mobile_sender'] =$order->consignee_phone;
         $this->save();
     }
+
+    public function syncOrderIssue()
+    {
+        if(isset($this->orderIssue)){
+            $this->orderIssue->syncRejectingStatus();
+            return;
+        }
+        /** @var OrderIssue $orderIssue */
+        $orderIssue = null;
+        // 原单退回
+        if($this->logistic_number === '原单退回' || $this->logistic_number_return){
+            $orderIssue = OrderIssue::query()->where('order_id',function ($query){
+                $query->from('order_packages')->selectRaw('order_id')->where('logistic_number',$this->logistic_number_return);
+            })->first();
+        }
+        if(!$orderIssue){
+            $orderHeader = OracleDOCOrderHeader::query()->selectRaw('OrderNO')->where('SoReference1', function ($query) {
+                $query->select('AsnReference2')->from('DOC_ASN_HEADER')->where('AsnReference3', $this->logistic_number_return)->first();
+            })->first();
+            if(!$orderHeader)return;
+            $orderIssue = OrderIssue::query()->where('order_id',function($query)use($orderHeader){
+                $query->from('orders')->select('id')->where('code',$orderHeader->orderno);
+            })->first();
+        }
+        if(!$orderIssue)return;
+        if(!OrderIssueRejectedBill::isExit($orderIssue->id,$this->logistic_number_return)) $orderIssue->update(['is_new_rejecting' => '有']);
+        $orderIssue->joinRejectedBill($this->logistic_number_return);
+        $orderIssue->syncRejectingStatus();
+    }
 }

+ 13 - 29
app/Services/OrderIssueRejectedBillService.php

@@ -3,7 +3,6 @@
 namespace App\Services;
 
 use App\Http\Controllers\Controller;
-use App\OracleDOCOrderHeader;
 use App\OrderIssue;
 use App\OrderIssueRejectedBill;
 use App\RejectedBill;
@@ -26,7 +25,7 @@ Class OrderIssueRejectedBillService
         if($orderIssueRejectedBill)return null;
         if(!OrderIssueRejectedBill::isExit($orderIssue->id,$logistic_number_return)) $orderIssue->update(['is_new_rejecting' => '有']);
         $orderIssue->joinRejectedBill($logistic_number_return);
-        $orderIssue->syncRejectingStatus();
+        $orderIssue->syncRejectingStatus();      // 问题件同步订单状态
         return OrderIssueRejectedBill::query()->with('rejectedBill')
                 ->where('order_issue_id',$orderIssue->id)
                 ->where('logistic_number_return',$logistic_number_return)->first() ?? false;
@@ -46,7 +45,7 @@ Class OrderIssueRejectedBillService
         if(!$orderIssueRejectedBill)return null;
 
         $bool = $orderIssue->unJoinRejectedBill($logistic_number_return);
-        $orderIssue->syncRejectingStatus();
+        $orderIssue->syncRejectingStatus();      // 问题件同步订单状态
         return $bool;
     }
 
@@ -63,7 +62,7 @@ Class OrderIssueRejectedBillService
             ->where('logistic_number_return',$logistic_number_return)->first();
         if($orderIssueRejectedBill) return null;
         $orderIssue->reviseJoinRejectedBill($logistic_number_return,$logistic_number_return_update);
-        $orderIssue->syncRejectingStatus();
+        $orderIssue->syncRejectingStatus();      // 问题件同步订单状态
         return OrderIssueRejectedBill::query()->with('rejectedBill')
                 ->where('order_issue_id',$orderIssue->id)
                 ->where('logistic_number_return',$logistic_number_return)->first() ?? false;
@@ -71,34 +70,19 @@ Class OrderIssueRejectedBillService
 
     /**
      * 退回件同步问题件
-     * @param RejectedBill $rejectedBill
+     * @param RejectedBill|Controller $rejectedBills
+     * @return void
      */
-    public function syncOrderIssue($rejectedBill)
+    public function syncOrderIssue($rejectedBills)
     {
-        if(!$rejectedBill)return;
-        if(!$rejectedBill->logistic_number_return)return;
-        if(isset($rejectedBill->orderIssue))return;
-        /** @var OrderIssue $orderIssue */
-        $orderIssue = null;
-        // 原单退回
-        if($rejectedBill->logistic_number === '原单退回' || $rejectedBill->logistic_number_return){
-            $orderIssue = OrderIssue::query()->where('order_id',function ($query)use($rejectedBill){
-                $query->table('order_packages')->selectRaw('order_id')->where('logistic_number',$rejectedBill->logistic_number_return);
-            })->first();
-        }
-        if(!$orderIssue){
-            $orderHeader = OracleDOCOrderHeader::query()->selectRaw('OrderNO')->where('SoReference1', function ($query) use ($rejectedBill) {
-                $query->select('AsnReference2')->from('DOC_ASN_HEADER')->where('AsnReference3', $rejectedBill->logistic_number_return)->first();
-            })->first();
-            if(!$orderHeader)return;
-            $orderIssue = OrderIssue::query()->where('order_id',function($query)use($orderHeader){
-                $query->table('orders')->select('id')->where('code',$orderHeader->orderno);
-            })->first();
+        if(!$rejectedBills)return;
+        if(is_array($rejectedBills)){
+            foreach ($rejectedBills as $rejectedBill) {
+                $rejectedBill->syncOrderIssue();
+            }
+            return;
         }
-        if(!$orderIssue)return;
-        if(!OrderIssueRejectedBill::isExit($orderIssue->id,$rejectedBill->logistic_number_return)) $orderIssue->update(['is_new_rejecting' => '有']);
-        $orderIssue->joinRejectedBill($rejectedBill->logistic_number_return);
-        $this->syncOrderIssueRejectingStatus($orderIssue);
+        $rejectedBills->syncOrderIssue();
     }
 
     /**

+ 5 - 34
app/Services/RejectedBillService.php

@@ -30,42 +30,13 @@ Class RejectedBillService
         return RejectedBill::query()->create($params);
     }
 
+    /**
+     * 同步退回单号
+     * @param RejectedBill $rejectedBill
+     */
     public function syncOrderIssue($rejectedBill)
     {
-        /**
-         * @var OrderIssue $orderIssue
-         */
-        $orderIssue = $rejectedBill->orderIssue()->first();
-        if (!$orderIssue && $rejectedBill['logistic_number'] === '原单退回') {   // 原单退回
-            $orderIssue = OrderIssue::query()->with('order')->whereHas('order', function ($query) use ($rejectedBill) {
-                $query->where('client_code', $rejectedBill['order_number']);
-            })->first();
-        } else if (!$orderIssue && isset($rejectedBill->logistic_number_return)) {
-            $orderIssue = OrderIssue::query()->with('order.packages')->whereHas('order.packages', function ($query) use ($rejectedBill) {
-                $query->where('logistic_number', $rejectedBill->logistic_number_return);
-            })->first();
-        }
-        if (!isset($orderIssue)) { // 没有对应的问题发货订单
-            $orderHeader = OracleDOCOrderHeader::query()->where('soreference1', function ($query) use ($rejectedBill) {
-                $query->select('asnreference2')->from('DOC_ASN_HEADER')->where('asnreference3', $rejectedBill->logistic_number_return)->first();
-            })->first();
-//                $orderHeader = OracleDOCOrderHeader::query()->where('soreference1',function($query)use($rejectedBill){
-//                    $query->select('asnreference2')->from('DOC_ASN_HEADER')->where('asnreference3',$rejectedBill->logistic_number_return)->first();
-//                })->first();
-            if (!isset($orderHeader)) return;
-            $orderIssue = OrderIssue::query()->with('order')->whereHas('order', function ($query) use ($orderHeader) {
-                $query->where('code', $orderHeader->orderno);
-            })->first();
-        }
-        if (isset($orderIssue)) {
-            // 更新问题件的退回单号
-            if ($orderIssue['logistic_number_return'] != $rejectedBill['logistic_number_return'])
-                $orderIssue->update(['logistic_number_return' => $rejectedBill['logistic_number_return']]);
-            //确认问题件有的时候需要更新状态和提示
-            $orderIssue->同步退单状态();
-            $orderIssue->update(['is_new_rejecting' => '有']);
-            app('LogService')->log(__METHOD__, __FUNCTION__, '退回单同步问题件' . json_encode($rejectedBill) . json_encode($orderIssue));
-        }
+        $rejectedBill->syncOrderIssue();
     }
 
     public function syncLoadedStatusByAsnHerder($asnHerders)

+ 1 - 2
resources/views/order/issue/index.blade.php

@@ -328,9 +328,8 @@
                         </td>
 
                         <td class="p-0 m-0 child-layer-3" v-if="!isShowRejectedBill && index === 0 " style="width:50px;" :rowspan="orderIssues.length" >
-                            <span class="btn btn-outline-secondary"  @click="showRejectedBill"  :style="orderIssue.length>4 ?'{height: 200px;line-height: 100px':''" >展开退单列</span>
+                            <span class="btn btn-outline-secondary"  @click="showRejectedBill" :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''">展开退单列</span>
                         </td>
-
                         <td class="p-0 child-layer-3-hide align-center" :id="orderIssue.id+'rejectedBill'" colspan="5" v-if="isShowRejectedBill">
                             <div v-if="orderIssue.order_issue_rejected_bills" class="m-0 p-0">
                                 <table class="table table-sm m-0" :class="orderIssue.rejected_bill_type_numbers > 2 ? 'collapse' : '' " :id="'rejectedBill'+orderIssue.id">