@voyantjs/legal 0.81.21 → 0.82.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.
@@ -265,6 +265,11 @@ export interface DefaultContractVariables {
265
265
  /** Alias for `capturedAt`, exposed for templates that prefer the
266
266
  * `created_at` naming. */
267
267
  createdAt: string;
268
+ latestCompleted?: {
269
+ method: string;
270
+ methodLabel: string;
271
+ date: string;
272
+ };
268
273
  };
269
274
  operator: OperatorContextVariables;
270
275
  acceptance: AcceptanceContextVariables;
@@ -1 +1 @@
1
- {"version":3,"file":"service-auto-generate.d.ts","sourceRoot":"","sources":["../../src/contracts/service-auto-generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-auto-generate.d.ts","sourceRoot":"","sources":["../../src/contracts/service-auto-generate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { bookingsService } from "@voyantjs/bookings";
2
+ import { invoices, payments } from "@voyantjs/finance/schema";
3
+ import { and, desc, eq, ne } from "drizzle-orm";
2
4
  import { contractRecordsService } from "./service-contracts.js";
3
5
  import { contractDocumentsService } from "./service-documents.js";
4
6
  import { ContractSeriesAmbiguousError, contractSeriesService } from "./service-series.js";
@@ -148,6 +150,7 @@ export async function autoGenerateContractForBooking(db, event, options, runtime
148
150
  const startDate = booking.startDate ?? "";
149
151
  const endDate = booking.endDate ?? "";
150
152
  const durationNights = computeNights(startDate, endDate);
153
+ const settlement = await resolveBookingSettlementVariables(db, booking.id, sellCurrency);
151
154
  const mappedTravelers = travelers.map((t, i) => {
152
155
  const fullName = [t.firstName, t.lastName].filter(Boolean).join(" ").trim();
153
156
  return {
@@ -233,8 +236,8 @@ export async function autoGenerateContractForBooking(db, event, options, runtime
233
236
  subtotalAmountCents: booking.sellAmountCents ?? 0,
234
237
  taxAmountCents: 0,
235
238
  discountAmountCents: 0,
236
- paidAmountCents: 0,
237
- balanceDueCents: totalCents,
239
+ paidAmountCents: settlement.paidAmountCents,
240
+ balanceDueCents: settlement.balanceDueCents ?? totalCents,
238
241
  depositAmountCents: 0,
239
242
  depositDueDate: "",
240
243
  balanceAmountCents: 0,
@@ -335,12 +338,13 @@ export async function autoGenerateContractForBooking(db, event, options, runtime
335
338
  },
336
339
  payment: {
337
340
  intent: "",
338
- method: "",
341
+ method: settlement.latestCompleted?.methodLabel ?? "",
339
342
  amountCents: totalCents,
340
343
  currency: sellCurrency,
341
344
  schedule: [],
342
- capturedAt: "",
343
- createdAt: "",
345
+ capturedAt: settlement.latestCompleted?.date ?? "",
346
+ createdAt: settlement.latestCompleted?.date ?? "",
347
+ latestCompleted: settlement.latestCompleted,
344
348
  },
345
349
  operator: {
346
350
  name: "",
@@ -474,6 +478,68 @@ export async function autoGenerateContractForBooking(db, event, options, runtime
474
478
  function defaultVariablesToRecord(defaults) {
475
479
  return { ...defaults };
476
480
  }
481
+ async function resolveBookingSettlementVariables(db, bookingId, bookingCurrency) {
482
+ const invoiceRows = await db
483
+ .select({
484
+ currency: invoices.currency,
485
+ baseCurrency: invoices.baseCurrency,
486
+ balanceDueCents: invoices.balanceDueCents,
487
+ baseBalanceDueCents: invoices.baseBalanceDueCents,
488
+ })
489
+ .from(invoices)
490
+ .where(and(eq(invoices.bookingId, bookingId), ne(invoices.status, "void")));
491
+ const currency = bookingCurrency || invoiceRows[0]?.currency || "";
492
+ const completedPaymentRows = await db
493
+ .select({
494
+ amountCents: payments.amountCents,
495
+ currency: payments.currency,
496
+ baseCurrency: payments.baseCurrency,
497
+ baseAmountCents: payments.baseAmountCents,
498
+ paymentMethod: payments.paymentMethod,
499
+ paymentDate: payments.paymentDate,
500
+ })
501
+ .from(payments)
502
+ .innerJoin(invoices, eq(payments.invoiceId, invoices.id))
503
+ .where(and(eq(invoices.bookingId, bookingId), ne(invoices.status, "void"), eq(payments.status, "completed")))
504
+ .orderBy(desc(payments.paymentDate), desc(payments.createdAt));
505
+ const paidAmountCents = completedPaymentRows.reduce((sum, payment) => sum + amountInCurrency(payment, currency), 0);
506
+ const balanceDueCents = invoiceRows.length > 0
507
+ ? invoiceRows.reduce((sum, invoice) => sum + invoiceBalanceInCurrency(invoice, currency), 0)
508
+ : null;
509
+ const latestPayment = completedPaymentRows[0];
510
+ return {
511
+ paidAmountCents,
512
+ balanceDueCents,
513
+ latestCompleted: latestPayment
514
+ ? {
515
+ method: latestPayment.paymentMethod,
516
+ methodLabel: formatPaymentMethodLabel(latestPayment.paymentMethod),
517
+ date: latestPayment.paymentDate,
518
+ }
519
+ : undefined,
520
+ };
521
+ }
522
+ function amountInCurrency(payment, currency) {
523
+ if (!currency || payment.currency === currency)
524
+ return payment.amountCents;
525
+ if (payment.baseCurrency === currency)
526
+ return payment.baseAmountCents ?? 0;
527
+ return 0;
528
+ }
529
+ function invoiceBalanceInCurrency(invoice, currency) {
530
+ if (!currency || invoice.currency === currency)
531
+ return invoice.balanceDueCents;
532
+ if (invoice.baseCurrency === currency)
533
+ return invoice.baseBalanceDueCents ?? 0;
534
+ return 0;
535
+ }
536
+ function formatPaymentMethodLabel(method) {
537
+ return method
538
+ .split("_")
539
+ .filter(Boolean)
540
+ .map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)
541
+ .join(" ");
542
+ }
477
543
  function computeNights(startDate, endDate) {
478
544
  if (!startDate || !endDate)
479
545
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"template-authoring.d.ts","sourceRoot":"","sources":["../../src/contracts/template-authoring.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GACpC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,UAAU,GACV,SAAS,GACT,OAAO,GACP,OAAO,GACP,KAAK,GACL,MAAM,CAAA;AAEV,MAAM,WAAW,kCAAkC;IACjD,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,4BAA4B,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,gCAAgC;IAC/C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,kCAAkC,EAAE,CAAA;CAChD;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,EAAE,gCAAgC,EA8oB7E,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,6BAA6B,EA4HzE,CAAA"}
1
+ {"version":3,"file":"template-authoring.d.ts","sourceRoot":"","sources":["../../src/contracts/template-authoring.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GACpC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,UAAU,GACV,SAAS,GACT,OAAO,GACP,OAAO,GACP,KAAK,GACL,MAAM,CAAA;AAEV,MAAM,WAAW,kCAAkC;IACjD,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,4BAA4B,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,gCAAgC;IAC/C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,kCAAkC,EAAE,CAAA;CAChD;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,EAAE,gCAAgC,EAyqB7E,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,6BAA6B,EAuIzE,CAAA"}
@@ -175,14 +175,16 @@ export const contractTemplateVariableCatalog = [
175
175
  {
176
176
  key: "booking.paidAmountCents",
177
177
  label: "Paid so far",
178
- example: "0",
178
+ example: "50000",
179
179
  type: "cents",
180
+ description: "Customer settlement total from completed payments.",
180
181
  },
181
182
  {
182
183
  key: "booking.balanceDueCents",
183
184
  label: "Balance due",
184
- example: "249900",
185
+ example: "199900",
185
186
  type: "cents",
187
+ description: "Current customer balance from non-void invoice balances.",
186
188
  },
187
189
  // Payment-schedule-derived (deposit / balance from
188
190
  // booking_payment_schedules)
@@ -524,7 +526,13 @@ export const contractTemplateVariableCatalog = [
524
526
  type: "string",
525
527
  description: "card | bank_transfer | hold | inquiry | ticket_on_credit",
526
528
  },
527
- { key: "payment.method", label: "Method label", example: "Card payment", type: "string" },
529
+ {
530
+ key: "payment.method",
531
+ label: "Method label",
532
+ example: "Bank Transfer",
533
+ type: "string",
534
+ description: "Alias for `payment.latestCompleted.methodLabel` when a payment exists.",
535
+ },
528
536
  {
529
537
  key: "payment.amountCents",
530
538
  label: "Amount",
@@ -537,6 +545,7 @@ export const contractTemplateVariableCatalog = [
537
545
  label: "Captured at",
538
546
  example: "2026-05-04T10:05:12Z",
539
547
  type: "datetime",
548
+ description: "Alias for `payment.latestCompleted.date` when a payment exists.",
540
549
  },
541
550
  {
542
551
  key: "payment.createdAt",
@@ -545,6 +554,24 @@ export const contractTemplateVariableCatalog = [
545
554
  type: "datetime",
546
555
  description: "Alias for `payment.capturedAt`.",
547
556
  },
557
+ {
558
+ key: "payment.latestCompleted.method",
559
+ label: "Latest payment method",
560
+ example: "bank_transfer",
561
+ type: "string",
562
+ },
563
+ {
564
+ key: "payment.latestCompleted.methodLabel",
565
+ label: "Latest payment method label",
566
+ example: "Bank Transfer",
567
+ type: "string",
568
+ },
569
+ {
570
+ key: "payment.latestCompleted.date",
571
+ label: "Latest payment date",
572
+ example: "2026-05-04",
573
+ type: "date",
574
+ },
548
575
  ],
549
576
  },
550
577
  {
@@ -749,11 +776,22 @@ No lead traveler on file.
749
776
  {% endfor %}
750
777
  </tbody>
751
778
  </table>`,
779
+ },
780
+ {
781
+ id: "settlement-summary",
782
+ label: "Settlement summary",
783
+ description: "Render customer-paid and remaining amounts from actual settlement state.",
784
+ code: `{% if booking.paidAmountCents > 0 %}
785
+ Achitat: {{ booking.paidAmountCents | cents: booking.currency, "ro-RO" }}{% if payment.latestCompleted %} prin {{ payment.latestCompleted.methodLabel }} în data de {{ payment.latestCompleted.date | format_date: "long", "ro-RO" }}{% endif %}.
786
+ {% endif %}
787
+ {% if booking.balanceDueCents > 0 %}
788
+ Diferență de plată: {{ booking.balanceDueCents | cents: booking.currency, "ro-RO" }}.
789
+ {% endif %}`,
752
790
  },
753
791
  {
754
792
  id: "deposit-balance",
755
793
  label: "Deposit + balance line",
756
- description: "Render the typical advance + remainder copy. Falls through gracefully when no schedule is on file.",
794
+ description: "Render the scheduled advance + remainder policy. Use the settlement snippet for current paid/remaining state.",
757
795
  code: `{% if booking.depositAmountCents > 0 %}
758
796
  Avansul este: {{ booking.depositAmountCents | cents: booking.currency, "ro-RO" }}, achitat cu {{ payment.method }} în data de {{ payment.capturedAt | format_date: "long", "ro-RO" }}.
759
797
  Diferență plată {{ booking.balanceAmountCents | cents: booking.currency, "ro-RO" }} până la data de {{ booking.balanceDueDate | format_date: "long", "ro-RO" }}.
@@ -12,7 +12,7 @@ export declare const policiesAdminRoutes: import("hono/hono-base").HonoBase<Env,
12
12
  output: {
13
13
  data: {
14
14
  id: string;
15
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
15
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
16
16
  name: string;
17
17
  slug: string;
18
18
  description: string | null;
@@ -43,7 +43,7 @@ export declare const policiesAdminRoutes: import("hono/hono-base").HonoBase<Env,
43
43
  createdAt: string;
44
44
  updatedAt: string;
45
45
  slug: string;
46
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
46
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
47
47
  language: string;
48
48
  currentVersionId: string | null;
49
49
  } | null;
@@ -67,7 +67,7 @@ export declare const policiesAdminRoutes: import("hono/hono-base").HonoBase<Env,
67
67
  data: {
68
68
  policy: {
69
69
  id: string;
70
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
70
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
71
71
  name: string;
72
72
  slug: string;
73
73
  description: string | null;
@@ -702,7 +702,7 @@ export declare const policiesAdminRoutes: import("hono/hono-base").HonoBase<Env,
702
702
  output: {
703
703
  data: {
704
704
  id: string;
705
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
705
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
706
706
  name: string;
707
707
  slug: string;
708
708
  description: string | null;
@@ -739,7 +739,7 @@ export declare const policiesAdminRoutes: import("hono/hono-base").HonoBase<Env,
739
739
  output: {
740
740
  data: {
741
741
  id: string;
742
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
742
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
743
743
  name: string;
744
744
  slug: string;
745
745
  description: string | null;
@@ -843,7 +843,7 @@ export declare const policiesPublicRoutes: import("hono/hono-base").HonoBase<Env
843
843
  data: {
844
844
  policy: {
845
845
  id: string;
846
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
846
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
847
847
  name: string;
848
848
  slug: string;
849
849
  description: string | null;
@@ -30,7 +30,7 @@ export declare const policies: import("drizzle-orm/pg-core").PgTableWithColumns<
30
30
  tableName: "policies";
31
31
  dataType: "string";
32
32
  columnType: "PgEnumColumn";
33
- data: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
33
+ data: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
34
34
  driverParam: string;
35
35
  notNull: true;
36
36
  hasDefault: false;
@@ -4,7 +4,7 @@ export declare const policiesCoreService: {
4
4
  listPolicies(db: PostgresJsDatabase, query: PolicyListQuery): Promise<{
5
5
  data: {
6
6
  id: string;
7
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
7
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
8
8
  name: string;
9
9
  slug: string;
10
10
  description: string | null;
@@ -20,7 +20,7 @@ export declare const policiesCoreService: {
20
20
  }>;
21
21
  getPolicyById(db: PostgresJsDatabase, id: string): Promise<{
22
22
  id: string;
23
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
23
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
24
24
  name: string;
25
25
  slug: string;
26
26
  description: string | null;
@@ -32,7 +32,7 @@ export declare const policiesCoreService: {
32
32
  } | null>;
33
33
  getPolicyBySlug(db: PostgresJsDatabase, slug: string): Promise<{
34
34
  id: string;
35
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
35
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
36
36
  name: string;
37
37
  slug: string;
38
38
  description: string | null;
@@ -50,13 +50,13 @@ export declare const policiesCoreService: {
50
50
  createdAt: Date;
51
51
  updatedAt: Date;
52
52
  slug: string;
53
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
53
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
54
54
  language: string;
55
55
  currentVersionId: string | null;
56
56
  } | null>;
57
57
  updatePolicy(db: PostgresJsDatabase, id: string, data: UpdatePolicyInput): Promise<{
58
58
  id: string;
59
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
59
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
60
60
  name: string;
61
61
  slug: string;
62
62
  description: string | null;
@@ -1197,7 +1197,7 @@ export declare const policiesCoreService: {
1197
1197
  resolvePolicy(db: PostgresJsDatabase, input: ResolvePolicyInput): Promise<{
1198
1198
  policy: {
1199
1199
  id: string;
1200
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
1200
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
1201
1201
  name: string;
1202
1202
  slug: string;
1203
1203
  description: string | null;
@@ -4,7 +4,7 @@ export declare const policiesService: {
4
4
  listPolicies(db: import("drizzle-orm/postgres-js").PostgresJsDatabase, query: import("./service-shared.js").PolicyListQuery): Promise<{
5
5
  data: {
6
6
  id: string;
7
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
7
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
8
8
  name: string;
9
9
  slug: string;
10
10
  description: string | null;
@@ -20,7 +20,7 @@ export declare const policiesService: {
20
20
  }>;
21
21
  getPolicyById(db: import("drizzle-orm/postgres-js").PostgresJsDatabase, id: string): Promise<{
22
22
  id: string;
23
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
23
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
24
24
  name: string;
25
25
  slug: string;
26
26
  description: string | null;
@@ -32,7 +32,7 @@ export declare const policiesService: {
32
32
  } | null>;
33
33
  getPolicyBySlug(db: import("drizzle-orm/postgres-js").PostgresJsDatabase, slug: string): Promise<{
34
34
  id: string;
35
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
35
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
36
36
  name: string;
37
37
  slug: string;
38
38
  description: string | null;
@@ -50,13 +50,13 @@ export declare const policiesService: {
50
50
  createdAt: Date;
51
51
  updatedAt: Date;
52
52
  slug: string;
53
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
53
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
54
54
  language: string;
55
55
  currentVersionId: string | null;
56
56
  } | null>;
57
57
  updatePolicy(db: import("drizzle-orm/postgres-js").PostgresJsDatabase, id: string, data: import("./service-shared.js").UpdatePolicyInput): Promise<{
58
58
  id: string;
59
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
59
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
60
60
  name: string;
61
61
  slug: string;
62
62
  description: string | null;
@@ -1197,7 +1197,7 @@ export declare const policiesService: {
1197
1197
  resolvePolicy(db: import("drizzle-orm/postgres-js").PostgresJsDatabase, input: import("./service-shared.js").ResolvePolicyInput): Promise<{
1198
1198
  policy: {
1199
1199
  id: string;
1200
- kind: "other" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "refund" | "commission" | "guarantee";
1200
+ kind: "other" | "refund" | "payment" | "cancellation" | "terms_and_conditions" | "privacy" | "commission" | "guarantee";
1201
1201
  name: string;
1202
1202
  slug: string;
1203
1203
  description: string | null;
@@ -1,11 +1,11 @@
1
1
  import { z } from "zod";
2
2
  export declare const policyKindSchema: z.ZodEnum<{
3
3
  other: "other";
4
+ refund: "refund";
4
5
  payment: "payment";
5
6
  cancellation: "cancellation";
6
7
  terms_and_conditions: "terms_and_conditions";
7
8
  privacy: "privacy";
8
- refund: "refund";
9
9
  commission: "commission";
10
10
  guarantee: "guarantee";
11
11
  }>;
@@ -43,11 +43,11 @@ export declare const policyAcceptanceMethodSchema: z.ZodEnum<{
43
43
  export declare const insertPolicySchema: z.ZodObject<{
44
44
  kind: z.ZodEnum<{
45
45
  other: "other";
46
+ refund: "refund";
46
47
  payment: "payment";
47
48
  cancellation: "cancellation";
48
49
  terms_and_conditions: "terms_and_conditions";
49
50
  privacy: "privacy";
50
- refund: "refund";
51
51
  commission: "commission";
52
52
  guarantee: "guarantee";
53
53
  }>;
@@ -60,11 +60,11 @@ export declare const insertPolicySchema: z.ZodObject<{
60
60
  export declare const updatePolicySchema: z.ZodObject<{
61
61
  kind: z.ZodOptional<z.ZodEnum<{
62
62
  other: "other";
63
+ refund: "refund";
63
64
  payment: "payment";
64
65
  cancellation: "cancellation";
65
66
  terms_and_conditions: "terms_and_conditions";
66
67
  privacy: "privacy";
67
- refund: "refund";
68
68
  commission: "commission";
69
69
  guarantee: "guarantee";
70
70
  }>>;
@@ -79,11 +79,11 @@ export declare const policyListQuerySchema: z.ZodObject<{
79
79
  offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
80
80
  kind: z.ZodOptional<z.ZodEnum<{
81
81
  other: "other";
82
+ refund: "refund";
82
83
  payment: "payment";
83
84
  cancellation: "cancellation";
84
85
  terms_and_conditions: "terms_and_conditions";
85
86
  privacy: "privacy";
86
- refund: "refund";
87
87
  commission: "commission";
88
88
  guarantee: "guarantee";
89
89
  }>>;
@@ -240,11 +240,11 @@ export declare const evaluateCancellationInputSchema: z.ZodObject<{
240
240
  export declare const resolvePolicyInputSchema: z.ZodObject<{
241
241
  kind: z.ZodEnum<{
242
242
  other: "other";
243
+ refund: "refund";
243
244
  payment: "payment";
244
245
  cancellation: "cancellation";
245
246
  terms_and_conditions: "terms_and_conditions";
246
247
  privacy: "privacy";
247
- refund: "refund";
248
248
  commission: "commission";
249
249
  guarantee: "guarantee";
250
250
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/legal",
3
- "version": "0.81.21",
3
+ "version": "0.82.1",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -59,14 +59,15 @@
59
59
  "drizzle-orm": "^0.45.2",
60
60
  "hono": "^4.12.10",
61
61
  "zod": "^4.3.6",
62
- "@voyantjs/bookings": "0.81.21",
63
- "@voyantjs/core": "0.81.21",
64
- "@voyantjs/crm": "0.81.21",
65
- "@voyantjs/db": "0.81.21",
66
- "@voyantjs/hono": "0.81.21",
67
- "@voyantjs/suppliers": "0.81.21",
68
- "@voyantjs/utils": "0.81.21",
69
- "@voyantjs/storage": "0.81.21"
62
+ "@voyantjs/bookings": "0.82.1",
63
+ "@voyantjs/core": "0.82.1",
64
+ "@voyantjs/crm": "0.82.1",
65
+ "@voyantjs/db": "0.82.1",
66
+ "@voyantjs/finance": "0.82.1",
67
+ "@voyantjs/hono": "0.82.1",
68
+ "@voyantjs/suppliers": "0.82.1",
69
+ "@voyantjs/utils": "0.82.1",
70
+ "@voyantjs/storage": "0.82.1"
70
71
  },
71
72
  "devDependencies": {
72
73
  "typescript": "^6.0.2",