@rovela-ai/sdk 0.6.1 → 0.7.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/dist/admin/api/discounts.d.ts +53 -0
- package/dist/admin/api/discounts.d.ts.map +1 -0
- package/dist/admin/api/discounts.js +325 -0
- package/dist/admin/api/discounts.js.map +1 -0
- package/dist/admin/api/index.d.ts +1 -0
- package/dist/admin/api/index.d.ts.map +1 -1
- package/dist/admin/api/index.js +2 -0
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/orders.js +1 -1
- package/dist/admin/api/orders.js.map +1 -1
- package/dist/admin/api/settings.d.ts.map +1 -1
- package/dist/admin/api/settings.js +10 -0
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/components/CustomerAddressPanel.d.ts.map +1 -1
- package/dist/admin/components/CustomerAddressPanel.js +13 -6
- package/dist/admin/components/CustomerAddressPanel.js.map +1 -1
- package/dist/admin/components/DiscountsManager.d.ts +5 -0
- package/dist/admin/components/DiscountsManager.d.ts.map +1 -0
- package/dist/admin/components/DiscountsManager.js +363 -0
- package/dist/admin/components/DiscountsManager.js.map +1 -0
- package/dist/admin/components/ShippingSettings.d.ts.map +1 -1
- package/dist/admin/components/ShippingSettings.js +19 -2
- package/dist/admin/components/ShippingSettings.js.map +1 -1
- package/dist/admin/components/StoreSettings.d.ts.map +1 -1
- package/dist/admin/components/StoreSettings.js +8 -1
- package/dist/admin/components/StoreSettings.js.map +1 -1
- package/dist/admin/components/TaxSettings.d.ts.map +1 -1
- package/dist/admin/components/TaxSettings.js +8 -3
- package/dist/admin/components/TaxSettings.js.map +1 -1
- package/dist/admin/components/index.d.ts +2 -0
- package/dist/admin/components/index.d.ts.map +1 -1
- package/dist/admin/components/index.js +1 -0
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/hooks/index.d.ts +2 -0
- package/dist/admin/hooks/index.d.ts.map +1 -1
- package/dist/admin/hooks/index.js +1 -0
- package/dist/admin/hooks/index.js.map +1 -1
- package/dist/admin/hooks/useAdminDiscounts.d.ts +12 -0
- package/dist/admin/hooks/useAdminDiscounts.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminDiscounts.js +77 -0
- package/dist/admin/hooks/useAdminDiscounts.js.map +1 -0
- package/dist/admin/index.d.ts +3 -3
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +2 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/types.d.ts +72 -0
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/auth/components/AddressForm.d.ts.map +1 -1
- package/dist/auth/components/AddressForm.js +22 -7
- package/dist/auth/components/AddressForm.js.map +1 -1
- package/dist/checkout/api/checkout.d.ts.map +1 -1
- package/dist/checkout/api/checkout.js +15 -2
- package/dist/checkout/api/checkout.js.map +1 -1
- package/dist/checkout/api/discount.d.ts +47 -0
- package/dist/checkout/api/discount.d.ts.map +1 -0
- package/dist/checkout/api/discount.js +77 -0
- package/dist/checkout/api/discount.js.map +1 -0
- package/dist/checkout/api/index.d.ts +1 -0
- package/dist/checkout/api/index.d.ts.map +1 -1
- package/dist/checkout/api/index.js +1 -0
- package/dist/checkout/api/index.js.map +1 -1
- package/dist/checkout/api/manual.d.ts.map +1 -1
- package/dist/checkout/api/manual.js +64 -130
- package/dist/checkout/api/manual.js.map +1 -1
- package/dist/checkout/api/shipping.d.ts.map +1 -1
- package/dist/checkout/api/shipping.js +19 -27
- package/dist/checkout/api/shipping.js.map +1 -1
- package/dist/checkout/components/CheckoutFlow.d.ts.map +1 -1
- package/dist/checkout/components/CheckoutFlow.js +89 -9
- package/dist/checkout/components/CheckoutFlow.js.map +1 -1
- package/dist/checkout/components/OrderSummary.d.ts +1 -1
- package/dist/checkout/components/OrderSummary.d.ts.map +1 -1
- package/dist/checkout/components/OrderSummary.js +3 -3
- package/dist/checkout/components/OrderSummary.js.map +1 -1
- package/dist/checkout/components/ShippingForm.d.ts.map +1 -1
- package/dist/checkout/components/ShippingForm.js +42 -13
- package/dist/checkout/components/ShippingForm.js.map +1 -1
- package/dist/checkout/constants.d.ts +38 -0
- package/dist/checkout/constants.d.ts.map +1 -1
- package/dist/checkout/constants.js +39 -0
- package/dist/checkout/constants.js.map +1 -1
- package/dist/checkout/hooks/useCheckout.d.ts.map +1 -1
- package/dist/checkout/hooks/useCheckout.js +2 -0
- package/dist/checkout/hooks/useCheckout.js.map +1 -1
- package/dist/checkout/server/checkout-customer.d.ts +30 -0
- package/dist/checkout/server/checkout-customer.d.ts.map +1 -0
- package/dist/checkout/server/checkout-customer.js +47 -0
- package/dist/checkout/server/checkout-customer.js.map +1 -0
- package/dist/checkout/server/create-checkout-session.d.ts.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +149 -9
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/checkout/server/discounts.d.ts +75 -0
- package/dist/checkout/server/discounts.d.ts.map +1 -0
- package/dist/checkout/server/discounts.js +294 -0
- package/dist/checkout/server/discounts.js.map +1 -0
- package/dist/checkout/server/handle-webhook.js +23 -1
- package/dist/checkout/server/handle-webhook.js.map +1 -1
- package/dist/checkout/server/index.d.ts +4 -0
- package/dist/checkout/server/index.d.ts.map +1 -1
- package/dist/checkout/server/index.js +4 -0
- package/dist/checkout/server/index.js.map +1 -1
- package/dist/checkout/server/order-service.d.ts.map +1 -1
- package/dist/checkout/server/order-service.js +60 -10
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/server/pricing.d.ts +164 -0
- package/dist/checkout/server/pricing.d.ts.map +1 -0
- package/dist/checkout/server/pricing.js +309 -0
- package/dist/checkout/server/pricing.js.map +1 -0
- package/dist/checkout/types.d.ts +8 -0
- package/dist/checkout/types.d.ts.map +1 -1
- package/dist/core/StoreSettingsProvider.d.ts +4 -0
- package/dist/core/StoreSettingsProvider.d.ts.map +1 -1
- package/dist/core/StoreSettingsProvider.js +6 -0
- package/dist/core/StoreSettingsProvider.js.map +1 -1
- package/dist/core/api/settings.d.ts +1 -0
- package/dist/core/api/settings.d.ts.map +1 -1
- package/dist/core/api/settings.js +2 -0
- package/dist/core/api/settings.js.map +1 -1
- package/dist/core/db/queries.d.ts +267 -19
- package/dist/core/db/queries.d.ts.map +1 -1
- package/dist/core/db/queries.js +297 -0
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.d.ts +618 -0
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +78 -0
- package/dist/core/db/schema.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/server/pricing
|
|
3
|
+
*
|
|
4
|
+
* THE PRICING CORE — the single server-side pipeline that computes an order's
|
|
5
|
+
* final price. Payment processors (Stripe, manual methods, future providers)
|
|
6
|
+
* only ever COLLECT the amount this module computes; none of them is a
|
|
7
|
+
* source of truth for money.
|
|
8
|
+
*
|
|
9
|
+
* MONEY-INTEGRITY RULES (apply to every checkout path):
|
|
10
|
+
* 1. Item prices come from the DATABASE (products / product_variants), never
|
|
11
|
+
* from the client. A client price above the catalog price is tolerated on
|
|
12
|
+
* the Stripe path (configurator surcharges); a client price BELOW it is a
|
|
13
|
+
* tamper and rejects the checkout. The manual path is fully strict.
|
|
14
|
+
* 2. Manual zone shipping is re-derived server-side from the selected rate
|
|
15
|
+
* id; Shippo quotes (ephemeral) are sanity-bounded.
|
|
16
|
+
* 3. Tax is computed by ONE canonical formula: taxable base =
|
|
17
|
+
* subtotal − discount + shipping, honoring `taxIncludedInPrices`.
|
|
18
|
+
* 4. Discounts (Phase 2 — native discounts engine) are applied between
|
|
19
|
+
* re-pricing and shipping; `discountCents` is 0 until then.
|
|
20
|
+
*
|
|
21
|
+
* All amounts in this module are integer CENTS. DB decimals (dollars) are
|
|
22
|
+
* converted at the boundary via `dollarsToCents`.
|
|
23
|
+
*/
|
|
24
|
+
import type { StoreSettingsData } from '../../core/db/queries';
|
|
25
|
+
import type { Address } from '../../core/types';
|
|
26
|
+
import type { CheckoutApiError, CheckoutLineItem, ShippingOption } from '../types';
|
|
27
|
+
import type { AppliedDiscount } from './discounts';
|
|
28
|
+
/**
|
|
29
|
+
* Thrown by the pricing pipeline when an input fails validation (tampered
|
|
30
|
+
* price, unknown product, stale shipping selection…). API routes map it to a
|
|
31
|
+
* 4xx `CheckoutApiError`; anything else stays a 500.
|
|
32
|
+
*/
|
|
33
|
+
export declare class PricingError extends Error {
|
|
34
|
+
readonly code: CheckoutApiError['code'];
|
|
35
|
+
readonly status: number;
|
|
36
|
+
constructor(message: string, code?: CheckoutApiError['code'], status?: number);
|
|
37
|
+
}
|
|
38
|
+
export interface QuoteItemInput {
|
|
39
|
+
productId?: string;
|
|
40
|
+
variantId?: string;
|
|
41
|
+
/** Client display name — server name wins; kept for diagnostics only. */
|
|
42
|
+
name?: string;
|
|
43
|
+
/** Client-claimed unit price in CENTS — validated, never trusted downward. */
|
|
44
|
+
price?: number;
|
|
45
|
+
quantity: number;
|
|
46
|
+
description?: string;
|
|
47
|
+
image?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface RepricedItems {
|
|
50
|
+
lines: CheckoutLineItem[];
|
|
51
|
+
subtotalCents: number;
|
|
52
|
+
/** productId → categoryId, for category-scoped discounts. */
|
|
53
|
+
categoryByProductId: Record<string, string | null>;
|
|
54
|
+
}
|
|
55
|
+
export interface ShippingResolution {
|
|
56
|
+
shippingCents: number;
|
|
57
|
+
shippingMethodName?: string;
|
|
58
|
+
carrier?: string;
|
|
59
|
+
shippoRateId?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface TaxResolution {
|
|
62
|
+
taxCents: number;
|
|
63
|
+
taxRate: number;
|
|
64
|
+
taxZoneId: string | null;
|
|
65
|
+
taxZoneName: string | null;
|
|
66
|
+
taxIncludedInPrices: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface QuoteInput {
|
|
69
|
+
items: QuoteItemInput[];
|
|
70
|
+
shippingAddress?: Address | null;
|
|
71
|
+
selectedShipping?: ShippingOption | null;
|
|
72
|
+
/**
|
|
73
|
+
* Pricing strictness for item re-pricing:
|
|
74
|
+
* - 'strict' — client prices ignored entirely (manual/unsupervised paths).
|
|
75
|
+
* - 'floor' — client price accepted when >= the catalog price
|
|
76
|
+
* (configurator surcharges); below = reject (Stripe path).
|
|
77
|
+
*/
|
|
78
|
+
pricingMode?: 'strict' | 'floor';
|
|
79
|
+
/** Redemption code entered by the shopper (native discounts engine). */
|
|
80
|
+
discountCode?: string | null;
|
|
81
|
+
/** Trusted (session-resolved) customer — group gating + discount eligibility. */
|
|
82
|
+
customerId?: string | null;
|
|
83
|
+
customerGroupId?: string | null;
|
|
84
|
+
/** Contact email — once-per-customer discount checks for guests. */
|
|
85
|
+
customerEmail?: string | null;
|
|
86
|
+
}
|
|
87
|
+
export interface Quote {
|
|
88
|
+
lines: CheckoutLineItem[];
|
|
89
|
+
subtotalCents: number;
|
|
90
|
+
/** Total product+order discount (native discounts engine), ≤ subtotal. */
|
|
91
|
+
discountCents: number;
|
|
92
|
+
/** Every applied discount (code + automatics), for records + display. */
|
|
93
|
+
appliedDiscounts: AppliedDiscount[];
|
|
94
|
+
/** The validated redemption code, when one was applied. */
|
|
95
|
+
discountCode: string | null;
|
|
96
|
+
/** True when an applied discount zeroed the shipping cost. */
|
|
97
|
+
freeShippingApplied: boolean;
|
|
98
|
+
shippingCents: number;
|
|
99
|
+
shippingMethodName?: string;
|
|
100
|
+
carrier?: string;
|
|
101
|
+
shippoRateId?: string;
|
|
102
|
+
taxCents: number;
|
|
103
|
+
taxRate: number;
|
|
104
|
+
taxZoneId: string | null;
|
|
105
|
+
taxZoneName: string | null;
|
|
106
|
+
taxIncludedInPrices: boolean;
|
|
107
|
+
totalCents: number;
|
|
108
|
+
/** Uppercase ISO currency (from store settings). */
|
|
109
|
+
currency: string;
|
|
110
|
+
}
|
|
111
|
+
/** Dollars (decimal string from the DB) → integer cents. */
|
|
112
|
+
export declare function dollarsToCents(decimal: string | null | undefined): number | null;
|
|
113
|
+
/**
|
|
114
|
+
* Re-price every cart line from the database.
|
|
115
|
+
*
|
|
116
|
+
* Every line MUST reference a real, active catalog product by UUID. The
|
|
117
|
+
* server's catalog price is the floor:
|
|
118
|
+
* - 'strict' mode uses the catalog price unconditionally.
|
|
119
|
+
* - 'floor' mode accepts a HIGHER client price (configurator/add-on
|
|
120
|
+
* surcharges priced client-side) but rejects a lower one as tampering.
|
|
121
|
+
*/
|
|
122
|
+
export declare function repriceItems(items: QuoteItemInput[], pricingMode?: 'strict' | 'floor'): Promise<RepricedItems>;
|
|
123
|
+
/**
|
|
124
|
+
* Validate/re-derive the checkout's shipping selection server-side.
|
|
125
|
+
*
|
|
126
|
+
* Manual zone rates are deterministic — the server recomputes the price for
|
|
127
|
+
* the selected option id and uses ITS number (unknown id = tampered/stale →
|
|
128
|
+
* reject). Shippo rates are ephemeral live quotes served by our own
|
|
129
|
+
* /api/checkout/shipping moments earlier — accepted with sanity bounds, the
|
|
130
|
+
* rate id stored for reconciliation.
|
|
131
|
+
*/
|
|
132
|
+
export declare function resolveShippingSelection(params: {
|
|
133
|
+
selection: ShippingOption;
|
|
134
|
+
country: string;
|
|
135
|
+
subtotalCents: number;
|
|
136
|
+
}): Promise<ShippingResolution>;
|
|
137
|
+
/**
|
|
138
|
+
* Compute tax for an order. Canonical taxable base:
|
|
139
|
+
* `subtotal − discount + shipping`.
|
|
140
|
+
*
|
|
141
|
+
* - tax-INCLUSIVE stores (`taxIncludedInPrices: true`): tax is EXTRACTED from
|
|
142
|
+
* the base for display (`base − base/divisor`) and does NOT add to the total.
|
|
143
|
+
* - tax-EXCLUSIVE stores: tax is `base × rate` and ADDS to the total.
|
|
144
|
+
*/
|
|
145
|
+
export declare function resolveTax(params: {
|
|
146
|
+
subtotalCents: number;
|
|
147
|
+
discountCents?: number;
|
|
148
|
+
shippingCents?: number;
|
|
149
|
+
country?: string | null;
|
|
150
|
+
state?: string | null;
|
|
151
|
+
taxIncludedInPrices: boolean;
|
|
152
|
+
}): Promise<TaxResolution>;
|
|
153
|
+
/**
|
|
154
|
+
* Build the authoritative Quote for a checkout: re-priced items → discounts
|
|
155
|
+
* (Phase 2) → shipping → tax → total. Both the manual payment path and the
|
|
156
|
+
* Stripe session path consume this; the processor only collects
|
|
157
|
+
* `quote.totalCents`.
|
|
158
|
+
*
|
|
159
|
+
* Throws `PricingError` on any invalid/tampered input.
|
|
160
|
+
*/
|
|
161
|
+
export declare function buildQuote(input: QuoteInput, context?: {
|
|
162
|
+
settings?: StoreSettingsData | null;
|
|
163
|
+
}): Promise<Quote>;
|
|
164
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/server/pricing
|
|
3
|
+
*
|
|
4
|
+
* THE PRICING CORE — the single server-side pipeline that computes an order's
|
|
5
|
+
* final price. Payment processors (Stripe, manual methods, future providers)
|
|
6
|
+
* only ever COLLECT the amount this module computes; none of them is a
|
|
7
|
+
* source of truth for money.
|
|
8
|
+
*
|
|
9
|
+
* MONEY-INTEGRITY RULES (apply to every checkout path):
|
|
10
|
+
* 1. Item prices come from the DATABASE (products / product_variants), never
|
|
11
|
+
* from the client. A client price above the catalog price is tolerated on
|
|
12
|
+
* the Stripe path (configurator surcharges); a client price BELOW it is a
|
|
13
|
+
* tamper and rejects the checkout. The manual path is fully strict.
|
|
14
|
+
* 2. Manual zone shipping is re-derived server-side from the selected rate
|
|
15
|
+
* id; Shippo quotes (ephemeral) are sanity-bounded.
|
|
16
|
+
* 3. Tax is computed by ONE canonical formula: taxable base =
|
|
17
|
+
* subtotal − discount + shipping, honoring `taxIncludedInPrices`.
|
|
18
|
+
* 4. Discounts (Phase 2 — native discounts engine) are applied between
|
|
19
|
+
* re-pricing and shipping; `discountCents` is 0 until then.
|
|
20
|
+
*
|
|
21
|
+
* All amounts in this module are integer CENTS. DB decimals (dollars) are
|
|
22
|
+
* converted at the boundary via `dollarsToCents`.
|
|
23
|
+
*/
|
|
24
|
+
import { findSettings, findProductById, findVariantById, findShippingOptionsForCountry, findTaxRateForAddress, } from '../../core/db/queries';
|
|
25
|
+
import { evaluateDiscounts } from './discounts';
|
|
26
|
+
// =============================================================================
|
|
27
|
+
// Errors
|
|
28
|
+
// =============================================================================
|
|
29
|
+
/**
|
|
30
|
+
* Thrown by the pricing pipeline when an input fails validation (tampered
|
|
31
|
+
* price, unknown product, stale shipping selection…). API routes map it to a
|
|
32
|
+
* 4xx `CheckoutApiError`; anything else stays a 500.
|
|
33
|
+
*/
|
|
34
|
+
export class PricingError extends Error {
|
|
35
|
+
code;
|
|
36
|
+
status;
|
|
37
|
+
constructor(message, code = 'INVALID_REQUEST', status = 400) {
|
|
38
|
+
super(message);
|
|
39
|
+
this.code = code;
|
|
40
|
+
this.status = status;
|
|
41
|
+
this.name = 'PricingError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// =============================================================================
|
|
45
|
+
// Helpers
|
|
46
|
+
// =============================================================================
|
|
47
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
48
|
+
/** Dollars (decimal string from the DB) → integer cents. */
|
|
49
|
+
export function dollarsToCents(decimal) {
|
|
50
|
+
if (decimal == null)
|
|
51
|
+
return null;
|
|
52
|
+
const n = Number.parseFloat(decimal);
|
|
53
|
+
if (!Number.isFinite(n))
|
|
54
|
+
return null;
|
|
55
|
+
return Math.round(n * 100);
|
|
56
|
+
}
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// 1. Item re-pricing
|
|
59
|
+
// =============================================================================
|
|
60
|
+
/**
|
|
61
|
+
* Re-price every cart line from the database.
|
|
62
|
+
*
|
|
63
|
+
* Every line MUST reference a real, active catalog product by UUID. The
|
|
64
|
+
* server's catalog price is the floor:
|
|
65
|
+
* - 'strict' mode uses the catalog price unconditionally.
|
|
66
|
+
* - 'floor' mode accepts a HIGHER client price (configurator/add-on
|
|
67
|
+
* surcharges priced client-side) but rejects a lower one as tampering.
|
|
68
|
+
*/
|
|
69
|
+
export async function repriceItems(items, pricingMode = 'strict') {
|
|
70
|
+
if (!items || !Array.isArray(items) || items.length === 0) {
|
|
71
|
+
throw new PricingError('No items provided', 'EMPTY_CART');
|
|
72
|
+
}
|
|
73
|
+
const lines = [];
|
|
74
|
+
const categoryByProductId = {};
|
|
75
|
+
let subtotalCents = 0;
|
|
76
|
+
for (const item of items) {
|
|
77
|
+
const quantity = Number(item.quantity);
|
|
78
|
+
if (!Number.isInteger(quantity) || quantity < 1 || quantity > 999) {
|
|
79
|
+
throw new PricingError('Invalid item quantity');
|
|
80
|
+
}
|
|
81
|
+
if (!item.productId || !UUID_RE.test(item.productId)) {
|
|
82
|
+
throw new PricingError('Invalid item: unknown product');
|
|
83
|
+
}
|
|
84
|
+
const product = await findProductById(item.productId);
|
|
85
|
+
if (!product || product.status !== 'active') {
|
|
86
|
+
throw new PricingError('Invalid item: product unavailable');
|
|
87
|
+
}
|
|
88
|
+
let serverUnitCents = dollarsToCents(product.price);
|
|
89
|
+
let name = product.name;
|
|
90
|
+
let variantId;
|
|
91
|
+
if (item.variantId && UUID_RE.test(item.variantId)) {
|
|
92
|
+
const variant = await findVariantById(item.variantId);
|
|
93
|
+
if (!variant || variant.productId !== product.id) {
|
|
94
|
+
throw new PricingError('Invalid item variant');
|
|
95
|
+
}
|
|
96
|
+
const variantCents = dollarsToCents(variant.price);
|
|
97
|
+
if (variantCents != null)
|
|
98
|
+
serverUnitCents = variantCents;
|
|
99
|
+
name = `${product.name} - ${variant.name}`;
|
|
100
|
+
variantId = variant.id;
|
|
101
|
+
}
|
|
102
|
+
else if (item.variantId) {
|
|
103
|
+
// Non-UUID variant refs (configurator lines) can't be re-priced from a
|
|
104
|
+
// variant row: 'floor' mode falls back to the product base price with
|
|
105
|
+
// the client surcharge allowed; 'strict' mode rejects.
|
|
106
|
+
if (pricingMode === 'strict') {
|
|
107
|
+
throw new PricingError('Invalid item variant');
|
|
108
|
+
}
|
|
109
|
+
variantId = item.variantId;
|
|
110
|
+
}
|
|
111
|
+
if (serverUnitCents == null || serverUnitCents <= 0) {
|
|
112
|
+
throw new PricingError('Invalid item: product has no price');
|
|
113
|
+
}
|
|
114
|
+
let unitCents = serverUnitCents;
|
|
115
|
+
if (pricingMode === 'floor' && typeof item.price === 'number') {
|
|
116
|
+
const clientCents = Math.round(item.price);
|
|
117
|
+
if (!Number.isFinite(clientCents) || clientCents < serverUnitCents) {
|
|
118
|
+
throw new PricingError('Cart prices are out of date. Please refresh the page and try again.');
|
|
119
|
+
}
|
|
120
|
+
// Client price >= catalog price: accept (configurator surcharges).
|
|
121
|
+
unitCents = clientCents;
|
|
122
|
+
}
|
|
123
|
+
subtotalCents += unitCents * quantity;
|
|
124
|
+
categoryByProductId[product.id] =
|
|
125
|
+
product.categoryId ?? null;
|
|
126
|
+
lines.push({
|
|
127
|
+
productId: product.id,
|
|
128
|
+
variantId,
|
|
129
|
+
name,
|
|
130
|
+
description: item.description,
|
|
131
|
+
price: unitCents,
|
|
132
|
+
quantity,
|
|
133
|
+
image: item.image || product.images?.[0],
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return { lines, subtotalCents, categoryByProductId };
|
|
137
|
+
}
|
|
138
|
+
// =============================================================================
|
|
139
|
+
// 2. Shipping resolution
|
|
140
|
+
// =============================================================================
|
|
141
|
+
/**
|
|
142
|
+
* Validate/re-derive the checkout's shipping selection server-side.
|
|
143
|
+
*
|
|
144
|
+
* Manual zone rates are deterministic — the server recomputes the price for
|
|
145
|
+
* the selected option id and uses ITS number (unknown id = tampered/stale →
|
|
146
|
+
* reject). Shippo rates are ephemeral live quotes served by our own
|
|
147
|
+
* /api/checkout/shipping moments earlier — accepted with sanity bounds, the
|
|
148
|
+
* rate id stored for reconciliation.
|
|
149
|
+
*/
|
|
150
|
+
export async function resolveShippingSelection(params) {
|
|
151
|
+
const { selection: sel, country, subtotalCents } = params;
|
|
152
|
+
if (!sel?.id) {
|
|
153
|
+
throw new PricingError('A shipping method is required');
|
|
154
|
+
}
|
|
155
|
+
if (sel.source === 'shippo') {
|
|
156
|
+
const price = Number(sel.price);
|
|
157
|
+
if (!Number.isFinite(price) || price < 0 || price > 1_000_000) {
|
|
158
|
+
throw new PricingError('Invalid shipping selection');
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
shippingCents: Math.round(price),
|
|
162
|
+
shippingMethodName: [sel.carrierName, sel.name].filter(Boolean).join(' - ') || sel.name,
|
|
163
|
+
carrier: sel.carrierCode || sel.carrierId || undefined,
|
|
164
|
+
shippoRateId: sel.id,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// Manual zone rate. NOTE: findShippingOptionsForCountry returns prices in
|
|
168
|
+
// DOLLARS (DB storage unit); the public shipping API multiplies by 100
|
|
169
|
+
// before serving the client. Convert here the same way.
|
|
170
|
+
const grouped = await findShippingOptionsForCountry(country, subtotalCents / 100);
|
|
171
|
+
const flat = grouped.flatMap((g) => g.options);
|
|
172
|
+
const match = flat.find((o) => o.id === sel.id);
|
|
173
|
+
if (!match) {
|
|
174
|
+
throw new PricingError('Selected shipping method is no longer available');
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
shippingCents: Math.round((Number(match.price) || 0) * 100),
|
|
178
|
+
shippingMethodName: [match.carrierName, match.name].filter(Boolean).join(' - ') || match.name,
|
|
179
|
+
carrier: match.carrierCode || match.carrierId || undefined,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
// =============================================================================
|
|
183
|
+
// 3. Tax — the ONE canonical formula
|
|
184
|
+
// =============================================================================
|
|
185
|
+
/**
|
|
186
|
+
* Compute tax for an order. Canonical taxable base:
|
|
187
|
+
* `subtotal − discount + shipping`.
|
|
188
|
+
*
|
|
189
|
+
* - tax-INCLUSIVE stores (`taxIncludedInPrices: true`): tax is EXTRACTED from
|
|
190
|
+
* the base for display (`base − base/divisor`) and does NOT add to the total.
|
|
191
|
+
* - tax-EXCLUSIVE stores: tax is `base × rate` and ADDS to the total.
|
|
192
|
+
*/
|
|
193
|
+
export async function resolveTax(params) {
|
|
194
|
+
const { subtotalCents, discountCents = 0, shippingCents = 0, country, state, taxIncludedInPrices, } = params;
|
|
195
|
+
const empty = {
|
|
196
|
+
taxCents: 0,
|
|
197
|
+
taxRate: 0,
|
|
198
|
+
taxZoneId: null,
|
|
199
|
+
taxZoneName: null,
|
|
200
|
+
taxIncludedInPrices,
|
|
201
|
+
};
|
|
202
|
+
if (!country)
|
|
203
|
+
return empty;
|
|
204
|
+
const taxMatch = await findTaxRateForAddress(country, state || undefined);
|
|
205
|
+
const rate = taxMatch?.taxRate ?? 0;
|
|
206
|
+
if (rate <= 0)
|
|
207
|
+
return empty;
|
|
208
|
+
const taxableCents = Math.max(0, subtotalCents - discountCents + shippingCents);
|
|
209
|
+
const taxCents = taxIncludedInPrices
|
|
210
|
+
? Math.round(taxableCents - taxableCents / (1 + rate / 100))
|
|
211
|
+
: Math.round(taxableCents * (rate / 100));
|
|
212
|
+
return {
|
|
213
|
+
taxCents,
|
|
214
|
+
taxRate: rate,
|
|
215
|
+
taxZoneId: taxMatch?.zoneId ?? null,
|
|
216
|
+
taxZoneName: taxMatch?.zoneName ?? null,
|
|
217
|
+
taxIncludedInPrices,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
// =============================================================================
|
|
221
|
+
// The Quote — full pipeline
|
|
222
|
+
// =============================================================================
|
|
223
|
+
/**
|
|
224
|
+
* Build the authoritative Quote for a checkout: re-priced items → discounts
|
|
225
|
+
* (Phase 2) → shipping → tax → total. Both the manual payment path and the
|
|
226
|
+
* Stripe session path consume this; the processor only collects
|
|
227
|
+
* `quote.totalCents`.
|
|
228
|
+
*
|
|
229
|
+
* Throws `PricingError` on any invalid/tampered input.
|
|
230
|
+
*/
|
|
231
|
+
export async function buildQuote(input, context) {
|
|
232
|
+
const settings = context?.settings !== undefined ? context.settings : await findSettings();
|
|
233
|
+
// 1. Items — server re-price.
|
|
234
|
+
const { lines, subtotalCents, categoryByProductId } = await repriceItems(input.items, input.pricingMode ?? 'strict');
|
|
235
|
+
// 2. Discounts — the native engine. An entered code that fails validation
|
|
236
|
+
// HARD-FAILS the quote (the checkout UI pre-validates via the preview
|
|
237
|
+
// endpoint, so reaching here with a bad code means a stale/tampered
|
|
238
|
+
// submission). Automatic discounts degrade silently.
|
|
239
|
+
const evaluation = await evaluateDiscounts({
|
|
240
|
+
lines,
|
|
241
|
+
subtotalCents,
|
|
242
|
+
categoryByProductId,
|
|
243
|
+
code: input.discountCode ?? null,
|
|
244
|
+
customerId: input.customerId ?? null,
|
|
245
|
+
customerGroupId: input.customerGroupId ?? null,
|
|
246
|
+
customerEmail: input.customerEmail ?? null,
|
|
247
|
+
});
|
|
248
|
+
if (input.discountCode && evaluation.codeError) {
|
|
249
|
+
throw new PricingError(evaluation.codeError.message);
|
|
250
|
+
}
|
|
251
|
+
const discountCents = Math.min(evaluation.discountCents, subtotalCents);
|
|
252
|
+
// 3. Shipping.
|
|
253
|
+
const shippingEnabled = settings?.shippingEnabled ?? true;
|
|
254
|
+
let shipping = { shippingCents: 0 };
|
|
255
|
+
if (shippingEnabled) {
|
|
256
|
+
const a = input.shippingAddress;
|
|
257
|
+
if (!a)
|
|
258
|
+
throw new PricingError('Shipping address is required');
|
|
259
|
+
if (!a.firstName || !a.lastName || !a.line1 || !a.city || !a.postalCode || !a.country) {
|
|
260
|
+
throw new PricingError('Complete shipping address is required');
|
|
261
|
+
}
|
|
262
|
+
if (!input.selectedShipping?.id) {
|
|
263
|
+
throw new PricingError('A shipping method is required');
|
|
264
|
+
}
|
|
265
|
+
shipping = await resolveShippingSelection({
|
|
266
|
+
selection: input.selectedShipping,
|
|
267
|
+
country: a.country,
|
|
268
|
+
subtotalCents,
|
|
269
|
+
});
|
|
270
|
+
// A free-shipping discount zeroes the cost but keeps the chosen method.
|
|
271
|
+
if (evaluation.freeShipping && shipping.shippingCents > 0) {
|
|
272
|
+
shipping = { ...shipping, shippingCents: 0 };
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// 4. Tax — canonical formula on subtotal − discount + shipping.
|
|
276
|
+
const taxIncludedInPrices = settings?.taxIncludedInPrices ?? true;
|
|
277
|
+
const tax = await resolveTax({
|
|
278
|
+
subtotalCents,
|
|
279
|
+
discountCents,
|
|
280
|
+
shippingCents: shipping.shippingCents,
|
|
281
|
+
country: input.shippingAddress?.country ?? null,
|
|
282
|
+
state: input.shippingAddress?.state ?? null,
|
|
283
|
+
taxIncludedInPrices,
|
|
284
|
+
});
|
|
285
|
+
// 5. Total.
|
|
286
|
+
const baseCents = subtotalCents - discountCents + shipping.shippingCents;
|
|
287
|
+
const totalCents = taxIncludedInPrices ? baseCents : baseCents + tax.taxCents;
|
|
288
|
+
const appliedCode = evaluation.applied.find((a) => a.method === 'code')?.code ?? null;
|
|
289
|
+
return {
|
|
290
|
+
lines,
|
|
291
|
+
subtotalCents,
|
|
292
|
+
discountCents,
|
|
293
|
+
appliedDiscounts: evaluation.applied,
|
|
294
|
+
discountCode: appliedCode,
|
|
295
|
+
freeShippingApplied: evaluation.freeShipping,
|
|
296
|
+
shippingCents: shipping.shippingCents,
|
|
297
|
+
shippingMethodName: shipping.shippingMethodName,
|
|
298
|
+
carrier: shipping.carrier,
|
|
299
|
+
shippoRateId: shipping.shippoRateId,
|
|
300
|
+
taxCents: tax.taxCents,
|
|
301
|
+
taxRate: tax.taxRate,
|
|
302
|
+
taxZoneId: tax.taxZoneId,
|
|
303
|
+
taxZoneName: tax.taxZoneName,
|
|
304
|
+
taxIncludedInPrices,
|
|
305
|
+
totalCents,
|
|
306
|
+
currency: (settings?.storeCurrency || process.env.STORE_CURRENCY || 'USD').toUpperCase(),
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../../src/checkout/server/pricing.ts"],"names":[],"mappings":"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"}
|
package/dist/checkout/types.d.ts
CHANGED
|
@@ -37,6 +37,10 @@ export interface CheckoutSessionRequest {
|
|
|
37
37
|
customerEmail?: string;
|
|
38
38
|
/** Store customer ID (if authenticated) */
|
|
39
39
|
customerId?: string;
|
|
40
|
+
/** Trusted customer-group id (session-resolved by the route, never client). */
|
|
41
|
+
customerGroupId?: string;
|
|
42
|
+
/** Redemption code entered in checkout (validated by the discounts engine). */
|
|
43
|
+
discountCode?: string;
|
|
40
44
|
/**
|
|
41
45
|
* Pre-collected shipping address from pre-checkout flow.
|
|
42
46
|
* When provided, this address is attached to the payment intent
|
|
@@ -104,6 +108,8 @@ export interface CreateOrderParams {
|
|
|
104
108
|
stripePromotionCodeId?: string;
|
|
105
109
|
/** Total amount in cents */
|
|
106
110
|
total: number;
|
|
111
|
+
/** Uppercase ISO currency snapshot (e.g. 'EUR'). Falls back to store settings. */
|
|
112
|
+
currency?: string;
|
|
107
113
|
/** Shipping address */
|
|
108
114
|
shippingAddress: Address;
|
|
109
115
|
/** Billing address (optional) */
|
|
@@ -508,6 +514,8 @@ export interface UseCheckoutOptions {
|
|
|
508
514
|
* When provided, creates a fixed shipping rate in Stripe instead of letting customer choose.
|
|
509
515
|
*/
|
|
510
516
|
selectedShipping?: ShippingOption;
|
|
517
|
+
/** Applied discount code (validated via /api/checkout/discount beforehand). */
|
|
518
|
+
discountCode?: string;
|
|
511
519
|
/** Callback on successful session creation (before redirect) */
|
|
512
520
|
onSuccess?: (session: CheckoutSessionResponse) => void;
|
|
513
521
|
/** Callback on error */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/checkout/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/checkout/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,8 @@ export interface StoreSettings {
|
|
|
37
37
|
logoUrl: string | null;
|
|
38
38
|
storeCurrency: string;
|
|
39
39
|
storeTimezone: string;
|
|
40
|
+
/** ISO 3166-1 alpha-2 home country (e.g. 'FR'). null = unset (forms fall back to 'US'). */
|
|
41
|
+
storeCountry: string | null;
|
|
40
42
|
taxEnabled: boolean;
|
|
41
43
|
taxRate: number;
|
|
42
44
|
shippingEnabled: boolean;
|
|
@@ -53,6 +55,8 @@ export interface StoreSettingsContextValue {
|
|
|
53
55
|
logoUrl: string | null;
|
|
54
56
|
/** Store currency code (USD, EUR, etc.) */
|
|
55
57
|
currency: string;
|
|
58
|
+
/** Store home country (ISO 3166-1 alpha-2, e.g. 'FR') — null when unset */
|
|
59
|
+
country: string | null;
|
|
56
60
|
/** Store locale for formatting */
|
|
57
61
|
locale: string;
|
|
58
62
|
/** Support email */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreSettingsProvider.d.ts","sourceRoot":"","sources":["../../src/core/StoreSettingsProvider.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAMd,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,OAAO,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,sEAAsE;IACtE,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAA;IAClB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,2BAA2B;IAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,+CAA+C;IAC/C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAA;IAC/C,yDAAyD;IACzD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,KAAK,MAAM,CAAA;IACjF,mCAAmC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAA;IACnB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IACxC,kDAAkD;IAClD,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;
|
|
1
|
+
{"version":3,"file":"StoreSettingsProvider.d.ts","sourceRoot":"","sources":["../../src/core/StoreSettingsProvider.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAMd,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,2FAA2F;IAC3F,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,OAAO,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,sEAAsE;IACtE,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAA;IAClB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,2BAA2B;IAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,+CAA+C;IAC/C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAA;IAC/C,yDAAyD;IACzD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,KAAK,MAAM,CAAA;IACjF,mCAAmC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAA;IACnB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IACxC,kDAAkD;IAClD,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AA+CD,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,eAAe,EACf,QAAQ,GACT,EAAE,0BAA0B,2CA+H5B;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,IAAI,yBAAyB,CAW5D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,yBAAyB,GAAG,IAAI,CAE3E"}
|
|
@@ -42,6 +42,7 @@ const DEFAULT_SETTINGS = {
|
|
|
42
42
|
logoUrl: null,
|
|
43
43
|
storeCurrency: 'USD',
|
|
44
44
|
storeTimezone: 'America/New_York',
|
|
45
|
+
storeCountry: null,
|
|
45
46
|
taxEnabled: false,
|
|
46
47
|
taxRate: 0,
|
|
47
48
|
shippingEnabled: true,
|
|
@@ -59,6 +60,9 @@ const CURRENCY_LOCALES = {
|
|
|
59
60
|
CAD: 'en-CA',
|
|
60
61
|
AUD: 'en-AU',
|
|
61
62
|
JPY: 'en-US', // English formatting for JPY
|
|
63
|
+
AED: 'en-AE',
|
|
64
|
+
INR: 'en-IN', // lakh/crore grouping
|
|
65
|
+
CNY: 'en-US', // English formatting for CNY (renders as CN¥)
|
|
62
66
|
};
|
|
63
67
|
// =============================================================================
|
|
64
68
|
// Context
|
|
@@ -87,6 +91,7 @@ export function StoreSettingsProvider({ children, initialSettings, fallback, })
|
|
|
87
91
|
logoUrl: data.settings?.logoUrl ?? DEFAULT_SETTINGS.logoUrl,
|
|
88
92
|
storeCurrency: data.settings?.storeCurrency || DEFAULT_SETTINGS.storeCurrency,
|
|
89
93
|
storeTimezone: data.settings?.storeTimezone || DEFAULT_SETTINGS.storeTimezone,
|
|
94
|
+
storeCountry: data.settings?.storeCountry ?? DEFAULT_SETTINGS.storeCountry,
|
|
90
95
|
taxEnabled: data.settings?.taxEnabled ?? DEFAULT_SETTINGS.taxEnabled,
|
|
91
96
|
taxRate: data.settings?.taxRate ?? DEFAULT_SETTINGS.taxRate,
|
|
92
97
|
shippingEnabled: data.settings?.shippingEnabled ?? DEFAULT_SETTINGS.shippingEnabled,
|
|
@@ -153,6 +158,7 @@ export function StoreSettingsProvider({ children, initialSettings, fallback, })
|
|
|
153
158
|
storeName: settings?.storeName || fallback?.storeName || DEFAULT_SETTINGS.storeName,
|
|
154
159
|
logoUrl: settings?.logoUrl ?? DEFAULT_SETTINGS.logoUrl,
|
|
155
160
|
currency: settings?.storeCurrency || fallback?.currency || DEFAULT_SETTINGS.storeCurrency,
|
|
161
|
+
country: settings?.storeCountry ?? null,
|
|
156
162
|
locale: CURRENCY_LOCALES[settings?.storeCurrency || ''] || fallback?.locale || DEFAULT_LOCALE,
|
|
157
163
|
supportEmail: settings?.storeEmail || fallback?.supportEmail || '',
|
|
158
164
|
isLoading,
|