@voyant-travel/finance 0.119.5

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 (294) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +192 -0
  3. package/dist/action-ledger-drift.d.ts +29 -0
  4. package/dist/action-ledger-drift.d.ts.map +1 -0
  5. package/dist/action-ledger-drift.js +166 -0
  6. package/dist/booking-tax.d.ts +124 -0
  7. package/dist/booking-tax.d.ts.map +1 -0
  8. package/dist/booking-tax.js +264 -0
  9. package/dist/checkout-routes.d.ts +1154 -0
  10. package/dist/checkout-routes.d.ts.map +1 -0
  11. package/dist/checkout-routes.js +116 -0
  12. package/dist/checkout-service-plan.d.ts +137 -0
  13. package/dist/checkout-service-plan.d.ts.map +1 -0
  14. package/dist/checkout-service-plan.js +119 -0
  15. package/dist/checkout-service.d.ts +9 -0
  16. package/dist/checkout-service.d.ts.map +1 -0
  17. package/dist/checkout-service.js +324 -0
  18. package/dist/checkout-validation.d.ts +1682 -0
  19. package/dist/checkout-validation.d.ts.map +1 -0
  20. package/dist/checkout-validation.js +228 -0
  21. package/dist/document-download.d.ts +3 -0
  22. package/dist/document-download.d.ts.map +1 -0
  23. package/dist/document-download.js +1 -0
  24. package/dist/fx-money.d.ts +17 -0
  25. package/dist/fx-money.d.ts.map +1 -0
  26. package/dist/fx-money.js +194 -0
  27. package/dist/index.d.ts +65 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +108 -0
  30. package/dist/invoice-fx.d.ts +134 -0
  31. package/dist/invoice-fx.d.ts.map +1 -0
  32. package/dist/invoice-fx.js +240 -0
  33. package/dist/invoice-number-errors.d.ts +2 -0
  34. package/dist/invoice-number-errors.d.ts.map +1 -0
  35. package/dist/invoice-number-errors.js +58 -0
  36. package/dist/markets-ref.d.ts +149 -0
  37. package/dist/markets-ref.d.ts.map +1 -0
  38. package/dist/markets-ref.js +17 -0
  39. package/dist/payment-link.d.ts +23 -0
  40. package/dist/payment-link.d.ts.map +1 -0
  41. package/dist/payment-link.js +30 -0
  42. package/dist/payment-policy.d.ts +113 -0
  43. package/dist/payment-policy.d.ts.map +1 -0
  44. package/dist/payment-policy.js +193 -0
  45. package/dist/route-runtime.d.ts +22 -0
  46. package/dist/route-runtime.d.ts.map +1 -0
  47. package/dist/route-runtime.js +18 -0
  48. package/dist/routes-action-ledger.d.ts +181 -0
  49. package/dist/routes-action-ledger.d.ts.map +1 -0
  50. package/dist/routes-action-ledger.js +142 -0
  51. package/dist/routes-booking-billing.d.ts +852 -0
  52. package/dist/routes-booking-billing.d.ts.map +1 -0
  53. package/dist/routes-booking-billing.js +223 -0
  54. package/dist/routes-booking-create.d.ts +3 -0
  55. package/dist/routes-booking-create.d.ts.map +1 -0
  56. package/dist/routes-booking-create.js +194 -0
  57. package/dist/routes-booking-reads.d.ts +46 -0
  58. package/dist/routes-booking-reads.d.ts.map +1 -0
  59. package/dist/routes-booking-reads.js +20 -0
  60. package/dist/routes-documents.d.ts +195 -0
  61. package/dist/routes-documents.d.ts.map +1 -0
  62. package/dist/routes-documents.js +93 -0
  63. package/dist/routes-invoice-core.d.ts +794 -0
  64. package/dist/routes-invoice-core.d.ts.map +1 -0
  65. package/dist/routes-invoice-core.js +238 -0
  66. package/dist/routes-invoice-documents.d.ts +401 -0
  67. package/dist/routes-invoice-documents.d.ts.map +1 -0
  68. package/dist/routes-invoice-documents.js +91 -0
  69. package/dist/routes-invoice-issue.d.ts +384 -0
  70. package/dist/routes-invoice-issue.d.ts.map +1 -0
  71. package/dist/routes-invoice-issue.js +208 -0
  72. package/dist/routes-payment-processing.d.ts +1193 -0
  73. package/dist/routes-payment-processing.d.ts.map +1 -0
  74. package/dist/routes-payment-processing.js +238 -0
  75. package/dist/routes-payments.d.ts +309 -0
  76. package/dist/routes-payments.d.ts.map +1 -0
  77. package/dist/routes-payments.js +94 -0
  78. package/dist/routes-public.d.ts +1948 -0
  79. package/dist/routes-public.d.ts.map +1 -0
  80. package/dist/routes-public.js +275 -0
  81. package/dist/routes-reference-data.d.ts +977 -0
  82. package/dist/routes-reference-data.d.ts.map +1 -0
  83. package/dist/routes-reference-data.js +191 -0
  84. package/dist/routes-reports.d.ts +344 -0
  85. package/dist/routes-reports.d.ts.map +1 -0
  86. package/dist/routes-reports.js +93 -0
  87. package/dist/routes-runtime.d.ts +71 -0
  88. package/dist/routes-runtime.d.ts.map +1 -0
  89. package/dist/routes-runtime.js +59 -0
  90. package/dist/routes-settlement.d.ts +67 -0
  91. package/dist/routes-settlement.d.ts.map +1 -0
  92. package/dist/routes-settlement.js +23 -0
  93. package/dist/routes-shared.d.ts +35 -0
  94. package/dist/routes-shared.d.ts.map +1 -0
  95. package/dist/routes-shared.js +10 -0
  96. package/dist/routes-supplier-invoices.d.ts +778 -0
  97. package/dist/routes-supplier-invoices.d.ts.map +1 -0
  98. package/dist/routes-supplier-invoices.js +159 -0
  99. package/dist/routes-vouchers.d.ts +228 -0
  100. package/dist/routes-vouchers.d.ts.map +1 -0
  101. package/dist/routes-vouchers.js +54 -0
  102. package/dist/routes.d.ts +5577 -0
  103. package/dist/routes.d.ts.map +1 -0
  104. package/dist/routes.js +44 -0
  105. package/dist/schema/booking-billing.d.ts +1006 -0
  106. package/dist/schema/booking-billing.d.ts.map +1 -0
  107. package/dist/schema/booking-billing.js +106 -0
  108. package/dist/schema/enums.d.ts +48 -0
  109. package/dist/schema/enums.d.ts.map +1 -0
  110. package/dist/schema/enums.js +237 -0
  111. package/dist/schema/invoice-documents.d.ts +1245 -0
  112. package/dist/schema/invoice-documents.d.ts.map +1 -0
  113. package/dist/schema/invoice-documents.js +140 -0
  114. package/dist/schema/payment-instruments.d.ts +418 -0
  115. package/dist/schema/payment-instruments.d.ts.map +1 -0
  116. package/dist/schema/payment-instruments.js +45 -0
  117. package/dist/schema/payment-processing.d.ts +563 -0
  118. package/dist/schema/payment-processing.d.ts.map +1 -0
  119. package/dist/schema/payment-processing.js +65 -0
  120. package/dist/schema/payment-sessions.d.ts +728 -0
  121. package/dist/schema/payment-sessions.d.ts.map +1 -0
  122. package/dist/schema/payment-sessions.js +79 -0
  123. package/dist/schema/receivables.d.ts +1474 -0
  124. package/dist/schema/receivables.d.ts.map +1 -0
  125. package/dist/schema/receivables.js +179 -0
  126. package/dist/schema/relations.d.ts +82 -0
  127. package/dist/schema/relations.d.ts.map +1 -0
  128. package/dist/schema/relations.js +144 -0
  129. package/dist/schema/supplier-invoices.d.ts +1619 -0
  130. package/dist/schema/supplier-invoices.d.ts.map +1 -0
  131. package/dist/schema/supplier-invoices.js +228 -0
  132. package/dist/schema/tax.d.ts +712 -0
  133. package/dist/schema/tax.d.ts.map +1 -0
  134. package/dist/schema/tax.js +98 -0
  135. package/dist/schema/vouchers.d.ts +444 -0
  136. package/dist/schema/vouchers.d.ts.map +1 -0
  137. package/dist/schema/vouchers.js +64 -0
  138. package/dist/schema.d.ts +12 -0
  139. package/dist/schema.d.ts.map +1 -0
  140. package/dist/schema.js +11 -0
  141. package/dist/service-accountant-shares.d.ts +106 -0
  142. package/dist/service-accountant-shares.d.ts.map +1 -0
  143. package/dist/service-accountant-shares.js +331 -0
  144. package/dist/service-action-ledger-accounting.d.ts +104 -0
  145. package/dist/service-action-ledger-accounting.d.ts.map +1 -0
  146. package/dist/service-action-ledger-accounting.js +386 -0
  147. package/dist/service-action-ledger-booking-payments.d.ts +48 -0
  148. package/dist/service-action-ledger-booking-payments.d.ts.map +1 -0
  149. package/dist/service-action-ledger-booking-payments.js +178 -0
  150. package/dist/service-action-ledger-bookings.d.ts +44 -0
  151. package/dist/service-action-ledger-bookings.d.ts.map +1 -0
  152. package/dist/service-action-ledger-bookings.js +81 -0
  153. package/dist/service-action-ledger-payment-authorizations.d.ts +48 -0
  154. package/dist/service-action-ledger-payment-authorizations.d.ts.map +1 -0
  155. package/dist/service-action-ledger-payment-authorizations.js +209 -0
  156. package/dist/service-action-ledger-payment-sessions.d.ts +83 -0
  157. package/dist/service-action-ledger-payment-sessions.d.ts.map +1 -0
  158. package/dist/service-action-ledger-payment-sessions.js +294 -0
  159. package/dist/service-action-ledger-supplier-invoices.d.ts +27 -0
  160. package/dist/service-action-ledger-supplier-invoices.d.ts.map +1 -0
  161. package/dist/service-action-ledger-supplier-invoices.js +111 -0
  162. package/dist/service-action-ledger-supplier-payments.d.ts +21 -0
  163. package/dist/service-action-ledger-supplier-payments.d.ts.map +1 -0
  164. package/dist/service-action-ledger-supplier-payments.js +97 -0
  165. package/dist/service-action-ledger.d.ts +7 -0
  166. package/dist/service-action-ledger.d.ts.map +1 -0
  167. package/dist/service-action-ledger.js +6 -0
  168. package/dist/service-aggregates.d.ts +96 -0
  169. package/dist/service-aggregates.d.ts.map +1 -0
  170. package/dist/service-aggregates.js +294 -0
  171. package/dist/service-booking-billing.d.ts +2322 -0
  172. package/dist/service-booking-billing.d.ts.map +1 -0
  173. package/dist/service-booking-billing.js +8 -0
  174. package/dist/service-booking-create.d.ts +410 -0
  175. package/dist/service-booking-create.d.ts.map +1 -0
  176. package/dist/service-booking-create.js +1256 -0
  177. package/dist/service-booking-guarantees.d.ts +725 -0
  178. package/dist/service-booking-guarantees.d.ts.map +1 -0
  179. package/dist/service-booking-guarantees.js +153 -0
  180. package/dist/service-booking-item-billing.d.ts +1062 -0
  181. package/dist/service-booking-item-billing.d.ts.map +1 -0
  182. package/dist/service-booking-item-billing.js +77 -0
  183. package/dist/service-booking-payment-schedules.d.ts +557 -0
  184. package/dist/service-booking-payment-schedules.d.ts.map +1 -0
  185. package/dist/service-booking-payment-schedules.js +372 -0
  186. package/dist/service-bookings-dual-create.d.ts +308 -0
  187. package/dist/service-bookings-dual-create.d.ts.map +1 -0
  188. package/dist/service-bookings-dual-create.js +131 -0
  189. package/dist/service-boundary-sql.d.ts +6 -0
  190. package/dist/service-boundary-sql.d.ts.map +1 -0
  191. package/dist/service-boundary-sql.js +15 -0
  192. package/dist/service-cost-categories.d.ts +26 -0
  193. package/dist/service-cost-categories.d.ts.map +1 -0
  194. package/dist/service-cost-categories.js +76 -0
  195. package/dist/service-documents.d.ts +80 -0
  196. package/dist/service-documents.d.ts.map +1 -0
  197. package/dist/service-documents.js +228 -0
  198. package/dist/service-invoice-artifacts.d.ts +246 -0
  199. package/dist/service-invoice-artifacts.d.ts.map +1 -0
  200. package/dist/service-invoice-artifacts.js +277 -0
  201. package/dist/service-invoice-core.d.ts +405 -0
  202. package/dist/service-invoice-core.d.ts.map +1 -0
  203. package/dist/service-invoice-core.js +290 -0
  204. package/dist/service-invoice-credit-notes.d.ts +973 -0
  205. package/dist/service-invoice-credit-notes.d.ts.map +1 -0
  206. package/dist/service-invoice-credit-notes.js +142 -0
  207. package/dist/service-invoice-from-booking.d.ts +41 -0
  208. package/dist/service-invoice-from-booking.d.ts.map +1 -0
  209. package/dist/service-invoice-from-booking.js +267 -0
  210. package/dist/service-invoice-line-items.d.ts +432 -0
  211. package/dist/service-invoice-line-items.d.ts.map +1 -0
  212. package/dist/service-invoice-line-items.js +102 -0
  213. package/dist/service-invoice-numbering.d.ts +227 -0
  214. package/dist/service-invoice-numbering.d.ts.map +1 -0
  215. package/dist/service-invoice-numbering.js +260 -0
  216. package/dist/service-invoice-payments.d.ts +673 -0
  217. package/dist/service-invoice-payments.d.ts.map +1 -0
  218. package/dist/service-invoice-payments.js +398 -0
  219. package/dist/service-invoices.d.ts +2501 -0
  220. package/dist/service-invoices.d.ts.map +1 -0
  221. package/dist/service-invoices.js +12 -0
  222. package/dist/service-issue.d.ts +207 -0
  223. package/dist/service-issue.d.ts.map +1 -0
  224. package/dist/service-issue.js +431 -0
  225. package/dist/service-payment-authorizations.d.ts +164 -0
  226. package/dist/service-payment-authorizations.d.ts.map +1 -0
  227. package/dist/service-payment-authorizations.js +227 -0
  228. package/dist/service-payment-instruments.d.ts +116 -0
  229. package/dist/service-payment-instruments.d.ts.map +1 -0
  230. package/dist/service-payment-instruments.js +99 -0
  231. package/dist/service-payment-processing.d.ts +676 -0
  232. package/dist/service-payment-processing.d.ts.map +1 -0
  233. package/dist/service-payment-processing.js +10 -0
  234. package/dist/service-payment-session-completion.d.ts +48 -0
  235. package/dist/service-payment-session-completion.d.ts.map +1 -0
  236. package/dist/service-payment-session-completion.js +238 -0
  237. package/dist/service-payment-sessions.d.ts +361 -0
  238. package/dist/service-payment-sessions.d.ts.map +1 -0
  239. package/dist/service-payment-sessions.js +280 -0
  240. package/dist/service-profitability.d.ts +114 -0
  241. package/dist/service-profitability.d.ts.map +1 -0
  242. package/dist/service-profitability.js +794 -0
  243. package/dist/service-public.d.ts +553 -0
  244. package/dist/service-public.d.ts.map +1 -0
  245. package/dist/service-public.js +583 -0
  246. package/dist/service-reference-data.d.ts +272 -0
  247. package/dist/service-reference-data.d.ts.map +1 -0
  248. package/dist/service-reference-data.js +280 -0
  249. package/dist/service-rendition-wait.d.ts +38 -0
  250. package/dist/service-rendition-wait.d.ts.map +1 -0
  251. package/dist/service-rendition-wait.js +67 -0
  252. package/dist/service-reports.d.ts +37 -0
  253. package/dist/service-reports.d.ts.map +1 -0
  254. package/dist/service-reports.js +62 -0
  255. package/dist/service-settlement.d.ts +46 -0
  256. package/dist/service-settlement.d.ts.map +1 -0
  257. package/dist/service-settlement.js +185 -0
  258. package/dist/service-shared.d.ts +541 -0
  259. package/dist/service-shared.d.ts.map +1 -0
  260. package/dist/service-shared.js +764 -0
  261. package/dist/service-supplier-invoices.d.ts +871 -0
  262. package/dist/service-supplier-invoices.d.ts.map +1 -0
  263. package/dist/service-supplier-invoices.js +744 -0
  264. package/dist/service-supplier-payments.d.ts +69 -0
  265. package/dist/service-supplier-payments.d.ts.map +1 -0
  266. package/dist/service-supplier-payments.js +136 -0
  267. package/dist/service-vouchers-migration.d.ts +44 -0
  268. package/dist/service-vouchers-migration.d.ts.map +1 -0
  269. package/dist/service-vouchers-migration.js +148 -0
  270. package/dist/service-vouchers.d.ts +157 -0
  271. package/dist/service-vouchers.d.ts.map +1 -0
  272. package/dist/service-vouchers.js +191 -0
  273. package/dist/service.d.ts +6490 -0
  274. package/dist/service.d.ts.map +1 -0
  275. package/dist/service.js +29 -0
  276. package/dist/validation-billing.d.ts +2 -0
  277. package/dist/validation-billing.d.ts.map +1 -0
  278. package/dist/validation-billing.js +1 -0
  279. package/dist/validation-payments.d.ts +2 -0
  280. package/dist/validation-payments.d.ts.map +1 -0
  281. package/dist/validation-payments.js +1 -0
  282. package/dist/validation-public.d.ts +2 -0
  283. package/dist/validation-public.d.ts.map +1 -0
  284. package/dist/validation-public.js +1 -0
  285. package/dist/validation-shared.d.ts +2 -0
  286. package/dist/validation-shared.d.ts.map +1 -0
  287. package/dist/validation-shared.js +1 -0
  288. package/dist/validation-vouchers.d.ts +2 -0
  289. package/dist/validation-vouchers.d.ts.map +1 -0
  290. package/dist/validation-vouchers.js +1 -0
  291. package/dist/validation.d.ts +2 -0
  292. package/dist/validation.d.ts.map +1 -0
  293. package/dist/validation.js +1 -0
  294. package/package.json +121 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoice-documents.d.ts","sourceRoot":"","sources":["../../src/schema/invoice-documents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import { typeId, typeIdRef } from "@voyant-travel/db/lib/typeid-column";
2
+ import { sql } from "drizzle-orm";
3
+ import { boolean, index, integer, jsonb, pgTable, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
4
+ import { invoiceNumberResetStrategyEnum, invoiceNumberSeriesScopeEnum, invoiceRenditionFormatEnum, invoiceRenditionStatusEnum, invoiceTemplateBodyFormatEnum, } from "./enums.js";
5
+ import { invoices } from "./receivables.js";
6
+ // ---------- finance_notes ----------
7
+ export const financeNotes = pgTable("finance_notes", {
8
+ id: typeId("finance_notes"),
9
+ invoiceId: typeIdRef("invoice_id")
10
+ .notNull()
11
+ .references(() => invoices.id, { onDelete: "cascade" }),
12
+ authorId: text("author_id").notNull(),
13
+ content: text("content").notNull(),
14
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
15
+ }, (table) => [
16
+ index("idx_finance_notes_invoice").on(table.invoiceId),
17
+ index("idx_finance_notes_invoice_created").on(table.invoiceId, table.createdAt),
18
+ ]);
19
+ // ---------- invoice_number_series ----------
20
+ export const invoiceNumberSeries = pgTable("invoice_number_series", {
21
+ id: typeId("invoice_number_series"),
22
+ code: text("code").notNull().unique(),
23
+ name: text("name").notNull(),
24
+ prefix: text("prefix").notNull().default(""),
25
+ separator: text("separator").notNull().default(""),
26
+ padLength: integer("pad_length").notNull().default(4),
27
+ currentSequence: integer("current_sequence").notNull().default(0),
28
+ resetStrategy: invoiceNumberResetStrategyEnum("reset_strategy").notNull().default("never"),
29
+ resetAt: timestamp("reset_at", { withTimezone: true }),
30
+ scope: invoiceNumberSeriesScopeEnum("scope").notNull().default("invoice"),
31
+ isDefault: boolean("is_default").notNull().default(false),
32
+ externalProvider: text("external_provider"),
33
+ externalConfigKey: text("external_config_key"),
34
+ active: boolean("active").notNull().default(true),
35
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
36
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
37
+ }, (table) => [
38
+ index("idx_invoice_number_series_scope").on(table.scope),
39
+ index("idx_invoice_number_series_active").on(table.active),
40
+ index("idx_invoice_number_series_scope_default").on(table.scope, table.isDefault),
41
+ index("idx_invoice_number_series_external_provider").on(table.externalProvider),
42
+ index("idx_invoice_number_series_scope_updated").on(table.scope, table.updatedAt),
43
+ index("idx_invoice_number_series_active_updated").on(table.active, table.updatedAt),
44
+ uniqueIndex("uidx_invoice_number_series_default_scope_active")
45
+ .on(table.scope)
46
+ // agent-quality: raw-sql reviewed -- owner: finance; dynamic SQL interpolation uses Drizzle parameter binding or vetted SQL identifiers.
47
+ .where(sql `${table.active} = true AND ${table.isDefault} = true`),
48
+ ]);
49
+ // ---------- invoice_templates ----------
50
+ export const invoiceTemplates = pgTable("invoice_templates", {
51
+ id: typeId("invoice_templates"),
52
+ name: text("name").notNull(),
53
+ slug: text("slug").notNull().unique(),
54
+ language: text("language").notNull().default("en"),
55
+ jurisdiction: text("jurisdiction"),
56
+ bodyFormat: invoiceTemplateBodyFormatEnum("body_format").notNull().default("html"),
57
+ body: text("body").notNull(),
58
+ cssStyles: text("css_styles"),
59
+ isDefault: boolean("is_default").notNull().default(false),
60
+ active: boolean("active").notNull().default(true),
61
+ metadata: jsonb("metadata"),
62
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
63
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
64
+ }, (table) => [
65
+ index("idx_invoice_templates_language").on(table.language),
66
+ index("idx_invoice_templates_language_updated").on(table.language, table.updatedAt),
67
+ index("idx_invoice_templates_jurisdiction").on(table.jurisdiction),
68
+ index("idx_invoice_templates_jurisdiction_updated").on(table.jurisdiction, table.updatedAt),
69
+ index("idx_invoice_templates_default").on(table.isDefault),
70
+ index("idx_invoice_templates_default_updated").on(table.isDefault, table.updatedAt),
71
+ index("idx_invoice_templates_active").on(table.active),
72
+ index("idx_invoice_templates_active_updated").on(table.active, table.updatedAt),
73
+ ]);
74
+ // ---------- invoice_renditions ----------
75
+ export const invoiceRenditions = pgTable("invoice_renditions", {
76
+ id: typeId("invoice_renditions"),
77
+ invoiceId: typeIdRef("invoice_id")
78
+ .notNull()
79
+ .references(() => invoices.id, { onDelete: "cascade" }),
80
+ templateId: typeIdRef("template_id").references(() => invoiceTemplates.id, {
81
+ onDelete: "set null",
82
+ }),
83
+ format: invoiceRenditionFormatEnum("format").notNull().default("pdf"),
84
+ status: invoiceRenditionStatusEnum("status").notNull().default("pending"),
85
+ storageKey: text("storage_key"),
86
+ fileSize: integer("file_size"),
87
+ checksum: text("checksum"),
88
+ language: text("language"),
89
+ errorMessage: text("error_message"),
90
+ generatedAt: timestamp("generated_at", { withTimezone: true }),
91
+ metadata: jsonb("metadata"),
92
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
93
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
94
+ }, (table) => [
95
+ index("idx_invoice_renditions_invoice").on(table.invoiceId),
96
+ index("idx_invoice_renditions_invoice_created").on(table.invoiceId, table.createdAt),
97
+ index("idx_invoice_renditions_template").on(table.templateId),
98
+ index("idx_invoice_renditions_status").on(table.status),
99
+ index("idx_invoice_renditions_format").on(table.format),
100
+ ]);
101
+ // ---------- invoice_attachments ----------
102
+ export const invoiceAttachments = pgTable("invoice_attachments", {
103
+ id: typeId("invoice_attachments"),
104
+ invoiceId: typeIdRef("invoice_id")
105
+ .notNull()
106
+ .references(() => invoices.id, { onDelete: "cascade" }),
107
+ kind: text("kind").notNull().default("supporting_document"),
108
+ name: text("name").notNull(),
109
+ mimeType: text("mime_type"),
110
+ fileSize: integer("file_size"),
111
+ storageKey: text("storage_key"),
112
+ checksum: text("checksum"),
113
+ metadata: jsonb("metadata"),
114
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
115
+ }, (table) => [
116
+ index("idx_invoice_attachments_invoice").on(table.invoiceId),
117
+ index("idx_invoice_attachments_invoice_created").on(table.invoiceId, table.createdAt),
118
+ ]);
119
+ // ---------- invoice_external_refs ----------
120
+ export const invoiceExternalRefs = pgTable("invoice_external_refs", {
121
+ id: typeId("invoice_external_refs"),
122
+ invoiceId: typeIdRef("invoice_id")
123
+ .notNull()
124
+ .references(() => invoices.id, { onDelete: "cascade" }),
125
+ provider: text("provider").notNull(),
126
+ externalId: text("external_id"),
127
+ externalNumber: text("external_number"),
128
+ externalUrl: text("external_url"),
129
+ status: text("status"),
130
+ metadata: jsonb("metadata"),
131
+ syncedAt: timestamp("synced_at", { withTimezone: true }),
132
+ syncError: text("sync_error"),
133
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
134
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
135
+ }, (table) => [
136
+ index("idx_invoice_external_refs_invoice").on(table.invoiceId),
137
+ index("idx_invoice_external_refs_invoice_created").on(table.invoiceId, table.createdAt),
138
+ index("idx_invoice_external_refs_provider").on(table.provider),
139
+ uniqueIndex("uq_invoice_external_refs_invoice_provider").on(table.invoiceId, table.provider),
140
+ ]);
@@ -0,0 +1,418 @@
1
+ export declare const paymentInstruments: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "payment_instruments";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: string;
7
+ tableName: "payment_instruments";
8
+ dataType: "string";
9
+ columnType: "PgText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: true;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ ownerType: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "owner_type";
24
+ tableName: "payment_instruments";
25
+ dataType: "string";
26
+ columnType: "PgEnumColumn";
27
+ data: "client" | "supplier" | "channel" | "agency" | "internal" | "other";
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: true;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: ["client", "supplier", "channel", "agency", "internal", "other"];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ personId: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "person_id";
41
+ tableName: "payment_instruments";
42
+ dataType: "string";
43
+ columnType: "PgText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: false;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ organizationId: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "organization_id";
58
+ tableName: "payment_instruments";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: false;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ supplierId: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: "supplier_id";
75
+ tableName: "payment_instruments";
76
+ dataType: "string";
77
+ columnType: "PgText";
78
+ data: string;
79
+ driverParam: string;
80
+ notNull: false;
81
+ hasDefault: false;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: [string, ...string[]];
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ channelId: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: "channel_id";
92
+ tableName: "payment_instruments";
93
+ dataType: "string";
94
+ columnType: "PgText";
95
+ data: string;
96
+ driverParam: string;
97
+ notNull: false;
98
+ hasDefault: false;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: [string, ...string[]];
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ instrumentType: import("drizzle-orm/pg-core").PgColumn<{
108
+ name: "instrument_type";
109
+ tableName: "payment_instruments";
110
+ dataType: "string";
111
+ columnType: "PgEnumColumn";
112
+ data: "other" | "credit_card" | "debit_card" | "bank_account" | "wallet" | "voucher" | "direct_bill" | "cash";
113
+ driverParam: string;
114
+ notNull: true;
115
+ hasDefault: false;
116
+ isPrimaryKey: false;
117
+ isAutoincrement: false;
118
+ hasRuntimeDefault: false;
119
+ enumValues: ["credit_card", "debit_card", "bank_account", "wallet", "voucher", "direct_bill", "cash", "other"];
120
+ baseColumn: never;
121
+ identity: undefined;
122
+ generated: undefined;
123
+ }, {}, {}>;
124
+ status: import("drizzle-orm/pg-core").PgColumn<{
125
+ name: "status";
126
+ tableName: "payment_instruments";
127
+ dataType: "string";
128
+ columnType: "PgEnumColumn";
129
+ data: "expired" | "active" | "inactive" | "revoked" | "failed_verification";
130
+ driverParam: string;
131
+ notNull: true;
132
+ hasDefault: true;
133
+ isPrimaryKey: false;
134
+ isAutoincrement: false;
135
+ hasRuntimeDefault: false;
136
+ enumValues: ["active", "inactive", "expired", "revoked", "failed_verification"];
137
+ baseColumn: never;
138
+ identity: undefined;
139
+ generated: undefined;
140
+ }, {}, {}>;
141
+ label: import("drizzle-orm/pg-core").PgColumn<{
142
+ name: "label";
143
+ tableName: "payment_instruments";
144
+ dataType: "string";
145
+ columnType: "PgText";
146
+ data: string;
147
+ driverParam: string;
148
+ notNull: true;
149
+ hasDefault: false;
150
+ isPrimaryKey: false;
151
+ isAutoincrement: false;
152
+ hasRuntimeDefault: false;
153
+ enumValues: [string, ...string[]];
154
+ baseColumn: never;
155
+ identity: undefined;
156
+ generated: undefined;
157
+ }, {}, {}>;
158
+ provider: import("drizzle-orm/pg-core").PgColumn<{
159
+ name: "provider";
160
+ tableName: "payment_instruments";
161
+ dataType: "string";
162
+ columnType: "PgText";
163
+ data: string;
164
+ driverParam: string;
165
+ notNull: false;
166
+ hasDefault: false;
167
+ isPrimaryKey: false;
168
+ isAutoincrement: false;
169
+ hasRuntimeDefault: false;
170
+ enumValues: [string, ...string[]];
171
+ baseColumn: never;
172
+ identity: undefined;
173
+ generated: undefined;
174
+ }, {}, {}>;
175
+ brand: import("drizzle-orm/pg-core").PgColumn<{
176
+ name: "brand";
177
+ tableName: "payment_instruments";
178
+ dataType: "string";
179
+ columnType: "PgText";
180
+ data: string;
181
+ driverParam: string;
182
+ notNull: false;
183
+ hasDefault: false;
184
+ isPrimaryKey: false;
185
+ isAutoincrement: false;
186
+ hasRuntimeDefault: false;
187
+ enumValues: [string, ...string[]];
188
+ baseColumn: never;
189
+ identity: undefined;
190
+ generated: undefined;
191
+ }, {}, {}>;
192
+ last4: import("drizzle-orm/pg-core").PgColumn<{
193
+ name: "last4";
194
+ tableName: "payment_instruments";
195
+ dataType: "string";
196
+ columnType: "PgText";
197
+ data: string;
198
+ driverParam: string;
199
+ notNull: false;
200
+ hasDefault: false;
201
+ isPrimaryKey: false;
202
+ isAutoincrement: false;
203
+ hasRuntimeDefault: false;
204
+ enumValues: [string, ...string[]];
205
+ baseColumn: never;
206
+ identity: undefined;
207
+ generated: undefined;
208
+ }, {}, {}>;
209
+ holderName: import("drizzle-orm/pg-core").PgColumn<{
210
+ name: "holder_name";
211
+ tableName: "payment_instruments";
212
+ dataType: "string";
213
+ columnType: "PgText";
214
+ data: string;
215
+ driverParam: string;
216
+ notNull: false;
217
+ hasDefault: false;
218
+ isPrimaryKey: false;
219
+ isAutoincrement: false;
220
+ hasRuntimeDefault: false;
221
+ enumValues: [string, ...string[]];
222
+ baseColumn: never;
223
+ identity: undefined;
224
+ generated: undefined;
225
+ }, {}, {}>;
226
+ expiryMonth: import("drizzle-orm/pg-core").PgColumn<{
227
+ name: "expiry_month";
228
+ tableName: "payment_instruments";
229
+ dataType: "number";
230
+ columnType: "PgInteger";
231
+ data: number;
232
+ driverParam: string | number;
233
+ notNull: false;
234
+ hasDefault: false;
235
+ isPrimaryKey: false;
236
+ isAutoincrement: false;
237
+ hasRuntimeDefault: false;
238
+ enumValues: undefined;
239
+ baseColumn: never;
240
+ identity: undefined;
241
+ generated: undefined;
242
+ }, {}, {}>;
243
+ expiryYear: import("drizzle-orm/pg-core").PgColumn<{
244
+ name: "expiry_year";
245
+ tableName: "payment_instruments";
246
+ dataType: "number";
247
+ columnType: "PgInteger";
248
+ data: number;
249
+ driverParam: string | number;
250
+ notNull: false;
251
+ hasDefault: false;
252
+ isPrimaryKey: false;
253
+ isAutoincrement: false;
254
+ hasRuntimeDefault: false;
255
+ enumValues: undefined;
256
+ baseColumn: never;
257
+ identity: undefined;
258
+ generated: undefined;
259
+ }, {}, {}>;
260
+ externalToken: import("drizzle-orm/pg-core").PgColumn<{
261
+ name: "external_token";
262
+ tableName: "payment_instruments";
263
+ dataType: "string";
264
+ columnType: "PgText";
265
+ data: string;
266
+ driverParam: string;
267
+ notNull: false;
268
+ hasDefault: false;
269
+ isPrimaryKey: false;
270
+ isAutoincrement: false;
271
+ hasRuntimeDefault: false;
272
+ enumValues: [string, ...string[]];
273
+ baseColumn: never;
274
+ identity: undefined;
275
+ generated: undefined;
276
+ }, {}, {}>;
277
+ externalCustomerId: import("drizzle-orm/pg-core").PgColumn<{
278
+ name: "external_customer_id";
279
+ tableName: "payment_instruments";
280
+ dataType: "string";
281
+ columnType: "PgText";
282
+ data: string;
283
+ driverParam: string;
284
+ notNull: false;
285
+ hasDefault: false;
286
+ isPrimaryKey: false;
287
+ isAutoincrement: false;
288
+ hasRuntimeDefault: false;
289
+ enumValues: [string, ...string[]];
290
+ baseColumn: never;
291
+ identity: undefined;
292
+ generated: undefined;
293
+ }, {}, {}>;
294
+ billingEmail: import("drizzle-orm/pg-core").PgColumn<{
295
+ name: "billing_email";
296
+ tableName: "payment_instruments";
297
+ dataType: "string";
298
+ columnType: "PgText";
299
+ data: string;
300
+ driverParam: string;
301
+ notNull: false;
302
+ hasDefault: false;
303
+ isPrimaryKey: false;
304
+ isAutoincrement: false;
305
+ hasRuntimeDefault: false;
306
+ enumValues: [string, ...string[]];
307
+ baseColumn: never;
308
+ identity: undefined;
309
+ generated: undefined;
310
+ }, {}, {}>;
311
+ billingAddress: import("drizzle-orm/pg-core").PgColumn<{
312
+ name: "billing_address";
313
+ tableName: "payment_instruments";
314
+ dataType: "string";
315
+ columnType: "PgText";
316
+ data: string;
317
+ driverParam: string;
318
+ notNull: false;
319
+ hasDefault: false;
320
+ isPrimaryKey: false;
321
+ isAutoincrement: false;
322
+ hasRuntimeDefault: false;
323
+ enumValues: [string, ...string[]];
324
+ baseColumn: never;
325
+ identity: undefined;
326
+ generated: undefined;
327
+ }, {}, {}>;
328
+ directBillReference: import("drizzle-orm/pg-core").PgColumn<{
329
+ name: "direct_bill_reference";
330
+ tableName: "payment_instruments";
331
+ dataType: "string";
332
+ columnType: "PgText";
333
+ data: string;
334
+ driverParam: string;
335
+ notNull: false;
336
+ hasDefault: false;
337
+ isPrimaryKey: false;
338
+ isAutoincrement: false;
339
+ hasRuntimeDefault: false;
340
+ enumValues: [string, ...string[]];
341
+ baseColumn: never;
342
+ identity: undefined;
343
+ generated: undefined;
344
+ }, {}, {}>;
345
+ notes: import("drizzle-orm/pg-core").PgColumn<{
346
+ name: "notes";
347
+ tableName: "payment_instruments";
348
+ dataType: "string";
349
+ columnType: "PgText";
350
+ data: string;
351
+ driverParam: string;
352
+ notNull: false;
353
+ hasDefault: false;
354
+ isPrimaryKey: false;
355
+ isAutoincrement: false;
356
+ hasRuntimeDefault: false;
357
+ enumValues: [string, ...string[]];
358
+ baseColumn: never;
359
+ identity: undefined;
360
+ generated: undefined;
361
+ }, {}, {}>;
362
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
363
+ name: "metadata";
364
+ tableName: "payment_instruments";
365
+ dataType: "json";
366
+ columnType: "PgJsonb";
367
+ data: unknown;
368
+ driverParam: unknown;
369
+ notNull: false;
370
+ hasDefault: false;
371
+ isPrimaryKey: false;
372
+ isAutoincrement: false;
373
+ hasRuntimeDefault: false;
374
+ enumValues: undefined;
375
+ baseColumn: never;
376
+ identity: undefined;
377
+ generated: undefined;
378
+ }, {}, {}>;
379
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
380
+ name: "created_at";
381
+ tableName: "payment_instruments";
382
+ dataType: "date";
383
+ columnType: "PgTimestamp";
384
+ data: Date;
385
+ driverParam: string;
386
+ notNull: true;
387
+ hasDefault: true;
388
+ isPrimaryKey: false;
389
+ isAutoincrement: false;
390
+ hasRuntimeDefault: false;
391
+ enumValues: undefined;
392
+ baseColumn: never;
393
+ identity: undefined;
394
+ generated: undefined;
395
+ }, {}, {}>;
396
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
397
+ name: "updated_at";
398
+ tableName: "payment_instruments";
399
+ dataType: "date";
400
+ columnType: "PgTimestamp";
401
+ data: Date;
402
+ driverParam: string;
403
+ notNull: true;
404
+ hasDefault: true;
405
+ isPrimaryKey: false;
406
+ isAutoincrement: false;
407
+ hasRuntimeDefault: false;
408
+ enumValues: undefined;
409
+ baseColumn: never;
410
+ identity: undefined;
411
+ generated: undefined;
412
+ }, {}, {}>;
413
+ };
414
+ dialect: "pg";
415
+ }>;
416
+ export type PaymentInstrument = typeof paymentInstruments.$inferSelect;
417
+ export type NewPaymentInstrument = typeof paymentInstruments.$inferInsert;
418
+ //# sourceMappingURL=payment-instruments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-instruments.d.ts","sourceRoot":"","sources":["../../src/schema/payment-instruments.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4C9B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { typeId } from "@voyant-travel/db/lib/typeid-column";
2
+ import { index, integer, jsonb, pgTable, text, timestamp } from "drizzle-orm/pg-core";
3
+ import { paymentInstrumentOwnerTypeEnum, paymentInstrumentStatusEnum, paymentInstrumentTypeEnum, } from "./enums.js";
4
+ // ---------- payment_instruments ----------
5
+ export const paymentInstruments = pgTable("payment_instruments", {
6
+ id: typeId("payment_instruments"),
7
+ ownerType: paymentInstrumentOwnerTypeEnum("owner_type").notNull().default("client"),
8
+ personId: text("person_id"),
9
+ organizationId: text("organization_id"),
10
+ supplierId: text("supplier_id"),
11
+ channelId: text("channel_id"),
12
+ instrumentType: paymentInstrumentTypeEnum("instrument_type").notNull(),
13
+ status: paymentInstrumentStatusEnum("status").notNull().default("active"),
14
+ label: text("label").notNull(),
15
+ provider: text("provider"),
16
+ brand: text("brand"),
17
+ last4: text("last4"),
18
+ holderName: text("holder_name"),
19
+ expiryMonth: integer("expiry_month"),
20
+ expiryYear: integer("expiry_year"),
21
+ externalToken: text("external_token"),
22
+ externalCustomerId: text("external_customer_id"),
23
+ billingEmail: text("billing_email"),
24
+ billingAddress: text("billing_address"),
25
+ directBillReference: text("direct_bill_reference"),
26
+ notes: text("notes"),
27
+ metadata: jsonb("metadata"),
28
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
29
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
30
+ }, (table) => [
31
+ index("idx_payment_instruments_owner_type").on(table.ownerType),
32
+ index("idx_payment_instruments_owner_type_updated").on(table.ownerType, table.updatedAt),
33
+ index("idx_payment_instruments_person").on(table.personId),
34
+ index("idx_payment_instruments_person_updated").on(table.personId, table.updatedAt),
35
+ index("idx_payment_instruments_organization").on(table.organizationId),
36
+ index("idx_payment_instruments_organization_updated").on(table.organizationId, table.updatedAt),
37
+ index("idx_payment_instruments_supplier").on(table.supplierId),
38
+ index("idx_payment_instruments_supplier_updated").on(table.supplierId, table.updatedAt),
39
+ index("idx_payment_instruments_channel").on(table.channelId),
40
+ index("idx_payment_instruments_channel_updated").on(table.channelId, table.updatedAt),
41
+ index("idx_payment_instruments_status").on(table.status),
42
+ index("idx_payment_instruments_status_updated").on(table.status, table.updatedAt),
43
+ index("idx_payment_instruments_type").on(table.instrumentType),
44
+ index("idx_payment_instruments_type_updated").on(table.instrumentType, table.updatedAt),
45
+ ]);