@voyantjs/finance 0.52.2 → 0.52.3

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 (51) hide show
  1. package/dist/action-ledger-drift.d.ts +29 -0
  2. package/dist/action-ledger-drift.d.ts.map +1 -0
  3. package/dist/action-ledger-drift.js +163 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +2 -0
  6. package/dist/routes-action-ledger.d.ts +181 -0
  7. package/dist/routes-action-ledger.d.ts.map +1 -0
  8. package/dist/routes-action-ledger.js +142 -0
  9. package/dist/routes-documents.d.ts +8 -8
  10. package/dist/routes-public.d.ts +48 -48
  11. package/dist/routes-settlement.d.ts +1 -1
  12. package/dist/routes-shared.d.ts +12 -0
  13. package/dist/routes-shared.d.ts.map +1 -1
  14. package/dist/routes.d.ts +224 -224
  15. package/dist/routes.d.ts.map +1 -1
  16. package/dist/routes.js +252 -46
  17. package/dist/schema.d.ts +22 -22
  18. package/dist/service-action-ledger-accounting.d.ts +77 -0
  19. package/dist/service-action-ledger-accounting.d.ts.map +1 -0
  20. package/dist/service-action-ledger-accounting.js +307 -0
  21. package/dist/service-action-ledger-booking-payments.d.ts +48 -0
  22. package/dist/service-action-ledger-booking-payments.d.ts.map +1 -0
  23. package/dist/service-action-ledger-booking-payments.js +178 -0
  24. package/dist/service-action-ledger-payment-authorizations.d.ts +48 -0
  25. package/dist/service-action-ledger-payment-authorizations.d.ts.map +1 -0
  26. package/dist/service-action-ledger-payment-authorizations.js +209 -0
  27. package/dist/service-action-ledger-payment-sessions.d.ts +83 -0
  28. package/dist/service-action-ledger-payment-sessions.d.ts.map +1 -0
  29. package/dist/service-action-ledger-payment-sessions.js +294 -0
  30. package/dist/service-action-ledger-supplier-payments.d.ts +21 -0
  31. package/dist/service-action-ledger-supplier-payments.d.ts.map +1 -0
  32. package/dist/service-action-ledger-supplier-payments.js +70 -0
  33. package/dist/service-action-ledger.d.ts +6 -0
  34. package/dist/service-action-ledger.d.ts.map +1 -0
  35. package/dist/service-action-ledger.js +5 -0
  36. package/dist/service-booking-create.d.ts +12 -12
  37. package/dist/service-bookings-dual-create.d.ts +12 -12
  38. package/dist/service-issue.d.ts +15 -12
  39. package/dist/service-issue.d.ts.map +1 -1
  40. package/dist/service-issue.js +24 -3
  41. package/dist/service-public.d.ts +13 -13
  42. package/dist/service-vouchers.d.ts +10 -10
  43. package/dist/service.d.ts +291 -279
  44. package/dist/service.d.ts.map +1 -1
  45. package/dist/service.js +731 -234
  46. package/dist/validation-billing.d.ts +37 -37
  47. package/dist/validation-payments.d.ts +102 -102
  48. package/dist/validation-public.d.ts +45 -45
  49. package/dist/validation-shared.d.ts +32 -32
  50. package/dist/validation-vouchers.d.ts +2 -2
  51. package/package.json +13 -7
package/dist/schema.d.ts CHANGED
@@ -87,7 +87,7 @@ export declare const vouchers: import("drizzle-orm/pg-core").PgTableWithColumns<
87
87
  tableName: "vouchers";
88
88
  dataType: "string";
89
89
  columnType: "PgEnumColumn";
90
- data: "void" | "active" | "expired" | "redeemed";
90
+ data: "expired" | "void" | "active" | "redeemed";
91
91
  driverParam: string;
92
92
  notNull: true;
93
93
  hasDefault: true;
@@ -496,7 +496,7 @@ export declare const paymentInstruments: import("drizzle-orm/pg-core").PgTableWi
496
496
  tableName: "payment_instruments";
497
497
  dataType: "string";
498
498
  columnType: "PgEnumColumn";
499
- data: "internal" | "supplier" | "other" | "client" | "channel" | "agency";
499
+ data: "other" | "client" | "supplier" | "channel" | "agency" | "internal";
500
500
  driverParam: string;
501
501
  notNull: true;
502
502
  hasDefault: true;
@@ -581,7 +581,7 @@ export declare const paymentInstruments: import("drizzle-orm/pg-core").PgTableWi
581
581
  tableName: "payment_instruments";
582
582
  dataType: "string";
583
583
  columnType: "PgEnumColumn";
584
- data: "other" | "voucher" | "wallet" | "credit_card" | "debit_card" | "cash" | "direct_bill" | "bank_account";
584
+ data: "credit_card" | "debit_card" | "cash" | "wallet" | "direct_bill" | "voucher" | "other" | "bank_account";
585
585
  driverParam: string;
586
586
  notNull: true;
587
587
  hasDefault: false;
@@ -598,7 +598,7 @@ export declare const paymentInstruments: import("drizzle-orm/pg-core").PgTableWi
598
598
  tableName: "payment_instruments";
599
599
  dataType: "string";
600
600
  columnType: "PgEnumColumn";
601
- data: "active" | "expired" | "revoked" | "inactive" | "failed_verification";
601
+ data: "expired" | "active" | "inactive" | "revoked" | "failed_verification";
602
602
  driverParam: string;
603
603
  notNull: true;
604
604
  hasDefault: true;
@@ -1100,7 +1100,7 @@ export declare const paymentSessions: import("drizzle-orm/pg-core").PgTableWithC
1100
1100
  tableName: "payment_sessions";
1101
1101
  dataType: "string";
1102
1102
  columnType: "PgEnumColumn";
1103
- data: "pending" | "failed" | "cancelled" | "expired" | "paid" | "requires_redirect" | "processing" | "authorized";
1103
+ data: "failed" | "expired" | "cancelled" | "pending" | "processing" | "paid" | "requires_redirect" | "authorized";
1104
1104
  driverParam: string;
1105
1105
  notNull: true;
1106
1106
  hasDefault: true;
@@ -1253,7 +1253,7 @@ export declare const paymentSessions: import("drizzle-orm/pg-core").PgTableWithC
1253
1253
  tableName: "payment_sessions";
1254
1254
  dataType: "string";
1255
1255
  columnType: "PgEnumColumn";
1256
- data: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
1256
+ data: "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "wallet" | "direct_bill" | "voucher" | "other";
1257
1257
  driverParam: string;
1258
1258
  notNull: false;
1259
1259
  hasDefault: false;
@@ -1725,7 +1725,7 @@ export declare const paymentAuthorizations: import("drizzle-orm/pg-core").PgTabl
1725
1725
  tableName: "payment_authorizations";
1726
1726
  dataType: "string";
1727
1727
  columnType: "PgEnumColumn";
1728
- data: "pending" | "failed" | "expired" | "authorized" | "partially_captured" | "captured" | "voided";
1728
+ data: "failed" | "expired" | "pending" | "authorized" | "partially_captured" | "captured" | "voided";
1729
1729
  driverParam: string;
1730
1730
  notNull: true;
1731
1731
  hasDefault: true;
@@ -1742,7 +1742,7 @@ export declare const paymentAuthorizations: import("drizzle-orm/pg-core").PgTabl
1742
1742
  tableName: "payment_authorizations";
1743
1743
  dataType: "string";
1744
1744
  columnType: "PgEnumColumn";
1745
- data: "manual" | "automatic";
1745
+ data: "automatic" | "manual";
1746
1746
  driverParam: string;
1747
1747
  notNull: true;
1748
1748
  hasDefault: true;
@@ -2006,7 +2006,7 @@ export declare const paymentCaptures: import("drizzle-orm/pg-core").PgTableWithC
2006
2006
  tableName: "payment_captures";
2007
2007
  dataType: "string";
2008
2008
  columnType: "PgEnumColumn";
2009
- data: "pending" | "completed" | "failed" | "refunded" | "voided";
2009
+ data: "failed" | "pending" | "completed" | "refunded" | "voided";
2010
2010
  driverParam: string;
2011
2011
  notNull: true;
2012
2012
  hasDefault: true;
@@ -2253,7 +2253,7 @@ export declare const bookingPaymentSchedules: import("drizzle-orm/pg-core").PgTa
2253
2253
  tableName: "booking_payment_schedules";
2254
2254
  dataType: "string";
2255
2255
  columnType: "PgEnumColumn";
2256
- data: "pending" | "cancelled" | "expired" | "paid" | "due" | "waived";
2256
+ data: "expired" | "cancelled" | "pending" | "paid" | "due" | "waived";
2257
2257
  driverParam: string;
2258
2258
  notNull: true;
2259
2259
  hasDefault: true;
@@ -2449,7 +2449,7 @@ export declare const bookingGuarantees: import("drizzle-orm/pg-core").PgTableWit
2449
2449
  tableName: "booking_guarantees";
2450
2450
  dataType: "string";
2451
2451
  columnType: "PgEnumColumn";
2452
- data: "other" | "voucher" | "bank_transfer" | "credit_card" | "deposit" | "preauth" | "card_on_file" | "agency_letter";
2452
+ data: "bank_transfer" | "credit_card" | "voucher" | "other" | "deposit" | "preauth" | "card_on_file" | "agency_letter";
2453
2453
  driverParam: string;
2454
2454
  notNull: true;
2455
2455
  hasDefault: false;
@@ -2466,7 +2466,7 @@ export declare const bookingGuarantees: import("drizzle-orm/pg-core").PgTableWit
2466
2466
  tableName: "booking_guarantees";
2467
2467
  dataType: "string";
2468
2468
  columnType: "PgEnumColumn";
2469
- data: "pending" | "failed" | "cancelled" | "active" | "expired" | "released";
2469
+ data: "failed" | "expired" | "cancelled" | "pending" | "active" | "released";
2470
2470
  driverParam: string;
2471
2471
  notNull: true;
2472
2472
  hasDefault: true;
@@ -2994,7 +2994,7 @@ export declare const bookingItemCommissions: import("drizzle-orm/pg-core").PgTab
2994
2994
  tableName: "booking_item_commissions";
2995
2995
  dataType: "string";
2996
2996
  columnType: "PgEnumColumn";
2997
- data: "internal" | "supplier" | "other" | "affiliate" | "channel" | "agency" | "agent";
2997
+ data: "agent" | "other" | "supplier" | "channel" | "agency" | "internal" | "affiliate";
2998
2998
  driverParam: string;
2999
2999
  notNull: true;
3000
3000
  hasDefault: false;
@@ -3079,7 +3079,7 @@ export declare const bookingItemCommissions: import("drizzle-orm/pg-core").PgTab
3079
3079
  tableName: "booking_item_commissions";
3080
3080
  dataType: "string";
3081
3081
  columnType: "PgEnumColumn";
3082
- data: "pending" | "void" | "paid" | "accrued" | "payable";
3082
+ data: "pending" | "paid" | "void" | "accrued" | "payable";
3083
3083
  driverParam: string;
3084
3084
  notNull: true;
3085
3085
  hasDefault: true;
@@ -3394,7 +3394,7 @@ export declare const invoices: import("drizzle-orm/pg-core").PgTableWithColumns<
3394
3394
  tableName: "invoices";
3395
3395
  dataType: "string";
3396
3396
  columnType: "PgEnumColumn";
3397
- data: "void" | "draft" | "sent" | "partially_paid" | "paid" | "overdue";
3397
+ data: "draft" | "sent" | "partially_paid" | "paid" | "overdue" | "void";
3398
3398
  driverParam: string;
3399
3399
  notNull: true;
3400
3400
  hasDefault: true;
@@ -4058,7 +4058,7 @@ export declare const payments: import("drizzle-orm/pg-core").PgTableWithColumns<
4058
4058
  tableName: "payments";
4059
4059
  dataType: "string";
4060
4060
  columnType: "PgEnumColumn";
4061
- data: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
4061
+ data: "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "wallet" | "direct_bill" | "voucher" | "other";
4062
4062
  driverParam: string;
4063
4063
  notNull: true;
4064
4064
  hasDefault: false;
@@ -4126,7 +4126,7 @@ export declare const payments: import("drizzle-orm/pg-core").PgTableWithColumns<
4126
4126
  tableName: "payments";
4127
4127
  dataType: "string";
4128
4128
  columnType: "PgEnumColumn";
4129
- data: "pending" | "completed" | "failed" | "refunded";
4129
+ data: "failed" | "pending" | "completed" | "refunded";
4130
4130
  driverParam: string;
4131
4131
  notNull: true;
4132
4132
  hasDefault: true;
@@ -4765,7 +4765,7 @@ export declare const supplierPayments: import("drizzle-orm/pg-core").PgTableWith
4765
4765
  tableName: "supplier_payments";
4766
4766
  dataType: "string";
4767
4767
  columnType: "PgEnumColumn";
4768
- data: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
4768
+ data: "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "wallet" | "direct_bill" | "voucher" | "other";
4769
4769
  driverParam: string;
4770
4770
  notNull: true;
4771
4771
  hasDefault: false;
@@ -4799,7 +4799,7 @@ export declare const supplierPayments: import("drizzle-orm/pg-core").PgTableWith
4799
4799
  tableName: "supplier_payments";
4800
4800
  dataType: "string";
4801
4801
  columnType: "PgEnumColumn";
4802
- data: "pending" | "completed" | "failed" | "refunded";
4802
+ data: "failed" | "pending" | "completed" | "refunded";
4803
4803
  driverParam: string;
4804
4804
  notNull: true;
4805
4805
  hasDefault: true;
@@ -5515,7 +5515,7 @@ export declare const invoiceRenditions: import("drizzle-orm/pg-core").PgTableWit
5515
5515
  tableName: "invoice_renditions";
5516
5516
  dataType: "string";
5517
5517
  columnType: "PgEnumColumn";
5518
- data: "json" | "pdf" | "html" | "xml";
5518
+ data: "json" | "html" | "pdf" | "xml";
5519
5519
  driverParam: string;
5520
5520
  notNull: true;
5521
5521
  hasDefault: true;
@@ -5532,7 +5532,7 @@ export declare const invoiceRenditions: import("drizzle-orm/pg-core").PgTableWit
5532
5532
  tableName: "invoice_renditions";
5533
5533
  dataType: "string";
5534
5534
  columnType: "PgEnumColumn";
5535
- data: "pending" | "failed" | "ready" | "stale";
5535
+ data: "failed" | "pending" | "ready" | "stale";
5536
5536
  driverParam: string;
5537
5537
  notNull: true;
5538
5538
  hasDefault: true;
@@ -6488,7 +6488,7 @@ export declare const taxPolicyRules: import("drizzle-orm/pg-core").PgTableWithCo
6488
6488
  tableName: "tax_policy_rules";
6489
6489
  dataType: "string";
6490
6490
  columnType: "PgEnumColumn";
6491
- data: "all" | "accommodation" | "base" | "addon";
6491
+ data: "base" | "addon" | "accommodation" | "all";
6492
6492
  driverParam: string;
6493
6493
  notNull: true;
6494
6494
  hasDefault: true;
@@ -0,0 +1,77 @@
1
+ import { type ActionLedgerRequestContextValues, type BuildActionLedgerMutationInput } from "@voyantjs/action-ledger";
2
+ import type { z } from "zod";
3
+ import type { creditNoteLineItems, creditNotes, invoiceLineItems, invoices, payments } from "./schema.js";
4
+ import type { updateCreditNoteSchema, updateInvoiceLineItemSchema, updateInvoiceSchema } from "./validation.js";
5
+ type UpdateInvoiceInput = z.infer<typeof updateInvoiceSchema>;
6
+ type UpdateInvoiceLineItemInput = z.infer<typeof updateInvoiceLineItemSchema>;
7
+ type UpdateCreditNoteInput = z.infer<typeof updateCreditNoteSchema>;
8
+ type InvoiceRecord = typeof invoices.$inferSelect;
9
+ type PaymentRecord = typeof payments.$inferSelect;
10
+ type CreditNoteRecord = typeof creditNotes.$inferSelect;
11
+ type InvoiceLineItemRecord = typeof invoiceLineItems.$inferSelect;
12
+ type CreditNoteLineItemRecord = typeof creditNoteLineItems.$inferSelect;
13
+ type RecordPaymentLedgerInput = {
14
+ invoice: InvoiceRecord;
15
+ payment: PaymentRecord;
16
+ };
17
+ type InvoiceIssuedLedgerInput = {
18
+ invoice: InvoiceRecord;
19
+ };
20
+ type InvoiceUpdateLedgerInput = {
21
+ invoice: InvoiceRecord;
22
+ changes: UpdateInvoiceInput;
23
+ };
24
+ type InvoiceDeleteLedgerInput = {
25
+ invoice: InvoiceRecord;
26
+ };
27
+ type InvoiceLineItemMutationLedgerInput = {
28
+ invoice: InvoiceRecord;
29
+ lineItem: InvoiceLineItemRecord;
30
+ changes?: UpdateInvoiceLineItemInput;
31
+ };
32
+ type CreateCreditNoteLedgerInput = {
33
+ invoice: InvoiceRecord;
34
+ creditNote: CreditNoteRecord;
35
+ };
36
+ type CreditNoteUpdateLedgerInput = {
37
+ invoice: InvoiceRecord;
38
+ creditNote: CreditNoteRecord;
39
+ changes: UpdateCreditNoteInput;
40
+ };
41
+ type CreditNoteLineItemCreateLedgerInput = {
42
+ invoice: InvoiceRecord;
43
+ creditNote: CreditNoteRecord;
44
+ lineItem: CreditNoteLineItemRecord;
45
+ };
46
+ export declare function buildRecordPaymentActionLedgerInput(context: ActionLedgerRequestContextValues, input: RecordPaymentLedgerInput, options?: {
47
+ authorizationSource?: string | null;
48
+ }): Promise<BuildActionLedgerMutationInput>;
49
+ export declare function buildInvoiceIssuedActionLedgerInput(context: ActionLedgerRequestContextValues, input: InvoiceIssuedLedgerInput, options?: {
50
+ authorizationSource?: string | null;
51
+ }): Promise<BuildActionLedgerMutationInput>;
52
+ export declare function buildInvoiceUpdateActionLedgerInput(context: ActionLedgerRequestContextValues, input: InvoiceUpdateLedgerInput, options?: {
53
+ authorizationSource?: string | null;
54
+ }): BuildActionLedgerMutationInput;
55
+ export declare function buildInvoiceDeleteActionLedgerInput(context: ActionLedgerRequestContextValues, input: InvoiceDeleteLedgerInput, options?: {
56
+ authorizationSource?: string | null;
57
+ }): BuildActionLedgerMutationInput;
58
+ export declare function buildInvoiceLineItemCreateActionLedgerInput(context: ActionLedgerRequestContextValues, input: InvoiceLineItemMutationLedgerInput, options?: {
59
+ authorizationSource?: string | null;
60
+ }): BuildActionLedgerMutationInput;
61
+ export declare function buildInvoiceLineItemUpdateActionLedgerInput(context: ActionLedgerRequestContextValues, input: InvoiceLineItemMutationLedgerInput, options?: {
62
+ authorizationSource?: string | null;
63
+ }): BuildActionLedgerMutationInput;
64
+ export declare function buildInvoiceLineItemDeleteActionLedgerInput(context: ActionLedgerRequestContextValues, input: InvoiceLineItemMutationLedgerInput, options?: {
65
+ authorizationSource?: string | null;
66
+ }): BuildActionLedgerMutationInput;
67
+ export declare function buildCreditNoteCreationActionLedgerInput(context: ActionLedgerRequestContextValues, input: CreateCreditNoteLedgerInput, options?: {
68
+ authorizationSource?: string | null;
69
+ }): Promise<BuildActionLedgerMutationInput>;
70
+ export declare function buildCreditNoteUpdateActionLedgerInput(context: ActionLedgerRequestContextValues, input: CreditNoteUpdateLedgerInput, options?: {
71
+ authorizationSource?: string | null;
72
+ }): BuildActionLedgerMutationInput;
73
+ export declare function buildCreditNoteLineItemCreateActionLedgerInput(context: ActionLedgerRequestContextValues, input: CreditNoteLineItemCreateLedgerInput, options?: {
74
+ authorizationSource?: string | null;
75
+ }): BuildActionLedgerMutationInput;
76
+ export {};
77
+ //# sourceMappingURL=service-action-ledger-accounting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-action-ledger-accounting.d.ts","sourceRoot":"","sources":["../src/service-action-ledger-accounting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,307 @@
1
+ import { buildIdempotencyFingerprint, } from "@voyantjs/action-ledger";
2
+ export async function buildRecordPaymentActionLedgerInput(context, input, options = {}) {
3
+ const target = getInvoiceLedgerTarget(input.invoice);
4
+ const idempotencyKey = input.payment.referenceNumber ??
5
+ input.payment.paymentCaptureId ??
6
+ input.payment.paymentAuthorizationId ??
7
+ null;
8
+ const idempotencyFingerprint = idempotencyKey
9
+ ? await buildIdempotencyFingerprint({
10
+ actionName: "finance.payment.record",
11
+ actionVersion: "v1",
12
+ targetType: target.type,
13
+ targetId: target.id,
14
+ commandInput: {
15
+ invoiceId: input.invoice.id,
16
+ paymentId: input.payment.id,
17
+ amountCents: input.payment.amountCents,
18
+ currency: input.payment.currency,
19
+ paymentMethod: input.payment.paymentMethod,
20
+ paymentDate: input.payment.paymentDate,
21
+ referenceNumber: input.payment.referenceNumber,
22
+ paymentAuthorizationId: input.payment.paymentAuthorizationId,
23
+ paymentCaptureId: input.payment.paymentCaptureId,
24
+ },
25
+ })
26
+ : null;
27
+ return {
28
+ context,
29
+ actionName: "finance.payment.record",
30
+ actionVersion: "v1",
31
+ actionKind: "create",
32
+ status: "succeeded",
33
+ evaluatedRisk: "high",
34
+ targetType: target.type,
35
+ targetId: target.id,
36
+ routeOrToolName: "finance.payment.record",
37
+ authorizationSource: options.authorizationSource ?? "finance.payment.route",
38
+ idempotencyScope: idempotencyKey ? `finance.invoice:${input.invoice.id}:payment` : null,
39
+ idempotencyKey,
40
+ idempotencyFingerprint,
41
+ mutationDetail: {
42
+ commandInputRef: `invoice:${input.invoice.id}:payment`,
43
+ commandResultRef: `payment:${input.payment.id}`,
44
+ summary: `Payment ${input.payment.id} recorded for invoice ${input.invoice.id}`,
45
+ reversalKind: "none",
46
+ },
47
+ };
48
+ }
49
+ function getInvoiceLedgerTarget(invoice) {
50
+ if (invoice.bookingId)
51
+ return { type: "booking", id: invoice.bookingId };
52
+ return { type: "invoice", id: invoice.id };
53
+ }
54
+ export async function buildInvoiceIssuedActionLedgerInput(context, input, options = {}) {
55
+ const target = getInvoiceLedgerTarget(input.invoice);
56
+ const invoiceTypeLabel = input.invoice.invoiceType === "proforma" ? "Proforma" : "Invoice";
57
+ return {
58
+ context,
59
+ actionName: "finance.invoice.issue_from_booking",
60
+ actionVersion: "v1",
61
+ actionKind: "create",
62
+ status: "succeeded",
63
+ evaluatedRisk: "high",
64
+ targetType: target.type,
65
+ targetId: target.id,
66
+ routeOrToolName: "finance.invoice.issue_from_booking",
67
+ authorizationSource: options.authorizationSource ?? "finance.invoice.from_booking.route",
68
+ idempotencyScope: `finance.booking:${input.invoice.bookingId}:invoice_issue`,
69
+ idempotencyKey: input.invoice.invoiceNumber,
70
+ idempotencyFingerprint: await buildIdempotencyFingerprint({
71
+ actionName: "finance.invoice.issue_from_booking",
72
+ actionVersion: "v1",
73
+ targetType: target.type,
74
+ targetId: target.id,
75
+ commandInput: {
76
+ invoiceId: input.invoice.id,
77
+ invoiceNumber: input.invoice.invoiceNumber,
78
+ invoiceType: input.invoice.invoiceType,
79
+ bookingId: input.invoice.bookingId,
80
+ totalCents: input.invoice.totalCents,
81
+ currency: input.invoice.currency,
82
+ status: input.invoice.status,
83
+ issueDate: input.invoice.issueDate,
84
+ dueDate: input.invoice.dueDate,
85
+ },
86
+ }),
87
+ mutationDetail: {
88
+ commandInputRef: `booking:${input.invoice.bookingId}:invoice_issue`,
89
+ commandResultRef: `invoice:${input.invoice.id}`,
90
+ summary: `${invoiceTypeLabel} ${input.invoice.invoiceNumber} issued for booking ${input.invoice.bookingId}`,
91
+ reversalKind: "none",
92
+ },
93
+ };
94
+ }
95
+ export function buildInvoiceUpdateActionLedgerInput(context, input, options = {}) {
96
+ const target = getInvoiceLedgerTarget(input.invoice);
97
+ const changedFields = Object.keys(input.changes).sort();
98
+ const changeSummary = changedFields.length > 0 ? changedFields.join(", ") : "no fields";
99
+ return {
100
+ context,
101
+ actionName: "finance.invoice.update",
102
+ actionVersion: "v1",
103
+ actionKind: "update",
104
+ status: "succeeded",
105
+ evaluatedRisk: "high",
106
+ targetType: target.type,
107
+ targetId: target.id,
108
+ routeOrToolName: "finance.invoice.update",
109
+ authorizationSource: options.authorizationSource ?? "finance.invoice.route",
110
+ idempotencyScope: null,
111
+ idempotencyKey: null,
112
+ idempotencyFingerprint: null,
113
+ mutationDetail: {
114
+ commandInputRef: `invoice:${input.invoice.id}:update`,
115
+ commandResultRef: `invoice:${input.invoice.id}`,
116
+ summary: `Invoice ${input.invoice.invoiceNumber} updated (${changeSummary})`,
117
+ reversalKind: "none",
118
+ },
119
+ };
120
+ }
121
+ export function buildInvoiceDeleteActionLedgerInput(context, input, options = {}) {
122
+ const target = getInvoiceLedgerTarget(input.invoice);
123
+ return {
124
+ context,
125
+ actionName: "finance.invoice.delete",
126
+ actionVersion: "v1",
127
+ actionKind: "delete",
128
+ status: "succeeded",
129
+ evaluatedRisk: "high",
130
+ targetType: target.type,
131
+ targetId: target.id,
132
+ routeOrToolName: "finance.invoice.delete",
133
+ authorizationSource: options.authorizationSource ?? "finance.invoice.route",
134
+ idempotencyScope: null,
135
+ idempotencyKey: null,
136
+ idempotencyFingerprint: null,
137
+ mutationDetail: {
138
+ commandInputRef: `invoice:${input.invoice.id}:delete`,
139
+ commandResultRef: null,
140
+ summary: `Draft invoice ${input.invoice.invoiceNumber} deleted`,
141
+ reversalKind: "none",
142
+ },
143
+ };
144
+ }
145
+ export function buildInvoiceLineItemCreateActionLedgerInput(context, input, options = {}) {
146
+ const target = getInvoiceLedgerTarget(input.invoice);
147
+ return {
148
+ context,
149
+ actionName: "finance.invoice_line_item.create",
150
+ actionVersion: "v1",
151
+ actionKind: "create",
152
+ status: "succeeded",
153
+ evaluatedRisk: "high",
154
+ targetType: target.type,
155
+ targetId: target.id,
156
+ routeOrToolName: "finance.invoice_line_item.create",
157
+ authorizationSource: options.authorizationSource ?? "finance.invoice_line_item.route",
158
+ idempotencyScope: null,
159
+ idempotencyKey: null,
160
+ idempotencyFingerprint: null,
161
+ mutationDetail: {
162
+ commandInputRef: `invoice:${input.invoice.id}:line_item`,
163
+ commandResultRef: `invoice_line_item:${input.lineItem.id}`,
164
+ summary: `Line item ${input.lineItem.id} added to invoice ${input.invoice.invoiceNumber}`,
165
+ reversalKind: "none",
166
+ },
167
+ };
168
+ }
169
+ export function buildInvoiceLineItemUpdateActionLedgerInput(context, input, options = {}) {
170
+ const target = getInvoiceLedgerTarget(input.invoice);
171
+ const changedFields = Object.keys(input.changes ?? {}).sort();
172
+ const changeSummary = changedFields.length > 0 ? changedFields.join(", ") : "no fields";
173
+ return {
174
+ context,
175
+ actionName: "finance.invoice_line_item.update",
176
+ actionVersion: "v1",
177
+ actionKind: "update",
178
+ status: "succeeded",
179
+ evaluatedRisk: "high",
180
+ targetType: target.type,
181
+ targetId: target.id,
182
+ routeOrToolName: "finance.invoice_line_item.update",
183
+ authorizationSource: options.authorizationSource ?? "finance.invoice_line_item.route",
184
+ idempotencyScope: null,
185
+ idempotencyKey: null,
186
+ idempotencyFingerprint: null,
187
+ mutationDetail: {
188
+ commandInputRef: `invoice_line_item:${input.lineItem.id}:update`,
189
+ commandResultRef: `invoice_line_item:${input.lineItem.id}`,
190
+ summary: `Line item ${input.lineItem.id} updated (${changeSummary})`,
191
+ reversalKind: "none",
192
+ },
193
+ };
194
+ }
195
+ export function buildInvoiceLineItemDeleteActionLedgerInput(context, input, options = {}) {
196
+ const target = getInvoiceLedgerTarget(input.invoice);
197
+ return {
198
+ context,
199
+ actionName: "finance.invoice_line_item.delete",
200
+ actionVersion: "v1",
201
+ actionKind: "delete",
202
+ status: "succeeded",
203
+ evaluatedRisk: "high",
204
+ targetType: target.type,
205
+ targetId: target.id,
206
+ routeOrToolName: "finance.invoice_line_item.delete",
207
+ authorizationSource: options.authorizationSource ?? "finance.invoice_line_item.route",
208
+ idempotencyScope: null,
209
+ idempotencyKey: null,
210
+ idempotencyFingerprint: null,
211
+ mutationDetail: {
212
+ commandInputRef: `invoice_line_item:${input.lineItem.id}:delete`,
213
+ commandResultRef: null,
214
+ summary: `Line item ${input.lineItem.id} deleted from invoice ${input.invoice.invoiceNumber}`,
215
+ reversalKind: "none",
216
+ },
217
+ };
218
+ }
219
+ export async function buildCreditNoteCreationActionLedgerInput(context, input, options = {}) {
220
+ const target = getInvoiceLedgerTarget(input.invoice);
221
+ const idempotencyKey = input.creditNote.creditNoteNumber;
222
+ return {
223
+ context,
224
+ actionName: "finance.credit_note.create",
225
+ actionVersion: "v1",
226
+ actionKind: "create",
227
+ status: "succeeded",
228
+ evaluatedRisk: "high",
229
+ targetType: target.type,
230
+ targetId: target.id,
231
+ routeOrToolName: "finance.credit_note.create",
232
+ authorizationSource: options.authorizationSource ?? "finance.credit_note.route",
233
+ idempotencyScope: `finance.invoice:${input.invoice.id}:credit_note`,
234
+ idempotencyKey,
235
+ idempotencyFingerprint: await buildIdempotencyFingerprint({
236
+ actionName: "finance.credit_note.create",
237
+ actionVersion: "v1",
238
+ targetType: target.type,
239
+ targetId: target.id,
240
+ commandInput: {
241
+ invoiceId: input.invoice.id,
242
+ creditNoteId: input.creditNote.id,
243
+ creditNoteNumber: input.creditNote.creditNoteNumber,
244
+ amountCents: input.creditNote.amountCents,
245
+ currency: input.creditNote.currency,
246
+ status: input.creditNote.status,
247
+ reason: input.creditNote.reason,
248
+ },
249
+ }),
250
+ mutationDetail: {
251
+ commandInputRef: `invoice:${input.invoice.id}:credit_note`,
252
+ commandResultRef: `credit_note:${input.creditNote.id}`,
253
+ summary: `Credit note ${input.creditNote.creditNoteNumber} created for invoice ${input.invoice.id}`,
254
+ reversalKind: "none",
255
+ },
256
+ };
257
+ }
258
+ export function buildCreditNoteUpdateActionLedgerInput(context, input, options = {}) {
259
+ const target = getInvoiceLedgerTarget(input.invoice);
260
+ const changedFields = Object.keys(input.changes).sort();
261
+ const changeSummary = changedFields.length > 0 ? changedFields.join(", ") : "no fields";
262
+ return {
263
+ context,
264
+ actionName: "finance.credit_note.update",
265
+ actionVersion: "v1",
266
+ actionKind: "update",
267
+ status: "succeeded",
268
+ evaluatedRisk: "high",
269
+ targetType: target.type,
270
+ targetId: target.id,
271
+ routeOrToolName: "finance.credit_note.update",
272
+ authorizationSource: options.authorizationSource ?? "finance.credit_note.route",
273
+ idempotencyScope: null,
274
+ idempotencyKey: null,
275
+ idempotencyFingerprint: null,
276
+ mutationDetail: {
277
+ commandInputRef: `credit_note:${input.creditNote.id}:update`,
278
+ commandResultRef: `credit_note:${input.creditNote.id}`,
279
+ summary: `Credit note ${input.creditNote.creditNoteNumber} updated (${changeSummary})`,
280
+ reversalKind: "none",
281
+ },
282
+ };
283
+ }
284
+ export function buildCreditNoteLineItemCreateActionLedgerInput(context, input, options = {}) {
285
+ const target = getInvoiceLedgerTarget(input.invoice);
286
+ return {
287
+ context,
288
+ actionName: "finance.credit_note_line_item.create",
289
+ actionVersion: "v1",
290
+ actionKind: "create",
291
+ status: "succeeded",
292
+ evaluatedRisk: "high",
293
+ targetType: target.type,
294
+ targetId: target.id,
295
+ routeOrToolName: "finance.credit_note_line_item.create",
296
+ authorizationSource: options.authorizationSource ?? "finance.credit_note_line_item.route",
297
+ idempotencyScope: null,
298
+ idempotencyKey: null,
299
+ idempotencyFingerprint: null,
300
+ mutationDetail: {
301
+ commandInputRef: `credit_note:${input.creditNote.id}:line_item`,
302
+ commandResultRef: `credit_note_line_item:${input.lineItem.id}`,
303
+ summary: `Line item ${input.lineItem.id} added to credit note ${input.creditNote.creditNoteNumber}`,
304
+ reversalKind: "none",
305
+ },
306
+ };
307
+ }
@@ -0,0 +1,48 @@
1
+ import { type ActionLedgerRequestContextValues, type BuildActionLedgerMutationInput } from "@voyantjs/action-ledger";
2
+ import type { z } from "zod";
3
+ import type { bookingGuarantees, bookingPaymentSchedules } from "./schema.js";
4
+ import type { updateBookingGuaranteeSchema, updateBookingPaymentScheduleSchema } from "./validation.js";
5
+ type UpdateBookingPaymentScheduleInput = z.infer<typeof updateBookingPaymentScheduleSchema>;
6
+ type UpdateBookingGuaranteeInput = z.infer<typeof updateBookingGuaranteeSchema>;
7
+ type BookingPaymentScheduleRecord = typeof bookingPaymentSchedules.$inferSelect;
8
+ type BookingGuaranteeRecord = typeof bookingGuarantees.$inferSelect;
9
+ type BookingPaymentScheduleCreateLedgerInput = {
10
+ schedule: BookingPaymentScheduleRecord;
11
+ };
12
+ type BookingPaymentScheduleUpdateLedgerInput = {
13
+ schedule: BookingPaymentScheduleRecord;
14
+ changes: UpdateBookingPaymentScheduleInput;
15
+ };
16
+ type BookingPaymentScheduleDeleteLedgerInput = {
17
+ schedule: BookingPaymentScheduleRecord;
18
+ };
19
+ type BookingGuaranteeCreateLedgerInput = {
20
+ guarantee: BookingGuaranteeRecord;
21
+ };
22
+ type BookingGuaranteeUpdateLedgerInput = {
23
+ guarantee: BookingGuaranteeRecord;
24
+ changes: UpdateBookingGuaranteeInput;
25
+ };
26
+ type BookingGuaranteeDeleteLedgerInput = {
27
+ guarantee: BookingGuaranteeRecord;
28
+ };
29
+ export declare function buildBookingPaymentScheduleCreateActionLedgerInput(context: ActionLedgerRequestContextValues, input: BookingPaymentScheduleCreateLedgerInput, options?: {
30
+ authorizationSource?: string | null;
31
+ }): BuildActionLedgerMutationInput;
32
+ export declare function buildBookingPaymentScheduleUpdateActionLedgerInput(context: ActionLedgerRequestContextValues, input: BookingPaymentScheduleUpdateLedgerInput, options?: {
33
+ authorizationSource?: string | null;
34
+ }): BuildActionLedgerMutationInput;
35
+ export declare function buildBookingPaymentScheduleDeleteActionLedgerInput(context: ActionLedgerRequestContextValues, input: BookingPaymentScheduleDeleteLedgerInput, options?: {
36
+ authorizationSource?: string | null;
37
+ }): BuildActionLedgerMutationInput;
38
+ export declare function buildBookingGuaranteeCreateActionLedgerInput(context: ActionLedgerRequestContextValues, input: BookingGuaranteeCreateLedgerInput, options?: {
39
+ authorizationSource?: string | null;
40
+ }): Promise<BuildActionLedgerMutationInput>;
41
+ export declare function buildBookingGuaranteeUpdateActionLedgerInput(context: ActionLedgerRequestContextValues, input: BookingGuaranteeUpdateLedgerInput, options?: {
42
+ authorizationSource?: string | null;
43
+ }): BuildActionLedgerMutationInput;
44
+ export declare function buildBookingGuaranteeDeleteActionLedgerInput(context: ActionLedgerRequestContextValues, input: BookingGuaranteeDeleteLedgerInput, options?: {
45
+ authorizationSource?: string | null;
46
+ }): BuildActionLedgerMutationInput;
47
+ export {};
48
+ //# sourceMappingURL=service-action-ledger-booking-payments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-action-ledger-booking-payments.d.ts","sourceRoot":"","sources":["../src/service-action-ledger-booking-payments.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EAEpC,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EACV,4BAA4B,EAC5B,kCAAkC,EACnC,MAAM,iBAAiB,CAAA;AAExB,KAAK,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC3F,KAAK,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAE/E,KAAK,4BAA4B,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAA;AAC/E,KAAK,sBAAsB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA;AAEnE,KAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,4BAA4B,CAAA;CACvC,CAAA;AACD,KAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,4BAA4B,CAAA;IACtC,OAAO,EAAE,iCAAiC,CAAA;CAC3C,CAAA;AACD,KAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,4BAA4B,CAAA;CACvC,CAAA;AACD,KAAK,iCAAiC,GAAG;IACvC,SAAS,EAAE,sBAAsB,CAAA;CAClC,CAAA;AACD,KAAK,iCAAiC,GAAG;IACvC,SAAS,EAAE,sBAAsB,CAAA;IACjC,OAAO,EAAE,2BAA2B,CAAA;CACrC,CAAA;AACD,KAAK,iCAAiC,GAAG;IACvC,SAAS,EAAE,sBAAsB,CAAA;CAClC,CAAA;AAED,wBAAgB,kDAAkD,CAChE,OAAO,EAAE,gCAAgC,EACzC,KAAK,EAAE,uCAAuC,EAC9C,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,GACL,8BAA8B,CAwBhC;AAED,wBAAgB,kDAAkD,CAChE,OAAO,EAAE,gCAAgC,EACzC,KAAK,EAAE,uCAAuC,EAC9C,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,GACL,8BAA8B,CA0BhC;AAED,wBAAgB,kDAAkD,CAChE,OAAO,EAAE,gCAAgC,EACzC,KAAK,EAAE,uCAAuC,EAC9C,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,GACL,8BAA8B,CAwBhC;AAMD,wBAAsB,4CAA4C,CAChE,OAAO,EAAE,gCAAgC,EACzC,KAAK,EAAE,iCAAiC,EACxC,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,GACL,OAAO,CAAC,8BAA8B,CAAC,CA+CzC;AAED,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,gCAAgC,EACzC,KAAK,EAAE,iCAAiC,EACxC,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,GACL,8BAA8B,CA0BhC;AAED,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,gCAAgC,EACzC,KAAK,EAAE,iCAAiC,EACxC,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,GACL,8BAA8B,CAwBhC"}