Feature: Adding Wipe Catalog Command for all products
This commit is contained in:
@@ -14,6 +14,7 @@ use Illuminate\Database\Eloquent\Collection as EloquentCollection;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Lunar\Admin\Filament\Resources\CustomerResource;
|
||||
use Lunar\Admin\Filament\Resources\ProductResource\Pages\EditProduct;
|
||||
use Lunar\Exceptions\MissingCurrencyPriceException;
|
||||
use Lunar\Models\Cart;
|
||||
use Lunar\Models\CartLine;
|
||||
use Lunar\Models\ProductVariant;
|
||||
@@ -47,6 +48,17 @@ class ViewCart extends ViewRecord
|
||||
* own OrderItemsTable loads for an order's line items (`with(['purchasable'])`,
|
||||
* see vendor/lunarphp/lunar/.../OrderItemsTable::getDefaultTable()) — so
|
||||
* rendering the product grid doesn't N+1 per line.
|
||||
*
|
||||
* calculate() throws Lunar\Exceptions\MissingCurrencyPriceException
|
||||
* (vendor PricingManager) the moment ANY line's purchasable has no
|
||||
* price row for the cart's currency — including a line whose
|
||||
* purchasable no longer exists at all (a deleted ProductVariant still
|
||||
* referenced by cart_lines.purchasable_id), which 500'd this whole
|
||||
* page rather than just leaving that one line unpriced. The Lines
|
||||
* section below already guards every purchasable-derived field with
|
||||
* `instanceof ProductVariant` and renders fine with $cart left
|
||||
* uncalculated — subTotal/total/etc. simply won't be populated, which
|
||||
* reads as a stale/pending state rather than a broken page.
|
||||
*/
|
||||
protected function resolveRecord(int|string $key): Cart
|
||||
{
|
||||
@@ -58,7 +70,11 @@ class ViewCart extends ViewRecord
|
||||
EloquentCollection::make($cart->lines->pluck('purchasable')->filter(fn ($p) => $p instanceof ProductVariant))
|
||||
->loadMissing(['product.thumbnail', 'images', 'values']);
|
||||
|
||||
return $cart->calculate();
|
||||
try {
|
||||
return $cart->calculate();
|
||||
} catch (MissingCurrencyPriceException) {
|
||||
return $cart;
|
||||
}
|
||||
}
|
||||
|
||||
public function infolist(Schema $schema): Schema
|
||||
|
||||
Reference in New Issue
Block a user