| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace App\Services;
- use App\OracleActAllocationDetails;
- use App\OracleDOCOrderDetail;
- use App\OracleDOCOrderHeader;
- use App\Order;
- use App\OrderPackage;
- class OrderPackageService
- {
- public function __construct()
- {
- app()->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();
- }
- }
|