From 03938681d30bf03dd11fe31955a5f505cf9772cd Mon Sep 17 00:00:00 2001 From: kaioken Date: Thu, 21 Dec 2023 23:41:13 -0400 Subject: [PATCH 1/3] refact: update warehouse --- .../Actions/ProductImporterAction.php | 29 ++++++++++++------- .../Variants/Actions/AddToWarehouseAction.php | 6 ++-- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php b/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php index 80e586f025..16d6760178 100644 --- a/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php +++ b/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php @@ -35,6 +35,7 @@ use Kanvas\Inventory\Variants\DataTransferObject\VariantsWarehouses; use Kanvas\Inventory\Variants\Models\Variants as VariantsModel; use Kanvas\Inventory\Variants\Models\VariantsWarehouses as ModelsVariantsWarehouses; +use Kanvas\Inventory\Variants\Services\VariantService; use Kanvas\Inventory\Warehouses\Actions\CreateWarehouseAction; use Kanvas\Inventory\Warehouses\DataTransferObject\Warehouses; use Throwable; @@ -394,19 +395,27 @@ public function addVariantsToLocation(VariantsModel $variantModel): void 'is_published' => $this->importedProduct->isPublished, ]); - (new AddToWarehouseAction( - $variantModel, - $warehouse, - VariantsWarehouses::from([ + $variantWarehouses = ModelsVariantsWarehouses::where('products_variants_id', $variantModel->getId()) + ->where('warehouses_id', $warehouse->getId()) + ->first(); + + if (! $variantWarehouses) { + $variantWarehouses = (new AddToWarehouseAction( + $variantModel, + $warehouse, + VariantsWarehouses::from([ + 'quantity' => $variantData['quantity'] ?? 1, + 'price' => $variantData['price'], + 'sku' => $variantModel->sku, + ]), + ))->execute(); + } else { + VariantService::updateWarehouseVariant($variantModel, $warehouse, [ 'quantity' => $variantData['quantity'] ?? 1, 'price' => $variantData['price'], 'sku' => $variantModel->sku, - ]), - ))->execute(); - - $variantWarehouses = ModelsVariantsWarehouses::where('products_variants_id', $variantModel->getId()) - ->where('warehouses_id', $warehouse->getId()) - ->firstOrFail(); + ]); + } (new AddVariantToChannelAction( $variantWarehouses, diff --git a/src/Domains/Inventory/Variants/Actions/AddToWarehouseAction.php b/src/Domains/Inventory/Variants/Actions/AddToWarehouseAction.php index a0f4502e89..b66f6f8c33 100644 --- a/src/Domains/Inventory/Variants/Actions/AddToWarehouseAction.php +++ b/src/Domains/Inventory/Variants/Actions/AddToWarehouseAction.php @@ -29,14 +29,14 @@ public function __construct( * execute. * @psalm-suppress ArgumentTypeCoercion */ - public function execute(): Variants + public function execute(): VariantsWarehouses { $search = [ 'products_variants_id' => $this->variants->getId(), 'warehouses_id' => $this->warehouses->getId(), ]; - $variantsWarehouses = VariantsWarehouses::updateOrCreate( + $variantsWarehouses = VariantsWarehouses::firstOrCreate( $search, [ 'quantity' => $this->variantsWarehousesDto->quantity ?? 0, @@ -63,6 +63,6 @@ public function execute(): Variants ))->execute(); } - return $this->variants; + return $variantsWarehouses; } } From 30ff1f8356cd6ed0ec2c04cde388820fc2d56561 Mon Sep 17 00:00:00 2001 From: kaioken Date: Thu, 21 Dec 2023 23:55:47 -0400 Subject: [PATCH 2/3] refact: import issues --- app/GraphQL/Inventory/Mutations/Variants/Variants.php | 4 +++- .../Inventory/Importer/Actions/ProductImporterAction.php | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/GraphQL/Inventory/Mutations/Variants/Variants.php b/app/GraphQL/Inventory/Mutations/Variants/Variants.php index 6612019058..00acfd4820 100644 --- a/app/GraphQL/Inventory/Mutations/Variants/Variants.php +++ b/app/GraphQL/Inventory/Mutations/Variants/Variants.php @@ -120,7 +120,9 @@ public function addToWarehouse(mixed $root, array $req): VariantModel } $variantWarehouses = VariantsWarehouses::viaRequest($req['input']); - return (new AddToWarehouse($variant, $warehouse, $variantWarehouses))->execute(); + (new AddToWarehouse($variant, $warehouse, $variantWarehouses))->execute(); + + return $variant; } /** diff --git a/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php b/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php index 16d6760178..35279d6dc3 100644 --- a/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php +++ b/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php @@ -371,8 +371,9 @@ public function addVariantsToLocation(VariantsModel $variantModel): void }); if (! empty($matchingVariantInfo)) { + // Since array_filter preserves keys, use array_values to reset them - $variantData = $matchingVariantInfo[0]; + $variantData = current($matchingVariantInfo); if (! empty($variantData['warehouse'])) { $variantData = [ From 5db5666acb81242555e177654b36dbf4446b690a Mon Sep 17 00:00:00 2001 From: kaioken Date: Thu, 21 Dec 2023 23:56:37 -0400 Subject: [PATCH 3/3] refact: import issues --- src/Domains/Inventory/Importer/Actions/ProductImporterAction.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php b/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php index 35279d6dc3..437fab3185 100644 --- a/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php +++ b/src/Domains/Inventory/Importer/Actions/ProductImporterAction.php @@ -371,7 +371,6 @@ public function addVariantsToLocation(VariantsModel $variantModel): void }); if (! empty($matchingVariantInfo)) { - // Since array_filter preserves keys, use array_values to reset them $variantData = current($matchingVariantInfo);