@happyvertical/smrt-commerce 0.56.0 → 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 (211) hide show
  1. package/AGENTS.md +9 -8
  2. package/README.md +76 -0
  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/revenue-journal.md +23 -0
  13. package/agents/tax-codes.md +48 -0
  14. package/agents/tax-summary.md +126 -0
  15. package/dist/accounting-snapshot.d.ts +79 -0
  16. package/dist/accounting-snapshot.d.ts.map +1 -0
  17. package/dist/billing/runtime.d.ts +2 -0
  18. package/dist/billing/runtime.d.ts.map +1 -1
  19. package/dist/chunks/ContractLineItemCollection-DYjhj_pU.js +265 -0
  20. package/dist/chunks/ContractLineItemCollection-DYjhj_pU.js.map +1 -0
  21. package/dist/chunks/CustomerCollection-DQIujn4f.js +99 -0
  22. package/dist/chunks/CustomerCollection-DQIujn4f.js.map +1 -0
  23. package/dist/chunks/DocumentTaxCollection-BEpoqXAQ.js +1639 -0
  24. package/dist/chunks/DocumentTaxCollection-BEpoqXAQ.js.map +1 -0
  25. package/dist/chunks/InvoiceCollection-CKQflFjc.js +1047 -0
  26. package/dist/chunks/InvoiceCollection-CKQflFjc.js.map +1 -0
  27. package/dist/chunks/InvoiceLineItemCollection-CHm9zdqh.js +467 -0
  28. package/dist/chunks/InvoiceLineItemCollection-CHm9zdqh.js.map +1 -0
  29. package/dist/chunks/TaxCodeCollection-DOpzW4y8.js +149 -0
  30. package/dist/chunks/TaxCodeCollection-DOpzW4y8.js.map +1 -0
  31. package/dist/chunks/TaxComponentCollection-Cs2uXwEl.js +129 -0
  32. package/dist/chunks/TaxComponentCollection-Cs2uXwEl.js.map +1 -0
  33. package/dist/chunks/TaxSettingsCollection-BBTZDH1S.js +319 -0
  34. package/dist/chunks/TaxSettingsCollection-BBTZDH1S.js.map +1 -0
  35. package/dist/chunks/{money-DfrRxrel.js → allocation-integrity-DI3G16BN.js} +7 -12
  36. package/dist/chunks/allocation-integrity-DI3G16BN.js.map +1 -0
  37. package/dist/chunks/{calculations-Bz7RB3qK.js → calculations-DaHR17il.js} +134 -54
  38. package/dist/chunks/calculations-DaHR17il.js.map +1 -0
  39. package/dist/chunks/credit-allocation-yspz0Lab.js +121 -0
  40. package/dist/chunks/credit-allocation-yspz0Lab.js.map +1 -0
  41. package/dist/chunks/document-money-DNVhDJyC.js +860 -0
  42. package/dist/chunks/document-money-DNVhDJyC.js.map +1 -0
  43. package/dist/chunks/invoice-posting-BwV8g7z0.js +229 -0
  44. package/dist/chunks/invoice-posting-BwV8g7z0.js.map +1 -0
  45. package/dist/chunks/money-rational-CcW7gzG5.js +64 -0
  46. package/dist/chunks/money-rational-CcW7gzG5.js.map +1 -0
  47. package/dist/chunks/revenue-journal-DY9fro8E.js +140 -0
  48. package/dist/chunks/revenue-journal-DY9fro8E.js.map +1 -0
  49. package/dist/chunks/rolldown-runtime-D7D4PA-g.js +13 -0
  50. package/dist/chunks/tenant-money-barrier-DjRXgMnX.js +135 -0
  51. package/dist/chunks/tenant-money-barrier-DjRXgMnX.js.map +1 -0
  52. package/dist/chunks/{types-zVnIjSOk.js → types-LDETvQ1C.js} +3 -14
  53. package/dist/chunks/types-LDETvQ1C.js.map +1 -0
  54. package/dist/chunks/{units-BpZ0_Dpk.js → units-CNcjH_eE.js} +2 -2
  55. package/dist/chunks/{units-BpZ0_Dpk.js.map → units-CNcjH_eE.js.map} +1 -1
  56. package/dist/collections/ContractCollection.d.ts +35 -1
  57. package/dist/collections/ContractCollection.d.ts.map +1 -1
  58. package/dist/collections/ContractLineItemCollection.d.ts +26 -1
  59. package/dist/collections/ContractLineItemCollection.d.ts.map +1 -1
  60. package/dist/collections/DocumentTaxCollection.d.ts +75 -0
  61. package/dist/collections/DocumentTaxCollection.d.ts.map +1 -0
  62. package/dist/collections/InvoiceCollection.d.ts +26 -1
  63. package/dist/collections/InvoiceCollection.d.ts.map +1 -1
  64. package/dist/collections/InvoiceLineItemCollection.d.ts +26 -1
  65. package/dist/collections/InvoiceLineItemCollection.d.ts.map +1 -1
  66. package/dist/collections/MoneyMigrationDocumentCollection.d.ts +12 -0
  67. package/dist/collections/MoneyMigrationDocumentCollection.d.ts.map +1 -0
  68. package/dist/collections/PaymentAllocationCollection.d.ts +2 -0
  69. package/dist/collections/PaymentAllocationCollection.d.ts.map +1 -1
  70. package/dist/collections/TaxCodeCollection.d.ts +7 -0
  71. package/dist/collections/TaxCodeCollection.d.ts.map +1 -0
  72. package/dist/collections/TaxComponentCollection.d.ts +6 -0
  73. package/dist/collections/TaxComponentCollection.d.ts.map +1 -0
  74. package/dist/collections/TaxSettingsCollection.d.ts +16 -0
  75. package/dist/collections/TaxSettingsCollection.d.ts.map +1 -0
  76. package/dist/collections/TaxSummaryReportCollection.d.ts +151 -0
  77. package/dist/collections/TaxSummaryReportCollection.d.ts.map +1 -0
  78. package/dist/collections/index.d.ts +6 -0
  79. package/dist/collections/index.d.ts.map +1 -1
  80. package/dist/commerce-money-tools.d.ts +9 -0
  81. package/dist/commerce-money-tools.d.ts.map +1 -0
  82. package/dist/contract-money.d.ts +27 -0
  83. package/dist/contract-money.d.ts.map +1 -0
  84. package/dist/cost-billing.d.ts +0 -1
  85. package/dist/cost-billing.d.ts.map +1 -1
  86. package/dist/cost-billing.js +10 -15
  87. package/dist/cost-billing.js.map +1 -1
  88. package/dist/credit-allocation.d.ts +48 -0
  89. package/dist/credit-allocation.d.ts.map +1 -0
  90. package/dist/document-money-internal.d.ts +44 -0
  91. package/dist/document-money-internal.d.ts.map +1 -0
  92. package/dist/document-money.d.ts +85 -0
  93. package/dist/document-money.d.ts.map +1 -0
  94. package/dist/index.d.ts +15 -4
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +5395 -4246
  97. package/dist/index.js.map +1 -1
  98. package/dist/invoice-accounting-sync.d.ts +96 -0
  99. package/dist/invoice-accounting-sync.d.ts.map +1 -0
  100. package/dist/invoice-mcp.d.ts +16 -0
  101. package/dist/invoice-mcp.d.ts.map +1 -0
  102. package/dist/invoice-posting.d.ts +9 -0
  103. package/dist/invoice-posting.d.ts.map +1 -0
  104. package/dist/invoice-record-screen.d.ts +60 -0
  105. package/dist/invoice-record-screen.d.ts.map +1 -0
  106. package/dist/invoices.d.ts +2 -0
  107. package/dist/invoices.d.ts.map +1 -1
  108. package/dist/invoices.js +3 -2
  109. package/dist/manifest.json +10365 -4562
  110. package/dist/migrations/commerceLineAmounts.d.ts +84 -0
  111. package/dist/migrations/commerceLineAmounts.d.ts.map +1 -0
  112. package/dist/models/Contract.d.ts +25 -1
  113. package/dist/models/Contract.d.ts.map +1 -1
  114. package/dist/models/ContractLineItem.d.ts +30 -1
  115. package/dist/models/ContractLineItem.d.ts.map +1 -1
  116. package/dist/models/Customer.d.ts +7 -0
  117. package/dist/models/Customer.d.ts.map +1 -1
  118. package/dist/models/DocumentTax.d.ts +50 -0
  119. package/dist/models/DocumentTax.d.ts.map +1 -0
  120. package/dist/models/Invoice.d.ts +46 -2
  121. package/dist/models/Invoice.d.ts.map +1 -1
  122. package/dist/models/InvoiceLineItem.d.ts +33 -2
  123. package/dist/models/InvoiceLineItem.d.ts.map +1 -1
  124. package/dist/models/MoneyMigrationDocument.d.ts +28 -0
  125. package/dist/models/MoneyMigrationDocument.d.ts.map +1 -0
  126. package/dist/models/Payment.d.ts +5 -1
  127. package/dist/models/Payment.d.ts.map +1 -1
  128. package/dist/models/PaymentAllocation.d.ts.map +1 -1
  129. package/dist/models/TaxCode.d.ts +22 -0
  130. package/dist/models/TaxCode.d.ts.map +1 -0
  131. package/dist/models/TaxComponent.d.ts +21 -0
  132. package/dist/models/TaxComponent.d.ts.map +1 -0
  133. package/dist/models/TaxSettings.d.ts +33 -0
  134. package/dist/models/TaxSettings.d.ts.map +1 -0
  135. package/dist/models/TaxSummaryReport.d.ts +35 -0
  136. package/dist/models/TaxSummaryReport.d.ts.map +1 -0
  137. package/dist/models/Vendor.d.ts +9 -0
  138. package/dist/models/Vendor.d.ts.map +1 -1
  139. package/dist/models/index.d.ts +6 -0
  140. package/dist/models/index.d.ts.map +1 -1
  141. package/dist/money-rational.d.ts +15 -0
  142. package/dist/money-rational.d.ts.map +1 -0
  143. package/dist/money.d.ts +106 -25
  144. package/dist/money.d.ts.map +1 -1
  145. package/dist/money.js +274 -0
  146. package/dist/money.js.map +1 -0
  147. package/dist/recipes.d.ts +15 -15
  148. package/dist/revenue-journal.d.ts +61 -0
  149. package/dist/revenue-journal.d.ts.map +1 -0
  150. package/dist/smrt-knowledge.json +5711 -1029
  151. package/dist/svelte/components/InvoiceActions.svelte +12 -0
  152. package/dist/svelte/components/InvoiceActions.svelte.d.ts +5 -0
  153. package/dist/svelte/components/InvoiceActions.svelte.d.ts.map +1 -1
  154. package/dist/svelte/components/InvoiceEditor.svelte +15 -1
  155. package/dist/svelte/components/InvoiceEditor.svelte.d.ts.map +1 -1
  156. package/dist/svelte/components/InvoiceLineItems.svelte +3 -3
  157. package/dist/svelte/components/InvoiceRecordScreen.svelte +94 -0
  158. package/dist/svelte/components/InvoiceRecordScreen.svelte.d.ts +21 -0
  159. package/dist/svelte/components/InvoiceRecordScreen.svelte.d.ts.map +1 -0
  160. package/dist/svelte/components/InvoiceTotals.svelte +2 -2
  161. package/dist/svelte/components/MoneyInvoiceEditor.svelte +282 -0
  162. package/dist/svelte/components/MoneyInvoiceEditor.svelte.d.ts +31 -0
  163. package/dist/svelte/components/MoneyInvoiceEditor.svelte.d.ts.map +1 -0
  164. package/dist/svelte/components/PurchaseOrderEditor.svelte +53 -1
  165. package/dist/svelte/components/PurchaseOrderEditor.svelte.d.ts +5 -0
  166. package/dist/svelte/components/PurchaseOrderEditor.svelte.d.ts.map +1 -1
  167. package/dist/svelte/components/QuoteEditor.svelte +54 -1
  168. package/dist/svelte/components/QuoteEditor.svelte.d.ts +5 -0
  169. package/dist/svelte/components/QuoteEditor.svelte.d.ts.map +1 -1
  170. package/dist/svelte/i18n.d.ts +16 -0
  171. package/dist/svelte/i18n.d.ts.map +1 -1
  172. package/dist/svelte/i18n.js +16 -0
  173. package/dist/svelte/index.d.ts +7 -2
  174. package/dist/svelte/index.d.ts.map +1 -1
  175. package/dist/svelte/index.js +4 -1
  176. package/dist/svelte/invoices/calculations.d.ts +7 -2
  177. package/dist/svelte/invoices/calculations.d.ts.map +1 -1
  178. package/dist/svelte/invoices/calculations.js +141 -47
  179. package/dist/svelte/invoices/money-editor.d.ts +123 -0
  180. package/dist/svelte/invoices/money-editor.d.ts.map +1 -0
  181. package/dist/svelte/invoices/money-editor.js +101 -0
  182. package/dist/svelte/invoices/types.d.ts +5 -1
  183. package/dist/svelte/invoices/types.d.ts.map +1 -1
  184. package/dist/svelte/purchasing-i18n.d.ts +5 -0
  185. package/dist/svelte/purchasing-i18n.d.ts.map +1 -1
  186. package/dist/svelte/purchasing-i18n.js +5 -0
  187. package/dist/svelte/quote-i18n.d.ts +5 -0
  188. package/dist/svelte/quote-i18n.d.ts.map +1 -1
  189. package/dist/svelte/quote-i18n.js +5 -0
  190. package/dist/tax/cookbook.d.ts +22 -0
  191. package/dist/tax/cookbook.d.ts.map +1 -0
  192. package/dist/tax/example-pack.d.ts +25 -0
  193. package/dist/tax/example-pack.d.ts.map +1 -0
  194. package/dist/tax/identity.d.ts +5 -0
  195. package/dist/tax/identity.d.ts.map +1 -0
  196. package/dist/tax/index.d.ts +4 -0
  197. package/dist/tax/index.d.ts.map +1 -0
  198. package/dist/tax/legacy.d.ts +48 -0
  199. package/dist/tax/legacy.d.ts.map +1 -0
  200. package/dist/tax-summary-report-adapter.d.ts +37 -0
  201. package/dist/tax-summary-report-adapter.d.ts.map +1 -0
  202. package/dist/tax-summary.d.ts +129 -0
  203. package/dist/tax-summary.d.ts.map +1 -0
  204. package/dist/tenant-money-barrier.d.ts +66 -0
  205. package/dist/tenant-money-barrier.d.ts.map +1 -0
  206. package/dist/types/index.d.ts +137 -1
  207. package/dist/types/index.d.ts.map +1 -1
  208. package/package.json +19 -11
  209. package/dist/chunks/calculations-Bz7RB3qK.js.map +0 -1
  210. package/dist/chunks/money-DfrRxrel.js.map +0 -1
  211. package/dist/chunks/types-zVnIjSOk.js.map +0 -1
@@ -0,0 +1,75 @@
1
+ /** Owning collection for derived document tax totals. */
2
+ import { SmrtCollection } from '@happyvertical/smrt-core';
3
+ import { type DocumentMoneyWriteCapability } from '../document-money-internal.js';
4
+ import { type CommerceDocumentType, DocumentTax, type DocumentTaxOptions } from '../models/DocumentTax.js';
5
+ import { type TaxCodeKind } from '../money.js';
6
+ export type DocumentTaxWriteInput = Required<Pick<DocumentTaxOptions, 'tenantId' | 'documentType' | 'documentId' | 'currency' | 'taxCodeId' | 'taxCodeCode' | 'kind' | 'taxComponentId' | 'taxComponentName' | 'percent' | 'liabilityAccountId' | 'taxableMinor' | 'taxMinor' | 'recoverableMinor'>>;
7
+ /** Normalized immutable document-tax snapshots for tax-summary materialization. */
8
+ export interface DocumentTaxReportFact {
9
+ tenantId: string;
10
+ documentType: CommerceDocumentType;
11
+ documentId: string;
12
+ /** A document number/reference supplied to drilldown consumers. */
13
+ documentNumber: string;
14
+ /** Tenant-scoped party identity for a host to resolve as its party display. */
15
+ partyId: string | null;
16
+ /** Positive credit snapshots are negated once by the pure report aggregation. */
17
+ documentKind: CommerceDocumentType;
18
+ issueDate: string;
19
+ status: string;
20
+ direction: 'sales' | 'purchase';
21
+ currency: string;
22
+ taxCodeId: string | null;
23
+ /** Null is an unassigned/unknown snapshot and must remain visible as a warning. */
24
+ taxCodeKind: TaxCodeKind | null;
25
+ taxableMinor: number;
26
+ taxMinor: number;
27
+ recoverableMinor: number;
28
+ taxComponentId: string | null;
29
+ componentName: string | null;
30
+ liabilityAccountId: string | null;
31
+ /** Purchase Contracts are the expense commitment identity; other documents are unlinked. */
32
+ commitmentId: string | null;
33
+ /** Document-tax snapshots are contract-level, so they retain no line allocation. */
34
+ commitmentLineId: string | null;
35
+ }
36
+ /** @deprecated Use DocumentTaxReportFact. Kept for report-adapter compatibility. */
37
+ export type InvoiceTaxReportFact = DocumentTaxReportFact;
38
+ export interface DocumentTaxReportFactsOptions {
39
+ tenantId: string;
40
+ from: Date;
41
+ to: Date;
42
+ currency?: string;
43
+ }
44
+ /** @deprecated Use DocumentTaxReportFactsOptions. */
45
+ export type InvoiceTaxReportFactsOptions = DocumentTaxReportFactsOptions;
46
+ export declare class DocumentTaxCollection extends SmrtCollection<DocumentTax> {
47
+ static readonly _itemClass: typeof DocumentTax;
48
+ /**
49
+ * Read immutable commerce document-tax snapshots for one tenant.
50
+ *
51
+ * Invoice/credit rows join their shared storage by identity and tenant.
52
+ * Purchase Contract rows first use the Contract owner's bounded hydrated
53
+ * candidate API so custom PurchaseContract descendants retain their STI
54
+ * classification. The query then joins only those candidate ids by identity
55
+ * and tenant. Stored snapshots remain authoritative; this never recalculates
56
+ * money or resolves present-day tax configuration.
57
+ */
58
+ listReportFacts(options: DocumentTaxReportFactsOptions): Promise<DocumentTaxReportFact[]>;
59
+ private listInvoiceReportFacts;
60
+ private listPurchaseContractReportFacts;
61
+ findByDocument(tenantId: string, documentType: CommerceDocumentType, documentId: string): Promise<DocumentTax[]>;
62
+ /**
63
+ * Replace one draft document's derived rows on the caller's transaction.
64
+ * Unchanged rows are not saved, preserving their exact persisted bytes.
65
+ *
66
+ * @internal Aggregate persistence only.
67
+ */
68
+ replaceDerivedForDocument(capability: DocumentMoneyWriteCapability, input: {
69
+ tenantId: string;
70
+ documentType: CommerceDocumentType;
71
+ documentId: string;
72
+ rows: readonly DocumentTaxWriteInput[];
73
+ }): Promise<DocumentTax[]>;
74
+ }
75
+ //# sourceMappingURL=DocumentTaxCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentTaxCollection.d.ts","sourceRoot":"","sources":["../../src/collections/DocumentTaxCollection.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,KAAK,oBAAoB,EACzB,WAAW,EACX,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGrE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAC1C,IAAI,CACF,kBAAkB,EAChB,UAAU,GACV,cAAc,GACd,YAAY,GACZ,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,oBAAoB,GACpB,cAAc,GACd,UAAU,GACV,kBAAkB,CACrB,CACF,CAAC;AAEF,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,oBAAoB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iFAAiF;IACjF,YAAY,EAAE,oBAAoB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mFAAmF;IACnF,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,4FAA4F;IAC5F,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oFAAoF;IACpF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,oFAAoF;AACpF,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEzD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qDAAqD;AACrD,MAAM,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AAoHzE,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACpE,MAAM,CAAC,QAAQ,CAAC,UAAU,qBAAe;IAEzC;;;;;;;;;OASG;IACG,eAAe,CACnB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAerB,sBAAsB;YA6DtB,+BAA+B;IA0FvC,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,oBAAoB,EAClC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC;IAOzB;;;;;OAKG;IACG,yBAAyB,CAC7B,UAAU,EAAE,4BAA4B,EACxC,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,oBAAoB,CAAC;QACnC,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,SAAS,qBAAqB,EAAE,CAAC;KACxC,GACA,OAAO,CAAC,WAAW,EAAE,CAAC;CA8D1B"}
@@ -2,7 +2,7 @@
2
2
  * InvoiceCollection - Collection manager for Invoice objects
3
3
  * @packageDocumentation
4
4
  */
5
- import { SmrtCollection } from '@happyvertical/smrt-core';
5
+ import { SmrtCollection, type SmrtListOptions, type SmrtObject, type SmrtSelectedRow, type SmrtSelectField, type SmrtStiReadScope, type SmrtWhereClause } from '@happyvertical/smrt-core';
6
6
  import { Invoice } from '../models/Invoice.js';
7
7
  import { InvoiceStatus } from '../types/index.js';
8
8
  /**
@@ -21,6 +21,31 @@ export interface InvoiceNumberOptions {
21
21
  }
22
22
  export declare class InvoiceCollection extends SmrtCollection<Invoice> {
23
23
  static readonly _itemClass: typeof Invoice;
24
+ private withMoneyRead;
25
+ get(filter: string | SmrtWhereClause<Invoice>, options?: Parameters<SmrtCollection<Invoice>['get']>[1]): Promise<Invoice | null>;
26
+ list<const Select extends readonly SmrtSelectField<Invoice>[]>(options: Omit<SmrtListOptions<Invoice>, 'select' | 'stiScope'> & {
27
+ select: Select;
28
+ include?: never;
29
+ stiScope: SmrtStiReadScope;
30
+ }): Promise<Record<string, unknown>[]>;
31
+ list<const Select extends readonly SmrtSelectField<Invoice>[]>(options: Omit<SmrtListOptions<Invoice>, 'select' | 'stiScope'> & {
32
+ select: Select;
33
+ include?: never;
34
+ stiScope?: undefined;
35
+ }): Promise<SmrtSelectedRow<Invoice, Select>[]>;
36
+ list(options: Omit<SmrtListOptions<Invoice>, 'select' | 'stiScope'> & {
37
+ select?: undefined;
38
+ stiScope: SmrtStiReadScope;
39
+ }): Promise<SmrtObject[]>;
40
+ list(options?: undefined): Promise<Invoice[]>;
41
+ list(options: Omit<SmrtListOptions<Invoice>, 'select' | 'stiScope'> & {
42
+ select?: undefined;
43
+ stiScope?: undefined;
44
+ }): Promise<Invoice[]>;
45
+ list(options: (Omit<SmrtListOptions<Invoice>, 'select'> & {
46
+ select?: undefined;
47
+ }) | undefined): Promise<SmrtObject[]>;
48
+ list(options: SmrtListOptions<Invoice> | undefined): Promise<SmrtObject[] | Record<string, unknown>[]>;
24
49
  /**
25
50
  * Find invoices by customer
26
51
  *
@@ -1 +1 @@
1
- {"version":3,"file":"InvoiceCollection.d.ts","sourceRoot":"","sources":["../../src/collections/InvoiceCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,eAAe,mGAKlB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,iBAAiB,GAAG,YAAY,CAAC;CAC3C;AAED,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC5D,MAAM,CAAC,QAAQ,CAAC,UAAU,iBAAW;IAErC;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAO5D;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAO5D;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAO7D;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAItC;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIpC;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIpC;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvC;;;;;;;;OAQG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAgBvC;;;;;;OAMG;IACG,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAUzE;;;;;OAKG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAQnE;;;;;OAKG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAc3C;;;;;OAKG;IACG,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAQlE;;;;;OAKG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcjD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,qBAAqB,CACzB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC;IAkBlB;;;;;OAKG;IACG,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBzE;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIxD;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAItC;;;;;;;;OAQG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAG5D"}
1
+ {"version":3,"file":"InvoiceCollection.d.ts","sourceRoot":"","sources":["../../src/collections/InvoiceCollection.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,36 @@
2
2
  * InvoiceLineItemCollection - Collection manager for InvoiceLineItem objects
3
3
  * @packageDocumentation
4
4
  */
5
- import { SmrtCollection } from '@happyvertical/smrt-core';
5
+ import { SmrtCollection, type SmrtListOptions, type SmrtObject, type SmrtSelectedRow, type SmrtSelectField, type SmrtStiReadScope, type SmrtWhereClause } from '@happyvertical/smrt-core';
6
6
  import { InvoiceLineItem } from '../models/InvoiceLineItem.js';
7
7
  import type { AccountingLineItemInput } from '../types/index.js';
8
8
  export declare class InvoiceLineItemCollection extends SmrtCollection<InvoiceLineItem> {
9
9
  static readonly _itemClass: typeof InvoiceLineItem;
10
+ private withMoneyRead;
11
+ get(filter: string | SmrtWhereClause<InvoiceLineItem>, options?: Parameters<SmrtCollection<InvoiceLineItem>['get']>[1]): Promise<InvoiceLineItem | null>;
12
+ list<const Select extends readonly SmrtSelectField<InvoiceLineItem>[]>(options: Omit<SmrtListOptions<InvoiceLineItem>, 'select' | 'stiScope'> & {
13
+ select: Select;
14
+ include?: never;
15
+ stiScope: SmrtStiReadScope;
16
+ }): Promise<Record<string, unknown>[]>;
17
+ list<const Select extends readonly SmrtSelectField<InvoiceLineItem>[]>(options: Omit<SmrtListOptions<InvoiceLineItem>, 'select' | 'stiScope'> & {
18
+ select: Select;
19
+ include?: never;
20
+ stiScope?: undefined;
21
+ }): Promise<SmrtSelectedRow<InvoiceLineItem, Select>[]>;
22
+ list(options: Omit<SmrtListOptions<InvoiceLineItem>, 'select' | 'stiScope'> & {
23
+ select?: undefined;
24
+ stiScope: SmrtStiReadScope;
25
+ }): Promise<SmrtObject[]>;
26
+ list(options?: undefined): Promise<InvoiceLineItem[]>;
27
+ list(options: Omit<SmrtListOptions<InvoiceLineItem>, 'select' | 'stiScope'> & {
28
+ select?: undefined;
29
+ stiScope?: undefined;
30
+ }): Promise<InvoiceLineItem[]>;
31
+ list(options: (Omit<SmrtListOptions<InvoiceLineItem>, 'select'> & {
32
+ select?: undefined;
33
+ }) | undefined): Promise<SmrtObject[]>;
34
+ list(options: SmrtListOptions<InvoiceLineItem> | undefined): Promise<SmrtObject[] | Record<string, unknown>[]>;
10
35
  /**
11
36
  * Find line items by invoice
12
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"InvoiceLineItemCollection.d.ts","sourceRoot":"","sources":["../../src/collections/InvoiceLineItemCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEjE,qBAAa,yBAA0B,SAAQ,cAAc,CAAC,eAAe,CAAC;IAC5E,MAAM,CAAC,QAAQ,CAAC,UAAU,yBAAmB;IAE7C;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOlE;;;;;;OAMG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,EAAE,CAAC;IAO7B;;;;;OAKG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOtE;;;;;OAKG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D;;;;;OAKG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/D;;;;;OAKG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D;;;;;OAKG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ1D;;;;;OAKG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAYvE;;;;;;OAMG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IASrC;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAIhE;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAI9C;;;;;;;;OAQG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAOpE"}
1
+ {"version":3,"file":"InvoiceLineItemCollection.d.ts","sourceRoot":"","sources":["../../src/collections/InvoiceLineItemCollection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { SmrtCollection } from '@happyvertical/smrt-core';
2
+ import { MoneyMigrationDocument } from '../models/MoneyMigrationDocument.js';
3
+ export declare class MoneyMigrationDocumentCollection extends SmrtCollection<MoneyMigrationDocument> {
4
+ static readonly _itemClass: typeof MoneyMigrationDocument;
5
+ findDocument(input: {
6
+ tenantId: string;
7
+ migrationId: string;
8
+ documentType: 'invoice' | 'contract';
9
+ documentId: string;
10
+ }): Promise<MoneyMigrationDocument | null>;
11
+ }
12
+ //# sourceMappingURL=MoneyMigrationDocumentCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoneyMigrationDocumentCollection.d.ts","sourceRoot":"","sources":["../../src/collections/MoneyMigrationDocumentCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,qBAAa,gCAAiC,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAC1F,MAAM,CAAC,QAAQ,CAAC,UAAU,gCAA0B;IAE9C,YAAY,CAAC,KAAK,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,SAAS,GAAG,UAAU,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;CAU3C"}
@@ -20,6 +20,8 @@ export declare class PaymentAllocationCollection extends SmrtCollection<PaymentA
20
20
  }[];
21
21
  allocatedBy?: string;
22
22
  }): Promise<PaymentAllocation[]>;
23
+ /** Remove one allocation atomically and rederive its invoice/credit status. */
24
+ removeAllocation(id: string): Promise<void>;
23
25
  /**
24
26
  * Find allocations by payment
25
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentAllocationCollection.d.ts","sourceRoot":"","sources":["../../src/collections/PaymentAllocationCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,qBAAa,2BAA4B,SAAQ,cAAc,CAAC,iBAAiB,CAAC;IAChF,MAAM,CAAC,QAAQ,CAAC,UAAU,2BAAqB;IAE/C;;;;OAIG;IACG,eAAe,CAAC,KAAK,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACjE,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAsFhC;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOpE;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOpE;;;;;OAKG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKpE;;;;;OAKG;IACG,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtE;;;;;;;OAOG;IACG,yBAAyB,CAC7B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAclB;;;;;;OAMG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAQpC;;;;;OAKG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOxE;;;;;;OAMG;IACG,eAAe,CACnB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,GACZ,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAc/B;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIlE;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIhD;;;;;;;;OAQG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAOtE"}
1
+ {"version":3,"file":"PaymentAllocationCollection.d.ts","sourceRoot":"","sources":["../../src/collections/PaymentAllocationCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,qBAAa,2BAA4B,SAAQ,cAAc,CAAC,iBAAiB,CAAC;IAChF,MAAM,CAAC,QAAQ,CAAC,UAAU,2BAAqB;IAE/C;;;;OAIG;IACG,eAAe,CAAC,KAAK,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACjE,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAsFhC,+EAA+E;IACzE,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BjD;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOpE;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOpE;;;;;OAKG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKpE;;;;;OAKG;IACG,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtE;;;;;;;OAOG;IACG,yBAAyB,CAC7B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAclB;;;;;;OAMG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAQpC;;;;;OAKG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOxE;;;;;;OAMG;IACG,eAAe,CACnB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,GACZ,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAc/B;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIlE;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIhD;;;;;;;;OAQG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAOtE"}
@@ -0,0 +1,7 @@
1
+ import { SmrtCollection } from '@happyvertical/smrt-core';
2
+ import { TaxCode } from '../models/TaxCode.js';
3
+ export declare class TaxCodeCollection extends SmrtCollection<TaxCode> {
4
+ static readonly _itemClass: typeof TaxCode;
5
+ findByCode(code: string): Promise<TaxCode | null>;
6
+ }
7
+ //# sourceMappingURL=TaxCodeCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaxCodeCollection.d.ts","sourceRoot":"","sources":["../../src/collections/TaxCodeCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC5D,MAAM,CAAC,QAAQ,CAAC,UAAU,iBAAW;IAE/B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAGxD"}
@@ -0,0 +1,6 @@
1
+ import { SmrtCollection } from '@happyvertical/smrt-core';
2
+ import { TaxComponent } from '../models/TaxComponent.js';
3
+ export declare class TaxComponentCollection extends SmrtCollection<TaxComponent> {
4
+ static readonly _itemClass: typeof TaxComponent;
5
+ }
6
+ //# sourceMappingURL=TaxComponentCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaxComponentCollection.d.ts","sourceRoot":"","sources":["../../src/collections/TaxComponentCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,sBAAuB,SAAQ,cAAc,CAAC,YAAY,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,UAAU,sBAAgB;CAC3C"}
@@ -0,0 +1,16 @@
1
+ import { SmrtCollection } from '@happyvertical/smrt-core';
2
+ import { TaxSettings } from '../models/TaxSettings.js';
3
+ export declare class TaxSettingsCollection extends SmrtCollection<TaxSettings> {
4
+ static readonly _itemClass: typeof TaxSettings;
5
+ getOrCreateForTenant(tenantId: string): Promise<TaxSettings>;
6
+ getForTenant(tenantId: string): Promise<TaxSettings | null>;
7
+ /** @internal Lock and re-read the one tenant marker on this transaction. */
8
+ lockForTenant(tenantId: string, create?: boolean): Promise<TaxSettings | null>;
9
+ /** Claim exclusive runtime maintenance before any per-document rewrite. */
10
+ beginMoneyMigration(tenantId: string, requestedMigrationId?: string): Promise<string>;
11
+ activateMoneyV2(tenantId: string, migrationId: string): Promise<void>;
12
+ restoreLegacyMoneyModel(tenantId: string, migrationId: string): Promise<void>;
13
+ /** Claim a previously completed migration for checksum-guarded rollback. */
14
+ beginMoneyRollback(tenantId: string, migrationId: string): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=TaxSettingsCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaxSettingsCollection.d.ts","sourceRoot":"","sources":["../../src/collections/TaxSettingsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM1D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACpE,MAAM,CAAC,QAAQ,CAAC,UAAU,qBAAe;IAEnC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAW5D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAMjE,4EAA4E;IACtE,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,UAAO,GACZ,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAiB9B,2EAA2E;IACrE,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,CAAC,MAAM,CAAC;IAwBZ,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAgBhB,4EAA4E;IACtE,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;CAejB"}
@@ -0,0 +1,151 @@
1
+ import type { SmrtCollection, SmrtListOptions, SmrtObject, SmrtSelectedRow, SmrtSelectField, SmrtStiReadScope } from '@happyvertical/smrt-core';
2
+ import type { DatabaseInterface } from '@happyvertical/smrt-core/migrations';
3
+ import { SmrtReportCollection } from '@happyvertical/smrt-reports';
4
+ import { TaxSummaryReport } from '../models/TaxSummaryReport.js';
5
+ import { aggregateTaxSummary, type TaxSummaryComponentMapping, type TaxSummaryExpenseFact, type TaxSummaryLedgerMovement } from '../tax-summary.js';
6
+ import { type InvoiceTaxReportFact } from './DocumentTaxCollection.js';
7
+ export interface TaxSummaryExpenseSource {
8
+ listReviewedTaxFacts(options: {
9
+ tenantId: string;
10
+ from: string;
11
+ to: string;
12
+ /** Refresh supplies its transaction-bound executor. */
13
+ db: DatabaseInterface;
14
+ }): Promise<readonly TaxSummaryExpenseFact[]>;
15
+ }
16
+ export interface TaxSummaryLedgerSource {
17
+ listPostedMovements(options: {
18
+ tenantId: string;
19
+ accountIds: string[];
20
+ from: Date;
21
+ to: Date;
22
+ currency: string;
23
+ /** Refresh supplies its transaction-bound executor. */
24
+ db: DatabaseInterface;
25
+ }): Promise<readonly TaxSummaryLedgerMovement[]>;
26
+ }
27
+ export interface RefreshTaxSummaryReportOptions {
28
+ tenantId: string;
29
+ from: Date;
30
+ to: Date;
31
+ /** Dependency inversion: expenses already depend on commerce. */
32
+ expenseSource: TaxSummaryExpenseSource;
33
+ /** Inject the ledger owner rather than reaching into its private state. */
34
+ ledgerSource: TaxSummaryLedgerSource;
35
+ expenseComponentMappings: readonly TaxSummaryComponentMapping[];
36
+ }
37
+ export interface TaxSummaryReportRefreshResult {
38
+ rowCount: number;
39
+ complete: boolean;
40
+ }
41
+ export interface TaxSummaryInvoiceDrilldownOptions {
42
+ /** Bound by the authenticated principal or browser host, never supplied by a row. */
43
+ tenantId: string;
44
+ reportId: string;
45
+ }
46
+ /** A numeric report cell, selected explicitly rather than inferred from a row. */
47
+ export type TaxSummaryReportMeasure = 'taxable' | 'tax' | 'recoverable' | 'net' | 'ledgerMovement' | 'difference' | 'documentCount' | 'warning';
48
+ /** Detail shape supplied by the ledger owner for a reconciliation drilldown. */
49
+ export interface TaxSummaryLedgerDrilldownFact extends TaxSummaryLedgerMovement {
50
+ journalId: string;
51
+ journalDate: Date;
52
+ journalNumber: string;
53
+ sourceModule: string;
54
+ sourceRef: string | null;
55
+ debit: number;
56
+ credit: number;
57
+ }
58
+ /** Dependency-inverted because commerce cannot import the ledgers package. */
59
+ export interface TaxSummaryLedgerDrilldownSource {
60
+ listPostedMovements(options: {
61
+ tenantId: string;
62
+ accountIds: string[];
63
+ from: Date;
64
+ to: Date;
65
+ currency: string;
66
+ db: DatabaseInterface;
67
+ }): Promise<readonly TaxSummaryLedgerDrilldownFact[]>;
68
+ }
69
+ export interface TaxSummaryContributorDrilldownOptions extends TaxSummaryInvoiceDrilldownOptions {
70
+ measure: TaxSummaryReportMeasure;
71
+ /** Required only when the materialized row says that it contains expenses. */
72
+ expenseSource?: TaxSummaryExpenseSource;
73
+ /** Required for ledger and reconciliation cells. */
74
+ ledgerSource?: TaxSummaryLedgerDrilldownSource;
75
+ expenseComponentMappings?: readonly TaxSummaryComponentMapping[];
76
+ }
77
+ export type TaxSummaryDrilldownPending = 'expense-source' | 'ledger-source' | 'purchase-source' | 'source-provenance-missing' | 'source-state-diverged' | 'materialized-incomplete';
78
+ export type TaxSummaryDrilldownContributor = {
79
+ source: 'invoice';
80
+ valueMinor: number;
81
+ fact: InvoiceTaxReportFact;
82
+ } | {
83
+ source: 'contract';
84
+ valueMinor: number;
85
+ fact: InvoiceTaxReportFact;
86
+ } | {
87
+ source: 'expense';
88
+ valueMinor: number;
89
+ expense: TaxSummaryExpenseFact;
90
+ expenseCode: string | null;
91
+ } | {
92
+ source: 'ledger';
93
+ valueMinor: number;
94
+ movement: TaxSummaryLedgerDrilldownFact;
95
+ };
96
+ export interface TaxSummaryContributorDrilldown {
97
+ row: TaxSummaryReport;
98
+ measure: TaxSummaryReportMeasure;
99
+ contributors: TaxSummaryDrilldownContributor[];
100
+ /** False means this detail cannot establish the materialized cell exactly. */
101
+ complete: boolean;
102
+ pending: TaxSummaryDrilldownPending[];
103
+ }
104
+ export declare class TaxSummaryReportCollection extends SmrtReportCollection<TaxSummaryReport> {
105
+ static readonly _itemClass: typeof TaxSummaryReport;
106
+ private assertReadableMoneyModel;
107
+ get(filter: Parameters<SmrtCollection<TaxSummaryReport>['get']>[0], options?: Parameters<SmrtCollection<TaxSummaryReport>['get']>[1]): Promise<TaxSummaryReport | null>;
108
+ count(options?: Parameters<SmrtCollection<TaxSummaryReport>['count']>[0]): Promise<number>;
109
+ list<const Select extends readonly SmrtSelectField<TaxSummaryReport>[]>(options: Omit<SmrtListOptions<TaxSummaryReport>, 'select' | 'stiScope'> & {
110
+ select: Select;
111
+ include?: never;
112
+ stiScope: SmrtStiReadScope;
113
+ }): Promise<Record<string, unknown>[]>;
114
+ list<const Select extends readonly SmrtSelectField<TaxSummaryReport>[]>(options: Omit<SmrtListOptions<TaxSummaryReport>, 'select' | 'stiScope'> & {
115
+ select: Select;
116
+ include?: never;
117
+ stiScope?: undefined;
118
+ }): Promise<SmrtSelectedRow<TaxSummaryReport, Select>[]>;
119
+ list(options: Omit<SmrtListOptions<TaxSummaryReport>, 'select' | 'stiScope'> & {
120
+ select?: undefined;
121
+ stiScope: SmrtStiReadScope;
122
+ }): Promise<SmrtObject[]>;
123
+ list(options?: undefined): Promise<TaxSummaryReport[]>;
124
+ list(options: Omit<SmrtListOptions<TaxSummaryReport>, 'select' | 'stiScope'> & {
125
+ select?: undefined;
126
+ stiScope?: undefined;
127
+ }): Promise<TaxSummaryReport[]>;
128
+ list(options: (Omit<SmrtListOptions<TaxSummaryReport>, 'select'> & {
129
+ select?: undefined;
130
+ }) | undefined): Promise<SmrtObject[]>;
131
+ list(options: SmrtListOptions<TaxSummaryReport> | undefined): Promise<SmrtObject[] | Record<string, unknown>[]>;
132
+ /**
133
+ * Rebuild the Invoice path from immutable snapshots. Legacy or migrating
134
+ * tenants are refused because their rows are not a complete v2 tax source.
135
+ */
136
+ refreshTaxSummary(options: RefreshTaxSummaryReportOptions): Promise<TaxSummaryReportRefreshResult>;
137
+ /**
138
+ * Execute the Invoice-path drilldown under a principal-bound tenant. The
139
+ * materialized row cannot expand its own tenant or date range.
140
+ */
141
+ drilldownInvoiceFacts(options: TaxSummaryInvoiceDrilldownOptions): Promise<InvoiceTaxReportFact[]>;
142
+ /**
143
+ * Re-read the owning sources for one explicitly selected materialized cell.
144
+ * Missing owners and source drift are reported as incomplete instead of being
145
+ * displayed as a zero or as unrelated Invoice facts.
146
+ */
147
+ drilldownContributors(options: TaxSummaryContributorDrilldownOptions): Promise<TaxSummaryContributorDrilldown>;
148
+ }
149
+ /** @internal Maps aggregate nullability onto persisted report rows. */
150
+ export declare function materializeTaxSummaryRows(options: Pick<RefreshTaxSummaryReportOptions, 'tenantId' | 'from' | 'to'>, result: ReturnType<typeof aggregateTaxSummary>): Promise<Array<Record<string, unknown>>>;
151
+ //# sourceMappingURL=TaxSummaryReportCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaxSummaryReportCollection.d.ts","sourceRoot":"","sources":["../../src/collections/TaxSummaryReportCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,UAAU,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAMnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAE9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,CAAC,OAAO,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,uDAAuD;QACvD,EAAE,EAAE,iBAAiB,CAAC;KACvB,GAAG,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,CAAC,OAAO,EAAE;QAC3B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,IAAI,EAAE,IAAI,CAAC;QACX,EAAE,EAAE,IAAI,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,uDAAuD;QACvD,EAAE,EAAE,iBAAiB,CAAC;KACvB,GAAG,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,IAAI,CAAC;IACT,iEAAiE;IACjE,aAAa,EAAE,uBAAuB,CAAC;IACvC,2EAA2E;IAC3E,YAAY,EAAE,sBAAsB,CAAC;IACrC,wBAAwB,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACjE;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iCAAiC;IAChD,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kFAAkF;AAClF,MAAM,MAAM,uBAAuB,GAC/B,SAAS,GACT,KAAK,GACL,aAAa,GACb,KAAK,GACL,gBAAgB,GAChB,YAAY,GACZ,eAAe,GACf,SAAS,CAAC;AAEd,gFAAgF;AAChF,MAAM,WAAW,6BACf,SAAQ,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,IAAI,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,+BAA+B;IAC9C,mBAAmB,CAAC,OAAO,EAAE;QAC3B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,IAAI,EAAE,IAAI,CAAC;QACX,EAAE,EAAE,IAAI,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,iBAAiB,CAAC;KACvB,GAAG,OAAO,CAAC,SAAS,6BAA6B,EAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,qCACf,SAAQ,iCAAiC;IACzC,OAAO,EAAE,uBAAuB,CAAC;IACjC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,oDAAoD;IACpD,YAAY,CAAC,EAAE,+BAA+B,CAAC;IAC/C,wBAAwB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAClE;AAED,MAAM,MAAM,0BAA0B,GAClC,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,2BAA2B,GAC3B,uBAAuB,GACvB,yBAAyB,CAAC;AAE9B,MAAM,MAAM,8BAA8B,GACtC;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,oBAAoB,CAAC;CAC5B,GACD;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,oBAAoB,CAAC;CAC5B,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GACD;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,6BAA6B,CAAC;CACzC,CAAC;AAEN,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,gBAAgB,CAAC;IACtB,OAAO,EAAE,uBAAuB,CAAC;IACjC,YAAY,EAAE,8BAA8B,EAAE,CAAC;IAC/C,8EAA8E;IAC9E,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,0BAA0B,EAAE,CAAC;CACvC;AAyJD,qBAAa,0BAA2B,SAAQ,oBAAoB,CAAC,gBAAgB,CAAC;IACpF,MAAM,CAAC,QAAQ,CAAC,UAAU,0BAAoB;YAEhC,wBAAwB;IAYvB,GAAG,CAChB,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9D,OAAO,GAAE,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAM,GACnE,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKpB,KAAK,CAClB,OAAO,GAAE,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAM,GACrE,OAAO,CAAC,MAAM,CAAC;IAKH,IAAI,CACjB,KAAK,CAAC,MAAM,SAAS,SAAS,eAAe,CAAC,gBAAgB,CAAC,EAAE,EAEjE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACxE,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtB,IAAI,CACjB,KAAK,CAAC,MAAM,SAAS,SAAS,eAAe,CAAC,gBAAgB,CAAC,EAAE,EAEjE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACxE,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;KACtB,GACA,OAAO,CAAC,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC;IACxC,IAAI,CACjB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACxE,MAAM,CAAC,EAAE,SAAS,CAAC;QACnB,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,GACA,OAAO,CAAC,UAAU,EAAE,CAAC;IACT,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CACjB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACxE,MAAM,CAAC,EAAE,SAAS,CAAC;QACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;KACtB,GACA,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACf,IAAI,CACjB,OAAO,EACH,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,GAAG;QACnD,MAAM,CAAC,EAAE,SAAS,CAAC;KACpB,CAAC,GACF,SAAS,GACZ,OAAO,CAAC,UAAU,EAAE,CAAC;IACT,IAAI,CACjB,OAAO,EAAE,eAAe,CAAC,gBAAgB,CAAC,GAAG,SAAS,GACrD,OAAO,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAQpD;;;OAGG;IACG,iBAAiB,CACrB,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,6BAA6B,CAAC;IAwGzC;;;OAGG;IACG,qBAAqB,CACzB,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAoClC;;;;OAIG;IACG,qBAAqB,CACzB,OAAO,EAAE,qCAAqC,GAC7C,OAAO,CAAC,8BAA8B,CAAC;CAsS3C;AAED,uEAAuE;AACvE,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,EACzE,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC7C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAsHzC"}
@@ -5,10 +5,12 @@
5
5
  export { ContractCollection } from './ContractCollection.js';
6
6
  export { ContractLineItemCollection } from './ContractLineItemCollection.js';
7
7
  export { CustomerCollection } from './CustomerCollection.js';
8
+ export { DocumentTaxCollection, type DocumentTaxReportFact, type DocumentTaxReportFactsOptions, type InvoiceTaxReportFact, type InvoiceTaxReportFactsOptions, } from './DocumentTaxCollection.js';
8
9
  export { FulfillmentCollection } from './FulfillmentCollection.js';
9
10
  export { FulfillmentLineItemCollection } from './FulfillmentLineItemCollection.js';
10
11
  export { InvoiceCollection, type InvoiceNumberOptions, UNPAID_STATUSES, } from './InvoiceCollection.js';
11
12
  export { InvoiceLineItemCollection } from './InvoiceLineItemCollection.js';
13
+ export { MoneyMigrationDocumentCollection } from './MoneyMigrationDocumentCollection.js';
12
14
  export { PaymentAllocationCollection } from './PaymentAllocationCollection.js';
13
15
  export { PaymentCollection } from './PaymentCollection.js';
14
16
  export { PaymentInstrumentCollection } from './PaymentInstrumentCollection.js';
@@ -16,5 +18,9 @@ export { PaymentIntentCollection, type PaymentIntentIdempotencyArgs, type Paymen
16
18
  export { type CreatePayoutFromPaymentArgs, PayoutCollection, } from './PayoutCollection.js';
17
19
  export { PurchaseContractCollection } from './PurchaseContractCollection.js';
18
20
  export { SalesContractCollection } from './SalesContractCollection.js';
21
+ export { TaxCodeCollection } from './TaxCodeCollection.js';
22
+ export { TaxComponentCollection } from './TaxComponentCollection.js';
23
+ export { TaxSettingsCollection } from './TaxSettingsCollection.js';
24
+ export { type RefreshTaxSummaryReportOptions, type TaxSummaryContributorDrilldown, type TaxSummaryContributorDrilldownOptions, type TaxSummaryDrilldownContributor, type TaxSummaryDrilldownPending, type TaxSummaryExpenseSource, type TaxSummaryInvoiceDrilldownOptions, type TaxSummaryLedgerDrilldownFact, type TaxSummaryLedgerDrilldownSource, type TaxSummaryLedgerSource, TaxSummaryReportCollection, type TaxSummaryReportMeasure, type TaxSummaryReportRefreshResult, } from './TaxSummaryReportCollection.js';
19
25
  export { VendorCollection } from './VendorCollection.js';
20
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,2BAA2B,EAChC,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,GAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,2BAA2B,EAChC,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACL,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACnC,KAAK,qCAAqC,EAC1C,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,EACtC,KAAK,6BAA6B,EAClC,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,0BAA0B,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,GACnC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Principal-bound commerce money tools for draft invoices (#3937). */
2
+ import type { PrincipalTool } from '@happyvertical/smrt-agents';
3
+ export declare const COMMERCE_TAX_CODES_LIST_TOOL_SLUG = "commerce.taxCodes.list";
4
+ export declare const COMMERCE_INVOICE_PREVIEW_TOOL_SLUG = "commerce.invoice.preview";
5
+ export declare const COMMERCE_INVOICE_LINE_ADD_TOOL_SLUG = "commerce.invoice.line.add";
6
+ export declare const COMMERCE_INVOICE_LINE_UPDATE_TOOL_SLUG = "commerce.invoice.line.update";
7
+ /** Build draft-only commerce tools for the existing `extraTools` seam. */
8
+ export declare function createCommerceMoneyTools(): PrincipalTool[];
9
+ //# sourceMappingURL=commerce-money-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commerce-money-tools.d.ts","sourceRoot":"","sources":["../src/commerce-money-tools.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,OAAO,KAAK,EAEV,aAAa,EAEd,MAAM,4BAA4B,CAAC;AAqBpC,eAAO,MAAM,iCAAiC,2BAA2B,CAAC;AAC1E,eAAO,MAAM,kCAAkC,6BAA6B,CAAC;AAC7E,eAAO,MAAM,mCAAmC,8BAA8B,CAAC;AAC/E,eAAO,MAAM,sCAAsC,iCACnB,CAAC;AA4djC,0EAA0E;AAC1E,wBAAgB,wBAAwB,IAAI,aAAa,EAAE,CA2J1D"}
@@ -0,0 +1,27 @@
1
+ /** Transactional Contract money aggregate persistence. */
2
+ import type { DatabaseInterface } from '@happyvertical/smrt-core/migrations';
3
+ import { type DocumentTaxWriteInput } from './collections/DocumentTaxCollection.js';
4
+ import { type Contract, classifyContractPurchase, isContractSnapshotReportEligible } from './models/Contract.js';
5
+ import type { ContractLineItem } from './models/ContractLineItem.js';
6
+ type DeleteOptions = {
7
+ expectedUpdatedAt?: Date | string;
8
+ };
9
+ export { classifyContractPurchase, isContractSnapshotReportEligible };
10
+ /** Save a Contract through legacy compatibility or the v2 aggregate. */
11
+ export declare function saveContract(input: Contract): Promise<Contract>;
12
+ /** Save a line and atomically recompute its Contract aggregate. */
13
+ export declare function saveContractLineItem(input: ContractLineItem): Promise<ContractLineItem>;
14
+ export declare function deleteContractLineItem(input: ContractLineItem, options: DeleteOptions): Promise<void>;
15
+ /** Recompute a Contract through its normal runtime gate. */
16
+ export declare function recalculateContractTotals(contract: Contract): Promise<void>;
17
+ /** Migration-only materializer; caller already owns the tenant migration transaction. */
18
+ export declare function materializeContractMoneySnapshot(input: {
19
+ db: DatabaseInterface;
20
+ contractId: string;
21
+ tenantId: string;
22
+ migrationId: string;
23
+ }): Promise<{
24
+ contractId: string;
25
+ taxRows: DocumentTaxWriteInput[];
26
+ }>;
27
+ //# sourceMappingURL=contract-money.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-money.d.ts","sourceRoot":"","sources":["../src/contract-money.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAK7E,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,wCAAwC,CAAC;AAQhD,OAAO,EACL,KAAK,QAAQ,EACb,wBAAwB,EACxB,gCAAgC,EACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAerE,KAAK,aAAa,GAAG;IAAE,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,CAAC;AA8E3D,OAAO,EAAE,wBAAwB,EAAE,gCAAgC,EAAE,CAAC;AAsQtE,wEAAwE;AACxE,wBAAsB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgFrE;AAED,mEAAmE;AACnE,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAwD3B;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED,4DAA4D;AAC5D,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,yFAAyF;AACzF,wBAAsB,gCAAgC,CAAC,KAAK,EAAE;IAC5D,EAAE,EAAE,iBAAiB,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,qBAAqB,EAAE,CAAA;CAAE,CAAC,CA2BpE"}
@@ -1,4 +1,3 @@
1
- /** Exact, transport-neutral cost pricing. All money is signed integer minor units. */
2
1
  export type CostBillingMode = 'reimbursement-plus-fee' | 'fee-only' | 'nonbillable' | 'fixed-contract';
3
2
  /** Caller-defined precedence, most specific first. No industry hierarchy is assumed. */
4
3
  export interface CostMarkupOverride {
@@ -1 +1 @@
1
- {"version":3,"file":"cost-billing.d.ts","sourceRoot":"","sources":["../src/cost-billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost-billing.d.ts","sourceRoot":"","sources":["../src/cost-billing.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { n as roundSignedRational, t as allocateSignedRationals } from "./chunks/money-rational-CcW7gzG5.js";
1
2
  //#region src/cost-billing.ts
2
3
  var SCALE = 1000000n;
3
4
  var DENOMINATOR = 100n * SCALE;
@@ -18,8 +19,7 @@ function safe(value) {
18
19
  return Number(value);
19
20
  }
20
21
  function rounded(numerator) {
21
- const result = ((numerator < 0n ? -numerator : numerator) + DENOMINATOR / 2n) / DENOMINATOR;
22
- return numerator < 0n ? -result : result;
22
+ return roundSignedRational(numerator, DENOMINATOR);
23
23
  }
24
24
  function identifier(value) {
25
25
  if (typeof value !== "string" || value.trim().length === 0) throw new TypeError("Identifiers must be nonempty strings");
@@ -190,24 +190,19 @@ function calculateOrderedCostBillingTax(input) {
190
190
  line,
191
191
  basisMinor: safe(basis),
192
192
  numerator,
193
- remainder: numerator % DENOMINATOR,
194
193
  tax: input.roundingScope === "line" ? rounded(numerator) : numerator / DENOMINATOR
195
194
  };
196
195
  });
197
196
  let tax = allocations.reduce((sum, allocation) => sum + allocation.tax, 0n);
198
197
  if (input.roundingScope === "invoice") {
199
- const target = rounded(allocations.reduce((sum, a) => sum + a.numerator, 0n));
200
- const residual = target - tax;
201
- if (residual !== 0n) {
202
- const direction = residual > 0n ? 1n : -1n;
203
- const ranked = [...allocations].sort((a, b) => {
204
- const difference = (b.remainder - a.remainder) * direction;
205
- return difference < 0n ? -1 : difference > 0n ? 1 : compareTaxLineIds(a, b);
206
- });
207
- const count = residual * direction;
208
- for (let index = 0; BigInt(index) < count; index++) ranked[index].tax += direction;
209
- }
210
- tax = target;
198
+ const distributed = allocateSignedRationals(allocations.map((allocation) => ({
199
+ id: allocation.id,
200
+ numerator: allocation.numerator,
201
+ denominator: DENOMINATOR
202
+ })));
203
+ const byId = new Map(distributed.allocations.map((allocation) => [allocation.id, allocation.value]));
204
+ for (const allocation of allocations) allocation.tax = byId.get(allocation.id);
205
+ tax = distributed.target;
211
206
  }
212
207
  total += tax;
213
208
  return {