bind("orderPackageService", OrderPackageService::class); } public function findOrCreateByClientCode($clientCode) { $order = Order::query()->where('client_code', $clientCode)->first(); $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1', $clientCode)->first(); if ($orderHeader == null) { return null; } $orderHeadAttr = $orderHeader->toArray(); if ($order == null) { $customer_name = $orderHeadAttr['oracleBASCustomer_descr_c']; $owner = Owner::query()->where('code', $orderHeadAttr['customerid'])->first(); if (!$owner) { $owner = Owner::query()->create(['code' => $orderHeadAttr['customerid'], 'name' => $customer_name]); } $owner_id = $owner['id']; $shop_name = $orderHeadAttr['issuepartyname']; $shop_Id = null; if ($shop_name) { $shop = Shop::query()->firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]); $shop_Id = $shop['id']; } $logistics = Logistic::query()->where(['code' => $orderHeadAttr['carrierid']])->first(); $logistics_id = null; if ($logistics) { $logistics_id = $logistics['id']; } else { $logistics = Logistic::query()->create(['name'=>$orderHeadAttr['carriername'],'code'=>$orderHeadAttr['carrierid']]); $logistics_id = $logistics['id']; } $arr = [ 'code' => $orderHeadAttr['orderno'], 'owner_id' => $owner_id, 'wms_status' => $orderHeadAttr['oracleBASCode_codename_c'], 'created_at' => $orderHeadAttr['addtime'], 'logistic_id' => $logistics_id, 'shop_id' => $shop_Id, 'consignee_name' => $orderHeadAttr['c_contact'], 'consignee_phone' => $orderHeadAttr['c_tel2'], 'province' => $orderHeadAttr['c_province'], 'city' => $orderHeadAttr['c_city'], 'district' => $orderHeadAttr['c_district'], 'address' => $orderHeadAttr['c_address1'], 'client_code' => $orderHeadAttr['soreference1'], ]; $order = Order::query()->create($arr); $orderPackageService = app('orderPackageService'); $orderPackageService->createdByOrder($order); } return $this->getOrderInfo($order['id']); } public function getOrderInfo($orderId) { return Order::with('packages.commodities.commodity')->where('id', $orderId)->first(); } public function getRejectedBillOfClientCode($clientCode) { $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1', $clientCode)->first(); if (!$orderHeader) { return null; } $ASNHeader = OracleDOCASNHeader::query()->where('ASNReference2', $orderHeader->soreference2)->first(); if (!$ASNHeader) { return null; } return RejectedBill::query()->with(['owner', 'logistic', 'items'])->where('logistic_number_return', $ASNHeader->asnreference2)->first(); } public function findOrCreteByLogisticNumberReturn($logisticNumberReturn) { $ASNHeader = OracleDOCASNHeader::query()->where('ASNReference3', $logisticNumberReturn)->first(); if (!$ASNHeader) { return null; } $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1', $ASNHeader->ASNReference2); if (!$orderHeader) { return null; } 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]); if (!$actAllocationDetail) return null; $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; /** @var OwnerService $owner */ $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, ]); } }