SyncPackageByOrderHeadersTest.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace Tests\Services\OrderPackageService\SyncPackageByOrderHeadersTest;
  3. use App\Logistic;
  4. use App\OracleDOCOrderHeader;
  5. use App\Owner;
  6. use App\Services\OracleDOCOrderHeaderService;
  7. use App\Services\OrderPackageService;
  8. use App\Services\OrderService;
  9. use App\Shop;
  10. use Illuminate\Foundation\Testing\RefreshDatabase;
  11. use Tests\TestCase;
  12. class SyncPackageByOrderHeadersTest extends TestCase
  13. {
  14. use RefreshDatabase;
  15. /**
  16. * @var OrderPackageService $service
  17. * @var OracleDOCOrderHeaderService $orderHeaderService
  18. * @var OrderService $orderService
  19. */
  20. public $service;
  21. public $orderService;
  22. public $orderHeaderService;
  23. public function setUp(): void
  24. {
  25. parent::setUp();
  26. $this->service = app('OrderPackageService');
  27. $this->orderService = app('OrderService');
  28. $this->orderHeaderService = app('OracleDocOrderHeaderService');
  29. }
  30. public function testSyncPackageByOrderHeaders()
  31. {
  32. /**
  33. * createOrDeletePackageByOrderHeader($orderHeaders)
  34. */
  35. $orderHeader = OracleDOCOrderHeader::query()
  36. ->with('actAllocationDetails')
  37. ->where('sostatus',99)
  38. ->orderByDesc('AddTime')
  39. ->first();
  40. $orderHeaders = OracleDOCOrderHeader::query()
  41. ->with('actAllocationDetails')
  42. ->where('sostatus',99)
  43. ->where('addtime','>=',$orderHeader->addtime)
  44. ->orderByDesc('AddTime')
  45. ->get();
  46. if ($orderHeaders->count() == 0) {
  47. $this->assertNull($orderHeaders);
  48. return;
  49. }
  50. Logistic::query()->firstOrCreate(['code'=>$orderHeader->userdefine1,'name'=>'']);
  51. $owner = Owner::query()->firstOrCreate(['code'=>$orderHeader->customerid,'name'=>'']);
  52. Shop::query()->firstOrCreate(['name'=>$orderHeader->issuepartyname,'owner_id'=>$owner->id]);
  53. app('WarehouseService')->firstOrCreate(["code"=>$orderHeader->warehouseid],["code"=>$orderHeader->warehouseid,"name"=>$orderHeader->warehouseid]);
  54. $this->orderService->syncOrderByWMSOrderHeaders($orderHeaders);
  55. $this->service->syncPackageByOrderHeaders($orderHeaders);
  56. $packages = $this->service->getByWmsOrders($orderHeaders);
  57. $order_nos = array_unique(data_get($orderHeaders, '*.actAllocationDetails.*.picktotraceid'));
  58. foreach ($order_nos as $order_no) {
  59. $this->assertNotEmpty($packages->where('logistic_number', $order_no));
  60. }
  61. }
  62. }