| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- namespace Tests\Services\OrderPackageCommoditiesService\RegroupOrderCommoditiesTest;
- use App\OracleDOCOrderHeader;
- use App\Order;
- use App\OrderPackage;
- use App\OrderPackageCommodities;
- use App\Services\OracleDOCOrderHeaderService;
- use App\Services\OrderPackageCommoditiesService;
- use App\Services\OrderService;
- use Carbon\Carbon;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Illuminate\Foundation\Testing\WithFaker;
- use Tests\TestCase;
- class RegroupOrderCommoditiesTest extends TestCase
- {
- use RefreshDatabase;
- /**
- * @var OrderPackageCommoditiesService $service
- * @var OracleDOCOrderHeaderService $orderHeaderService
- * @var OrderService $orderService
- */
- private $service;
- private $orderHeaderService;
- private $orderService;
- public function setUp(): void
- {
- parent::setUp();
- $this->service = app('OrderPackageCommoditiesService');
- $this->orderService = app('OrderService');
- $this->orderHeaderService = app('OracleDocOrderHeaderService');
- }
- public function testRegroupOrderCommodities()
- {
- $orderHeader = OracleDOCOrderHeader::query()->where('sostatus',99)->orderByDesc('AddTime')->first();
- if(!$orderHeader){
- $this->assertNull($orderHeader);
- return ;
- }
- $orderHeaders = OracleDOCOrderHeader::query()->where('sostatus',99)
- ->where('addtime','>=',$orderHeader->addtime)
- ->get();
- $this->orderService->syncOrder($orderHeaders);
- $order_nos = data_get($orderHeaders,'*.orderno');
- $order_commodities = OrderPackageCommodities::query()->with(['commodity','package.order'])->whereHas('package',function($query)use($order_nos){
- $query->whereHas('order',function ($query)use($order_nos){
- $query->whereIn('code',$order_nos);
- });
- })->get();
- $params = $this->service->regroupOrderCommodities($order_commodities);
- $_params = [];
- $orderHeaders->each(function($order_header)use(&$_params){
- $order_header->actAllocationDetails->each(function($detail)use(&$_params){
- $order_no = $detail->orderno;
- $logistic_number = $detail->picktotraceid;
- $sku = $detail->sku;
- $key = ' orderno='.$order_no.' logsitic_number='.$logistic_number.' sku='.$sku.' ';
- if(isset($_params[$key])){
- $_params[$key]['amount'] += $detail->qty_each;
- }else{
- $_params[$key] = [
- 'orderno'=>$order_no,
- 'logistic_number'=>$logistic_number,
- 'sku' => $sku,
- 'amount' => $sku,
- 'owner_code' => $detail->customerid
- ];
- }
- });
- });
- foreach ($_params as $key=>$param) {
- $this->assertNotEmpty($params[$key]);
- }
- }
- }
|