ajun 5 роки тому
батько
коміт
10bf4c3fda

+ 14 - 0
database/factories/OrderPackageCommoditiesFactory.php

@@ -0,0 +1,14 @@
+<?php
+
+/** @var \Illuminate\Database\Eloquent\Factory $factory */
+
+use App\OrderPackageCommodities;
+use Faker\Generator as Faker;
+
+$factory->define(OrderPackageCommodities::class, function (Faker $faker) {
+    return [
+        'order_package_id' => 1,
+        'commodity_id' => 1,
+        'amount' => rand(1,100)
+    ];
+});

+ 66 - 47
tests/Services/OrderPackageCommoditiesService/RegroupOrderCommoditiesTest.php

@@ -2,10 +2,14 @@
 
 namespace Tests\Services\OrderPackageCommoditiesService\RegroupOrderCommoditiesTest;
 
+use App\Commodity;
+use App\OracleActAllocationDetails;
+use App\OracleBasSKU;
 use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackage;
 use App\OrderPackageCommodities;
+use App\Owner;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderPackageCommoditiesService;
 use App\Services\OrderService;
@@ -20,66 +24,81 @@ class RegroupOrderCommoditiesTest extends TestCase
 
     /**
      * @var OrderPackageCommoditiesService $service
-     * @var OracleDOCOrderHeaderService $orderHeaderService
-     * @var OrderService $orderService
      */
     private $service;
-    private $orderHeaderService;
-    private $orderService;
+    private $data = [];
 
     public function setUp(): void
     {
         parent::setUp();
         $this->service = app('OrderPackageCommoditiesService');
-        $this->orderService = app('OrderService');
-        $this->orderHeaderService = app('OracleDocOrderHeaderService');
-    }
+        $order = factory(Order::class)->create();
+        $this->data['order'] = $order;
 
-    public function testRegroupOrderCommodities()
-    {
-        $orderHeader = OracleDOCOrderHeader::query()->where('sostatus',99)->orderByDesc('AddTime')->first();
-        if(!$orderHeader){
-            $this->assertNull($orderHeader);
-            return ;
+        $wmsOrderHeader = factory(OracleDOCOrderHeader::class)->make([
+            'customerid'=>'TEST_OW','sostatus'=>99,'userdefine1'=>'TEST_CA','warehouseid'=>'WH_TEST'
+        ]);
+        $this->data['orderHeader'] = $wmsOrderHeader;
+
+        $orderPackage = factory(OrderPackage::class)->create(['order_id'=>$order->id]);
+        $this->data['orderPackage'] = $orderPackage;
+
+        $basSKUs = collect();
+        for ($i = 0;$i<2;$i++){
+            $basSKUs->push(factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']));
+        }
+
+        $owner =factory(Owner::class)->create(['code'=>'TEST_OW']);
+        $this->data['owner'] = $owner;
+
+
+        $this->data['commodities'] = collect();
+        foreach ($basSKUs as $item) {
+            $this->data['commodities']->push(factory(Commodity::class)->create(['owner_id'=>$owner->id,'sku'=>$item['sku']]));
         }
 
-        $orderHeaders = OracleDOCOrderHeader::query()->where('sostatus',99)
-            ->where('addtime','>=',$orderHeader->addtime)
-            ->get();
+        $OracleActAllocationDetails = collect();
+        foreach ($this->data['commodities'] as $commodity) {
+            $OracleActAllocationDetails->push(factory(OracleActAllocationDetails::class)->make(
+                ['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$commodity->sku,$orderPackage->logistic_number])
+            );
+        }
 
-        $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);
-            });
+        $this->data['order_package_commodities'] = collect();
+        foreach ($OracleActAllocationDetails as $OracleActAllocationDetail) {
+            $commodity = $this->data['commodities']->where('sku',$OracleActAllocationDetail->sku)->first();
+            $this->data['order_package_commodities']->push(factory(OrderPackageCommodities::class)->create(
+                ['order_package_id'=>$orderPackage->id,'commodity_id'=>$commodity->id,'amount'=>$OracleActAllocationDetail->qty_each])
+            );
+        }
+        $wmsOrderHeader->setRelation('actAllocationDetails',$OracleActAllocationDetails);
+    }
+
+    /**
+     * @test
+     */
+    public function regroupOrderCommodities()
+    {
+        $order = $this->data['order'];
+        $opc = OrderPackageCommodities::query()->with('package.order')->whereHas('package.order',function ($query)use($order){
+            $query->where('code',$order->code);
         })->get();
+        $params = $this->service->regroupOrderCommodities($opc);
+        $this->assertNotNull($params);
 
-        $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]);
+    }
+
+    public function tearDown(): void
+    {
+        $this->data['order']->delete();
+        $this->data['orderHeader']->delete();
+        $this->data['owner']->delete();
+        foreach ($this->data['order_package_commodities'] as $order_package_commodity) {
+            $order_package_commodity->delete();
+        }
+        foreach ($this->data['commodities'] as $commodity) {
+            $commodity->delete();
         }
+        parent::tearDown(); // TODO: Change the autogenerated stub
     }
 }

+ 14 - 9
tests/Services/OrderPackageService/GetInnerParamsTest.php

@@ -3,18 +3,15 @@
 namespace Tests\Services\OrderPackageSerivce\GetInnerParamsTest;
 
 use App\Commodity;
-use App\Logistic;
 use App\OracleActAllocationDetails;
 use App\OracleBasSKU;
 use App\OracleDOCOrderHeader;
 use App\Order;
+use App\OrderPackage;
 use App\Owner;
-use App\Services\OracleDOCOrderHeaderService;
+use App\Services\common\DataHandlerService;
 use App\Services\OrderPackageService;
-use App\Services\OrderService;
-use App\Shop;
 use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
 use Tests\TestCase;
 
 class GetInnerParamsTest extends TestCase
@@ -29,7 +26,7 @@ class GetInnerParamsTest extends TestCase
     {
         parent::setUp();
         $this->service = app('OrderPackageService');
-        $orderHeader = factory(OracleDOCOrderHeader::class)->make();
+        $orderHeader = factory(OracleDOCOrderHeader::class)->make(['userdefine1' =>'TEST_OW' ]);
         $this->data['orderHeader'] = $orderHeader;
         $order = factory(Order::class)->create([
             'code'=>$orderHeader['orderno'],
@@ -44,7 +41,7 @@ class GetInnerParamsTest extends TestCase
         $orderHeader->setRelation('actAllocationDetails',$OracleActAllocationDetails);
         $this->data['actAllocationDetails'] = $OracleActAllocationDetails;
         $owner = factory(Owner::class)->create(['code'=>'TEST_OW']);
-        $commodity = factory(Commodity::class)->create(['code'=>$orderHeader['userdefine1'],'owner_id' => $owner]);
+        $commodity = factory(Commodity::class)->create(['sku'=>$basSku['sku'],'owner_id' => $owner]);
         $this->data['owner'] = $owner;
         $this->data['commodity'] = $commodity;
         $this->data['order'] = $order;
@@ -55,10 +52,18 @@ class GetInnerParamsTest extends TestCase
      */
     public function getInnerParamsTest()
     {
-        $params = $this->service->getInnerParams($this->data['orderHeader'],$this->data['order'],[]);
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService = app(DataHandlerService::class);
+        $order  = $this->data['order'];
+        $orderPackage = OrderPackage::query()->whereHas('order',function($query)use($order){
+            $query->where('code',$order['code']);
+        })->get();
+        $map = $dataHandlerService->dataHeader(['logistic_number'],$orderPackage);
+        $params = $this->service->getInnerParams($this->data['orderHeader'],$this->data['order'],$map);
         $orderPackages = collect($params);
+        dump($params,$this->data['actAllocationDetails']->toArray());
         foreach ($this->data['actAllocationDetails'] as $actAllocationDetail) {
-            $orderPackage = $orderPackages->where('logistic_number',$actAllocationDetail)->first();
+            $orderPackage = $orderPackages->where('logistic_number',$actAllocationDetail['picktotraceid'])->first();
             $this->assertNotNull($orderPackage);
         }
     }

+ 27 - 27
tests/Services/OrderPackageService/SyncOrderPackageTest.php

@@ -2,7 +2,12 @@
 
 namespace Tests\Services\OrderPackageService\SyncOrderPackageTest;
 
+use App\Commodity;
+use App\OracleActAllocationDetails;
+use App\OracleBasSKU;
 use App\OracleDOCOrderHeader;
+use App\Order;
+use App\Owner;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
@@ -23,6 +28,7 @@ class SyncOrderPackageTest extends TestCase
     public $service;
     public $orderService;
     public $orderHeaderService;
+    private $data = [];
 
     public function setUp(): void
     {
@@ -30,6 +36,26 @@ class SyncOrderPackageTest extends TestCase
         $this->service = app('OrderPackageService');
         $this->orderService = app('OrderService');
         $this->orderHeaderService = app('OracleDocOrderHeaderService');
+
+        $orderHeader = factory(OracleDOCOrderHeader::class)->make(['userdefine1' =>'TEST_OW' ]);
+        $this->data['orderHeader'] = $orderHeader;
+        $order = factory(Order::class)->create([
+            'code'=>$orderHeader['orderno'],
+        ]);
+
+        $basSku = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
+        $this->data['sku'] = $basSku;
+        $OracleActAllocationDetail1 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetail2 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetail3 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetails = collect([$OracleActAllocationDetail1,$OracleActAllocationDetail2,$OracleActAllocationDetail3]);
+        $orderHeader->setRelation('actAllocationDetails',$OracleActAllocationDetails);
+        $this->data['actAllocationDetails'] = $OracleActAllocationDetails;
+        $owner = factory(Owner::class)->create(['code'=>'TEST_OW']);
+        $commodity = factory(Commodity::class)->create(['sku'=>$basSku['sku'],'owner_id' => $owner]);
+        $this->data['owner'] = $owner;
+        $this->data['commodity'] = $commodity;
+        $this->data['order'] = $order;
     }
 
     /**
@@ -37,32 +63,6 @@ class SyncOrderPackageTest extends TestCase
      */
     public function syncOrderPackage()
     {
-        $orderHeader = OracleDOCOrderHeader::query()->orderByDesc('addTime')->first();
-        $orderHeaders = OracleDOCOrderHeader::query()->selectRaw(implode(',',OracleDOCOrderHeaderService::$columns))
-            ->with(['oracleBASCustomer'=>function($query){
-                $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
-            },'oracleDOCOrderDetails'=>function($query){
-                $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered');
-            }, 'actAllocationDetails'=>function($query){
-                $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku');
-            },'oracleBASCode'=>function($query){
-                $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
-            }])
-            ->where('DOC_Order_Header.addTime','>=',$orderHeader->addtime)
-            ->orderByDesc('DOC_Order_Header.addTime')
-            ->get();
-        $orders = $this->orderService->getByWmsOrders($orderHeaders);
-        $packages = $this->service->getByWmsOrders($orderHeaders);
-        $this->service->syncOrderPackage($orderHeaders,$orders,$packages);
-        $exits_packages  = $this->service->getByWmsOrders($orderHeaders);
-        $exits_count = $exits_packages->count();
-        $logistic_numbers = data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid');
-        $logistic_numbers = array_unique(array_diff($logistic_numbers,['',' ','*']));
-        $this->assertEquals(count($logistic_numbers),$exits_count);
-        foreach ($logistic_numbers as $logistic_number) {
-            $exits_package = $exits_packages->where('logistic_number',$logistic_number);
-            $this->assertEmpty($exits_package);
-            $this->assertEquals($exits_package->count(),1);
-        }
+
     }
 }

+ 0 - 31
tests/Services/OrderPackageService/SyncPackageByOrderHeadersTest.php

@@ -34,37 +34,6 @@ class SyncPackageByOrderHeadersTest extends TestCase
     }
     public function testSyncPackageByOrderHeaders()
     {
-        /**
-         * createOrDeletePackageByOrderHeader($orderHeaders)
-         */
-        $orderHeader = OracleDOCOrderHeader::query()
-            ->with('actAllocationDetails')
-            ->where('sostatus',99)
-            ->orderByDesc('AddTime')
-            ->first();
 
-        $orderHeaders = OracleDOCOrderHeader::query()
-            ->with('actAllocationDetails')
-            ->where('sostatus',99)
-            ->where('addtime','>=',$orderHeader->addtime)
-            ->orderByDesc('AddTime')
-            ->get();
-
-        if ($orderHeaders->count() == 0) {
-            $this->assertNull($orderHeaders);
-            return;
-        }
-
-        Logistic::query()->firstOrCreate(['code'=>$orderHeader->userdefine1,'name'=>'']);
-        $owner = Owner::query()->firstOrCreate(['code'=>$orderHeader->customerid,'name'=>'']);
-        Shop::query()->firstOrCreate(['name'=>$orderHeader->issuepartyname,'owner_id'=>$owner->id]);
-        app('WarehouseService')->firstOrCreate(["code"=>$orderHeader->warehouseid],["code"=>$orderHeader->warehouseid,"name"=>$orderHeader->warehouseid]);
-        $this->orderService->syncOrderByWMSOrderHeaders($orderHeaders);
-        $this->service->syncPackageByOrderHeaders($orderHeaders);
-        $packages = $this->service->getByWmsOrders($orderHeaders);
-        $order_nos = array_unique(data_get($orderHeaders, '*.actAllocationDetails.*.picktotraceid'));
-        foreach ($order_nos as $order_no) {
-            $this->assertNotEmpty($packages->where('logistic_number', $order_no));
-        }
     }
 }

+ 0 - 38
tests/Services/OrderTrackingService/CustomizedOperationTest.php

@@ -1,38 +0,0 @@
-<?php
-
-namespace Tests\Services\OrderTrakingSerive\CustomizedOperationTest;
-
-use App\OracleDOCOrderHeader;
-use App\Services\OrderTrackingService;
-use Carbon\Carbon;
-use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
-use Illuminate\Support\Collection;
-use Tests\TestCase;
-
-class CustomizedOperationTest extends TestCase
-{
-    use RefreshDatabase;
-
-    /** @var OrderTrackingService $service */
-    public $service;
-
-    public function setUp(): void
-    {
-        $this->service=app(OrderTrackingService::class);
-        parent::setUp();
-    }
-
-    public function testCustomizedOperation()
-    {
-        $orderHeader = OracleDOCOrderHeader::query()->where('consigneeid',"ZT")->orderByDesc('AddTime')->first();
-        $orderHeaders = OracleDOCOrderHeader::query()->where('consigneeid',"ZT")->where('addtime','>=',$orderHeader->addtime)->get();
-        $ZT_Count = $orderHeaders->count();
-        /** @var Collection $orderHeader */
-        $this->service->customizedOperation($orderHeaders);
-        $XJ_Count  = $orderHeaders->filter(function($orderHeader){
-            return $orderHeader->userdefine1 == 'XJWL';
-        })->count();
-        $this->assertEquals($ZT_Count,$XJ_Count);
-    }
-}