GetCreateOrderModelsTest.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace Tests\Services\OrderService;
  3. use App\Batch;
  4. use App\Logistic;
  5. use App\OracleBasCode;
  6. use App\OracleDOCOrderHeader;
  7. use App\Order;
  8. use App\Owner;
  9. use App\Services\common\DataHandlerService;
  10. use App\Services\OrderService;
  11. use App\Shop;
  12. use App\Warehouse;
  13. use Carbon\Carbon;
  14. use Illuminate\Foundation\Testing\RefreshDatabase;
  15. use Illuminate\Foundation\Testing\WithFaker;
  16. use Tests\TestCase;
  17. class GetCreateOrderModelsTest extends TestCase
  18. {
  19. // use RefreshDatabase;
  20. /**
  21. * @var OrderService $service
  22. * @var DataHandlerService $dataHandlerService
  23. */
  24. private $service;
  25. private $dataHandlerService;
  26. private $data = [];
  27. public function setUp(): void
  28. {
  29. parent::setUp(); // TODO: Change the autogenerated stub
  30. $this->service = app('OrderService');
  31. $this->dataHandlerService = app('DataHandlerService');
  32. $owners = factory(Owner::class)->times(20)->create();
  33. $this->data['owners'] = $owners;
  34. $logistics = factory(Logistic::class)->times(30)->create();
  35. $wareHouses = factory(Warehouse::class)->times(2)->create();
  36. $batches = factory(Batch::class)->times(10)->create();
  37. $this->data['logistics'] = $logistics;
  38. $this->data['wareHouses'] = $wareHouses;
  39. $shops = collect();
  40. foreach ($owners as $owner) {
  41. $shops = $shops->concat(factory(Shop::class)->times(rand(1,11))->create(['owner_id'=>$owner->id]));
  42. }
  43. $this->data['shops'] = $shops;
  44. $orderHeaders = collect();
  45. $basBack = factory(OracleBasCode::class)->times(5)->make();
  46. for ($i=0;$i<= 3000;$i++) {
  47. $owner = $owners->random();
  48. $shop = $shops->where('owner_id',$owner->id)->random();
  49. $logistic = $logistics->random();
  50. $wareHouse = $wareHouses->random();
  51. $batch = $batches->random();
  52. $orderHeader = factory(OracleDOCOrderHeader::class)->make();
  53. $orderHeader->customerid = $owner->code;
  54. $orderHeader->waveno = $batch->code;
  55. $orderHeader->warehouseid = $wareHouse->code;
  56. $orderHeader->userdefine1 = $logistic->code;
  57. $orderHeader->issuepartyname = $shop->code;
  58. $orderType = $basBack->random();
  59. $oracleBASCode = $basBack->random();
  60. $orderHeader->setRelation('orderType',$orderType);
  61. $orderHeader->setRelation('oracleBASCode',$oracleBASCode);
  62. $orderHeaders->push($orderHeader);
  63. }
  64. $this->data = [
  65. 'owners' => $owners,
  66. 'logistics' => $logistics,
  67. 'wareHouses' => $wareHouses,
  68. 'shops' => $shops,
  69. 'orderHeaders' => $orderHeaders,
  70. 'batches' => $batches,
  71. ];
  72. }
  73. /**
  74. * @test
  75. */
  76. public function getCreateOrderModels()
  77. {
  78. // is progressing
  79. // Mission in progress
  80. $orderHeader_map =$this->data['orderHeaders'];
  81. $warehouse_map = $this->dataHandlerService->dataHeader(['code'],$this->data['wareHouses']);
  82. $owner_map = $this->dataHandlerService->dataHeader(['code'],$this->data['owners']);
  83. $logistic_map = $this->dataHandlerService->dataHeader(['code'],$this->data['logistics']);
  84. $shop_map = $this->dataHandlerService->dataHeader(['name','owner_id'],$this->data['shops']);
  85. $batch_map = $this->dataHandlerService->dataHeader(['code'],$this->data['batches']);
  86. $date = (string)Carbon::now();
  87. dump((string)Carbon::now());
  88. foreach ($orderHeader_map as $orderHeader) {
  89. $param = $this->service->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map,$batch_map,$date);
  90. $warehouse = $this->dataHandlerService->getKeyValue(['code'=>$orderHeader->warehouseid],$warehouse_map);
  91. $owner = $this->dataHandlerService->getKeyValue(['code'=>$orderHeader->customerid],$owner_map);
  92. $logistic = $this->dataHandlerService->getKeyValue(['code'=>$orderHeader->userdefine1],$logistic_map);
  93. $batch = $this->dataHandlerService->getKeyValue(['code'=>$orderHeader->waveno],$batch_map);
  94. $shop['id'] = null;
  95. if($orderHeader->issuepartyname != null && $orderHeader->issuepartyname != '' ){
  96. $shop = $this->dataHandlerService->getKeyValue(['name'=>$orderHeader->issuepartyname ?? '','owner_id'=>$owner->id??''],$shop_map);
  97. }
  98. $this->assertEquals($param['code'],$orderHeader['orderno']);
  99. $this->assertEquals($param['batch_id'],$batch['id'] ?? null);
  100. $this->assertEquals($param['warehouse_id'],$warehouse['id'] ?? null);
  101. $this->assertEquals($param['owner_id'],$owner['id'] ?? null);
  102. $this->assertEquals($param['shop_id'],$shop['id'] ?? null);
  103. $this->assertEquals($param['logistic_id'],$logistic['id'] ?? null);
  104. $this->assertEquals($param['consignee_name'], $orderHeader['c_contact']);
  105. $this->assertEquals($param['consignee_phone'],$orderHeader['c_tel2'] ?? $orderHeader['c_tel1']);
  106. $this->assertEquals($param['city'],$orderHeader['c_city']);
  107. $this->assertEquals($param['district'],$orderHeader['c_district']);
  108. $this->assertEquals($param['address'],$orderHeader['c_address1']);
  109. $this->assertEquals($param['client_code'],$orderHeader['soreference1']);
  110. $this->assertEquals($param['wms_edittime'], $orderHeader['edittime']);
  111. $this->assertEquals($param['wms_status'],$orderHeader->oracleBASCode->codename_c??'');
  112. $this->assertEquals($param['order_type'],$orderHeader->orderType->codename_c??'');
  113. }
  114. dump((string)Carbon::now());
  115. }
  116. public function tearDown(): void
  117. {
  118. Order::query()->whereIn('code',data_get($this->data['orderHeaders'],'*.orderno'));
  119. Warehouse::query()->whereIn('id',data_get($this->data['wareHouses'],'*.id'));
  120. Owner::query()->whereIn('id',data_get($this->data['owners'],'*.id'));
  121. Logistic::query()->whereIn('id',data_get($this->data['logistics'],'*.id'));
  122. Shop::query()->whereIn('id',data_get($this->data['shops'],'*.id'));
  123. Batch::query()->whereIn('id',data_get($this->data['batches'],'*.id'));
  124. parent::tearDown(); // TODO: Change the autogenerated stub
  125. }
  126. }