diff --git a/src/app/core/services/catalog/catalog-availability.ts b/src/app/core/services/catalog/catalog-availability.ts index 03d3724..b913750 100644 --- a/src/app/core/services/catalog/catalog-availability.ts +++ b/src/app/core/services/catalog/catalog-availability.ts @@ -1,9 +1,11 @@ import { CatalogAvailability } from './catalog.interface'; export const AVAILABLE_CATALOG_AVAILABILITY: CatalogAvailability = { + subject: 'product', maximum_quantity: null, restrictions: [], capabilities: { + display: true, select_variant: true, change_quantity: true, add_to_cart: true, @@ -11,21 +13,25 @@ export const AVAILABLE_CATALOG_AVAILABILITY: CatalogAvailability = { }, }; -export function createCatalogAvailability(maximumQuantity: number | null): CatalogAvailability { +export function createCatalogAvailability( + maximumQuantity: number | null, + subject: CatalogAvailability['subject'] = 'product', +): CatalogAvailability { const unavailable = maximumQuantity === 0; return { + subject, maximum_quantity: maximumQuantity, restrictions: unavailable ? [ { code: 'out_of_stock', message: 'Este producto no tiene stock disponible.', - scope: 'product', }, ] : [], capabilities: { + display: !unavailable, select_variant: !unavailable, change_quantity: !unavailable, add_to_cart: !unavailable, diff --git a/src/app/core/services/catalog/catalog.interface.ts b/src/app/core/services/catalog/catalog.interface.ts index 98cdd08..cbcbf5d 100644 --- a/src/app/core/services/catalog/catalog.interface.ts +++ b/src/app/core/services/catalog/catalog.interface.ts @@ -52,10 +52,10 @@ export type InventoryPolicy = 'tracked' | 'unlimited'; export interface CatalogRestriction { code: 'out_of_stock' | 'user_quota_reached' | string; message: string; - scope: 'product' | 'variant' | string; } export interface CatalogCapabilities { + display: boolean; select_variant: boolean; change_quantity: boolean; add_to_cart: boolean; @@ -63,6 +63,7 @@ export interface CatalogCapabilities { } export interface CatalogAvailability { + subject: 'product' | 'variant'; maximum_quantity: number | null; restrictions: CatalogRestriction[]; capabilities: CatalogCapabilities; diff --git a/src/app/shared/components/variant-selector/variant-selector.component.ts b/src/app/shared/components/variant-selector/variant-selector.component.ts index 2eae441..acd7c30 100644 --- a/src/app/shared/components/variant-selector/variant-selector.component.ts +++ b/src/app/shared/components/variant-selector/variant-selector.component.ts @@ -24,6 +24,7 @@ export interface VariantSelectorVariant { values: Record; availability?: { capabilities: { + display: boolean; select_variant: boolean; }; };