|
@@ -4,13 +4,10 @@ namespace App\Services;
|
|
|
|
|
|
|
|
use App\Logistic;
|
|
use App\Logistic;
|
|
|
use App\OracleActAllocationDetails;
|
|
use App\OracleActAllocationDetails;
|
|
|
-use App\OracleBasCustomer;
|
|
|
|
|
use App\OracleDOCASNHeader;
|
|
use App\OracleDOCASNHeader;
|
|
|
use App\OracleDOCOrderHeader;
|
|
use App\OracleDOCOrderHeader;
|
|
|
use App\Order;
|
|
use App\Order;
|
|
|
use App\OrderIssue;
|
|
use App\OrderIssue;
|
|
|
-use App\OrderPackage;
|
|
|
|
|
-use App\OrderPackageCommodities;
|
|
|
|
|
use App\Owner;
|
|
use App\Owner;
|
|
|
use App\RejectedBill;
|
|
use App\RejectedBill;
|
|
|
use App\Services\common\BatchUpdateService;
|
|
use App\Services\common\BatchUpdateService;
|
|
@@ -18,7 +15,7 @@ use App\Services\common\DataHandlerService;
|
|
|
use App\Shop;
|
|
use App\Shop;
|
|
|
use App\Warehouse;
|
|
use App\Warehouse;
|
|
|
use Carbon\Carbon;
|
|
use Carbon\Carbon;
|
|
|
-use Illuminate\Database\Eloquent\Collection;
|
|
|
|
|
|
|
+use Illuminate\Support\Collection;
|
|
|
use Illuminate\Support\Facades\App;
|
|
use Illuminate\Support\Facades\App;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
|
@@ -536,7 +533,6 @@ class OrderService
|
|
|
return Order::query()->whereIn('code',$order_nos)->get();
|
|
return Order::query()->whereIn('code',$order_nos)->get();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
public function getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map)
|
|
public function getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map)
|
|
|
{
|
|
{
|
|
|
$params = [];
|
|
$params = [];
|
|
@@ -755,4 +751,129 @@ class OrderService
|
|
|
$orders =$this->createByWmsOrder($orderHeaders);
|
|
$orders =$this->createByWmsOrder($orderHeaders);
|
|
|
return $orders ? $orders->first() : null ;
|
|
return $orders ? $orders->first() : null ;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // TODO
|
|
|
|
|
+ public function createOrderInfo($orderHeaders)
|
|
|
|
|
+ {
|
|
|
|
|
+ /** @var OrderPackageService $packageService */
|
|
|
|
|
+ $packageService = app("OrderPackageService");
|
|
|
|
|
+ $order_models = $this->createOrderByWMSOrderHeaders($orderHeaders);
|
|
|
|
|
+// $packageService->createPackageInfo($orderHeaders);
|
|
|
|
|
+ return $order_models;
|
|
|
|
|
+ }
|
|
|
|
|
+ // TODO
|
|
|
|
|
+ public function createOrderByWMSOrderHeaders($orderHeaders)
|
|
|
|
|
+ {
|
|
|
|
|
+ if($orderHeaders->isEmpty())return;
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @var OwnerService $ownerService
|
|
|
|
|
+ * @var LogisticService $logisticService
|
|
|
|
|
+ * @var ShopService $shopService
|
|
|
|
|
+ * @var WarehouseService $warehouseService
|
|
|
|
|
+ */
|
|
|
|
|
+ $ownerService = app("OwnerService");
|
|
|
|
|
+ $logisticService = app("LogisticService");
|
|
|
|
|
+ $shopService = app('ShopService');
|
|
|
|
|
+ $warehouseService = app('WarehouseService');
|
|
|
|
|
+
|
|
|
|
|
+ $owners = $ownerService->getByWmsOrders($orderHeaders);
|
|
|
|
|
+ $logistics = $logisticService->getByWmsOrders($orderHeaders);
|
|
|
|
|
+ $shops = $shopService->getByWmsOrders($orderHeaders);
|
|
|
|
|
+ $warehouses = $warehouseService->getByWmsOrders($orderHeaders);
|
|
|
|
|
+ $orders = $this->getByWmsOrders($orderHeaders);
|
|
|
|
|
+ $created_order = $this->getCreateOrderModelsByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops);
|
|
|
|
|
+ $update_order = $this->getUpdateOrderModelByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops);
|
|
|
|
|
+ $this->insert($created_order->map(function($item){
|
|
|
|
|
+ $array = $item->toArray();
|
|
|
|
|
+ unset($array['logisticNumbers'],$array['packages'],$array['commodityPackages'],$array['amount']);
|
|
|
|
|
+ return $array;
|
|
|
|
|
+ })->toArray());
|
|
|
|
|
+
|
|
|
|
|
+ $update_params = [
|
|
|
|
|
+ ['id','code','warehouse_id','owner_id','shop_id','logistic_id','consignee_name','consignee_phone','province','city','district','address','client_code','wms_status','created_at','updated_at','wms_edittime']
|
|
|
|
|
+ ];
|
|
|
|
|
+ $update_order->map(function ($item){
|
|
|
|
|
+ return $item->toArray();
|
|
|
|
|
+ })->each(function($item)use(&$update_params){
|
|
|
|
|
+ $update_params[] =$item;
|
|
|
|
|
+ });
|
|
|
|
|
+ $this->batchUpdate($update_params);
|
|
|
|
|
+ return $created_order->concat($update_order);
|
|
|
|
|
+ }
|
|
|
|
|
+ // TODO
|
|
|
|
|
+ public function getCreateOrderModelsByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops)
|
|
|
|
|
+ {
|
|
|
|
|
+ /** @var DataHandlerService $dataHandlerService */
|
|
|
|
|
+ $dataHandlerService = app('DataHandlerService');
|
|
|
|
|
+ $warehouse_map = $dataHandlerService->dataHeader(['code'],$warehouses);
|
|
|
|
|
+ $owner_map = $dataHandlerService->dataHeader(['code'],$owners);
|
|
|
|
|
+ $logistic_map = $dataHandlerService->dataHeader(['code'],$logistics);
|
|
|
|
|
+ $shop_map = $dataHandlerService->dataHeader(['name','owner_id'],$shops);
|
|
|
|
|
+ $order_map = $dataHandlerService->dataHeader(['code'],$orders);
|
|
|
|
|
+
|
|
|
|
|
+ $collect = collect();
|
|
|
|
|
+ foreach ($orderHeaders as $orderHeader) {
|
|
|
|
|
+ $order_no = $orderHeader->orderno;
|
|
|
|
|
+ $order = $dataHandlerService->getKeyValue(['code'=>$order_no],$order_map);
|
|
|
|
|
+ if(isset($order))continue;
|
|
|
|
|
+ $order_model = $this->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map);
|
|
|
|
|
+ $collect->push($order_model);
|
|
|
|
|
+ }
|
|
|
|
|
+ return $collect;
|
|
|
|
|
+ }
|
|
|
|
|
+ // TODO
|
|
|
|
|
+ public function getUpdateOrderModelByWMSOrderHeaders($orderHeaders,$orders,$warehouses,$owners,$logistics,$shops)
|
|
|
|
|
+ {
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @var DataHandlerService $dataHandlerService
|
|
|
|
|
+ * @var Order $order
|
|
|
|
|
+ */
|
|
|
|
|
+ $dataHandlerService = app('DataHandlerService');
|
|
|
|
|
+ $orderHeader_map = $dataHandlerService->dataHeader(['orderno'],$orderHeaders);
|
|
|
|
|
+ $warehouse_map = $dataHandlerService->dataHeader(['code'],$warehouses);
|
|
|
|
|
+ $owner_map = $dataHandlerService->dataHeader(['code'],$owners);
|
|
|
|
|
+ $logistic_map = $dataHandlerService->dataHeader(['code'],$logistics);
|
|
|
|
|
+ $shop_map = $dataHandlerService->dataHeader(['name','owner_id'],$shops);
|
|
|
|
|
+ $collect = collect();
|
|
|
|
|
+ foreach ($orders as $order) {
|
|
|
|
|
+ $orderHeader = $dataHandlerService->getKeyValue(['orderno'=>$order->code],$orderHeader_map);
|
|
|
|
|
+ if(!$orderHeader)continue;
|
|
|
|
|
+ $order_model = $this->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map);
|
|
|
|
|
+ if(!$order->isEquals($order_model)){
|
|
|
|
|
+ $order->assignValueByOrder($order_model);
|
|
|
|
|
+ $collect->push($order);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return $collect;
|
|
|
|
|
+ }
|
|
|
|
|
+ // TODO
|
|
|
|
|
+ public function getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map)
|
|
|
|
|
+ {
|
|
|
|
|
+ /** @var DataHandlerService $dataHandlerService */
|
|
|
|
|
+ $dataHandlerService = app('DataHandlerService');
|
|
|
|
|
+ $warehouse = $dataHandlerService->getKeyValue(['code'=>$orderHeader->warehouseid],$warehouse_map);
|
|
|
|
|
+ $owner = $dataHandlerService->getKeyValue(['code'=>$orderHeader->customerid],$owner_map);
|
|
|
|
|
+ $logistic = $dataHandlerService->getKeyValue(['code'=>$orderHeader->userdefine1],$logistic_map);
|
|
|
|
|
+ $shop = $dataHandlerService->getKeyValue(['name'=>$orderHeader->issuepartyname,'owner_id'=>$owner->id??null],$shop_map);
|
|
|
|
|
+ $date = Carbon::now();
|
|
|
|
|
+ return new Order( [
|
|
|
|
|
+ 'code'=>$orderHeader->orderno,
|
|
|
|
|
+ 'warehouse_id' => $warehouse->id ?? null,
|
|
|
|
|
+ 'owner_id' => $owner->id ?? null,
|
|
|
|
|
+ 'shop_id' => $shop->id ?? null,
|
|
|
|
|
+ 'logistic_id' =>$logistic->id ?? null,
|
|
|
|
|
+ 'consignee_name' => $orderHeader->c_contact,
|
|
|
|
|
+ 'consignee_phone' => empty($orderHeader->c_tel2)?$orderHeader->c_tel1:$orderHeader->c_tel2,
|
|
|
|
|
+ 'province' => $orderHeader->c_province,
|
|
|
|
|
+ 'city' => $orderHeader->c_city,
|
|
|
|
|
+ 'district' => $orderHeader->c_district,
|
|
|
|
|
+ 'address' => $orderHeader->c_address1,
|
|
|
|
|
+ 'client_code' => $orderHeader->soreference1,
|
|
|
|
|
+ 'wms_edittime' => $orderHeader->edittime,
|
|
|
|
|
+ 'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
|
|
|
|
|
+ 'updated_at' => $date,
|
|
|
|
|
+ 'created_at' => $orderHeader->addtime,
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|