|
|
@@ -4,14 +4,10 @@ namespace App\Services;
|
|
|
|
|
|
use App\Logistic;
|
|
|
use App\OracleActAllocationDetails;
|
|
|
-use App\OracleBasCustomer;
|
|
|
use App\OracleDOCASNHeader;
|
|
|
-use App\OracleDOCOrderDetail;
|
|
|
use App\OracleDOCOrderHeader;
|
|
|
use App\Order;
|
|
|
use App\OrderItems;
|
|
|
-use App\OrderPackage;
|
|
|
-use App\OrderPackageCommodities;
|
|
|
use App\Owner;
|
|
|
use App\RejectedBill;
|
|
|
use App\Shop;
|
|
|
@@ -104,4 +100,63 @@ class OrderService
|
|
|
}
|
|
|
return $this->findOrCreateByClientCode($orderHeader['soreference1']);
|
|
|
}
|
|
|
+
|
|
|
+ public function first(array $params){
|
|
|
+ $order = Order::query();
|
|
|
+ foreach ($params as $column => $value){
|
|
|
+ $order->where($column, $value);
|
|
|
+ }
|
|
|
+ return $order->first();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function logisticNumberCreateOrder($logistic_number)
|
|
|
+ {
|
|
|
+ /**
|
|
|
+ * @var OracleActAllocationDetailService
|
|
|
+ * @var OracleActAllocationDetails $actAllocationDetail
|
|
|
+ */
|
|
|
+ $actAllocationDetail = app('oracleActAllocationDetailService')->first(['picktotraceid' => $logistic_number]);
|
|
|
+ $order = $this->first(['code' => $actAllocationDetail->orderno]);
|
|
|
+ if ($order) return $order;
|
|
|
+
|
|
|
+
|
|
|
+ $actAllocationDetail->load(['oracleDocOrderHeader' => function ($query) {
|
|
|
+ $query->with('oracleBASCode');
|
|
|
+ }]);
|
|
|
+ $orderHeader = $actAllocationDetail->oracleDocOrderHeader ?? null;
|
|
|
+ if ($orderHeader == null) return null;
|
|
|
+
|
|
|
+ $owner = app('ownerService')->first(['code' => $orderHeader->customerid]);
|
|
|
+ if (!$owner) {
|
|
|
+ $orderHeader->load('oracleBASCustomer');
|
|
|
+ $customer_name = $orderHeader->oracleBASCustomer ? $orderHeader->oracleBASCustomer->descr_c : null;
|
|
|
+ /** @var OwnerService */
|
|
|
+ if ($customer_name) $owner = app('ownerService')->create(['code' => $orderHeader->customerid, 'name' => $customer_name]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $shop = null;
|
|
|
+ $shop_name = $orderHeader->issuepartyname;
|
|
|
+ if ($shop_name && $owner) {
|
|
|
+ $shop = app('shopService')->firstOrCreate(['name' => $shop_name, 'owner_id' => $owner->id]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $logistics = app('logisticService')->firstOrCreate(['code' => $orderHeader->carrierid],
|
|
|
+ ['code' => $orderHeader->carrierid, 'name' => $orderHeader->carriername]);
|
|
|
+
|
|
|
+ return Order::query()->create([
|
|
|
+ 'code' => $orderHeader->orderno,
|
|
|
+ 'owner_id' => $owner ? $owner->id : null,
|
|
|
+ 'wms_status' => $orderHeader->oracleBASCode ? $orderHeader->oracleBASCode->codename_c : null,
|
|
|
+ 'created_at' => $orderHeader->addtime,
|
|
|
+ 'logistic_id' => $logistics ? $logistics->id : null,
|
|
|
+ 'shop_id' => $shop ? $shop->id : null,
|
|
|
+ 'consignee_name' => $orderHeader->c_contact,
|
|
|
+ 'consignee_phone' => $orderHeader->c_tel2,
|
|
|
+ 'province' => $orderHeader->c_province,
|
|
|
+ 'city' => $orderHeader->c_city,
|
|
|
+ 'district' => $orderHeader->c_district,
|
|
|
+ 'address' => $orderHeader->c_address1,
|
|
|
+ 'client_code' => $orderHeader->soreference1,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
}
|