bind('orderPackageCommoditiesService', OrderPackageCommoditiesService::class); } public function createdByOrder(Order $order) { $orderPackageCommoditiesService = app('orderPackageCommoditiesService'); $actAllocationCount = OracleActAllocationDetails::where('OrderNo', $order['code'])->count(); $orderHeader = OracleDOCOrderHeader::where('OrderNo', $order['code'])->first(); $orderDetailCount = OracleDOCOrderDetail::where('OrderNo', $order['code'])->count(); $logistic_number = null; if ($actAllocationCount == 0) { // 通过oracle Order Detail $logistic_number = $orderHeader['soreference5']; if ($orderDetailCount == 0) {return null;} if ($logistic_number == null || $logistic_number == '*') { return null; } $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]); $orderPackageCommoditiesService->basedOnOracleDetailsStore($orderHeader['orderno'], $orderPackage); } else if ($actAllocationCount > 0) { $count = OracleActAllocationDetails::where('OrderNo', $order['code'])->whereNull('picktotraceid')->count(); if ($count > 0) { // 快递单号为空 if (($orderHeader['soreference5'] ?? false) && $orderHeader['soreference5'] == '*') { return null; } $logistic_number = $orderHeader['soreference5']; $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]); $orderPackageCommoditiesService->basedOnOracleDetailsStore($order, $orderPackage); } else { $ActAllocationDetails = OracleActAllocationDetails::where('orderno', $order['code'])->get(); foreach ($ActAllocationDetails as $detail) { $logistic_number = $detail['picktotraceid']; if ($logistic_number == null || $logistic_number == '*') { $logistic_number = $orderHeader['soreference5']; if ($logistic_number == null || $logistic_number == '*') return null; $orderPackage = OrderPackage::where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first(); if($orderPackage)continue; $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]); $orderPackageCommoditiesService->basedOnActAllocationDetailsStoreByOrderNo($order['code'], $orderPackage); continue; } $orderPackage = OrderPackage::where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first(); if ($orderPackage) continue; $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]); $orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage); } } } return OrderPackage::with(['commodities' => function ($query) { return $query->with(['commodity']); }])->get(); } }