SyncOrderPackageTest.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace Tests\Services\OrderPackageService\SyncOrderPackageTest;
  3. use App\OracleDOCOrderHeader;
  4. use App\Services\OracleDOCOrderHeaderService;
  5. use App\Services\OrderPackageService;
  6. use App\Services\OrderService;
  7. use Carbon\Carbon;
  8. use Illuminate\Foundation\Testing\RefreshDatabase;
  9. use Illuminate\Foundation\Testing\WithFaker;
  10. use Tests\TestCase;
  11. class SyncOrderPackageTest extends TestCase
  12. {
  13. use RefreshDatabase;
  14. /**
  15. * @var OrderPackageService $service
  16. * @var OracleDOCOrderHeaderService $orderHeaderService
  17. * @var OrderService $orderService
  18. */
  19. public $service;
  20. public $orderService;
  21. public $orderHeaderService;
  22. public function setUp(): void
  23. {
  24. parent::setUp();
  25. $this->service = app('OrderPackageService');
  26. $this->orderService = app('OrderService');
  27. $this->orderHeaderService = app('OracleDocOrderHeaderService');
  28. }
  29. /**
  30. * @test
  31. */
  32. public function syncOrderPackage()
  33. {
  34. $orderHeader = OracleDOCOrderHeader::query()->orderByDesc('addTime')->first();
  35. $orderHeaders = OracleDOCOrderHeader::query()->selectRaw(implode(',',OracleDOCOrderHeaderService::$columns))
  36. ->with(['oracleBASCustomer'=>function($query){
  37. $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
  38. },'oracleDOCOrderDetails'=>function($query){
  39. $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered');
  40. }, 'actAllocationDetails'=>function($query){
  41. $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');
  42. },'oracleBASCode'=>function($query){
  43. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  44. }])
  45. ->where('DOC_Order_Header.addTime','>=',$orderHeader->addtime)
  46. ->orderByDesc('DOC_Order_Header.addTime')
  47. ->get();
  48. $orders = $this->orderService->getByWmsOrders($orderHeaders);
  49. $packages = $this->service->getByWmsOrders($orderHeaders);
  50. $this->service->syncOrderPackage($orderHeaders,$orders,$packages);
  51. $exits_packages = $this->service->getByWmsOrders($orderHeaders);
  52. $exits_count = $exits_packages->count();
  53. $logistic_numbers = data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid');
  54. $logistic_numbers = array_unique(array_diff($logistic_numbers,['',' ','*']));
  55. $this->assertEquals(count($logistic_numbers),$exits_count);
  56. foreach ($logistic_numbers as $logistic_number) {
  57. $exits_package = $exits_packages->where('logistic_number',$logistic_number);
  58. $this->assertEmpty($exits_package);
  59. $this->assertEquals($exits_package->count(),1);
  60. }
  61. }
  62. }