service = app('OrderPackageService'); $this->orderService = app('OrderService'); $this->orderHeaderService = app('OracleDocOrderHeaderService'); } /** * @test */ public function syncOrderPackage() { $orderHeader = OracleDOCOrderHeader::query()->orderByDesc('addTime')->first(); $orderHeaders = OracleDOCOrderHeader::query()->selectRaw(implode(',',OracleDOCOrderHeaderService::$columns)) ->with(['oracleBASCustomer'=>function($query){ $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag'); },'oracleDOCOrderDetails'=>function($query){ $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered'); }, 'actAllocationDetails'=>function($query){ $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku'); },'oracleBASCode'=>function($query){ $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code'); }]) ->where('DOC_Order_Header.addTime','>=',$orderHeader->addtime) ->orderByDesc('DOC_Order_Header.addTime') ->get(); $orders = $this->orderService->getByWmsOrders($orderHeaders); $packages = $this->service->getByWmsOrders($orderHeaders); $this->service->syncOrderPackage($orderHeaders,$orders,$packages); $exits_packages = $this->service->getByWmsOrders($orderHeaders); $exits_count = $exits_packages->count(); $logistic_numbers = data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid'); $logistic_numbers = array_unique(array_diff($logistic_numbers,['',' ','*'])); $this->assertEquals(count($logistic_numbers),$exits_count); foreach ($logistic_numbers as $logistic_number) { $exits_package = $exits_packages->where('logistic_number',$logistic_number); $this->assertEmpty($exits_package); $this->assertEquals($exits_package->count(),1); } } }