@openlup/platform 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +96 -0
- package/README.md +284 -6
- package/dist/catalog/activeSkuSelection.d.ts +2 -0
- package/dist/catalog/activeSkuSelection.js +20 -0
- package/dist/catalog/adminBindings.d.ts +72 -0
- package/dist/catalog/adminBindings.js +1 -0
- package/dist/catalog/adminBundleHandler.d.ts +26 -0
- package/dist/catalog/adminBundleHandler.js +111 -0
- package/dist/catalog/adminBundleReadHandler.d.ts +20 -0
- package/dist/catalog/adminBundleReadHandler.js +185 -0
- package/dist/catalog/adminBundleWritePort.d.ts +85 -0
- package/dist/catalog/adminBundleWritePort.js +1 -0
- package/dist/catalog/bundleAvailability.d.ts +63 -0
- package/dist/catalog/bundleAvailability.js +78 -0
- package/dist/catalog/bundleAvailabilityService.d.ts +65 -0
- package/dist/catalog/bundleAvailabilityService.js +89 -0
- package/dist/catalog/bundleBindings.d.ts +33 -0
- package/dist/catalog/bundleBindings.js +1 -0
- package/dist/catalog/bundleCatalogQueries.d.ts +28 -0
- package/dist/catalog/bundleCatalogQueries.js +84 -0
- package/dist/catalog/bundleCatalogReadPort.d.ts +166 -0
- package/dist/catalog/bundleCatalogReadPort.js +36 -0
- package/dist/catalog/bundleCatalogStore.d.ts +3 -0
- package/dist/catalog/bundleCatalogStore.js +152 -0
- package/dist/catalog/bundleRuleCodes.d.ts +41 -0
- package/dist/catalog/bundleRuleCodes.js +110 -0
- package/dist/catalog/bundleRules.d.ts +69 -0
- package/dist/catalog/bundleRules.js +102 -0
- package/dist/catalog/catalogDraftStore.d.ts +4 -0
- package/dist/catalog/catalogDraftStore.js +63 -0
- package/dist/catalog/catalogSkuEnvelope.d.ts +7 -0
- package/dist/catalog/catalogSkuEnvelope.js +142 -0
- package/dist/catalog/catalogSkuEnvelopeMapper.d.ts +38 -0
- package/dist/catalog/catalogSkuEnvelopeMapper.js +88 -0
- package/dist/catalog/contracts/bundleAdmin.d.ts +143 -0
- package/dist/catalog/contracts/bundleAdmin.js +1 -0
- package/dist/catalog/contracts/bundleAvailability.d.ts +61 -0
- package/dist/catalog/contracts/bundleAvailability.js +1 -0
- package/dist/catalog/contracts/bundleRead.d.ts +223 -0
- package/dist/catalog/contracts/bundleRead.js +1 -0
- package/dist/catalog/contracts/draft.d.ts +79 -0
- package/dist/catalog/contracts/draft.js +47 -0
- package/dist/catalog/contracts/foundation.d.ts +78 -0
- package/dist/catalog/contracts/foundation.js +53 -0
- package/dist/catalog/contracts/index.d.ts +14 -0
- package/dist/catalog/contracts/index.js +6 -0
- package/dist/catalog/contracts/lifecycle.d.ts +77 -0
- package/dist/catalog/contracts/lifecycle.js +1 -0
- package/dist/catalog/contracts/productMediaContracts.d.ts +77 -0
- package/dist/catalog/contracts/productMediaContracts.js +149 -0
- package/dist/catalog/contracts/productTypes.d.ts +54 -0
- package/dist/catalog/contracts/productTypes.js +16 -0
- package/dist/catalog/contracts/resolveProductMedia.d.ts +3 -0
- package/dist/catalog/contracts/resolveProductMedia.js +78 -0
- package/dist/catalog/contracts/sellable.d.ts +23 -0
- package/dist/catalog/contracts/sellable.js +1 -0
- package/dist/catalog/draftHandler.d.ts +25 -0
- package/dist/catalog/draftHandler.js +118 -0
- package/dist/catalog/draftPorts.d.ts +18 -0
- package/dist/catalog/draftPorts.js +8 -0
- package/dist/catalog/draftSchemas.d.ts +423 -0
- package/dist/catalog/draftSchemas.js +89 -0
- package/dist/catalog/draftValidation.d.ts +21 -0
- package/dist/catalog/draftValidation.js +125 -0
- package/dist/catalog/foundationSchemas.d.ts +98 -0
- package/dist/catalog/foundationSchemas.js +110 -0
- package/dist/catalog/index.d.ts +43 -0
- package/dist/catalog/index.js +25 -0
- package/dist/catalog/mediaSourcePack.d.ts +51 -0
- package/dist/catalog/mediaSourcePack.js +247 -0
- package/dist/catalog/productTypeSchemas.d.ts +46 -0
- package/dist/catalog/productTypeSchemas.js +72 -0
- package/dist/catalog/publicationPorts.d.ts +42 -0
- package/dist/catalog/publicationPorts.js +1 -0
- package/dist/catalog/readPorts.d.ts +51 -0
- package/dist/catalog/readPorts.js +1 -0
- package/dist/catalog/referenceCatalogHandler.d.ts +7 -0
- package/dist/catalog/referenceCatalogHandler.js +27 -0
- package/dist/catalog/resolvedSkuProjection.d.ts +88 -0
- package/dist/catalog/resolvedSkuProjection.js +60 -0
- package/dist/catalog/sellableBundleHandler.d.ts +46 -0
- package/dist/catalog/sellableBundleHandler.js +84 -0
- package/dist/catalog/sellableSchemas.d.ts +46 -0
- package/dist/catalog/sellableSchemas.js +27 -0
- package/dist/catalog/sql.d.ts +46 -0
- package/dist/catalog/sql.js +13 -0
- package/dist/catalog/validation.d.ts +2 -0
- package/dist/catalog/validation.js +3 -0
- package/dist/communications/contracts/index.d.ts +1 -0
- package/dist/communications/contracts/marketingSync.d.ts +194 -0
- package/dist/communications/contracts/marketingSync.js +1 -0
- package/dist/communications/index.d.ts +1 -0
- package/dist/communications/klaviyo/consentPush.d.ts +51 -0
- package/dist/communications/klaviyo/consentPush.js +19 -0
- package/dist/communications/klaviyo/index.d.ts +110 -0
- package/dist/communications/klaviyo/index.js +860 -0
- package/dist/communications/newsletterIntegrationContracts.d.ts +3 -3
- package/dist/communications/resend/index.d.ts +40 -0
- package/dist/communications/resend/index.js +310 -0
- package/dist/composition/catalogContribution.d.ts +18 -0
- package/dist/composition/catalogContribution.js +21 -0
- package/dist/composition/index.d.ts +1 -0
- package/dist/composition/index.js +1 -0
- package/dist/identity/customerContracts.d.ts +2 -2
- package/dist/inventory/adminInventory.d.ts +13 -0
- package/dist/inventory/adminInventory.js +214 -0
- package/dist/inventory/contracts/forecast.d.ts +86 -0
- package/dist/inventory/contracts/forecast.js +1 -0
- package/dist/inventory/contracts/index.d.ts +4 -0
- package/dist/inventory/contracts/index.js +1 -0
- package/dist/inventory/contracts/inventory.d.ts +157 -0
- package/dist/inventory/contracts/inventory.js +1 -0
- package/dist/inventory/contracts/newPurchaseStock.d.ts +20 -0
- package/dist/inventory/contracts/newPurchaseStock.js +1 -0
- package/dist/inventory/contracts/reservation.d.ts +18 -0
- package/dist/inventory/contracts/reservation.js +1 -0
- package/dist/inventory/forecast.d.ts +24 -0
- package/dist/inventory/forecast.js +200 -0
- package/dist/inventory/index.d.ts +13 -0
- package/dist/inventory/index.js +10 -0
- package/dist/inventory/inventoryHandlers.d.ts +53 -0
- package/dist/inventory/inventoryHandlers.js +151 -0
- package/dist/inventory/newPurchaseStockAvailability.d.ts +47 -0
- package/dist/inventory/newPurchaseStockAvailability.js +75 -0
- package/dist/inventory/ports.d.ts +21 -0
- package/dist/inventory/ports.js +16 -0
- package/dist/inventory/renewalReservation.d.ts +27 -0
- package/dist/inventory/renewalReservation.js +61 -0
- package/dist/inventory/reservationPolicy.d.ts +6 -0
- package/dist/inventory/reservationPolicy.js +19 -0
- package/dist/inventory/schemas.d.ts +137 -0
- package/dist/inventory/schemas.js +112 -0
- package/dist/inventory/sql.d.ts +14 -0
- package/dist/inventory/sql.js +5 -0
- package/dist/inventory/subscriptionForecastCalculation.d.ts +4 -0
- package/dist/inventory/subscriptionForecastCalculation.js +133 -0
- package/dist/pricing/acquisitionFinancialPolicy.d.ts +26 -0
- package/dist/pricing/acquisitionFinancialPolicy.js +1 -0
- package/dist/pricing/acquisitionOfferPricing.d.ts +27 -0
- package/dist/pricing/acquisitionOfferPricing.js +25 -0
- package/dist/pricing/acquisitionOfferPricingHandler.d.ts +20 -0
- package/dist/pricing/acquisitionOfferPricingHandler.js +105 -0
- package/dist/pricing/acquisitionOfferPricingSchemas.d.ts +31 -0
- package/dist/pricing/acquisitionOfferPricingSchemas.js +33 -0
- package/dist/pricing/acquisitionQuoteBinding.d.ts +12 -0
- package/dist/pricing/acquisitionQuoteBinding.js +12 -0
- package/dist/pricing/acquisitionReadiness.d.ts +31 -0
- package/dist/pricing/acquisitionReadiness.js +117 -0
- package/dist/pricing/acquisitionTerms.d.ts +19 -0
- package/dist/pricing/acquisitionTerms.js +126 -0
- package/dist/pricing/acquisitionTermsSchemas.d.ts +59 -0
- package/dist/pricing/acquisitionTermsSchemas.js +42 -0
- package/dist/pricing/catalogFactsProvenance.d.ts +33 -0
- package/dist/pricing/catalogFactsProvenance.js +64 -0
- package/dist/pricing/catalogFactsSchemas.d.ts +45 -0
- package/dist/pricing/catalogFactsSchemas.js +58 -0
- package/dist/pricing/commerceOfferPricing.d.ts +25 -0
- package/dist/pricing/commerceOfferPricing.js +139 -0
- package/dist/pricing/commerceOfferPricingCache.d.ts +10 -0
- package/dist/pricing/commerceOfferPricingCache.js +44 -0
- package/dist/pricing/commerceOfferPricingHandler.d.ts +21 -0
- package/dist/pricing/commerceOfferPricingHandler.js +78 -0
- package/dist/pricing/commercePriceAuthority.d.ts +26 -0
- package/dist/pricing/commercePriceAuthority.js +79 -0
- package/dist/pricing/commercePricingPolicyErrors.d.ts +40 -0
- package/dist/pricing/commercePricingPolicyErrors.js +67 -0
- package/dist/pricing/commerceQuoteBatchHandler.d.ts +37 -0
- package/dist/pricing/commerceQuoteBatchHandler.js +83 -0
- package/dist/pricing/commerceQuoteCatalogReadPort.d.ts +27 -0
- package/dist/pricing/commerceQuoteCatalogReadPort.js +8 -0
- package/dist/pricing/commerceQuoteHandler.d.ts +31 -0
- package/dist/pricing/commerceQuoteHandler.js +110 -0
- package/dist/pricing/commerceQuoteSnapshotExpect.d.ts +9 -0
- package/dist/pricing/commerceQuoteSnapshotExpect.js +22 -0
- package/dist/pricing/contracts/acquisitionTerms.d.ts +32 -0
- package/dist/pricing/contracts/acquisitionTerms.js +2 -0
- package/dist/pricing/contracts/authority.d.ts +27 -0
- package/dist/pricing/contracts/authority.js +1 -0
- package/dist/pricing/contracts/evidence.d.ts +33 -0
- package/dist/pricing/contracts/evidence.js +1 -0
- package/dist/pricing/contracts/index.d.ts +17 -0
- package/dist/pricing/contracts/index.js +7 -0
- package/dist/pricing/contracts/money.d.ts +27 -0
- package/dist/pricing/contracts/money.js +1 -0
- package/dist/pricing/contracts/offer.d.ts +52 -0
- package/dist/pricing/contracts/offer.js +4 -0
- package/dist/pricing/contracts/offerPolicy.d.ts +16 -0
- package/dist/pricing/contracts/offerPolicy.js +5 -0
- package/dist/pricing/contracts/policy.d.ts +22 -0
- package/dist/pricing/contracts/policy.js +3 -0
- package/dist/pricing/contracts/provenance.d.ts +24 -0
- package/dist/pricing/contracts/provenance.js +2 -0
- package/dist/pricing/contracts/quote.d.ts +94 -0
- package/dist/pricing/contracts/quote.js +1 -0
- package/dist/pricing/dbBackedCommerceQuoteHelpers.d.ts +78 -0
- package/dist/pricing/dbBackedCommerceQuoteHelpers.js +146 -0
- package/dist/pricing/dbBackedCommerceQuotePort.d.ts +66 -0
- package/dist/pricing/dbBackedCommerceQuotePort.js +206 -0
- package/dist/pricing/dbBackedCommerceQuoteSnapshotVerifier.d.ts +4 -0
- package/dist/pricing/dbBackedCommerceQuoteSnapshotVerifier.js +25 -0
- package/dist/pricing/index.d.ts +51 -0
- package/dist/pricing/index.js +36 -0
- package/dist/pricing/offerPolicyReadiness.d.ts +21 -0
- package/dist/pricing/offerPolicyReadiness.js +79 -0
- package/dist/pricing/offerPolicySchemas.d.ts +25 -0
- package/dist/pricing/offerPolicySchemas.js +15 -0
- package/dist/pricing/offerPricingSchemas.d.ts +315 -0
- package/dist/pricing/offerPricingSchemas.js +65 -0
- package/dist/pricing/ports.d.ts +13 -0
- package/dist/pricing/ports.js +9 -0
- package/dist/pricing/pricingPolicyToken.d.ts +39 -0
- package/dist/pricing/pricingPolicyToken.js +84 -0
- package/dist/pricing/quoteAcquisitionTerms.d.ts +2 -0
- package/dist/pricing/quoteAcquisitionTerms.js +4 -0
- package/dist/pricing/quoteCodeRejectionDetails.d.ts +20 -0
- package/dist/pricing/quoteCodeRejectionDetails.js +22 -0
- package/dist/pricing/quotePorts.d.ts +30 -0
- package/dist/pricing/quotePorts.js +20 -0
- package/dist/pricing/quotePrimitives.d.ts +13 -0
- package/dist/pricing/quotePrimitives.js +18 -0
- package/dist/pricing/quotePromotionEvidence.d.ts +39 -0
- package/dist/pricing/quotePromotionEvidence.js +73 -0
- package/dist/pricing/quoteSchemas.d.ts +1176 -0
- package/dist/pricing/quoteSchemas.js +196 -0
- package/dist/pricing/subscriptionPricePolicy.d.ts +52 -0
- package/dist/pricing/subscriptionPricePolicy.js +96 -0
- package/dist/pricing/taxProfileGuard.d.ts +2 -0
- package/dist/pricing/taxProfileGuard.js +24 -0
- package/dist/pricing/validation.d.ts +2 -0
- package/dist/pricing/validation.js +3 -0
- package/dist/promotions/adminBindings.d.ts +72 -0
- package/dist/promotions/adminBindings.js +1 -0
- package/dist/promotions/adminPromotionCodesContracts.d.ts +498 -0
- package/dist/promotions/adminPromotionCodesContracts.js +211 -0
- package/dist/promotions/adminPromotionCodesDataPort.d.ts +47 -0
- package/dist/promotions/adminPromotionCodesDataPort.js +1 -0
- package/dist/promotions/adminPromotionCodesHandler.d.ts +14 -0
- package/dist/promotions/adminPromotionCodesHandler.js +194 -0
- package/dist/promotions/adminPromotionsContracts.d.ts +235 -0
- package/dist/promotions/adminPromotionsContracts.js +99 -0
- package/dist/promotions/adminPromotionsDataPort.d.ts +42 -0
- package/dist/promotions/adminPromotionsDataPort.js +1 -0
- package/dist/promotions/adminPromotionsHandler.d.ts +16 -0
- package/dist/promotions/adminPromotionsHandler.js +47 -0
- package/dist/promotions/contracts/index.d.ts +387 -0
- package/dist/promotions/contracts/index.js +1 -0
- package/dist/promotions/index.d.ts +22 -0
- package/dist/promotions/index.js +21 -0
- package/dist/promotions/promoDataPort.d.ts +47 -0
- package/dist/promotions/promoDataPort.js +14 -0
- package/dist/promotions/promotionAcceptanceTelemetry.d.ts +29 -0
- package/dist/promotions/promotionAcceptanceTelemetry.js +45 -0
- package/dist/promotions/promotionBenefitDefinition.d.ts +37 -0
- package/dist/promotions/promotionBenefitDefinition.js +33 -0
- package/dist/promotions/promotionClaimSweepPort.d.ts +14 -0
- package/dist/promotions/promotionClaimSweepPort.js +8 -0
- package/dist/promotions/promotionClaims.d.ts +5 -0
- package/dist/promotions/promotionClaims.js +57 -0
- package/dist/promotions/promotionCodePreview.d.ts +11 -0
- package/dist/promotions/promotionCodePreview.js +154 -0
- package/dist/promotions/promotionCodeQuotePort.d.ts +25 -0
- package/dist/promotions/promotionCodeQuotePort.js +1 -0
- package/dist/promotions/promotionQuoteAcceptance.d.ts +65 -0
- package/dist/promotions/promotionQuoteAcceptance.js +202 -0
- package/dist/promotions/promotionQuoteBinding.d.ts +71 -0
- package/dist/promotions/promotionQuoteBinding.js +85 -0
- package/dist/promotions/quoteAutomaticPromotions.d.ts +24 -0
- package/dist/promotions/quoteAutomaticPromotions.js +36 -0
- package/dist/promotions/quotePromoDiscounts.d.ts +32 -0
- package/dist/promotions/quotePromoDiscounts.js +140 -0
- package/dist/promotions/quotePromotionCodeAdjustments.d.ts +27 -0
- package/dist/promotions/quotePromotionCodeAdjustments.js +223 -0
- package/dist/promotions/quotePromotionV2.d.ts +29 -0
- package/dist/promotions/quotePromotionV2.js +174 -0
- package/dist/promotions/sql.d.ts +14 -0
- package/dist/promotions/sql.js +5 -0
- package/dist/promotions/validation.d.ts +2 -0
- package/dist/promotions/validation.js +3 -0
- package/dist/shipping/addressCanonLookupHandler.d.ts +7 -0
- package/dist/shipping/addressCanonLookupHandler.js +105 -0
- package/dist/shipping/addressCanonical.d.ts +2 -0
- package/dist/shipping/addressCanonical.js +26 -0
- package/dist/shipping/addressPorts.d.ts +39 -0
- package/dist/shipping/addressPorts.js +1 -0
- package/dist/shipping/addressSchemas.d.ts +30 -0
- package/dist/shipping/addressSchemas.js +1 -0
- package/dist/shipping/adminShippingRateHandler.d.ts +4 -0
- package/dist/shipping/adminShippingRateHandler.js +64 -0
- package/dist/shipping/contracts/address.d.ts +144 -0
- package/dist/shipping/contracts/address.js +1 -0
- package/dist/shipping/contracts/delivery.d.ts +110 -0
- package/dist/shipping/contracts/delivery.js +1 -0
- package/dist/shipping/contracts/index.d.ts +3 -0
- package/dist/shipping/contracts/index.js +1 -0
- package/dist/shipping/contracts/shippingRate.d.ts +11 -0
- package/dist/shipping/contracts/shippingRate.js +1 -0
- package/dist/shipping/customerAddressesHandler.d.ts +5 -0
- package/dist/shipping/customerAddressesHandler.js +80 -0
- package/dist/shipping/customerSelfServiceAddressModels.d.ts +27 -0
- package/dist/shipping/customerSelfServiceAddressModels.js +101 -0
- package/dist/shipping/deliverySelectionHandler.d.ts +10 -0
- package/dist/shipping/deliverySelectionHandler.js +77 -0
- package/dist/shipping/deliverySelectionPort.d.ts +8 -0
- package/dist/shipping/deliverySelectionPort.js +1 -0
- package/dist/shipping/deliverySelectionSummary.d.ts +2 -0
- package/dist/shipping/deliverySelectionSummary.js +53 -0
- package/dist/shipping/handlerSchemas.d.ts +21 -0
- package/dist/shipping/handlerSchemas.js +1 -0
- package/dist/shipping/index.d.ts +17 -0
- package/dist/shipping/index.js +8 -0
- package/dist/shipping/pickupPointSearchPort.d.ts +4 -0
- package/dist/shipping/pickupPointSearchPort.js +1 -0
- package/dist/shipping/readDeliverySelectionEvidence.d.ts +2 -0
- package/dist/shipping/readDeliverySelectionEvidence.js +44 -0
- package/dist/shipping/shippingRatePorts.d.ts +52 -0
- package/dist/shipping/shippingRatePorts.js +1 -0
- package/package.json +62 -2
- package/release-gates.json +218 -10
- package/sql/20260807140000_read_parity_catalog.sql +94 -0
- package/sql/20260810120000_storefront_catalog_attributes.sql +51 -0
- package/sql/20260812140000_sellable_bundle_catalog.sql +124 -0
- package/sql/20260812210000_bundle_operator_write_boundary.sql +567 -0
- package/sql/20260814000000_fulfillment_stock_evidence.sql +239 -0
- package/sql/20260815120000_automatic_subscription_renewal.sql +1083 -0
- package/sql/20260817180000_promotion_claim_lifecycle.sql +591 -0
- package/sql/20260817180100_promotion_claim_lifecycle_validation.sql +23 -0
- package/sql/20260827220000_catalog_document_revision_foundation.sql +226 -0
- package/sql/20260827220001_catalog_document_revision_foundation_validate.sql +10 -0
- package/sql/20260908100000_catalog_draft_foundation.sql +217 -0
- package/src/catalog/activeSkuSelection.ts +20 -0
- package/src/catalog/adminBindings.ts +59 -0
- package/src/catalog/adminBundleHandler.ts +165 -0
- package/src/catalog/adminBundleReadHandler.ts +261 -0
- package/src/catalog/adminBundleWritePort.ts +102 -0
- package/src/catalog/bundleAvailability.ts +129 -0
- package/src/catalog/bundleAvailabilityService.ts +171 -0
- package/src/catalog/bundleBindings.ts +29 -0
- package/src/catalog/bundleCatalogQueries.ts +98 -0
- package/src/catalog/bundleCatalogReadPort.ts +177 -0
- package/src/catalog/bundleCatalogStore.ts +269 -0
- package/src/catalog/bundleRuleCodes.ts +134 -0
- package/src/catalog/bundleRules.ts +153 -0
- package/src/catalog/catalogDraftStore.ts +71 -0
- package/src/catalog/catalogSkuEnvelope.ts +214 -0
- package/src/catalog/catalogSkuEnvelopeMapper.ts +160 -0
- package/src/catalog/contracts/bundleAdmin.ts +20 -0
- package/src/catalog/contracts/bundleAvailability.ts +5 -0
- package/src/catalog/contracts/bundleRead.ts +13 -0
- package/src/catalog/contracts/draft.ts +69 -0
- package/src/catalog/contracts/foundation.ts +104 -0
- package/src/catalog/contracts/index.ts +14 -0
- package/src/catalog/contracts/lifecycle.ts +74 -0
- package/src/catalog/contracts/productMediaContracts.ts +170 -0
- package/src/catalog/contracts/productTypes.ts +35 -0
- package/src/catalog/contracts/resolveProductMedia.ts +85 -0
- package/src/catalog/contracts/sellable.ts +12 -0
- package/src/catalog/draftHandler.ts +105 -0
- package/src/catalog/draftPorts.ts +18 -0
- package/src/catalog/draftSchemas.ts +88 -0
- package/src/catalog/draftValidation.ts +100 -0
- package/src/catalog/foundationSchemas.ts +123 -0
- package/src/catalog/index.ts +43 -0
- package/src/catalog/mediaSourcePack.ts +219 -0
- package/src/catalog/productTypeSchemas.ts +70 -0
- package/src/catalog/publicationPorts.ts +44 -0
- package/src/catalog/readPorts.ts +61 -0
- package/src/catalog/referenceCatalogHandler.ts +39 -0
- package/src/catalog/resolvedSkuProjection.ts +76 -0
- package/src/catalog/sellableBundleHandler.ts +133 -0
- package/src/catalog/sellableSchemas.ts +33 -0
- package/src/catalog/sql.ts +14 -0
- package/src/catalog/validation.ts +3 -0
- package/src/communications/contracts/index.ts +1 -0
- package/src/communications/contracts/marketingSync.ts +109 -0
- package/src/communications/index.ts +1 -0
- package/src/communications/klaviyo/consentPush.ts +19 -0
- package/src/communications/klaviyo/index.ts +649 -0
- package/src/communications/resend/index.ts +350 -0
- package/src/composition/catalogContribution.ts +32 -0
- package/src/composition/index.ts +1 -0
- package/src/inventory/adminInventory.ts +251 -0
- package/src/inventory/contracts/forecast.ts +96 -0
- package/src/inventory/contracts/index.ts +18 -0
- package/src/inventory/contracts/inventory.ts +14 -0
- package/src/inventory/contracts/newPurchaseStock.ts +23 -0
- package/src/inventory/contracts/reservation.ts +20 -0
- package/src/inventory/forecast.ts +239 -0
- package/src/inventory/index.ts +21 -0
- package/src/inventory/inventoryHandlers.ts +215 -0
- package/src/inventory/newPurchaseStockAvailability.ts +120 -0
- package/src/inventory/ports.ts +46 -0
- package/src/inventory/renewalReservation.ts +88 -0
- package/src/inventory/reservationPolicy.ts +27 -0
- package/src/inventory/schemas.ts +128 -0
- package/src/inventory/sql.ts +5 -0
- package/src/inventory/subscriptionForecastCalculation.ts +157 -0
- package/src/pricing/acquisitionFinancialPolicy.ts +26 -0
- package/src/pricing/acquisitionOfferPricing.ts +38 -0
- package/src/pricing/acquisitionOfferPricingHandler.ts +157 -0
- package/src/pricing/acquisitionOfferPricingSchemas.ts +35 -0
- package/src/pricing/acquisitionQuoteBinding.ts +12 -0
- package/src/pricing/acquisitionReadiness.ts +148 -0
- package/src/pricing/acquisitionTerms.ts +125 -0
- package/src/pricing/acquisitionTermsSchemas.ts +52 -0
- package/src/pricing/catalogFactsProvenance.ts +102 -0
- package/src/pricing/catalogFactsSchemas.ts +69 -0
- package/src/pricing/commerceOfferPricing.ts +224 -0
- package/src/pricing/commerceOfferPricingCache.ts +53 -0
- package/src/pricing/commerceOfferPricingHandler.ts +137 -0
- package/src/pricing/commercePriceAuthority.ts +104 -0
- package/src/pricing/commercePricingPolicyErrors.ts +88 -0
- package/src/pricing/commerceQuoteBatchHandler.ts +129 -0
- package/src/pricing/commerceQuoteCatalogReadPort.ts +42 -0
- package/src/pricing/commerceQuoteHandler.ts +184 -0
- package/src/pricing/commerceQuoteSnapshotExpect.ts +48 -0
- package/src/pricing/contracts/acquisitionTerms.ts +26 -0
- package/src/pricing/contracts/authority.ts +44 -0
- package/src/pricing/contracts/evidence.ts +25 -0
- package/src/pricing/contracts/index.ts +17 -0
- package/src/pricing/contracts/money.ts +32 -0
- package/src/pricing/contracts/offer.ts +42 -0
- package/src/pricing/contracts/offerPolicy.ts +17 -0
- package/src/pricing/contracts/policy.ts +26 -0
- package/src/pricing/contracts/provenance.ts +19 -0
- package/src/pricing/contracts/quote.ts +106 -0
- package/src/pricing/dbBackedCommerceQuoteHelpers.ts +256 -0
- package/src/pricing/dbBackedCommerceQuotePort.ts +260 -0
- package/src/pricing/dbBackedCommerceQuoteSnapshotVerifier.ts +49 -0
- package/src/pricing/index.ts +52 -0
- package/src/pricing/offerPolicyReadiness.ts +110 -0
- package/src/pricing/offerPolicySchemas.ts +23 -0
- package/src/pricing/offerPricingSchemas.ts +92 -0
- package/src/pricing/ports.ts +17 -0
- package/src/pricing/pricingPolicyToken.ts +119 -0
- package/src/pricing/quoteAcquisitionTerms.ts +10 -0
- package/src/pricing/quoteCodeRejectionDetails.ts +23 -0
- package/src/pricing/quotePorts.ts +58 -0
- package/src/pricing/quotePrimitives.ts +21 -0
- package/src/pricing/quotePromotionEvidence.ts +82 -0
- package/src/pricing/quoteSchemas.ts +230 -0
- package/src/pricing/subscriptionPricePolicy.ts +113 -0
- package/src/pricing/taxProfileGuard.ts +33 -0
- package/src/pricing/validation.ts +3 -0
- package/src/promotions/adminBindings.ts +53 -0
- package/src/promotions/adminPromotionCodesContracts.ts +244 -0
- package/src/promotions/adminPromotionCodesDataPort.ts +56 -0
- package/src/promotions/adminPromotionCodesHandler.ts +254 -0
- package/src/promotions/adminPromotionsContracts.ts +121 -0
- package/src/promotions/adminPromotionsDataPort.ts +48 -0
- package/src/promotions/adminPromotionsHandler.ts +72 -0
- package/src/promotions/contracts/index.ts +387 -0
- package/src/promotions/index.ts +22 -0
- package/src/promotions/promoDataPort.ts +65 -0
- package/src/promotions/promotionAcceptanceTelemetry.ts +73 -0
- package/src/promotions/promotionBenefitDefinition.ts +48 -0
- package/src/promotions/promotionClaimSweepPort.ts +23 -0
- package/src/promotions/promotionClaims.ts +70 -0
- package/src/promotions/promotionCodePreview.ts +183 -0
- package/src/promotions/promotionCodeQuotePort.ts +35 -0
- package/src/promotions/promotionQuoteAcceptance.ts +284 -0
- package/src/promotions/promotionQuoteBinding.ts +158 -0
- package/src/promotions/quoteAutomaticPromotions.ts +58 -0
- package/src/promotions/quotePromoDiscounts.ts +185 -0
- package/src/promotions/quotePromotionCodeAdjustments.ts +277 -0
- package/src/promotions/quotePromotionV2.ts +223 -0
- package/src/promotions/sql.ts +5 -0
- package/src/promotions/validation.ts +3 -0
- package/src/shipping/addressCanonLookupHandler.ts +114 -0
- package/src/shipping/addressCanonical.ts +31 -0
- package/src/shipping/addressPorts.ts +48 -0
- package/src/shipping/addressSchemas.ts +28 -0
- package/src/shipping/adminShippingRateHandler.ts +72 -0
- package/src/shipping/contracts/address.ts +71 -0
- package/src/shipping/contracts/delivery.ts +114 -0
- package/src/shipping/contracts/index.ts +18 -0
- package/src/shipping/contracts/shippingRate.ts +7 -0
- package/src/shipping/customerAddressesHandler.ts +100 -0
- package/src/shipping/customerSelfServiceAddressModels.ts +124 -0
- package/src/shipping/deliverySelectionHandler.ts +94 -0
- package/src/shipping/deliverySelectionPort.ts +10 -0
- package/src/shipping/deliverySelectionSummary.ts +56 -0
- package/src/shipping/handlerSchemas.ts +19 -0
- package/src/shipping/index.ts +23 -0
- package/src/shipping/pickupPointSearchPort.ts +8 -0
- package/src/shipping/readDeliverySelectionEvidence.ts +51 -0
- package/src/shipping/shippingRatePorts.ts +36 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
-- Public fulfillment stock-observation and discrepancy-evidence forward.
|
|
2
|
+
--
|
|
3
|
+
-- WHAT THIS SHIPS. A host can persist one opaque stock source's latest SKU
|
|
4
|
+
-- observations, immutable per-run snapshots, one sync cursor, and operator
|
|
5
|
+
-- discrepancy evidence. The schema supports the same provider-neutral worker
|
|
6
|
+
-- actions as the managed adapter: running/succeeded/failed cursor transitions,
|
|
7
|
+
-- idempotent current+snapshot writes, shortage evidence open/replay/resolve and
|
|
8
|
+
-- durable readback after a process restart.
|
|
9
|
+
--
|
|
10
|
+
-- WHAT THIS DELIBERATELY DOES NOT SHIP. There is no provider name, HTTP payload,
|
|
11
|
+
-- warehouse document, catalogue content, inventory reservation, ATP promise,
|
|
12
|
+
-- customer/tester identity or fulfillment status mapping here. `source_key` and
|
|
13
|
+
-- `sku` are opaque deployment identifiers. The host may compare an external
|
|
14
|
+
-- observation with its own inventory, but this forward never mutates inventory
|
|
15
|
+
-- and its evidence never blocks a sale. It creates no role, policy or grant;
|
|
16
|
+
-- all routines are invoker-rights and the host application is the security
|
|
17
|
+
-- boundary, matching the rest of the public platform catalogue.
|
|
18
|
+
|
|
19
|
+
CREATE TABLE public.fulfillment_stock_sync_cursors (
|
|
20
|
+
source_key text PRIMARY KEY,
|
|
21
|
+
status text NOT NULL,
|
|
22
|
+
last_stock_synced_at timestamptz,
|
|
23
|
+
last_movement_occurred_at timestamptz,
|
|
24
|
+
cursor jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
25
|
+
error_code text,
|
|
26
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
27
|
+
CONSTRAINT fulfillment_stock_sync_cursors_source_check
|
|
28
|
+
CHECK (source_key ~ '^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$'),
|
|
29
|
+
CONSTRAINT fulfillment_stock_sync_cursors_status_check
|
|
30
|
+
CHECK (status IN ('running', 'succeeded', 'failed')),
|
|
31
|
+
CONSTRAINT fulfillment_stock_sync_cursors_error_check
|
|
32
|
+
CHECK (error_code IS NULL OR char_length(error_code) <= 180)
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
CREATE TABLE public.fulfillment_stock_current (
|
|
36
|
+
source_key text NOT NULL,
|
|
37
|
+
sku text NOT NULL,
|
|
38
|
+
total_quantity integer NOT NULL,
|
|
39
|
+
for_sale_quantity integer NOT NULL,
|
|
40
|
+
reserved_unavailable_quantity integer NOT NULL,
|
|
41
|
+
inventory_class text,
|
|
42
|
+
last_synced_at timestamptz NOT NULL,
|
|
43
|
+
stale_after timestamptz NOT NULL,
|
|
44
|
+
sync_run_id text NOT NULL,
|
|
45
|
+
idempotency_key text NOT NULL,
|
|
46
|
+
operation_fingerprint text NOT NULL,
|
|
47
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
48
|
+
PRIMARY KEY (source_key, sku),
|
|
49
|
+
CONSTRAINT fulfillment_stock_current_source_check
|
|
50
|
+
CHECK (source_key ~ '^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$'),
|
|
51
|
+
CONSTRAINT fulfillment_stock_current_sku_check CHECK (btrim(sku) <> ''),
|
|
52
|
+
CONSTRAINT fulfillment_stock_current_quantities_check CHECK (
|
|
53
|
+
total_quantity >= 0 AND for_sale_quantity >= 0 AND reserved_unavailable_quantity >= 0
|
|
54
|
+
),
|
|
55
|
+
CONSTRAINT fulfillment_stock_current_class_check
|
|
56
|
+
CHECK (inventory_class IS NULL OR inventory_class IN ('sellable', 'packaging')),
|
|
57
|
+
CONSTRAINT fulfillment_stock_current_freshness_check CHECK (stale_after > last_synced_at)
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE TABLE public.fulfillment_stock_operations (
|
|
61
|
+
idempotency_key text PRIMARY KEY,
|
|
62
|
+
operation_fingerprint text NOT NULL,
|
|
63
|
+
source_key text NOT NULL,
|
|
64
|
+
sku text NOT NULL,
|
|
65
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
66
|
+
CONSTRAINT fulfillment_stock_operations_source_check
|
|
67
|
+
CHECK (source_key ~ '^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$'),
|
|
68
|
+
CONSTRAINT fulfillment_stock_operations_sku_check CHECK (btrim(sku) <> '')
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
CREATE TABLE public.fulfillment_stock_snapshots (
|
|
72
|
+
idempotency_key text PRIMARY KEY,
|
|
73
|
+
operation_fingerprint text NOT NULL,
|
|
74
|
+
source_key text NOT NULL,
|
|
75
|
+
sku text NOT NULL,
|
|
76
|
+
provider_total_quantity integer NOT NULL,
|
|
77
|
+
provider_for_sale_quantity integer NOT NULL,
|
|
78
|
+
provider_reserved_unavailable_quantity integer NOT NULL,
|
|
79
|
+
local_on_hand integer NOT NULL,
|
|
80
|
+
local_reserved integer NOT NULL,
|
|
81
|
+
local_unavailable integer NOT NULL,
|
|
82
|
+
local_safety_stock integer NOT NULL,
|
|
83
|
+
inventory_class text,
|
|
84
|
+
sync_run_id text NOT NULL,
|
|
85
|
+
observed_at timestamptz NOT NULL DEFAULT now(),
|
|
86
|
+
CONSTRAINT fulfillment_stock_snapshots_source_check
|
|
87
|
+
CHECK (source_key ~ '^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$'),
|
|
88
|
+
CONSTRAINT fulfillment_stock_snapshots_sku_check CHECK (btrim(sku) <> ''),
|
|
89
|
+
CONSTRAINT fulfillment_stock_snapshots_quantities_check CHECK (
|
|
90
|
+
provider_total_quantity >= 0 AND provider_for_sale_quantity >= 0
|
|
91
|
+
AND provider_reserved_unavailable_quantity >= 0 AND local_on_hand >= 0
|
|
92
|
+
AND local_reserved >= 0 AND local_unavailable >= 0 AND local_safety_stock >= 0
|
|
93
|
+
),
|
|
94
|
+
CONSTRAINT fulfillment_stock_snapshots_class_check
|
|
95
|
+
CHECK (inventory_class IS NULL OR inventory_class IN ('sellable', 'packaging'))
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
CREATE TABLE public.fulfillment_stock_evidence (
|
|
99
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
100
|
+
idempotency_key text NOT NULL UNIQUE,
|
|
101
|
+
operation_fingerprint text NOT NULL,
|
|
102
|
+
source_key text NOT NULL,
|
|
103
|
+
sku text NOT NULL,
|
|
104
|
+
threshold_kind text NOT NULL,
|
|
105
|
+
severity text NOT NULL,
|
|
106
|
+
status text NOT NULL DEFAULT 'open',
|
|
107
|
+
provider_for_sale_quantity integer,
|
|
108
|
+
local_available_quantity integer,
|
|
109
|
+
first_seen_at timestamptz NOT NULL DEFAULT now(),
|
|
110
|
+
last_seen_at timestamptz NOT NULL DEFAULT now(),
|
|
111
|
+
resolved_at timestamptz,
|
|
112
|
+
last_sync_run_id text,
|
|
113
|
+
CONSTRAINT fulfillment_stock_evidence_source_check
|
|
114
|
+
CHECK (source_key ~ '^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$'),
|
|
115
|
+
CONSTRAINT fulfillment_stock_evidence_sku_check CHECK (btrim(sku) <> ''),
|
|
116
|
+
CONSTRAINT fulfillment_stock_evidence_threshold_check
|
|
117
|
+
CHECK (threshold_kind IN ('safety_stock', 'reservation_coverage', 'forecast', 'stale_sync', 'manual')),
|
|
118
|
+
CONSTRAINT fulfillment_stock_evidence_severity_check CHECK (severity IN ('info', 'warning', 'critical')),
|
|
119
|
+
CONSTRAINT fulfillment_stock_evidence_status_check CHECK (status IN ('open', 'acknowledged', 'resolved')),
|
|
120
|
+
CONSTRAINT fulfillment_stock_evidence_quantities_check CHECK (
|
|
121
|
+
(provider_for_sale_quantity IS NULL OR provider_for_sale_quantity >= 0)
|
|
122
|
+
AND (local_available_quantity IS NULL OR local_available_quantity >= 0)
|
|
123
|
+
)
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
CREATE INDEX fulfillment_stock_current_stale_idx
|
|
127
|
+
ON public.fulfillment_stock_current(source_key, stale_after, sku);
|
|
128
|
+
CREATE INDEX fulfillment_stock_evidence_status_idx
|
|
129
|
+
ON public.fulfillment_stock_evidence(source_key, status, last_seen_at DESC);
|
|
130
|
+
|
|
131
|
+
CREATE FUNCTION public.fulfillment_record_stock_current(
|
|
132
|
+
p_source_key text, p_idempotency_key text, p_fingerprint text, p_sku text,
|
|
133
|
+
p_total integer, p_for_sale integer, p_reserved_unavailable integer,
|
|
134
|
+
p_inventory_class text, p_last_synced_at timestamptz, p_stale_after timestamptz,
|
|
135
|
+
p_sync_run_id text
|
|
136
|
+
) RETURNS jsonb LANGUAGE plpgsql SET search_path = pg_catalog, public AS $$
|
|
137
|
+
DECLARE v_fingerprint text;
|
|
138
|
+
BEGIN
|
|
139
|
+
PERFORM pg_advisory_xact_lock(hashtextextended(p_idempotency_key, 0));
|
|
140
|
+
SELECT operation_fingerprint INTO v_fingerprint
|
|
141
|
+
FROM public.fulfillment_stock_operations
|
|
142
|
+
WHERE idempotency_key = p_idempotency_key;
|
|
143
|
+
IF FOUND THEN
|
|
144
|
+
IF v_fingerprint <> p_fingerprint THEN
|
|
145
|
+
RAISE EXCEPTION 'fulfillment_stock_current_idempotency_conflict' USING ERRCODE = '23505';
|
|
146
|
+
END IF;
|
|
147
|
+
RETURN jsonb_build_object('replayed', true, 'readBack', true);
|
|
148
|
+
END IF;
|
|
149
|
+
INSERT INTO public.fulfillment_stock_current(
|
|
150
|
+
source_key, sku, total_quantity, for_sale_quantity, reserved_unavailable_quantity,
|
|
151
|
+
inventory_class, last_synced_at, stale_after, sync_run_id, idempotency_key,
|
|
152
|
+
operation_fingerprint
|
|
153
|
+
) VALUES (
|
|
154
|
+
p_source_key, p_sku, p_total, p_for_sale, p_reserved_unavailable,
|
|
155
|
+
p_inventory_class, p_last_synced_at, p_stale_after, p_sync_run_id,
|
|
156
|
+
p_idempotency_key, p_fingerprint
|
|
157
|
+
) ON CONFLICT (source_key, sku) DO UPDATE SET
|
|
158
|
+
total_quantity = EXCLUDED.total_quantity,
|
|
159
|
+
for_sale_quantity = EXCLUDED.for_sale_quantity,
|
|
160
|
+
reserved_unavailable_quantity = EXCLUDED.reserved_unavailable_quantity,
|
|
161
|
+
inventory_class = EXCLUDED.inventory_class,
|
|
162
|
+
last_synced_at = EXCLUDED.last_synced_at,
|
|
163
|
+
stale_after = EXCLUDED.stale_after,
|
|
164
|
+
sync_run_id = EXCLUDED.sync_run_id,
|
|
165
|
+
idempotency_key = EXCLUDED.idempotency_key,
|
|
166
|
+
operation_fingerprint = EXCLUDED.operation_fingerprint,
|
|
167
|
+
updated_at = now();
|
|
168
|
+
INSERT INTO public.fulfillment_stock_operations(
|
|
169
|
+
idempotency_key, operation_fingerprint, source_key, sku
|
|
170
|
+
) VALUES (p_idempotency_key, p_fingerprint, p_source_key, p_sku);
|
|
171
|
+
RETURN jsonb_build_object('replayed', false, 'readBack', true);
|
|
172
|
+
END $$;
|
|
173
|
+
|
|
174
|
+
CREATE FUNCTION public.fulfillment_record_stock_snapshot(
|
|
175
|
+
p_source_key text, p_idempotency_key text, p_fingerprint text, p_sku text,
|
|
176
|
+
p_provider_total integer, p_provider_for_sale integer,
|
|
177
|
+
p_provider_reserved_unavailable integer, p_local_on_hand integer,
|
|
178
|
+
p_local_reserved integer, p_local_unavailable integer, p_local_safety integer,
|
|
179
|
+
p_inventory_class text, p_sync_run_id text
|
|
180
|
+
) RETURNS jsonb LANGUAGE plpgsql SET search_path = pg_catalog, public AS $$
|
|
181
|
+
DECLARE v_fingerprint text;
|
|
182
|
+
BEGIN
|
|
183
|
+
SELECT operation_fingerprint INTO v_fingerprint FROM public.fulfillment_stock_snapshots
|
|
184
|
+
WHERE idempotency_key = p_idempotency_key FOR UPDATE;
|
|
185
|
+
IF FOUND THEN
|
|
186
|
+
IF v_fingerprint <> p_fingerprint THEN
|
|
187
|
+
RAISE EXCEPTION 'fulfillment_stock_snapshot_idempotency_conflict' USING ERRCODE = '23505';
|
|
188
|
+
END IF;
|
|
189
|
+
RETURN jsonb_build_object('replayed', true, 'readBack', true);
|
|
190
|
+
END IF;
|
|
191
|
+
INSERT INTO public.fulfillment_stock_snapshots VALUES (
|
|
192
|
+
p_idempotency_key, p_fingerprint, p_source_key, p_sku, p_provider_total,
|
|
193
|
+
p_provider_for_sale, p_provider_reserved_unavailable, p_local_on_hand,
|
|
194
|
+
p_local_reserved, p_local_unavailable, p_local_safety, p_inventory_class,
|
|
195
|
+
p_sync_run_id, now()
|
|
196
|
+
);
|
|
197
|
+
RETURN jsonb_build_object('replayed', false, 'readBack', true);
|
|
198
|
+
END $$;
|
|
199
|
+
|
|
200
|
+
CREATE FUNCTION public.fulfillment_record_stock_evidence(
|
|
201
|
+
p_source_key text, p_idempotency_key text, p_fingerprint text, p_sku text,
|
|
202
|
+
p_threshold_kind text, p_severity text, p_provider_for_sale integer,
|
|
203
|
+
p_local_available integer
|
|
204
|
+
) RETURNS jsonb LANGUAGE plpgsql SET search_path = pg_catalog, public AS $$
|
|
205
|
+
DECLARE v_existing public.fulfillment_stock_evidence%ROWTYPE;
|
|
206
|
+
BEGIN
|
|
207
|
+
SELECT * INTO v_existing FROM public.fulfillment_stock_evidence
|
|
208
|
+
WHERE idempotency_key = p_idempotency_key FOR UPDATE;
|
|
209
|
+
IF FOUND THEN
|
|
210
|
+
IF v_existing.operation_fingerprint <> p_fingerprint THEN
|
|
211
|
+
RAISE EXCEPTION 'fulfillment_stock_evidence_idempotency_conflict' USING ERRCODE = '23505';
|
|
212
|
+
END IF;
|
|
213
|
+
UPDATE public.fulfillment_stock_evidence SET last_seen_at = now()
|
|
214
|
+
WHERE idempotency_key = p_idempotency_key;
|
|
215
|
+
RETURN jsonb_build_object('replayed', true);
|
|
216
|
+
END IF;
|
|
217
|
+
INSERT INTO public.fulfillment_stock_evidence(
|
|
218
|
+
idempotency_key, operation_fingerprint, source_key, sku, threshold_kind,
|
|
219
|
+
severity, provider_for_sale_quantity, local_available_quantity
|
|
220
|
+
) VALUES (
|
|
221
|
+
p_idempotency_key, p_fingerprint, p_source_key, p_sku, p_threshold_kind,
|
|
222
|
+
p_severity, p_provider_for_sale, p_local_available
|
|
223
|
+
);
|
|
224
|
+
RETURN jsonb_build_object('replayed', false);
|
|
225
|
+
END $$;
|
|
226
|
+
|
|
227
|
+
CREATE FUNCTION public.fulfillment_resolve_stock_evidence(
|
|
228
|
+
p_source_key text, p_sku text, p_active_threshold_kinds text[], p_sync_run_id text
|
|
229
|
+
) RETURNS jsonb LANGUAGE plpgsql SET search_path = pg_catalog, public AS $$
|
|
230
|
+
DECLARE v_resolved integer;
|
|
231
|
+
BEGIN
|
|
232
|
+
UPDATE public.fulfillment_stock_evidence SET
|
|
233
|
+
status = 'resolved', resolved_at = now(), last_seen_at = now(),
|
|
234
|
+
last_sync_run_id = p_sync_run_id
|
|
235
|
+
WHERE source_key = p_source_key AND sku = p_sku AND status <> 'resolved'
|
|
236
|
+
AND NOT (threshold_kind = ANY(COALESCE(p_active_threshold_kinds, ARRAY[]::text[])));
|
|
237
|
+
GET DIAGNOSTICS v_resolved = ROW_COUNT;
|
|
238
|
+
RETURN jsonb_build_object('resolved', v_resolved);
|
|
239
|
+
END $$;
|