sinfactura-types 1.6.28 → 1.6.30

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/basket.d.ts CHANGED
@@ -24,6 +24,14 @@ declare global {
24
24
  ivaType: number;
25
25
  cost: number;
26
26
  price: number;
27
+ listId?: number;
28
+ currency?: string;
29
+ currencyValue?: number;
30
+ currencyValueAt?: number;
31
+ priceSource?: 'percent' | 'amount';
32
+ appliedMinQty?: number;
33
+ promoApplied?: boolean;
34
+ basePrice?: number;
27
35
  }
28
36
  }
29
37
  export {};
@@ -40,6 +40,12 @@ declare global {
40
40
  phone: string;
41
41
  photoURL: string;
42
42
  postalCode: string;
43
+ /**
44
+ * FK to PriceList.id (NOT a positional ordinal). Picks which PriceSlot /
45
+ * materialized priceN applies to this customer. Legacy values 1..4 already
46
+ * equal the seeded list ids, so the migration is value-preserving; getPrice
47
+ * resolves by id, not by `price${ordinal}`. (#1780 / types#88)
48
+ */
43
49
  priceList: number;
44
50
  province: string;
45
51
  salt?: string;
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export * from "./mercadopago";
19
19
  export * from "./notification";
20
20
  export * from "./order";
21
21
  export * from "./payment";
22
+ export * from "./pricing";
22
23
  export * from "./print";
23
24
  export * from "./product";
24
25
  export * from "./return";
package/dist/index.js CHANGED
@@ -19,6 +19,7 @@ export * from "./mercadopago";
19
19
  export * from "./notification";
20
20
  export * from "./order";
21
21
  export * from "./payment";
22
+ export * from "./pricing";
22
23
  export * from "./print";
23
24
  export * from "./product";
24
25
  export * from "./return";
package/dist/invoice.d.ts CHANGED
@@ -48,6 +48,11 @@ declare global {
48
48
  quantity: number;
49
49
  iva: number;
50
50
  neto: number;
51
+ unitPrice?: number;
52
+ listId?: number;
53
+ appliedMinQty?: number;
54
+ promoApplied?: boolean;
55
+ basePrice?: number;
51
56
  }
52
57
  interface InvoiceWithCustomer extends Invoice {
53
58
  customer: Customer;
@@ -0,0 +1,72 @@
1
+ declare global {
2
+ /**
3
+ * ADR-0013 self-describing money stamp — STRICT (frozen rate required).
4
+ * Used ONLY on the new pricing-authoring shapes (PriceSlot[absolute] /
5
+ * PriceBreak / PricePromo). An optional frozen rate would reopen the
6
+ * live-rate hole (#1542). `currency` is bare `string` (catalogId) for parity
7
+ * with `Product.currency` — do NOT half-narrow to `CatalogId` while the
8
+ * entity stamps stay `string`. Do NOT retrofit this onto SupplierInvoice /
9
+ * SupplierAccount (optional-currency by design — would break supplier writes).
10
+ */
11
+ interface CurrencyStamp {
12
+ currency: string;
13
+ currencyValue: number;
14
+ currencyValueAt: number;
15
+ }
16
+ /**
17
+ * A named, extensible price list. Split OUT of the shared `Method` blob
18
+ * (`Method` is reused by 7 unrelated Store arrays — don't leak pricing into
19
+ * paymentMethods / ivaTypes). A structural SUPERSET of `Method` (keeps
20
+ * id / name / value? / removable? / editable?) so `store.priceLists:
21
+ * Method[] → PriceList[]` is type-compatible. `id` is the stable FK target
22
+ * for `Customer.priceList` + `PriceSlot.listId`.
23
+ */
24
+ interface PriceList {
25
+ id: number;
26
+ name: string;
27
+ value?: number;
28
+ removable?: boolean;
29
+ editable?: boolean;
30
+ order?: number;
31
+ defaultCurrency?: string;
32
+ tierGated?: boolean;
33
+ }
34
+ /**
35
+ * Quantity break within a slot. Resolution: highest `minQty <= qty` wins.
36
+ * Stored sorted ascending by `minQty`; no two breaks share a `minQty`
37
+ * (BE-validated). Open-ended top tier (no `maxQty` — ranges derive from the
38
+ * next break's `minQty`).
39
+ */
40
+ interface PriceBreak extends CurrencyStamp {
41
+ minQty: number;
42
+ amount: number;
43
+ }
44
+ /** Time-limited promo override. `amount` is absolute. */
45
+ interface PricePromo extends CurrencyStamp {
46
+ from?: number;
47
+ until: number;
48
+ amount: number;
49
+ }
50
+ /**
51
+ * One price list's pricing for a product. Discriminated union — kills the
52
+ * `{}`, both-set and neither-set invalid states; the `kind:'absolute' ⇒
53
+ * stamp` invariant rides the discriminant. `listId` is an FK to
54
+ * `PriceList.id`.
55
+ */
56
+ type PriceSlot = {
57
+ kind: 'percent';
58
+ listId: number;
59
+ percent: number;
60
+ breaks?: PriceBreak[];
61
+ promo?: PricePromo;
62
+ visibleOnStorefront?: boolean;
63
+ } | ({
64
+ kind: 'absolute';
65
+ listId: number;
66
+ amount: number;
67
+ breaks?: PriceBreak[];
68
+ promo?: PricePromo;
69
+ visibleOnStorefront?: boolean;
70
+ } & CurrencyStamp);
71
+ }
72
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/dist/product.d.ts CHANGED
@@ -43,10 +43,11 @@ declare global {
43
43
  isNew: boolean;
44
44
  isService: boolean;
45
45
  cost: number;
46
- price1: number;
47
- price2: number;
48
- price3: number;
49
- price4: number;
46
+ prices?: PriceSlot[];
47
+ price1?: number;
48
+ price2?: number;
49
+ price3?: number;
50
+ price4?: number;
50
51
  }
51
52
  }
52
53
  export {};
package/dist/store.d.ts CHANGED
@@ -154,7 +154,7 @@ declare global {
154
154
  cashInMethods: Method[];
155
155
  cashOutMethods: Method[];
156
156
  debitMethods: Method[];
157
- priceLists: Method[];
157
+ priceLists: PriceList[];
158
158
  accountMethods: Method[];
159
159
  deliveryMethods: Method[];
160
160
  paymentMethods: Method[];
@@ -184,6 +184,11 @@ declare global {
184
184
  afip?: Afip;
185
185
  mercadopago?: Mercadopago;
186
186
  whatsapp?: WhatsAppConfig;
187
+ sms?: SmsIntegration;
188
+ }
189
+ interface SmsIntegration {
190
+ /** When true, the store may send SMS through the shared platform account. */
191
+ enabled?: boolean;
187
192
  }
188
193
  type FxAutoUpdateStrategy = "overwrite" | "overwrite-if-stale" | "notify-only";
189
194
  interface FxAutoUpdateBinding {
@@ -63,7 +63,7 @@ declare global {
63
63
  * every existing plan in `FEATURE_MATRIX` must then declare the new key
64
64
  * (TypeScript enforces this via `Record<FeatureKey, Entitlement>`).
65
65
  */
66
- type FeatureKey = 'maxOrdersMonth' | 'maxInvoicesMonth' | 'maxProducts' | 'maxUsers' | 'maxCustomers' | 'maxStores' | 'afipInvoicing' | 'paymentIntegrations' | 'suppliers' | 'cashManagement' | 'multiStore' | 'importExport' | 'advancedReports' | 'customBranding' | 'apiAccess' | 'prioritySupport' | 'whatsappCommerce' | 'aiFeatures' | 'mobileApp' | 'customDomain';
66
+ type FeatureKey = 'maxOrdersMonth' | 'maxInvoicesMonth' | 'maxProducts' | 'maxUsers' | 'maxCustomers' | 'maxStores' | 'priceListsMax' | 'afipInvoicing' | 'paymentIntegrations' | 'suppliers' | 'cashManagement' | 'multiStore' | 'importExport' | 'advancedReports' | 'customBranding' | 'apiAccess' | 'prioritySupport' | 'whatsappCommerce' | 'aiFeatures' | 'mobileApp' | 'customDomain' | 'advancedPricing';
67
67
  /** Full feature matrix — every tier declares every feature. */
68
68
  type FeatureMatrix = Record<PlanTier, Record<FeatureKey, Entitlement>>;
69
69
  /** Resolved entitlements for a specific tenant (matrix + overrides applied). */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sinfactura-types",
3
- "version": "1.6.28",
3
+ "version": "1.6.30",
4
4
  "main": "dist/index.js",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",