RegroupOrderCommoditiesTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace Tests\Services\OrderPackageCommoditiesService\RegroupOrderCommoditiesTest;
  3. use App\Commodity;
  4. use App\OracleActAllocationDetails;
  5. use App\OracleBasSKU;
  6. use App\OracleDOCOrderHeader;
  7. use App\Order;
  8. use App\OrderPackage;
  9. use App\OrderPackageCommodities;
  10. use App\Owner;
  11. use App\Services\OracleDOCOrderHeaderService;
  12. use App\Services\OrderPackageCommoditiesService;
  13. use App\Services\OrderService;
  14. use Carbon\Carbon;
  15. use Illuminate\Foundation\Testing\RefreshDatabase;
  16. use Illuminate\Foundation\Testing\WithFaker;
  17. use Tests\TestCase;
  18. class RegroupOrderCommoditiesTest extends TestCase
  19. {
  20. use RefreshDatabase;
  21. /**
  22. * @var OrderPackageCommoditiesService $service
  23. */
  24. private $service;
  25. private $data = [];
  26. public function setUp(): void
  27. {
  28. parent::setUp();
  29. $this->service = app('OrderPackageCommoditiesService');
  30. $order = factory(Order::class)->create();
  31. $this->data['order'] = $order;
  32. $wmsOrderHeader = factory(OracleDOCOrderHeader::class)->make([
  33. 'customerid'=>'TEST_OW','sostatus'=>99,'userdefine1'=>'TEST_CA','warehouseid'=>'WH_TEST'
  34. ]);
  35. $this->data['orderHeader'] = $wmsOrderHeader;
  36. $orderPackage = factory(OrderPackage::class)->create(['order_id'=>$order->id]);
  37. $this->data['orderPackage'] = $orderPackage;
  38. $basSKUs = collect();
  39. for ($i = 0;$i<2;$i++){
  40. $basSKUs->push(factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']));
  41. }
  42. $owner =factory(Owner::class)->create(['code'=>'TEST_OW']);
  43. $this->data['owner'] = $owner;
  44. $this->data['commodities'] = collect();
  45. foreach ($basSKUs as $item) {
  46. $this->data['commodities']->push(factory(Commodity::class)->create(['owner_id'=>$owner->id,'sku'=>$item['sku']]));
  47. }
  48. $OracleActAllocationDetails = collect();
  49. foreach ($this->data['commodities'] as $commodity) {
  50. $OracleActAllocationDetails->push(factory(OracleActAllocationDetails::class)->make(
  51. ['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$commodity->sku,$orderPackage->logistic_number])
  52. );
  53. }
  54. $this->data['order_package_commodities'] = collect();
  55. foreach ($OracleActAllocationDetails as $OracleActAllocationDetail) {
  56. $commodity = $this->data['commodities']->where('sku',$OracleActAllocationDetail->sku)->first();
  57. $this->data['order_package_commodities']->push(factory(OrderPackageCommodities::class)->create(
  58. ['order_package_id'=>$orderPackage->id,'commodity_id'=>$commodity->id,'amount'=>$OracleActAllocationDetail->qty_each])
  59. );
  60. }
  61. $wmsOrderHeader->setRelation('actAllocationDetails',$OracleActAllocationDetails);
  62. }
  63. /**
  64. * @test
  65. */
  66. public function regroupOrderCommodities()
  67. {
  68. $order = $this->data['order'];
  69. $opc = OrderPackageCommodities::query()->with('package.order')->whereHas('package.order',function ($query)use($order){
  70. $query->where('code',$order->code);
  71. })->get();
  72. $params = $this->service->regroupOrderCommodities($opc);
  73. $this->assertNotNull($params);
  74. }
  75. public function tearDown(): void
  76. {
  77. $this->data['order']->delete();
  78. $this->data['orderHeader']->delete();
  79. $this->data['owner']->delete();
  80. foreach ($this->data['order_package_commodities'] as $order_package_commodity) {
  81. $order_package_commodity->delete();
  82. }
  83. foreach ($this->data['commodities'] as $commodity) {
  84. $commodity->delete();
  85. }
  86. parent::tearDown(); // TODO: Change the autogenerated stub
  87. }
  88. }