|
|
@@ -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
|
|
|
}
|
|
|
}
|