where('order_issue_id',$orderIssue->id) ->where('logistic_number_return',$logistic_number_return)->first(); if($orderIssueRejectedBill)return null; $orderIssue->joinRejectedBill($logistic_number_return); return OrderIssueRejectedBill::query()->with('rejectedBill') ->where('order_issue_id',$orderIssue->id) ->where('logistic_number_return',$logistic_number_return)->first() ?? false; } /** * @param OrderIssue $orderIssue * @param $logistic_number_return * @return void|null|boolean */ public function unJoinRejectedBill($orderIssue,$logistic_number_return) { $orderIssueRejectedBill = OrderIssueRejectedBill::query() ->where('order_issue_id',$orderIssue->id) ->where('logistic_number_return',$logistic_number_return)->first(); if(!$orderIssueRejectedBill)return null; return $orderIssue->unJoinRejectedBill($logistic_number_return); } /** * @param OrderIssue $orderIssue * @param $logistic_number_return * @param $logistic_number_return_update * @return null|boolean|Builder|Model|object */ public function reviseJoinRejectedBill($orderIssue,$logistic_number_return,$logistic_number_return_update) { $orderIssueRejectedBill = OrderIssueRejectedBill::query()->where('order_issue_id',$orderIssue->id) ->where('logistic_number_return',$logistic_number_return)->first(); if($orderIssueRejectedBill) return null; $orderIssue->reviseJoinRejectedBill($logistic_number_return,$logistic_number_return_update); return OrderIssueRejectedBill::query()->with('rejectedBill') ->where('order_issue_id',$orderIssue->id) ->where('logistic_number_return',$logistic_number_return)->first() ?? false; } /** * 退回件同步问题件 * @param RejectedBill $rejectedBill */ public function syncOrderIssue($rejectedBill) { 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(!$orderIssue)return; $orderIssue->joinRejectedBill($rejectedBill->logistic_number_return); $this->syncOrderIssueRejectingStatus($orderIssue); } /** * 问题件同步退回件 * @param OrderIssue $orderIssue */ public function syncRejectedBill($orderIssue) { if(!$orderIssue)return; $order_packages = $orderIssue->order->packages ?? collect(); if(!$order_packages)return; $logistic_number_return = RejectedBill::query()->whereIn('logistic_number_return',$order_packages->map(function($rejectedBill){ return $rejectedBill->logistic_number_return; }))->get(); $orderIssue->joinRejectedBill($logistic_number_return); $this->syncOrderIssueRejectingStatus($orderIssue); } /** * 问题件更新退单状态 * @param OrderIssue $orderIssue */ public function syncOrderIssueRejectingStatus($orderIssue) { $orderIssue->syncRejectingStatus(); } /** * 根据问题件信息 * @param RejectedBill $rejectedBill */ public function updateByOrderIssue($rejectedBill) { $rejectedBill->syncOrderInfo(); } }