RegroupOrderCommoditiesTest.php 3.6 KB

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