RegroupOrderCommoditiesTest.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace Tests\Services\OrderPackageCommoditiesService\RegroupOrderCommoditiesTest;
  3. use App\OracleDOCOrderHeader;
  4. use App\Order;
  5. use App\OrderPackage;
  6. use App\OrderPackageCommodities;
  7. use App\Services\OracleDOCOrderHeaderService;
  8. use App\Services\OrderPackageCommoditiesService;
  9. use App\Services\OrderService;
  10. use Carbon\Carbon;
  11. use Illuminate\Foundation\Testing\RefreshDatabase;
  12. use Illuminate\Foundation\Testing\WithFaker;
  13. use Tests\TestCase;
  14. class RegroupOrderCommoditiesTest extends TestCase
  15. {
  16. use RefreshDatabase;
  17. /**
  18. * @var OrderPackageCommoditiesService $service
  19. * @var OracleDOCOrderHeaderService $orderHeaderService
  20. * @var OrderService $orderService
  21. */
  22. private $service;
  23. private $orderHeaderService;
  24. private $orderService;
  25. public function setUp(): void
  26. {
  27. parent::setUp();
  28. $this->service = app('OrderPackageCommoditiesService');
  29. $this->orderService = app('OrderService');
  30. $this->orderHeaderService = app('OracleDocOrderHeaderService');
  31. }
  32. public function testRegroupOrderCommodities()
  33. {
  34. $orderHeader = OracleDOCOrderHeader::query()->where('sostatus',99)->orderByDesc('AddTime')->first();
  35. if(!$orderHeader){
  36. $this->assertNull($orderHeader);
  37. return ;
  38. }
  39. $orderHeaders = OracleDOCOrderHeader::query()->where('sostatus',99)
  40. ->where('addtime','>=',$orderHeader->addtime)
  41. ->get();
  42. $this->orderService->syncOrder($orderHeaders);
  43. $order_nos = data_get($orderHeaders,'*.orderno');
  44. $order_commodities = OrderPackageCommodities::query()->with(['commodity','package.order'])->whereHas('package',function($query)use($order_nos){
  45. $query->whereHas('order',function ($query)use($order_nos){
  46. $query->whereIn('code',$order_nos);
  47. });
  48. })->get();
  49. $params = $this->service->regroupOrderCommodities($order_commodities);
  50. $_params = [];
  51. $orderHeaders->each(function($order_header)use(&$_params){
  52. $order_header->actAllocationDetails->each(function($detail)use(&$_params){
  53. $order_no = $detail->orderno;
  54. $logistic_number = $detail->picktotraceid;
  55. $sku = $detail->sku;
  56. $key = ' orderno='.$order_no.' logsitic_number='.$logistic_number.' sku='.$sku.' ';
  57. if(isset($_params[$key])){
  58. $_params[$key]['amount'] += $detail->qty_each;
  59. }else{
  60. $_params[$key] = [
  61. 'orderno'=>$order_no,
  62. 'logistic_number'=>$logistic_number,
  63. 'sku' => $sku,
  64. 'amount' => $sku,
  65. 'owner_code' => $detail->customerid
  66. ];
  67. }
  68. });
  69. });
  70. foreach ($_params as $key=>$param) {
  71. $this->assertNotEmpty($params[$key]);
  72. }
  73. }
  74. }