From 8501978f3b84bb74655917ebe0b11b5bdca45b23 Mon Sep 17 00:00:00 2001 From: Jade Date: Mon, 2 Feb 2026 13:07:34 +0100 Subject: [PATCH 1/2] Use withStore to avoid the store being incorrect after augmenting --- src/Fieldtypes/Products.php | 66 ++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/Fieldtypes/Products.php b/src/Fieldtypes/Products.php index 4abe6c5..2e42c5e 100644 --- a/src/Fieldtypes/Products.php +++ b/src/Fieldtypes/Products.php @@ -27,44 +27,44 @@ public function augment($data) { $store = $data['store'] ?? 1; - Rapidez::setStore($store); + return Rapidez::withStore($store, function() use ($data, $store) { + $products = collect(json_decode($data['products'] ?? $data, true)); + $productModel = config('rapidez.models.product'); + /** @var \Rapidez\Core\Models\Product $productInstance */ + $productInstance = new $productModel; + $dbProducts = $productModel::withoutGlobalScopes() + ->whereIn($productInstance->qualifyColumn('sku'), $products->map(fn($product) => $product['sku'])) + ->get() + ->keyBy('sku'); - $products = collect(json_decode($data['products'] ?? $data, true)); - $productModel = config('rapidez.models.product'); - /** @var \Rapidez\Core\Models\Product $productInstance */ - $productInstance = new $productModel; - $dbProducts = $productModel::withoutGlobalScopes() - ->whereIn($productInstance->qualifyColumn('sku'), $products->map(fn($product) => $product['sku'])) - ->get() - ->keyBy('sku'); + $newData = $products->map(function($product) use ($dbProducts, $store) { + $dbProduct = $dbProducts[$product['sku']] ?? null; - return $products->map(function($product) use ($dbProducts, $store) { - $dbProduct = $dbProducts[$product['sku']] ?? null; + $productOptions = $dbProduct + ? collect($product['options'] ?? [])->map(function (string $optionValue, string $option) use ($dbProduct): array { + $optionData = collect($dbProduct->options)->first(fn ($productOption) => $productOption->option_id == $option) ?? null; + $value = collect($optionData?->values ?? [])->first(fn ($value) => $value->option_type_id == $optionValue) ?? null; - $productOptions = $dbProduct - ? collect($product['options'] ?? [])->map(function (string $optionValue, string $option) use ($dbProduct): array { - $optionData = collect($dbProduct->options)->first(fn ($productOption) => $productOption->option_id == $option) ?? null; - $value = collect($optionData?->values ?? [])->first(fn ($value) => $value->option_type_id == $optionValue) ?? null; + return [ + 'title' => $optionData?->title ?? $option, + 'price' => ($value?->price->price ?? 0) + ($optionData?->price->price ?? 0), + 'value' => $value ?? ['title' => $optionValue], + ]; + }) + : null; - return [ - 'title' => $optionData?->title ?? $option, - 'price' => ($value?->price->price ?? 0) + ($optionData?->price->price ?? 0), - 'value' => $value ?? ['title' => $optionValue], - ]; - }) - : null; + $totalPrice = $dbProduct + ? ($productOptions->sum('price.price') + $dbProduct->price) * $product['qty'] + : null; - $totalPrice = $dbProduct - ? ($productOptions->sum('price.price') + $dbProduct->price) * $product['qty'] - : null; - - return [ - ...$product, - 'store' => $store, - 'product' => $dbProduct, - 'options' => $productOptions, - 'totalPrice' => $totalPrice, - ]; + return [ + ...$product, + 'store' => $store, + 'product' => $dbProduct, + 'options' => $productOptions, + 'totalPrice' => $totalPrice, + ]; + }); }); } } From 40d928a595f3bcbcebb97309098d81296ef5c252 Mon Sep 17 00:00:00 2001 From: Jade Geels Date: Mon, 2 Feb 2026 13:15:11 +0100 Subject: [PATCH 2/2] Update Products.php --- src/Fieldtypes/Products.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Fieldtypes/Products.php b/src/Fieldtypes/Products.php index 2e42c5e..5c9e47d 100644 --- a/src/Fieldtypes/Products.php +++ b/src/Fieldtypes/Products.php @@ -37,7 +37,7 @@ public function augment($data) ->get() ->keyBy('sku'); - $newData = $products->map(function($product) use ($dbProducts, $store) { + return $products->map(function($product) use ($dbProducts, $store) { $dbProduct = $dbProducts[$product['sku']] ?? null; $productOptions = $dbProduct