@happyvertical/smrt-commerce 0.55.24 → 0.56.1

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.
Files changed (220) hide show
  1. package/AGENTS.md +11 -9
  2. package/README.md +114 -2
  3. package/agents/accounting-snapshot-mapper.md +111 -0
  4. package/agents/contract-money.md +18 -0
  5. package/agents/cost-billing.md +7 -2
  6. package/agents/document-money.md +126 -0
  7. package/agents/invoice-calculations.md +14 -2
  8. package/agents/line-amount-migration.md +50 -0
  9. package/agents/minor-unit-migration.md +20 -0
  10. package/agents/money-calculator.md +45 -0
  11. package/agents/money-model.md +113 -0
  12. package/agents/purchasing-ui.md +4 -3
  13. package/agents/quote-ui.md +3 -2
  14. package/agents/revenue-journal.md +23 -0
  15. package/agents/tax-codes.md +48 -0
  16. package/agents/tax-summary.md +126 -0
  17. package/dist/accounting-snapshot.d.ts +79 -0
  18. package/dist/accounting-snapshot.d.ts.map +1 -0
  19. package/dist/billing/runtime.d.ts +2 -0
  20. package/dist/billing/runtime.d.ts.map +1 -1
  21. package/dist/chunks/ContractLineItemCollection-DYjhj_pU.js +265 -0
  22. package/dist/chunks/ContractLineItemCollection-DYjhj_pU.js.map +1 -0
  23. package/dist/chunks/CustomerCollection-DQIujn4f.js +99 -0
  24. package/dist/chunks/CustomerCollection-DQIujn4f.js.map +1 -0
  25. package/dist/chunks/DocumentTaxCollection-BEpoqXAQ.js +1639 -0
  26. package/dist/chunks/DocumentTaxCollection-BEpoqXAQ.js.map +1 -0
  27. package/dist/chunks/InvoiceCollection-CKQflFjc.js +1047 -0
  28. package/dist/chunks/InvoiceCollection-CKQflFjc.js.map +1 -0
  29. package/dist/chunks/InvoiceLineItemCollection-CHm9zdqh.js +467 -0
  30. package/dist/chunks/InvoiceLineItemCollection-CHm9zdqh.js.map +1 -0
  31. package/dist/chunks/TaxCodeCollection-DOpzW4y8.js +149 -0
  32. package/dist/chunks/TaxCodeCollection-DOpzW4y8.js.map +1 -0
  33. package/dist/chunks/TaxComponentCollection-Cs2uXwEl.js +129 -0
  34. package/dist/chunks/TaxComponentCollection-Cs2uXwEl.js.map +1 -0
  35. package/dist/chunks/TaxSettingsCollection-BBTZDH1S.js +319 -0
  36. package/dist/chunks/TaxSettingsCollection-BBTZDH1S.js.map +1 -0
  37. package/dist/chunks/{money-DfrRxrel.js → allocation-integrity-DI3G16BN.js} +7 -12
  38. package/dist/chunks/allocation-integrity-DI3G16BN.js.map +1 -0
  39. package/dist/chunks/{calculations-Bz7RB3qK.js → calculations-DaHR17il.js} +134 -54
  40. package/dist/chunks/calculations-DaHR17il.js.map +1 -0
  41. package/dist/chunks/credit-allocation-yspz0Lab.js +121 -0
  42. package/dist/chunks/credit-allocation-yspz0Lab.js.map +1 -0
  43. package/dist/chunks/document-money-DNVhDJyC.js +860 -0
  44. package/dist/chunks/document-money-DNVhDJyC.js.map +1 -0
  45. package/dist/chunks/invoice-posting-BwV8g7z0.js +229 -0
  46. package/dist/chunks/invoice-posting-BwV8g7z0.js.map +1 -0
  47. package/dist/chunks/money-rational-CcW7gzG5.js +64 -0
  48. package/dist/chunks/money-rational-CcW7gzG5.js.map +1 -0
  49. package/dist/chunks/revenue-journal-DY9fro8E.js +140 -0
  50. package/dist/chunks/revenue-journal-DY9fro8E.js.map +1 -0
  51. package/dist/chunks/rolldown-runtime-D7D4PA-g.js +13 -0
  52. package/dist/chunks/tenant-money-barrier-DjRXgMnX.js +135 -0
  53. package/dist/chunks/tenant-money-barrier-DjRXgMnX.js.map +1 -0
  54. package/dist/chunks/{types-zVnIjSOk.js → types-LDETvQ1C.js} +3 -14
  55. package/dist/chunks/types-LDETvQ1C.js.map +1 -0
  56. package/dist/chunks/{units-BpZ0_Dpk.js → units-CNcjH_eE.js} +2 -2
  57. package/dist/chunks/{units-BpZ0_Dpk.js.map → units-CNcjH_eE.js.map} +1 -1
  58. package/dist/collections/ContractCollection.d.ts +37 -1
  59. package/dist/collections/ContractCollection.d.ts.map +1 -1
  60. package/dist/collections/ContractLineItemCollection.d.ts +26 -1
  61. package/dist/collections/ContractLineItemCollection.d.ts.map +1 -1
  62. package/dist/collections/DocumentTaxCollection.d.ts +75 -0
  63. package/dist/collections/DocumentTaxCollection.d.ts.map +1 -0
  64. package/dist/collections/InvoiceCollection.d.ts +26 -1
  65. package/dist/collections/InvoiceCollection.d.ts.map +1 -1
  66. package/dist/collections/InvoiceLineItemCollection.d.ts +26 -1
  67. package/dist/collections/InvoiceLineItemCollection.d.ts.map +1 -1
  68. package/dist/collections/MoneyMigrationDocumentCollection.d.ts +12 -0
  69. package/dist/collections/MoneyMigrationDocumentCollection.d.ts.map +1 -0
  70. package/dist/collections/PaymentAllocationCollection.d.ts +2 -0
  71. package/dist/collections/PaymentAllocationCollection.d.ts.map +1 -1
  72. package/dist/collections/PurchaseContractCollection.d.ts +8 -0
  73. package/dist/collections/PurchaseContractCollection.d.ts.map +1 -0
  74. package/dist/collections/SalesContractCollection.d.ts +8 -0
  75. package/dist/collections/SalesContractCollection.d.ts.map +1 -0
  76. package/dist/collections/TaxCodeCollection.d.ts +7 -0
  77. package/dist/collections/TaxCodeCollection.d.ts.map +1 -0
  78. package/dist/collections/TaxComponentCollection.d.ts +6 -0
  79. package/dist/collections/TaxComponentCollection.d.ts.map +1 -0
  80. package/dist/collections/TaxSettingsCollection.d.ts +16 -0
  81. package/dist/collections/TaxSettingsCollection.d.ts.map +1 -0
  82. package/dist/collections/TaxSummaryReportCollection.d.ts +151 -0
  83. package/dist/collections/TaxSummaryReportCollection.d.ts.map +1 -0
  84. package/dist/collections/index.d.ts +8 -0
  85. package/dist/collections/index.d.ts.map +1 -1
  86. package/dist/commerce-money-tools.d.ts +9 -0
  87. package/dist/commerce-money-tools.d.ts.map +1 -0
  88. package/dist/contract-money.d.ts +27 -0
  89. package/dist/contract-money.d.ts.map +1 -0
  90. package/dist/cost-billing.d.ts +0 -1
  91. package/dist/cost-billing.d.ts.map +1 -1
  92. package/dist/cost-billing.js +10 -15
  93. package/dist/cost-billing.js.map +1 -1
  94. package/dist/credit-allocation.d.ts +48 -0
  95. package/dist/credit-allocation.d.ts.map +1 -0
  96. package/dist/document-money-internal.d.ts +44 -0
  97. package/dist/document-money-internal.d.ts.map +1 -0
  98. package/dist/document-money.d.ts +85 -0
  99. package/dist/document-money.d.ts.map +1 -0
  100. package/dist/index.d.ts +16 -4
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +5563 -4243
  103. package/dist/index.js.map +1 -1
  104. package/dist/invoice-accounting-sync.d.ts +96 -0
  105. package/dist/invoice-accounting-sync.d.ts.map +1 -0
  106. package/dist/invoice-mcp.d.ts +16 -0
  107. package/dist/invoice-mcp.d.ts.map +1 -0
  108. package/dist/invoice-posting.d.ts +9 -0
  109. package/dist/invoice-posting.d.ts.map +1 -0
  110. package/dist/invoice-record-screen.d.ts +60 -0
  111. package/dist/invoice-record-screen.d.ts.map +1 -0
  112. package/dist/invoices.d.ts +2 -0
  113. package/dist/invoices.d.ts.map +1 -1
  114. package/dist/invoices.js +3 -2
  115. package/dist/manifest.json +11605 -4598
  116. package/dist/migrations/commerceLineAmounts.d.ts +84 -0
  117. package/dist/migrations/commerceLineAmounts.d.ts.map +1 -0
  118. package/dist/migrations/partyLinks.d.ts +39 -0
  119. package/dist/migrations/partyLinks.d.ts.map +1 -0
  120. package/dist/models/Contract.d.ts +61 -27
  121. package/dist/models/Contract.d.ts.map +1 -1
  122. package/dist/models/ContractLineItem.d.ts +30 -1
  123. package/dist/models/ContractLineItem.d.ts.map +1 -1
  124. package/dist/models/Customer.d.ts +7 -0
  125. package/dist/models/Customer.d.ts.map +1 -1
  126. package/dist/models/DocumentTax.d.ts +50 -0
  127. package/dist/models/DocumentTax.d.ts.map +1 -0
  128. package/dist/models/Invoice.d.ts +46 -2
  129. package/dist/models/Invoice.d.ts.map +1 -1
  130. package/dist/models/InvoiceLineItem.d.ts +33 -2
  131. package/dist/models/InvoiceLineItem.d.ts.map +1 -1
  132. package/dist/models/MoneyMigrationDocument.d.ts +28 -0
  133. package/dist/models/MoneyMigrationDocument.d.ts.map +1 -0
  134. package/dist/models/Payment.d.ts +5 -1
  135. package/dist/models/Payment.d.ts.map +1 -1
  136. package/dist/models/PaymentAllocation.d.ts.map +1 -1
  137. package/dist/models/TaxCode.d.ts +22 -0
  138. package/dist/models/TaxCode.d.ts.map +1 -0
  139. package/dist/models/TaxComponent.d.ts +21 -0
  140. package/dist/models/TaxComponent.d.ts.map +1 -0
  141. package/dist/models/TaxSettings.d.ts +33 -0
  142. package/dist/models/TaxSettings.d.ts.map +1 -0
  143. package/dist/models/TaxSummaryReport.d.ts +35 -0
  144. package/dist/models/TaxSummaryReport.d.ts.map +1 -0
  145. package/dist/models/Vendor.d.ts +9 -0
  146. package/dist/models/Vendor.d.ts.map +1 -1
  147. package/dist/models/index.d.ts +7 -1
  148. package/dist/models/index.d.ts.map +1 -1
  149. package/dist/money-rational.d.ts +15 -0
  150. package/dist/money-rational.d.ts.map +1 -0
  151. package/dist/money.d.ts +106 -25
  152. package/dist/money.d.ts.map +1 -1
  153. package/dist/money.js +274 -0
  154. package/dist/money.js.map +1 -0
  155. package/dist/recipes.d.ts +17 -47
  156. package/dist/recipes.d.ts.map +1 -1
  157. package/dist/revenue-journal.d.ts +61 -0
  158. package/dist/revenue-journal.d.ts.map +1 -0
  159. package/dist/smrt-knowledge.json +6558 -1316
  160. package/dist/svelte/components/InvoiceActions.svelte +12 -0
  161. package/dist/svelte/components/InvoiceActions.svelte.d.ts +5 -0
  162. package/dist/svelte/components/InvoiceActions.svelte.d.ts.map +1 -1
  163. package/dist/svelte/components/InvoiceEditor.svelte +15 -1
  164. package/dist/svelte/components/InvoiceEditor.svelte.d.ts.map +1 -1
  165. package/dist/svelte/components/InvoiceLineItems.svelte +3 -3
  166. package/dist/svelte/components/InvoiceRecordScreen.svelte +94 -0
  167. package/dist/svelte/components/InvoiceRecordScreen.svelte.d.ts +21 -0
  168. package/dist/svelte/components/InvoiceRecordScreen.svelte.d.ts.map +1 -0
  169. package/dist/svelte/components/InvoiceTotals.svelte +2 -2
  170. package/dist/svelte/components/MoneyInvoiceEditor.svelte +282 -0
  171. package/dist/svelte/components/MoneyInvoiceEditor.svelte.d.ts +31 -0
  172. package/dist/svelte/components/MoneyInvoiceEditor.svelte.d.ts.map +1 -0
  173. package/dist/svelte/components/PurchaseOrderEditor.svelte +53 -1
  174. package/dist/svelte/components/PurchaseOrderEditor.svelte.d.ts +5 -0
  175. package/dist/svelte/components/PurchaseOrderEditor.svelte.d.ts.map +1 -1
  176. package/dist/svelte/components/QuoteEditor.svelte +54 -1
  177. package/dist/svelte/components/QuoteEditor.svelte.d.ts +5 -0
  178. package/dist/svelte/components/QuoteEditor.svelte.d.ts.map +1 -1
  179. package/dist/svelte/i18n.d.ts +16 -0
  180. package/dist/svelte/i18n.d.ts.map +1 -1
  181. package/dist/svelte/i18n.js +16 -0
  182. package/dist/svelte/index.d.ts +7 -2
  183. package/dist/svelte/index.d.ts.map +1 -1
  184. package/dist/svelte/index.js +4 -1
  185. package/dist/svelte/invoices/calculations.d.ts +7 -2
  186. package/dist/svelte/invoices/calculations.d.ts.map +1 -1
  187. package/dist/svelte/invoices/calculations.js +141 -47
  188. package/dist/svelte/invoices/money-editor.d.ts +123 -0
  189. package/dist/svelte/invoices/money-editor.d.ts.map +1 -0
  190. package/dist/svelte/invoices/money-editor.js +101 -0
  191. package/dist/svelte/invoices/types.d.ts +5 -1
  192. package/dist/svelte/invoices/types.d.ts.map +1 -1
  193. package/dist/svelte/purchasing-i18n.d.ts +5 -0
  194. package/dist/svelte/purchasing-i18n.d.ts.map +1 -1
  195. package/dist/svelte/purchasing-i18n.js +5 -0
  196. package/dist/svelte/quote-i18n.d.ts +5 -0
  197. package/dist/svelte/quote-i18n.d.ts.map +1 -1
  198. package/dist/svelte/quote-i18n.js +5 -0
  199. package/dist/tax/cookbook.d.ts +22 -0
  200. package/dist/tax/cookbook.d.ts.map +1 -0
  201. package/dist/tax/example-pack.d.ts +25 -0
  202. package/dist/tax/example-pack.d.ts.map +1 -0
  203. package/dist/tax/identity.d.ts +5 -0
  204. package/dist/tax/identity.d.ts.map +1 -0
  205. package/dist/tax/index.d.ts +4 -0
  206. package/dist/tax/index.d.ts.map +1 -0
  207. package/dist/tax/legacy.d.ts +48 -0
  208. package/dist/tax/legacy.d.ts.map +1 -0
  209. package/dist/tax-summary-report-adapter.d.ts +37 -0
  210. package/dist/tax-summary-report-adapter.d.ts.map +1 -0
  211. package/dist/tax-summary.d.ts +129 -0
  212. package/dist/tax-summary.d.ts.map +1 -0
  213. package/dist/tenant-money-barrier.d.ts +66 -0
  214. package/dist/tenant-money-barrier.d.ts.map +1 -0
  215. package/dist/types/index.d.ts +145 -5
  216. package/dist/types/index.d.ts.map +1 -1
  217. package/package.json +19 -11
  218. package/dist/chunks/calculations-Bz7RB3qK.js.map +0 -1
  219. package/dist/chunks/money-DfrRxrel.js.map +0 -1
  220. package/dist/chunks/types-zVnIjSOk.js.map +0 -1
@@ -0,0 +1,84 @@
1
+ /** Commerce line-amount preflight, migration and rollback. */
2
+ import type { DatabaseInterface } from '@happyvertical/smrt-core/migrations';
3
+ export type CommerceLineAmountReasonCode = 'DRAFT_RECOMPUTED' | 'ISSUED_BACKFILLED' | 'UNRECONCILED' | 'TAX_RATE_OVER_ONE' | 'HAND_ENTERED_AMOUNT' | 'NEGATIVE_HALF_UNIT_GROSS' | 'MISSING_HEADER_TOTALS' | 'STALE_EDITOR_BLOB' | 'ORPHAN_LINE' | 'CROSS_TENANT_LINE' | 'MISSING_LINE_TENANT' | 'CONTRACT_DIRECTION_UNKNOWN' | 'ACCOUNTING_SYNC_UNSETTLED';
4
+ export interface CommerceMoneyTotals {
5
+ subtotalMinor: number;
6
+ taxMinor: number;
7
+ totalMinor: number;
8
+ }
9
+ export interface CommerceLineAmountDocumentReport {
10
+ tenantId: string;
11
+ documentType: 'invoice' | 'contract';
12
+ documentId: string;
13
+ status: string;
14
+ arJournalIdSet: boolean;
15
+ old: CommerceMoneyTotals;
16
+ next: CommerceMoneyTotals;
17
+ delta: CommerceMoneyTotals;
18
+ reasons: CommerceLineAmountReasonCode[];
19
+ }
20
+ export interface CommerceLineAmountTenantSummary {
21
+ tenantId: string;
22
+ documentCount: number;
23
+ changingDraftCount: number;
24
+ issuedUnpostedFallbackTaxCount: number;
25
+ reasonCounts: Partial<Record<CommerceLineAmountReasonCode, number>>;
26
+ }
27
+ export interface CommerceLineAmountsReport {
28
+ version: 1;
29
+ documents: CommerceLineAmountDocumentReport[];
30
+ tenants: CommerceLineAmountTenantSummary[];
31
+ }
32
+ /** Explicit report destinations. Omit `out` to receive only structured data. */
33
+ export interface CommerceLineAmountsReportOutput {
34
+ jsonPath: string;
35
+ csvPath: string;
36
+ }
37
+ export interface PreflightCommerceLineAmountsOptions {
38
+ /**
39
+ * Optional artifact paths. Omitting this never writes files; the preflight
40
+ * still returns the complete structured CommerceLineAmountsReport.
41
+ */
42
+ out?: CommerceLineAmountsReportOutput;
43
+ /** Optional tenant restriction. Omit only from a system migration context. */
44
+ tenantId?: string;
45
+ }
46
+ export interface MigrateCommerceLineAmountsOptions {
47
+ tenantId: string;
48
+ acceptDraftChanges?: boolean;
49
+ /**
50
+ * Stable owner identity chosen before the attempt starts. Supplying it on
51
+ * the first call makes failures after the tenant claim safely resumable;
52
+ * a retry must present the same identity.
53
+ */
54
+ migrationId?: string;
55
+ }
56
+ export interface CommerceLineAmountsMigrationResult {
57
+ tenantId: string;
58
+ migrationId: string;
59
+ migrated: number;
60
+ resumed: number;
61
+ activated: boolean;
62
+ report: CommerceLineAmountsReport;
63
+ }
64
+ export interface RollbackCommerceLineAmountsOptions {
65
+ tenantId: string;
66
+ migrationId: string;
67
+ }
68
+ export interface CommerceLineAmountsRollbackResult {
69
+ tenantId: string;
70
+ migrationId: string;
71
+ restored: number;
72
+ alreadyRestored: number;
73
+ }
74
+ /** Stable JSON bytes for review artifacts and retry comparisons. */
75
+ export declare function serializeCommerceLineAmountsReportJson(report: CommerceLineAmountsReport): string;
76
+ /** Stable one-row-per-document CSV bytes. Tenant summaries remain in JSON. */
77
+ export declare function serializeCommerceLineAmountsReportCsv(report: CommerceLineAmountsReport): string;
78
+ /** Read-only migration inventory. It never creates TaxSettings or claims a barrier. */
79
+ export declare function preflightCommerceLineAmounts(db: DatabaseInterface, options?: PreflightCommerceLineAmountsOptions): Promise<CommerceLineAmountsReport>;
80
+ /** Claim one tenant, migrate each document durably, verify, then activate v2. */
81
+ export declare function migrateCommerceLineAmounts(db: DatabaseInterface, options: MigrateCommerceLineAmountsOptions): Promise<CommerceLineAmountsMigrationResult>;
82
+ /** Restore exact pre-images only while every current document still matches its post-image. */
83
+ export declare function rollbackCommerceLineAmounts(db: DatabaseInterface, options: RollbackCommerceLineAmountsOptions): Promise<CommerceLineAmountsRollbackResult>;
84
+ //# sourceMappingURL=commerceLineAmounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commerceLineAmounts.d.ts","sourceRoot":"","sources":["../../src/migrations/commerceLineAmounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /** Read-only deployment preflight for the Contract party split (#3898). */
2
+ import type { DatabaseInterface } from '@happyvertical/smrt-core/migrations';
3
+ export interface CommercePartyLinkRow {
4
+ id: string;
5
+ tenant_id: string | null;
6
+ _meta_type: string | null;
7
+ contract_type: string | null;
8
+ customer_id: string | null;
9
+ vendor_id: string | null;
10
+ }
11
+ export interface CommerceContractTypeGroup {
12
+ _meta_type: string | null;
13
+ contract_type: string | null;
14
+ count: number;
15
+ }
16
+ /** Existing document whose contract link will fail branch validation on save. */
17
+ export interface CommerceInvalidContractReference {
18
+ source_table: string;
19
+ source_id: string;
20
+ source_tenant_id: string | null;
21
+ contract_id: string;
22
+ contract_meta_type: string | null;
23
+ contract_tenant_id: string | null;
24
+ }
25
+ export interface CommercePartyLinksPreflight {
26
+ purchaseRowsWithCustomer: CommercePartyLinkRow[];
27
+ salesRowsWithVendor: CommercePartyLinkRow[];
28
+ missingRequiredCustomer: CommercePartyLinkRow[];
29
+ missingRequiredVendor: CommercePartyLinkRow[];
30
+ baseTypedRows: CommercePartyLinkRow[];
31
+ unqualifiedDiscriminatorRows: CommercePartyLinkRow[];
32
+ discriminatorGroups: CommerceContractTypeGroup[];
33
+ discriminatorMismatches: CommerceContractTypeGroup[];
34
+ invalidSalesReferences: CommerceInvalidContractReference[];
35
+ invalidPurchaseReferences: CommerceInvalidContractReference[];
36
+ }
37
+ /** Inspect existing party links before deploying the new STI hierarchy. Never writes. */
38
+ export declare function preflightCommercePartyLinks(db: DatabaseInterface): Promise<CommercePartyLinksPreflight>;
39
+ //# sourceMappingURL=partyLinks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partyLinks.d.ts","sourceRoot":"","sources":["../../src/migrations/partyLinks.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAG3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iFAAiF;AACjF,MAAM,WAAW,gCAAgC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,wBAAwB,EAAE,oBAAoB,EAAE,CAAC;IACjD,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;IAC5C,uBAAuB,EAAE,oBAAoB,EAAE,CAAC;IAChD,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,4BAA4B,EAAE,oBAAoB,EAAE,CAAC;IACrD,mBAAmB,EAAE,yBAAyB,EAAE,CAAC;IACjD,uBAAuB,EAAE,yBAAyB,EAAE,CAAC;IACrD,sBAAsB,EAAE,gCAAgC,EAAE,CAAC;IAC3D,yBAAyB,EAAE,gCAAgC,EAAE,CAAC;CAC/D;AAuCD,yFAAyF;AACzF,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,iBAAiB,GACpB,OAAO,CAAC,2BAA2B,CAAC,CAmJtC"}
@@ -3,16 +3,20 @@
3
3
  * @packageDocumentation
4
4
  */
5
5
  import { type Meta, SmrtObject } from '@happyvertical/smrt-core';
6
- import { type ContractOptions, ContractStatus, ContractType, type LicenseSaleOptions, type PurchaseOrderOptions } from '../types/index.js';
6
+ import type { DatabaseInterface } from '@happyvertical/smrt-core/migrations';
7
+ import { type DocumentMoneyReadRebindCapability, type DocumentMoneyWriteCapability } from '../document-money-internal.js';
8
+ import { type ContractOptions, ContractStatus, ContractType, type LicenseSaleOptions, type PurchaseContractOptions, type PurchaseOrderOptions, type SalesContractOptions, type TaxRegistrationOptions } from '../types/index.js';
9
+ /** Whether a Contract belongs to the purchase STI branch, including descendants. */
10
+ export declare function classifyContractPurchase(contract: Contract): boolean;
11
+ /** A frozen Contract snapshot is reportable except when cancelled. */
12
+ export declare function isContractSnapshotReportEligible(contract: Contract): boolean;
7
13
  /**
8
14
  * Contract is the base class for all commercial agreements.
9
15
  *
10
- * Uses Single Table Inheritance (STI) to support different contract types:
11
- * - Estimate: Quote/proposal for customer
12
- * - Order: Customer purchase order
13
- * - Lease: Rental/lease agreement
14
- * - Agreement: Service/maintenance agreement
15
- * - PurchaseOrder: Order to vendor/supplier
16
+ * Uses Single Table Inheritance (STI) for nine leaf types. SalesContract owns
17
+ * the customer link for Estimate, Order, WholesaleOrder, Cart, Lease,
18
+ * Agreement, and LicenseSale. PurchaseContract owns the vendor link for
19
+ * PurchaseOrder and ProductionOrder. Both branches share `contracts`.
16
20
  *
17
21
  * @example
18
22
  * ```typescript
@@ -34,6 +38,8 @@ import { type ContractOptions, ContractStatus, ContractType, type LicenseSaleOpt
34
38
  * ```
35
39
  */
36
40
  export declare class Contract extends SmrtObject {
41
+ /** @internal Collection read guard returns this snapshot on its root DB. */
42
+ rebindMoneyRead(capability: DocumentMoneyReadRebindCapability, db: DatabaseInterface): this;
37
43
  /**
38
44
  * Tenant ID for multi-tenant isolation
39
45
  * Nullable to support both tenant-scoped and global contracts
@@ -47,14 +53,6 @@ export declare class Contract extends SmrtObject {
47
53
  * Current status of the contract
48
54
  */
49
55
  status: ContractStatus;
50
- /**
51
- * Customer ID (for sales contracts: Estimate, Order, Agreement)
52
- */
53
- customerId: string | null;
54
- /**
55
- * Vendor ID (for purchase contracts: PurchaseOrder)
56
- */
57
- vendorId: string | null;
58
56
  /**
59
57
  * Subtotal before tax, in **integer minor units** (cents, satoshis).
60
58
  *
@@ -64,6 +62,8 @@ export declare class Contract extends SmrtObject {
64
62
  * (#2401).
65
63
  */
66
64
  subtotal: number;
65
+ /** Informational sum of resolved line discounts, in integer minor units. */
66
+ discountTotal: number;
67
67
  /**
68
68
  * Tax amount, in integer minor units (#2401).
69
69
  */
@@ -76,6 +76,18 @@ export declare class Contract extends SmrtObject {
76
76
  * Currency code (ISO 4217)
77
77
  */
78
78
  currency: string;
79
+ /** Pricing interpretation fixed before the Contract leaves draft. */
80
+ lineAmountType: 'exclusive' | 'inclusive' | 'none';
81
+ /** Component rounding scope fixed before the Contract leaves draft. */
82
+ taxRoundingScope: 'line' | 'document';
83
+ /** Immutable seller registration snapshot once the Contract leaves draft. */
84
+ sellerTaxRegistrationsJson: string;
85
+ get sellerTaxRegistrations(): TaxRegistrationOptions[];
86
+ set sellerTaxRegistrations(value: TaxRegistrationOptions[]);
87
+ /** Immutable customer or vendor tax identifier snapshot after issue. */
88
+ partyTaxId: string;
89
+ /** Stable issue/freeze identity, independent of lifecycle updated_at. */
90
+ moneySnapshotId: string;
79
91
  /**
80
92
  * Date contract was issued
81
93
  */
@@ -156,6 +168,8 @@ export declare class Contract extends SmrtObject {
156
168
  * write surface (#2401).
157
169
  */
158
170
  save(): Promise<this>;
171
+ /** @internal Contract aggregate persistence only. */
172
+ saveDerived(capability: DocumentMoneyWriteCapability): Promise<this>;
159
173
  /**
160
174
  * Reject an illegal status flip done via raw assignment. No-op transitions
161
175
  * and brand-new rows are always allowed.
@@ -179,34 +193,53 @@ export declare class Contract extends SmrtObject {
179
193
  */
180
194
  protected resolvePriorStatus(): Promise<ContractStatus | undefined>;
181
195
  }
196
+ /** Customer-side contracts, including orders, estimates, and licenses. */
197
+ export declare abstract class SalesContract extends Contract {
198
+ customerId: string | null;
199
+ constructor(options?: SalesContractOptions);
200
+ }
201
+ /** Supplier-side contracts, including purchase and production orders. */
202
+ export declare abstract class PurchaseContract extends Contract {
203
+ vendorId: string | null;
204
+ constructor(options?: PurchaseContractOptions);
205
+ }
182
206
  /**
183
207
  * Estimate - Quote or proposal for a customer
184
208
  */
185
- export declare class Estimate extends Contract {
209
+ export declare class Estimate extends SalesContract {
210
+ customerId: string | null;
186
211
  contractType: ContractType;
212
+ constructor(options?: SalesContractOptions);
187
213
  }
188
214
  /**
189
215
  * Order - Customer purchase order
190
216
  */
191
- export declare class Order extends Contract {
217
+ export declare class Order extends SalesContract {
218
+ customerId: string | null;
192
219
  contractType: ContractType;
220
+ constructor(options?: SalesContractOptions);
193
221
  }
194
222
  /**
195
223
  * Lease - Rental or lease agreement
196
224
  */
197
- export declare class Lease extends Contract {
225
+ export declare class Lease extends SalesContract {
226
+ customerId: string | null;
198
227
  contractType: ContractType;
228
+ constructor(options?: SalesContractOptions);
199
229
  }
200
230
  /**
201
231
  * Agreement - Service or maintenance agreement
202
232
  */
203
- export declare class Agreement extends Contract {
233
+ export declare class Agreement extends SalesContract {
234
+ customerId: string | null;
204
235
  contractType: ContractType;
236
+ constructor(options?: SalesContractOptions);
205
237
  }
206
238
  /**
207
239
  * PurchaseOrder - Order sent to vendor/supplier
208
240
  */
209
- export declare class PurchaseOrder extends Contract {
241
+ export declare class PurchaseOrder extends PurchaseContract {
242
+ vendorId: string | null;
210
243
  contractType: ContractType;
211
244
  /** Expected delivery calendar date (YYYY-MM-DD), or empty when unspecified. */
212
245
  expectedDate: Meta<string>;
@@ -222,8 +255,10 @@ export declare class PurchaseOrder extends Contract {
222
255
  * `customerType: 'wholesale'`, uses NET-30/60 payment terms, and is delivered
223
256
  * via the wholesale-portal channel rather than retail checkout.
224
257
  */
225
- export declare class WholesaleOrder extends Contract {
258
+ export declare class WholesaleOrder extends SalesContract {
259
+ customerId: string | null;
226
260
  contractType: ContractType;
261
+ constructor(options?: SalesContractOptions);
227
262
  }
228
263
  /**
229
264
  * ProductionOrder - instruction to commission goods from an internal or
@@ -251,7 +286,7 @@ export declare class WholesaleOrder extends Contract {
251
286
  * shared `_meta_data` JSON column on the Contract STI table instead of
252
287
  * widening the base schema with manufacturing-specific columns.
253
288
  */
254
- export declare class ProductionOrder extends Contract {
289
+ export declare class ProductionOrder extends PurchaseContract {
255
290
  contractType: ContractType;
256
291
  /**
257
292
  * Plain string reference to the upstream product the order is asked
@@ -277,11 +312,10 @@ export declare class ProductionOrder extends Contract {
277
312
  *
278
313
  * A Cart starts in {@link ContractStatus.DRAFT} via the base `Contract.status`
279
314
  * default — the subclass doesn't need its own override. Application code
280
- * is responsible for promoting the row to `ContractStatus.PENDING` /
281
- * `ACCEPTED` at checkout time; the framework doesn't enforce a state
282
- * machine on the cart → order transition.
315
+ * is responsible for assigning the appropriate Order status at checkout;
316
+ * the framework doesn't enforce a state machine on the cart → order transition.
283
317
  */
284
- export declare class Cart extends Contract {
318
+ export declare class Cart extends SalesContract {
285
319
  contractType: ContractType;
286
320
  }
287
321
  /**
@@ -334,7 +368,7 @@ export interface LicenseRightsSnapshot {
334
368
  * the `contracts` STI table — no migration of the base schema needed
335
369
  * to land this subtype.
336
370
  */
337
- export declare class LicenseSale extends Contract {
371
+ export declare class LicenseSale extends SalesContract {
338
372
  contractType: ContractType;
339
373
  /**
340
374
  * Plain string reference to the upstream `Sku` (from
@@ -1 +1 @@
1
- {"version":3,"file":"Contract.d.ts","sourceRoot":"","sources":["../../src/models/Contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Contract.d.ts","sourceRoot":"","sources":["../../src/models/Contract.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@
3
3
  * @packageDocumentation
4
4
  */
5
5
  import { SmrtObject } from '@happyvertical/smrt-core';
6
- import type { ContractLineItemOptions } from '../types/index.js';
6
+ import type { DatabaseInterface } from '@happyvertical/smrt-core/migrations';
7
+ import { type DocumentMoneyReadRebindCapability, type DocumentMoneyWriteCapability } from '../document-money-internal.js';
8
+ import type { ContractLineItemOptions, ContractTaxComponentSnapshot } from '../types/index.js';
7
9
  /**
8
10
  * ContractLineItem represents a single line item on a contract.
9
11
  *
@@ -22,6 +24,8 @@ import type { ContractLineItemOptions } from '../types/index.js';
22
24
  * ```
23
25
  */
24
26
  export declare class ContractLineItem extends SmrtObject {
27
+ /** @internal Collection read guard returns this snapshot on its root DB. */
28
+ rebindMoneyRead(capability: DocumentMoneyReadRebindCapability, db: DatabaseInterface): this;
25
29
  /**
26
30
  * Tenant ID for multi-tenant isolation
27
31
  * Nullable to support both tenant-scoped and global line items
@@ -52,11 +56,26 @@ export declare class ContractLineItem extends SmrtObject {
52
56
  * Discount amount (flat, not percentage), in integer minor units (#2401).
53
57
  */
54
58
  discount: number;
59
+ discountType: 'none' | 'percent' | 'amount';
60
+ discountRate: string;
55
61
  /**
56
62
  * Tax rate as decimal (e.g., 0.08 for 8%). A rate is inherently fractional,
57
63
  * so it stays DECIMAL — INTEGER would truncate every meaningful value.
58
64
  */
59
65
  taxRate: number;
66
+ taxMode: 'inherit' | 'override';
67
+ taxCodeId: string | null;
68
+ taxCodeCode: string | null;
69
+ taxCodeName: string | null;
70
+ taxComponentsJson: string | null;
71
+ get taxComponents(): ContractTaxComponentSnapshot[];
72
+ set taxComponents(value: ContractTaxComponentSnapshot[]);
73
+ /** Exact sum of frozen component taxes, in integer minor units. */
74
+ taxAmount: number;
75
+ /** Pre-v2 amount preserved only by the migration path. */
76
+ legacyAmount: number | null;
77
+ /** Stable issue/freeze identity, independent of lifecycle updated_at. */
78
+ moneySnapshotId: string;
60
79
  /**
61
80
  * Calculated line amount (qty * price - discount + tax), in integer minor
62
81
  * units. Derived by {@link ContractLineItem.calculateAmount}, which rounds
@@ -98,6 +117,16 @@ export declare class ContractLineItem extends SmrtObject {
98
117
  * plain `===` instead of an epsilon tolerance (#2401).
99
118
  */
100
119
  calculateAmount(): number;
120
+ save(): Promise<this>;
121
+ /** @internal Contract aggregate persistence only. */
122
+ saveDerived(capability: DocumentMoneyWriteCapability, legacy: boolean): Promise<this>;
123
+ delete(options?: {
124
+ expectedUpdatedAt?: Date | string;
125
+ }): Promise<void>;
126
+ /** @internal Contract aggregate persistence only. */
127
+ deleteDerived(capability: DocumentMoneyWriteCapability, options?: {
128
+ expectedUpdatedAt?: Date | string;
129
+ }): Promise<void>;
101
130
  /**
102
131
  * Check if this is a subscription/recurring item
103
132
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ContractLineItem.d.ts","sourceRoot":"","sources":["../../src/models/ContractLineItem.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIL,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAOa,gBAAiB,SAAQ,UAAU;IAC9C;;;OAGG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAGH,UAAU,EAAE,MAAM,CAAM;IAExB;;OAEG;IAEH,WAAW,EAAE,MAAM,CAAM;IAEzB;;;OAGG;IAEH,QAAQ,EAAE,MAAM,CAAO;IAEvB;;;;;;OAMG;IAKH,SAAS,EAAE,MAAM,CAAK;IAEtB;;OAEG;IAEH,QAAQ,EAAE,MAAM,CAAK;IAErB;;;OAGG;IAIH,OAAO,EAAE,MAAM,CAAO;IAEtB;;;;OAIG;IAEH,MAAM,EAAE,MAAM,CAAK;IAEnB;;OAEG;IAKH,SAAS,EAAE,MAAM,CAAM;IAEvB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAM;IAEjB;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE9B;;OAEG;IACH,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE5B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAM;IAE3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAK;gBAEV,OAAO,GAAE,uBAA4B;IAoBjD;;;;;;;;OAQG;IACH,eAAe,IAAI,MAAM;IAMzB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,oBAAoB,IAAI,OAAO;CAUhC;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"ContractLineItem.d.ts","sourceRoot":"","sources":["../../src/models/ContractLineItem.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIL,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAGL,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,EAClC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,uBAAuB,EACvB,4BAA4B,EAC7B,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;GAgBG;AACH,qBAOa,gBAAiB,SAAQ,UAAU;IAC9C,4EAA4E;IAC5E,eAAe,CACb,UAAU,EAAE,iCAAiC,EAC7C,EAAE,EAAE,iBAAiB,GACpB,IAAI;IAUP;;;OAGG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAGH,UAAU,EAAE,MAAM,CAAM;IAExB;;OAEG;IAEH,WAAW,EAAE,MAAM,CAAM;IAEzB;;;OAGG;IAEH,QAAQ,EAAE,MAAM,CAAO;IAEvB;;;;;;OAMG;IAKH,SAAS,EAAE,MAAM,CAAK;IAEtB;;OAEG;IAEH,QAAQ,EAAE,MAAM,CAAK;IAErB,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAU;IAGrD,YAAY,SAAS;IAErB;;;OAGG;IAKH,OAAO,EAAE,MAAM,CAAO;IAEtB,OAAO,EAAE,SAAS,GAAG,UAAU,CAAa;IAG5C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAElC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAElC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAExC,IAAI,aAAa,IAAI,4BAA4B,EAAE,CAoBlD;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,4BAA4B,EAAE,EAEtD;IAED,mEAAmE;IACnE,SAAS,SAAK;IAEd,0DAA0D;IAE1D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEnC,yEAAyE;IACzE,eAAe,SAAM;IAErB;;;;OAIG;IAEH,MAAM,EAAE,MAAM,CAAK;IAEnB;;OAEG;IAKH,SAAS,EAAE,MAAM,CAAM;IAEvB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAM;IAEjB;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE9B;;OAEG;IACH,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE5B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAM;IAE3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAK;gBAEV,OAAO,GAAE,uBAA4B;IAuCjD;;;;;;;;OAQG;IACH,eAAe,IAAI,MAAM;IAMV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC,qDAAqD;IAC/C,WAAW,CACf,UAAU,EAAE,4BAA4B,EACxC,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC;IAOD,MAAM,CACnB,OAAO,GAAE;QAAE,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAO,GAClD,OAAO,CAAC,IAAI,CAAC;IAKhB,qDAAqD;IAC/C,aAAa,CACjB,UAAU,EAAE,4BAA4B,EACxC,OAAO,GAAE;QAAE,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAO,GAClD,OAAO,CAAC,IAAI,CAAC;IAMhB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,oBAAoB,IAAI,OAAO;CAUhC;AAED,eAAe,gBAAgB,CAAC"}
@@ -55,6 +55,13 @@ export declare class Customer extends SmrtObject {
55
55
  * rejected as a `where` filter key.
56
56
  */
57
57
  taxId: string;
58
+ /**
59
+ * Tax code normally used for this customer's sales.
60
+ *
61
+ * An exempt customer always resolves to the tenant's exempt code before
62
+ * this preference is considered.
63
+ */
64
+ defaultTaxCodeId: string;
58
65
  /**
59
66
  * Default shipping address
60
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Customer.d.ts","sourceRoot":"","sources":["../../src/models/Customer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,cAAc,EACd,YAAY,EACZ,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;GAcG;AACH,qBAMa,QAAS,SAAQ,UAAU;IACtC;;;OAGG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;;OAGG;IAKH,SAAS,EAAE,MAAM,CAAM;IAEvB;;;;;;;;OAQG;IAMH,WAAW,EAAE,MAAM,CAAK;IAExB;;OAEG;IAKH,YAAY,EAAE,MAAM,CAAM;IAE1B;;OAEG;IAIH,SAAS,EAAE,OAAO,CAAS;IAE3B;;;;;OAKG;IAMH,KAAK,EAAE,MAAM,CAAM;IAEnB;;OAEG;IAKH,sBAAsB,EAAE,OAAO,CAAM;IAErC;;OAEG;IAEH,qBAAqB,EAAE,OAAO,CAAM;IAEpC;;OAEG;IAKH,MAAM,EAAE,cAAc,CAAyB;IAE/C;;;;;OAKG;IAKH,YAAY,EAAE,YAAY,CAAoB;IAE9C;;OAEG;IAKH,KAAK,EAAE,MAAM,CAAM;IAEnB;;;OAGG;IAKH,QAAQ,EAAE,YAAY,EAAE,CAAM;gBAElB,OAAO,GAAE,eAAoB;IA8BzC;;;OAGG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C,0EAA0E;IAC3D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK3C;;;;;;;;;;OAUG;IACH,YAAY,IAAI,MAAM;CAGvB;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Customer.d.ts","sourceRoot":"","sources":["../../src/models/Customer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIL,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,cAAc,EACd,YAAY,EACZ,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;GAcG;AACH,qBAMa,QAAS,SAAQ,UAAU;IACtC;;;OAGG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;;OAGG;IAKH,SAAS,EAAE,MAAM,CAAM;IAEvB;;;;;;;;OAQG;IAMH,WAAW,EAAE,MAAM,CAAK;IAExB;;OAEG;IAKH,YAAY,EAAE,MAAM,CAAM;IAE1B;;OAEG;IAIH,SAAS,EAAE,OAAO,CAAS;IAE3B;;;;;OAKG;IAMH,KAAK,EAAE,MAAM,CAAM;IAEnB;;;;;OAKG;IAIH,gBAAgB,EAAE,MAAM,CAAM;IAE9B;;OAEG;IAKH,sBAAsB,EAAE,OAAO,CAAM;IAErC;;OAEG;IAEH,qBAAqB,EAAE,OAAO,CAAM;IAEpC;;OAEG;IAKH,MAAM,EAAE,cAAc,CAAyB;IAE/C;;;;;OAKG;IAKH,YAAY,EAAE,YAAY,CAAoB;IAE9C;;OAEG;IAKH,KAAK,EAAE,MAAM,CAAM;IAEnB;;;OAGG;IAKH,QAAQ,EAAE,YAAY,EAAE,CAAM;gBAElB,OAAO,GAAE,eAAoB;IAgCzC;;;OAGG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C,0EAA0E;IAC3D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK3C;;;;;;;;;;OAUG;IACH,YAAY,IAAI,MAAM;CAGvB;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,50 @@
1
+ /** Persisted per-code/component tax totals for a commerce document. */
2
+ import { SmrtObject, type SmrtObjectOptions } from '@happyvertical/smrt-core';
3
+ import { type DocumentMoneyWriteCapability } from '../document-money-internal.js';
4
+ import { type TaxCodeKind } from '../money.js';
5
+ export type CommerceDocumentType = 'invoice' | 'contract' | 'credit_note';
6
+ export interface DocumentTaxOptions extends SmrtObjectOptions {
7
+ tenantId?: string;
8
+ documentType?: CommerceDocumentType;
9
+ documentId?: string;
10
+ currency?: string;
11
+ taxCodeId?: string | null;
12
+ taxCodeCode?: string | null;
13
+ kind?: TaxCodeKind | null;
14
+ taxComponentId?: string | null;
15
+ taxComponentName?: string | null;
16
+ percent?: string | null;
17
+ liabilityAccountId?: string | null;
18
+ taxableMinor?: number;
19
+ taxMinor?: number;
20
+ recoverableMinor?: number;
21
+ }
22
+ export declare class DocumentTax extends SmrtObject {
23
+ tenantId: string;
24
+ documentType: CommerceDocumentType;
25
+ documentId: string;
26
+ currency: string;
27
+ taxCodeId: string | null;
28
+ taxCodeCode: string | null;
29
+ kind: TaxCodeKind | null;
30
+ taxComponentId: string | null;
31
+ taxComponentName: string | null;
32
+ percent: string | null;
33
+ liabilityAccountId: string | null;
34
+ taxableMinor: number;
35
+ taxMinor: number;
36
+ recoverableMinor: number;
37
+ constructor(options?: DocumentTaxOptions);
38
+ private assertValidDerivedRow;
39
+ save(): Promise<this>;
40
+ delete(_options?: {
41
+ expectedUpdatedAt?: Date | string;
42
+ }): Promise<void>;
43
+ /** @internal Aggregate persistence only. */
44
+ saveDerived(capability: DocumentMoneyWriteCapability): Promise<this>;
45
+ /** @internal Aggregate persistence only. */
46
+ deleteDerived(capability: DocumentMoneyWriteCapability, options?: {
47
+ expectedUpdatedAt?: Date | string;
48
+ }): Promise<void>;
49
+ }
50
+ //# sourceMappingURL=DocumentTax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentTax.d.ts","sourceRoot":"","sources":["../../src/models/DocumentTax.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,OAAO,EAEL,UAAU,EACV,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;AAE1E,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AACD,qBAaa,WAAY,SAAQ,UAAU;IAEzC,QAAQ,SAAM;IAGd,YAAY,EAAE,oBAAoB,CAAa;IAG/C,UAAU,SAAM;IAGhB,QAAQ,SAAS;IAGjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGhC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGlC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAQ;IAGhC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGrC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGvC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGzC,YAAY,SAAK;IAGjB,QAAQ,SAAK;IAGb,gBAAgB,SAAK;gBAET,OAAO,GAAE,kBAAuB;IAyB5C,OAAO,CAAC,qBAAqB;IAwFd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,MAAM,CACnB,QAAQ,GAAE;QAAE,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAO,GACnD,OAAO,CAAC,IAAI,CAAC;IAOhB,4CAA4C;IACtC,WAAW,CAAC,UAAU,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1E,4CAA4C;IACtC,aAAa,CACjB,UAAU,EAAE,4BAA4B,EACxC,OAAO,GAAE;QAAE,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAO,GAClD,OAAO,CAAC,IAAI,CAAC;CASjB"}
@@ -3,8 +3,11 @@
3
3
  * @packageDocumentation
4
4
  */
5
5
  import { SmrtObject } from '@happyvertical/smrt-core';
6
+ import type { DatabaseInterface } from '@happyvertical/smrt-core/migrations';
6
7
  import type { Journal } from '@happyvertical/smrt-ledgers';
7
- import { type AccountingInvoiceInput, type InvoiceCollectionMethod, type InvoiceOptions, InvoiceStatus, type RecognizeRevenueOptions } from '../types/index.js';
8
+ import { type DocumentMoneyReadRebindCapability, type DocumentMoneyWriteCapability } from '../document-money-internal.js';
9
+ import type { FrozenInvoiceAccountingOptions } from '../invoice-accounting-sync.js';
10
+ import { type AccountingInvoiceInput, type CancelRevenueOptions, type InvoiceCollectionMethod, type InvoiceKind, type InvoiceOptions, InvoiceStatus, type RecognizeRevenueOptions, type TaxRegistrationOptions } from '../types/index.js';
8
11
  /**
9
12
  * Invoice represents a bill sent to a customer for goods or services.
10
13
  *
@@ -38,6 +41,12 @@ import { type AccountingInvoiceInput, type InvoiceCollectionMethod, type Invoice
38
41
  * ```
39
42
  */
40
43
  export declare class Invoice extends SmrtObject {
44
+ /** @internal Collection read guard returns this snapshot on its root DB. */
45
+ rebindMoneyRead(capability: DocumentMoneyReadRebindCapability, db: DatabaseInterface): this;
46
+ kind: InvoiceKind;
47
+ creditedInvoiceId: string | null;
48
+ /** Issued credit-note total cached under the source invoice lock. */
49
+ creditedAmount: number;
41
50
  /**
42
51
  * Tenant ID for multi-tenant isolation
43
52
  * Nullable to support both tenant-scoped and global invoices
@@ -107,6 +116,20 @@ export declare class Invoice extends SmrtObject {
107
116
  * Currency code (ISO 4217)
108
117
  */
109
118
  currency: string;
119
+ /** Pricing interpretation fixed for the document before issue. */
120
+ lineAmountType: 'exclusive' | 'inclusive' | 'none';
121
+ /** Component rounding scope fixed for the document before issue. */
122
+ taxRoundingScope: 'line' | 'document';
123
+ /** Informational sum of resolved line discounts, in minor units. */
124
+ discountTotal: number;
125
+ /** Immutable seller registration snapshot once the invoice leaves draft. */
126
+ sellerTaxRegistrationsJson: string;
127
+ get sellerTaxRegistrations(): TaxRegistrationOptions[];
128
+ set sellerTaxRegistrations(value: TaxRegistrationOptions[]);
129
+ /** Immutable customer tax identifier snapshot once issued. */
130
+ partyTaxId: string;
131
+ /** Stable issue/freeze identity, independent of lifecycle updated_at. */
132
+ moneySnapshotId: string;
110
133
  /**
111
134
  * Current invoice status
112
135
  */
@@ -115,6 +138,8 @@ export declare class Invoice extends SmrtObject {
115
138
  * Journal ID for AR recognition (cross-package ref to smrt-ledgers)
116
139
  */
117
140
  arJournalId: string;
141
+ /** Posted journal that exactly reverses arJournalId on cancellation. */
142
+ arReversalJournalId: string | null;
118
143
  /**
119
144
  * Journal ID for revenue recognition (cross-package ref to smrt-ledgers)
120
145
  */
@@ -136,6 +161,8 @@ export declare class Invoice extends SmrtObject {
136
161
  * When invoice was last synced to provider
137
162
  */
138
163
  syncedAt: Date | null;
164
+ /** Server-owned prepared/in-flight/result identity for frozen accounting sync. */
165
+ accountingSyncStateJson: string;
139
166
  /**
140
167
  * How the provider collects this invoice (#3190), decided once by billing
141
168
  * period close before its first push and reused on every retry, so it is
@@ -205,6 +232,17 @@ export declare class Invoice extends SmrtObject {
205
232
  * - **Status transitions** are validated against the prior persisted status.
206
233
  */
207
234
  save(): Promise<this>;
235
+ /** @internal Aggregate persistence only. */
236
+ saveDerived(capability: DocumentMoneyWriteCapability, options: {
237
+ recomputeLegacy: boolean;
238
+ }): Promise<this>;
239
+ delete(options?: {
240
+ expectedUpdatedAt?: Date | string;
241
+ }): Promise<void>;
242
+ /** @internal Aggregate persistence only. */
243
+ deleteDerived(capability: DocumentMoneyWriteCapability, options?: {
244
+ expectedUpdatedAt?: Date | string;
245
+ }): Promise<void>;
208
246
  /**
209
247
  * Resolve the AUTHORITATIVE prior status (S5 audit #1390 round 4). The
210
248
  * {@link loadedInvoiceStatus} WeakMap is only populated when {@link initialize}
@@ -222,6 +260,7 @@ export declare class Invoice extends SmrtObject {
222
260
  * (the dynamic imports stay inside the package).
223
261
  */
224
262
  private recomputeAmountsForSave;
263
+ private recomputeAmountPaid;
225
264
  /**
226
265
  * Whether `amountPaid` covers `totalAmount`. This is the SINGLE source of
227
266
  * truth for the **PAID** decision — both {@link updatePaymentStatus} (which
@@ -311,6 +350,8 @@ export declare class Invoice extends SmrtObject {
311
350
  * Get remaining amount due
312
351
  */
313
352
  getAmountDue(): number;
353
+ /** Signed amount still owed after payments and issued credit notes. */
354
+ getBalance(): number;
314
355
  /**
315
356
  * Mark invoice as sent
316
357
  */
@@ -337,6 +378,8 @@ export declare class Invoice extends SmrtObject {
337
378
  * Cancel the invoice
338
379
  */
339
380
  cancel(): void;
381
+ /** Cancel a posted money-v2 invoice with an exact atomic journal reversal. */
382
+ cancelWithRevenueReversal(options: CancelRevenueOptions): Promise<Journal | null>;
340
383
  /**
341
384
  * Write off the invoice (bad debt)
342
385
  */
@@ -388,7 +431,8 @@ export declare class Invoice extends SmrtObject {
388
431
  * await invoice.save();
389
432
  * ```
390
433
  */
391
- toAccountingInput(): Promise<AccountingInvoiceInput>;
434
+ toAccountingInput(options?: FrozenInvoiceAccountingOptions): Promise<AccountingInvoiceInput>;
435
+ private toAccountingInputLocked;
392
436
  }
393
437
  export default Invoice;
394
438
  //# sourceMappingURL=Invoice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Invoice.d.ts","sourceRoot":"","sources":["../../src/models/Invoice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Invoice.d.ts","sourceRoot":"","sources":["../../src/models/Invoice.ts"],"names":[],"mappings":"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"}