@voyantjs/finance 0.4.5 → 0.6.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAkE7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA0/BtB,CAAA;AAEJ,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA;AAChD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAkE7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAk+BtB,CAAA;AAEJ,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA;AAChD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}
package/dist/routes.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { parseJsonBody, parseQuery, requireUserId } from "@voyantjs/hono";
1
2
  import { Hono } from "hono";
2
3
  import { financeService } from "./service.js";
3
4
  import { agingReportQuerySchema, applyDefaultBookingPaymentPlanSchema, cancelPaymentSessionSchema, completePaymentSessionSchema, createPaymentSessionFromGuaranteeSchema, createPaymentSessionFromInvoiceSchema, createPaymentSessionFromScheduleSchema, expirePaymentSessionSchema, failPaymentSessionSchema, insertBookingGuaranteeSchema, insertBookingItemCommissionSchema, insertBookingItemTaxLineSchema, insertBookingPaymentScheduleSchema, insertCreditNoteLineItemSchema, insertCreditNoteSchema, insertFinanceNoteSchema, insertInvoiceExternalRefSchema, insertInvoiceLineItemSchema, insertInvoiceNumberSeriesSchema, insertInvoiceSchema, insertInvoiceTemplateSchema, insertPaymentAuthorizationSchema, insertPaymentCaptureSchema, insertPaymentInstrumentSchema, insertPaymentSchema, insertPaymentSessionSchema, insertSupplierPaymentSchema, insertTaxRegimeSchema, invoiceFromBookingSchema, invoiceListQuerySchema, invoiceNumberSeriesListQuerySchema, invoiceTemplateListQuerySchema, markPaymentSessionRequiresRedirectSchema, paymentAuthorizationListQuerySchema, paymentCaptureListQuerySchema, paymentInstrumentListQuerySchema, paymentSessionListQuerySchema, profitabilityQuerySchema, renderInvoiceInputSchema, revenueReportQuerySchema, supplierPaymentListQuerySchema, taxRegimeListQuerySchema, updateBookingGuaranteeSchema, updateBookingItemCommissionSchema, updateBookingItemTaxLineSchema, updateBookingPaymentScheduleSchema, updateCreditNoteSchema, updateInvoiceLineItemSchema, updateInvoiceNumberSeriesSchema, updateInvoiceSchema, updateInvoiceTemplateSchema, updatePaymentAuthorizationSchema, updatePaymentCaptureSchema, updatePaymentInstrumentSchema, updatePaymentSessionSchema, updateSupplierPaymentSchema, updateTaxRegimeSchema, } from "./validation.js";
@@ -9,12 +10,12 @@ export const financeRoutes = new Hono()
9
10
  // Payment Sessions
10
11
  // ========================================================================
11
12
  .get("/payment-sessions", async (c) => {
12
- const query = paymentSessionListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
13
+ const query = parseQuery(c, paymentSessionListQuerySchema);
13
14
  return c.json(await financeService.listPaymentSessions(c.get("db"), query));
14
15
  })
15
16
  .post("/payment-sessions", async (c) => {
16
17
  return c.json({
17
- data: await financeService.createPaymentSession(c.get("db"), insertPaymentSessionSchema.parse(await c.req.json())),
18
+ data: await financeService.createPaymentSession(c.get("db"), await parseJsonBody(c, insertPaymentSessionSchema)),
18
19
  }, 201);
19
20
  })
20
21
  .get("/payment-sessions/:id", async (c) => {
@@ -24,37 +25,37 @@ export const financeRoutes = new Hono()
24
25
  return c.json({ data: row });
25
26
  })
26
27
  .patch("/payment-sessions/:id", async (c) => {
27
- const row = await financeService.updatePaymentSession(c.get("db"), c.req.param("id"), updatePaymentSessionSchema.parse(await c.req.json()));
28
+ const row = await financeService.updatePaymentSession(c.get("db"), c.req.param("id"), await parseJsonBody(c, updatePaymentSessionSchema));
28
29
  if (!row)
29
30
  return c.json({ error: "Payment session not found" }, 404);
30
31
  return c.json({ data: row });
31
32
  })
32
33
  .post("/payment-sessions/:id/requires-redirect", async (c) => {
33
- const row = await financeService.markPaymentSessionRequiresRedirect(c.get("db"), c.req.param("id"), markPaymentSessionRequiresRedirectSchema.parse(await c.req.json()));
34
+ const row = await financeService.markPaymentSessionRequiresRedirect(c.get("db"), c.req.param("id"), await parseJsonBody(c, markPaymentSessionRequiresRedirectSchema));
34
35
  if (!row)
35
36
  return c.json({ error: "Payment session not found" }, 404);
36
37
  return c.json({ data: row });
37
38
  })
38
39
  .post("/payment-sessions/:id/complete", async (c) => {
39
- const row = await financeService.completePaymentSession(c.get("db"), c.req.param("id"), completePaymentSessionSchema.parse(await c.req.json()));
40
+ const row = await financeService.completePaymentSession(c.get("db"), c.req.param("id"), await parseJsonBody(c, completePaymentSessionSchema));
40
41
  if (!row)
41
42
  return c.json({ error: "Payment session not found" }, 404);
42
43
  return c.json({ data: row });
43
44
  })
44
45
  .post("/payment-sessions/:id/fail", async (c) => {
45
- const row = await financeService.failPaymentSession(c.get("db"), c.req.param("id"), failPaymentSessionSchema.parse(await c.req.json()));
46
+ const row = await financeService.failPaymentSession(c.get("db"), c.req.param("id"), await parseJsonBody(c, failPaymentSessionSchema));
46
47
  if (!row)
47
48
  return c.json({ error: "Payment session not found" }, 404);
48
49
  return c.json({ data: row });
49
50
  })
50
51
  .post("/payment-sessions/:id/cancel", async (c) => {
51
- const row = await financeService.cancelPaymentSession(c.get("db"), c.req.param("id"), cancelPaymentSessionSchema.parse(await c.req.json()));
52
+ const row = await financeService.cancelPaymentSession(c.get("db"), c.req.param("id"), await parseJsonBody(c, cancelPaymentSessionSchema));
52
53
  if (!row)
53
54
  return c.json({ error: "Payment session not found" }, 404);
54
55
  return c.json({ data: row });
55
56
  })
56
57
  .post("/payment-sessions/:id/expire", async (c) => {
57
- const row = await financeService.expirePaymentSession(c.get("db"), c.req.param("id"), expirePaymentSessionSchema.parse(await c.req.json()));
58
+ const row = await financeService.expirePaymentSession(c.get("db"), c.req.param("id"), await parseJsonBody(c, expirePaymentSessionSchema));
58
59
  if (!row)
59
60
  return c.json({ error: "Payment session not found" }, 404);
60
61
  return c.json({ data: row });
@@ -63,12 +64,12 @@ export const financeRoutes = new Hono()
63
64
  // Payment Instruments
64
65
  // ========================================================================
65
66
  .get("/payment-instruments", async (c) => {
66
- const query = paymentInstrumentListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
67
+ const query = parseQuery(c, paymentInstrumentListQuerySchema);
67
68
  return c.json(await financeService.listPaymentInstruments(c.get("db"), query));
68
69
  })
69
70
  .post("/payment-instruments", async (c) => {
70
71
  return c.json({
71
- data: await financeService.createPaymentInstrument(c.get("db"), insertPaymentInstrumentSchema.parse(await c.req.json())),
72
+ data: await financeService.createPaymentInstrument(c.get("db"), await parseJsonBody(c, insertPaymentInstrumentSchema)),
72
73
  }, 201);
73
74
  })
74
75
  .get("/payment-instruments/:id", async (c) => {
@@ -78,7 +79,7 @@ export const financeRoutes = new Hono()
78
79
  return c.json({ data: row });
79
80
  })
80
81
  .patch("/payment-instruments/:id", async (c) => {
81
- const row = await financeService.updatePaymentInstrument(c.get("db"), c.req.param("id"), updatePaymentInstrumentSchema.parse(await c.req.json()));
82
+ const row = await financeService.updatePaymentInstrument(c.get("db"), c.req.param("id"), await parseJsonBody(c, updatePaymentInstrumentSchema));
82
83
  if (!row)
83
84
  return c.json({ error: "Payment instrument not found" }, 404);
84
85
  return c.json({ data: row });
@@ -93,12 +94,12 @@ export const financeRoutes = new Hono()
93
94
  // Payment Authorizations
94
95
  // ========================================================================
95
96
  .get("/payment-authorizations", async (c) => {
96
- const query = paymentAuthorizationListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
97
+ const query = parseQuery(c, paymentAuthorizationListQuerySchema);
97
98
  return c.json(await financeService.listPaymentAuthorizations(c.get("db"), query));
98
99
  })
99
100
  .post("/payment-authorizations", async (c) => {
100
101
  return c.json({
101
- data: await financeService.createPaymentAuthorization(c.get("db"), insertPaymentAuthorizationSchema.parse(await c.req.json())),
102
+ data: await financeService.createPaymentAuthorization(c.get("db"), await parseJsonBody(c, insertPaymentAuthorizationSchema)),
102
103
  }, 201);
103
104
  })
104
105
  .get("/payment-authorizations/:id", async (c) => {
@@ -108,7 +109,7 @@ export const financeRoutes = new Hono()
108
109
  return c.json({ data: row });
109
110
  })
110
111
  .patch("/payment-authorizations/:id", async (c) => {
111
- const row = await financeService.updatePaymentAuthorization(c.get("db"), c.req.param("id"), updatePaymentAuthorizationSchema.parse(await c.req.json()));
112
+ const row = await financeService.updatePaymentAuthorization(c.get("db"), c.req.param("id"), await parseJsonBody(c, updatePaymentAuthorizationSchema));
112
113
  if (!row)
113
114
  return c.json({ error: "Payment authorization not found" }, 404);
114
115
  return c.json({ data: row });
@@ -123,12 +124,12 @@ export const financeRoutes = new Hono()
123
124
  // Payment Captures
124
125
  // ========================================================================
125
126
  .get("/payment-captures", async (c) => {
126
- const query = paymentCaptureListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
127
+ const query = parseQuery(c, paymentCaptureListQuerySchema);
127
128
  return c.json(await financeService.listPaymentCaptures(c.get("db"), query));
128
129
  })
129
130
  .post("/payment-captures", async (c) => {
130
131
  return c.json({
131
- data: await financeService.createPaymentCapture(c.get("db"), insertPaymentCaptureSchema.parse(await c.req.json())),
132
+ data: await financeService.createPaymentCapture(c.get("db"), await parseJsonBody(c, insertPaymentCaptureSchema)),
132
133
  }, 201);
133
134
  })
134
135
  .get("/payment-captures/:id", async (c) => {
@@ -138,7 +139,7 @@ export const financeRoutes = new Hono()
138
139
  return c.json({ data: row });
139
140
  })
140
141
  .patch("/payment-captures/:id", async (c) => {
141
- const row = await financeService.updatePaymentCapture(c.get("db"), c.req.param("id"), updatePaymentCaptureSchema.parse(await c.req.json()));
142
+ const row = await financeService.updatePaymentCapture(c.get("db"), c.req.param("id"), await parseJsonBody(c, updatePaymentCaptureSchema));
142
143
  if (!row)
143
144
  return c.json({ error: "Payment capture not found" }, 404);
144
145
  return c.json({ data: row });
@@ -154,17 +155,17 @@ export const financeRoutes = new Hono()
154
155
  // ========================================================================
155
156
  // GET /reports/revenue — Revenue by month
156
157
  .get("/reports/revenue", async (c) => {
157
- const query = revenueReportQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
158
+ const query = parseQuery(c, revenueReportQuerySchema);
158
159
  return c.json({ data: await financeService.getRevenueReport(c.get("db"), query) });
159
160
  })
160
161
  // GET /reports/aging — Outstanding invoices by age buckets
161
162
  .get("/reports/aging", async (c) => {
162
- const query = agingReportQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
163
+ const query = parseQuery(c, agingReportQuerySchema);
163
164
  return c.json({ data: await financeService.getAgingReport(c.get("db"), query) });
164
165
  })
165
166
  // GET /reports/profitability — Per-booking margin summary
166
167
  .get("/reports/profitability", async (c) => {
167
- const query = profitabilityQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
168
+ const query = parseQuery(c, profitabilityQuerySchema);
168
169
  return c.json({ data: await financeService.getProfitabilityReport(c.get("db"), query) });
169
170
  })
170
171
  // ========================================================================
@@ -176,21 +177,21 @@ export const financeRoutes = new Hono()
176
177
  });
177
178
  })
178
179
  .post("/bookings/:bookingId/payment-schedules", async (c) => {
179
- const row = await financeService.createBookingPaymentSchedule(c.get("db"), c.req.param("bookingId"), insertBookingPaymentScheduleSchema.parse(await c.req.json()));
180
+ const row = await financeService.createBookingPaymentSchedule(c.get("db"), c.req.param("bookingId"), await parseJsonBody(c, insertBookingPaymentScheduleSchema));
180
181
  if (!row) {
181
182
  return c.json({ error: "Booking not found" }, 404);
182
183
  }
183
184
  return c.json({ data: row }, 201);
184
185
  })
185
186
  .post("/bookings/:bookingId/payment-schedules/default-plan", async (c) => {
186
- const rows = await financeService.applyDefaultBookingPaymentPlan(c.get("db"), c.req.param("bookingId"), applyDefaultBookingPaymentPlanSchema.parse(await c.req.json()));
187
+ const rows = await financeService.applyDefaultBookingPaymentPlan(c.get("db"), c.req.param("bookingId"), await parseJsonBody(c, applyDefaultBookingPaymentPlanSchema));
187
188
  if (!rows) {
188
189
  return c.json({ error: "Booking not found" }, 404);
189
190
  }
190
191
  return c.json({ data: rows }, 201);
191
192
  })
192
193
  .patch("/bookings/:bookingId/payment-schedules/:scheduleId", async (c) => {
193
- const row = await financeService.updateBookingPaymentSchedule(c.get("db"), c.req.param("scheduleId"), updateBookingPaymentScheduleSchema.parse(await c.req.json()));
194
+ const row = await financeService.updateBookingPaymentSchedule(c.get("db"), c.req.param("scheduleId"), await parseJsonBody(c, updateBookingPaymentScheduleSchema));
194
195
  if (!row) {
195
196
  return c.json({ error: "Payment schedule not found" }, 404);
196
197
  }
@@ -198,7 +199,7 @@ export const financeRoutes = new Hono()
198
199
  })
199
200
  .post("/bookings/:bookingId/payment-schedules/:scheduleId/payment-session", async (c) => {
200
201
  try {
201
- const row = await financeService.createPaymentSessionFromBookingSchedule(c.get("db"), c.req.param("scheduleId"), createPaymentSessionFromScheduleSchema.parse(await c.req.json()));
202
+ const row = await financeService.createPaymentSessionFromBookingSchedule(c.get("db"), c.req.param("scheduleId"), await parseJsonBody(c, createPaymentSessionFromScheduleSchema));
202
203
  if (!row) {
203
204
  return c.json({ error: "Payment schedule not found" }, 404);
204
205
  }
@@ -225,7 +226,7 @@ export const financeRoutes = new Hono()
225
226
  });
226
227
  })
227
228
  .post("/bookings/:bookingId/guarantees", async (c) => {
228
- const row = await financeService.createBookingGuarantee(c.get("db"), c.req.param("bookingId"), insertBookingGuaranteeSchema.parse(await c.req.json()));
229
+ const row = await financeService.createBookingGuarantee(c.get("db"), c.req.param("bookingId"), await parseJsonBody(c, insertBookingGuaranteeSchema));
229
230
  if (!row) {
230
231
  return c.json({ error: "Booking not found" }, 404);
231
232
  }
@@ -233,7 +234,7 @@ export const financeRoutes = new Hono()
233
234
  })
234
235
  .post("/bookings/:bookingId/guarantees/:guaranteeId/payment-session", async (c) => {
235
236
  try {
236
- const row = await financeService.createPaymentSessionFromBookingGuarantee(c.get("db"), c.req.param("guaranteeId"), createPaymentSessionFromGuaranteeSchema.parse(await c.req.json()));
237
+ const row = await financeService.createPaymentSessionFromBookingGuarantee(c.get("db"), c.req.param("guaranteeId"), await parseJsonBody(c, createPaymentSessionFromGuaranteeSchema));
237
238
  if (!row) {
238
239
  return c.json({ error: "Booking guarantee not found" }, 404);
239
240
  }
@@ -245,7 +246,7 @@ export const financeRoutes = new Hono()
245
246
  }
246
247
  })
247
248
  .patch("/bookings/:bookingId/guarantees/:guaranteeId", async (c) => {
248
- const row = await financeService.updateBookingGuarantee(c.get("db"), c.req.param("guaranteeId"), updateBookingGuaranteeSchema.parse(await c.req.json()));
249
+ const row = await financeService.updateBookingGuarantee(c.get("db"), c.req.param("guaranteeId"), await parseJsonBody(c, updateBookingGuaranteeSchema));
249
250
  if (!row) {
250
251
  return c.json({ error: "Booking guarantee not found" }, 404);
251
252
  }
@@ -267,14 +268,14 @@ export const financeRoutes = new Hono()
267
268
  });
268
269
  })
269
270
  .post("/booking-items/:bookingItemId/tax-lines", async (c) => {
270
- const row = await financeService.createBookingItemTaxLine(c.get("db"), c.req.param("bookingItemId"), insertBookingItemTaxLineSchema.parse(await c.req.json()));
271
+ const row = await financeService.createBookingItemTaxLine(c.get("db"), c.req.param("bookingItemId"), await parseJsonBody(c, insertBookingItemTaxLineSchema));
271
272
  if (!row) {
272
273
  return c.json({ error: "Booking item not found" }, 404);
273
274
  }
274
275
  return c.json({ data: row }, 201);
275
276
  })
276
277
  .patch("/booking-items/:bookingItemId/tax-lines/:taxLineId", async (c) => {
277
- const row = await financeService.updateBookingItemTaxLine(c.get("db"), c.req.param("taxLineId"), updateBookingItemTaxLineSchema.parse(await c.req.json()));
278
+ const row = await financeService.updateBookingItemTaxLine(c.get("db"), c.req.param("taxLineId"), await parseJsonBody(c, updateBookingItemTaxLineSchema));
278
279
  if (!row) {
279
280
  return c.json({ error: "Booking item tax line not found" }, 404);
280
281
  }
@@ -296,14 +297,14 @@ export const financeRoutes = new Hono()
296
297
  });
297
298
  })
298
299
  .post("/booking-items/:bookingItemId/commissions", async (c) => {
299
- const row = await financeService.createBookingItemCommission(c.get("db"), c.req.param("bookingItemId"), insertBookingItemCommissionSchema.parse(await c.req.json()));
300
+ const row = await financeService.createBookingItemCommission(c.get("db"), c.req.param("bookingItemId"), await parseJsonBody(c, insertBookingItemCommissionSchema));
300
301
  if (!row) {
301
302
  return c.json({ error: "Booking item not found" }, 404);
302
303
  }
303
304
  return c.json({ data: row }, 201);
304
305
  })
305
306
  .patch("/booking-items/:bookingItemId/commissions/:commissionId", async (c) => {
306
- const row = await financeService.updateBookingItemCommission(c.get("db"), c.req.param("commissionId"), updateBookingItemCommissionSchema.parse(await c.req.json()));
307
+ const row = await financeService.updateBookingItemCommission(c.get("db"), c.req.param("commissionId"), await parseJsonBody(c, updateBookingItemCommissionSchema));
307
308
  if (!row) {
308
309
  return c.json({ error: "Booking item commission not found" }, 404);
309
310
  }
@@ -321,18 +322,18 @@ export const financeRoutes = new Hono()
321
322
  // ========================================================================
322
323
  // GET /supplier-payments — List supplier payments
323
324
  .get("/supplier-payments", async (c) => {
324
- const query = supplierPaymentListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
325
+ const query = parseQuery(c, supplierPaymentListQuerySchema);
325
326
  return c.json(await financeService.listSupplierPayments(c.get("db"), query));
326
327
  })
327
328
  // POST /supplier-payments — Record supplier payment
328
329
  .post("/supplier-payments", async (c) => {
329
330
  return c.json({
330
- data: await financeService.createSupplierPayment(c.get("db"), insertSupplierPaymentSchema.parse(await c.req.json())),
331
+ data: await financeService.createSupplierPayment(c.get("db"), await parseJsonBody(c, insertSupplierPaymentSchema)),
331
332
  }, 201);
332
333
  })
333
334
  // PATCH /supplier-payments/:id — Update supplier payment
334
335
  .patch("/supplier-payments/:id", async (c) => {
335
- const row = await financeService.updateSupplierPayment(c.get("db"), c.req.param("id"), updateSupplierPaymentSchema.parse(await c.req.json()));
336
+ const row = await financeService.updateSupplierPayment(c.get("db"), c.req.param("id"), await parseJsonBody(c, updateSupplierPaymentSchema));
336
337
  if (!row) {
337
338
  return c.json({ error: "Supplier payment not found" }, 404);
338
339
  }
@@ -343,18 +344,18 @@ export const financeRoutes = new Hono()
343
344
  // ========================================================================
344
345
  // GET /invoices — List invoices
345
346
  .get("/invoices", async (c) => {
346
- const query = invoiceListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
347
+ const query = parseQuery(c, invoiceListQuerySchema);
347
348
  return c.json(await financeService.listInvoices(c.get("db"), query));
348
349
  })
349
350
  // POST /invoices — Create invoice
350
351
  .post("/invoices", async (c) => {
351
352
  return c.json({
352
- data: await financeService.createInvoice(c.get("db"), insertInvoiceSchema.parse(await c.req.json())),
353
+ data: await financeService.createInvoice(c.get("db"), await parseJsonBody(c, insertInvoiceSchema)),
353
354
  }, 201);
354
355
  })
355
356
  // POST /invoices/from-booking — Create draft invoice from booking + booking items
356
357
  .post("/invoices/from-booking", async (c) => {
357
- const input = invoiceFromBookingSchema.parse(await c.req.json());
358
+ const input = await parseJsonBody(c, invoiceFromBookingSchema);
358
359
  const db = c.get("db");
359
360
  const [{ bookingItems, bookings }, { eq }] = await Promise.all([
360
361
  import("@voyantjs/bookings/schema"),
@@ -401,7 +402,7 @@ export const financeRoutes = new Hono()
401
402
  })
402
403
  // PATCH /invoices/:id — Update invoice
403
404
  .patch("/invoices/:id", async (c) => {
404
- const row = await financeService.updateInvoice(c.get("db"), c.req.param("id"), updateInvoiceSchema.parse(await c.req.json()));
405
+ const row = await financeService.updateInvoice(c.get("db"), c.req.param("id"), await parseJsonBody(c, updateInvoiceSchema));
405
406
  if (!row) {
406
407
  return c.json({ error: "Invoice not found" }, 404);
407
408
  }
@@ -420,7 +421,7 @@ export const financeRoutes = new Hono()
420
421
  })
421
422
  .post("/invoices/:id/payment-session", async (c) => {
422
423
  try {
423
- const row = await financeService.createPaymentSessionFromInvoice(c.get("db"), c.req.param("id"), createPaymentSessionFromInvoiceSchema.parse(await c.req.json()));
424
+ const row = await financeService.createPaymentSessionFromInvoice(c.get("db"), c.req.param("id"), await parseJsonBody(c, createPaymentSessionFromInvoiceSchema));
424
425
  if (!row) {
425
426
  return c.json({ error: "Invoice not found" }, 404);
426
427
  }
@@ -442,7 +443,7 @@ export const financeRoutes = new Hono()
442
443
  })
443
444
  // POST /invoices/:id/line-items — Add line item
444
445
  .post("/invoices/:id/line-items", async (c) => {
445
- const row = await financeService.createInvoiceLineItem(c.get("db"), c.req.param("id"), insertInvoiceLineItemSchema.parse(await c.req.json()));
446
+ const row = await financeService.createInvoiceLineItem(c.get("db"), c.req.param("id"), await parseJsonBody(c, insertInvoiceLineItemSchema));
446
447
  if (!row) {
447
448
  return c.json({ error: "Invoice not found" }, 404);
448
449
  }
@@ -450,7 +451,7 @@ export const financeRoutes = new Hono()
450
451
  })
451
452
  // PATCH /invoices/:id/line-items/:lineId — Update line item
452
453
  .patch("/invoices/:id/line-items/:lineId", async (c) => {
453
- const row = await financeService.updateInvoiceLineItem(c.get("db"), c.req.param("lineId"), updateInvoiceLineItemSchema.parse(await c.req.json()));
454
+ const row = await financeService.updateInvoiceLineItem(c.get("db"), c.req.param("lineId"), await parseJsonBody(c, updateInvoiceLineItemSchema));
454
455
  if (!row) {
455
456
  return c.json({ error: "Line item not found" }, 404);
456
457
  }
@@ -473,7 +474,7 @@ export const financeRoutes = new Hono()
473
474
  })
474
475
  // POST /invoices/:id/payments — Record payment (transaction)
475
476
  .post("/invoices/:id/payments", async (c) => {
476
- const row = await financeService.createPayment(c.get("db"), c.req.param("id"), insertPaymentSchema.parse(await c.req.json()));
477
+ const row = await financeService.createPayment(c.get("db"), c.req.param("id"), await parseJsonBody(c, insertPaymentSchema));
477
478
  if (!row) {
478
479
  return c.json({ error: "Invoice not found" }, 404);
479
480
  }
@@ -490,7 +491,7 @@ export const financeRoutes = new Hono()
490
491
  })
491
492
  // POST /invoices/:id/credit-notes — Create credit note
492
493
  .post("/invoices/:id/credit-notes", async (c) => {
493
- const row = await financeService.createCreditNote(c.get("db"), c.req.param("id"), insertCreditNoteSchema.parse(await c.req.json()));
494
+ const row = await financeService.createCreditNote(c.get("db"), c.req.param("id"), await parseJsonBody(c, insertCreditNoteSchema));
494
495
  if (!row) {
495
496
  return c.json({ error: "Invoice not found" }, 404);
496
497
  }
@@ -498,7 +499,7 @@ export const financeRoutes = new Hono()
498
499
  })
499
500
  // PATCH /invoices/:id/credit-notes/:creditNoteId — Update credit note
500
501
  .patch("/invoices/:id/credit-notes/:creditNoteId", async (c) => {
501
- const row = await financeService.updateCreditNote(c.get("db"), c.req.param("creditNoteId"), updateCreditNoteSchema.parse(await c.req.json()));
502
+ const row = await financeService.updateCreditNote(c.get("db"), c.req.param("creditNoteId"), await parseJsonBody(c, updateCreditNoteSchema));
502
503
  if (!row) {
503
504
  return c.json({ error: "Credit note not found" }, 404);
504
505
  }
@@ -515,7 +516,7 @@ export const financeRoutes = new Hono()
515
516
  })
516
517
  // POST /invoices/:id/credit-notes/:creditNoteId/line-items — Add credit note line item
517
518
  .post("/invoices/:id/credit-notes/:creditNoteId/line-items", async (c) => {
518
- const row = await financeService.createCreditNoteLineItem(c.get("db"), c.req.param("creditNoteId"), insertCreditNoteLineItemSchema.parse(await c.req.json()));
519
+ const row = await financeService.createCreditNoteLineItem(c.get("db"), c.req.param("creditNoteId"), await parseJsonBody(c, insertCreditNoteLineItemSchema));
519
520
  if (!row) {
520
521
  return c.json({ error: "Credit note not found" }, 404);
521
522
  }
@@ -530,11 +531,8 @@ export const financeRoutes = new Hono()
530
531
  })
531
532
  // POST /invoices/:id/notes — Add note
532
533
  .post("/invoices/:id/notes", async (c) => {
533
- const userId = c.get("userId");
534
- if (!userId) {
535
- return c.json({ error: "User ID required to create notes" }, 400);
536
- }
537
- const row = await financeService.createNote(c.get("db"), c.req.param("id"), userId, insertFinanceNoteSchema.parse(await c.req.json()));
534
+ const userId = requireUserId(c);
535
+ const row = await financeService.createNote(c.get("db"), c.req.param("id"), userId, await parseJsonBody(c, insertFinanceNoteSchema));
538
536
  if (!row) {
539
537
  return c.json({ error: "Invoice not found" }, 404);
540
538
  }
@@ -544,11 +542,11 @@ export const financeRoutes = new Hono()
544
542
  // Invoice Number Series
545
543
  // ========================================================================
546
544
  .get("/invoice-number-series", async (c) => {
547
- const query = invoiceNumberSeriesListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
545
+ const query = parseQuery(c, invoiceNumberSeriesListQuerySchema);
548
546
  return c.json(await financeService.listInvoiceNumberSeries(c.get("db"), query));
549
547
  })
550
548
  .post("/invoice-number-series", async (c) => {
551
- const row = await financeService.createInvoiceNumberSeries(c.get("db"), insertInvoiceNumberSeriesSchema.parse(await c.req.json()));
549
+ const row = await financeService.createInvoiceNumberSeries(c.get("db"), await parseJsonBody(c, insertInvoiceNumberSeriesSchema));
552
550
  return c.json({ data: row }, 201);
553
551
  })
554
552
  .get("/invoice-number-series/:id", async (c) => {
@@ -558,7 +556,7 @@ export const financeRoutes = new Hono()
558
556
  return c.json({ data: row });
559
557
  })
560
558
  .patch("/invoice-number-series/:id", async (c) => {
561
- const row = await financeService.updateInvoiceNumberSeries(c.get("db"), c.req.param("id"), updateInvoiceNumberSeriesSchema.parse(await c.req.json()));
559
+ const row = await financeService.updateInvoiceNumberSeries(c.get("db"), c.req.param("id"), await parseJsonBody(c, updateInvoiceNumberSeriesSchema));
562
560
  if (!row)
563
561
  return c.json({ error: "Invoice number series not found" }, 404);
564
562
  return c.json({ data: row });
@@ -585,11 +583,11 @@ export const financeRoutes = new Hono()
585
583
  // Invoice Templates
586
584
  // ========================================================================
587
585
  .get("/invoice-templates", async (c) => {
588
- const query = invoiceTemplateListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
586
+ const query = parseQuery(c, invoiceTemplateListQuerySchema);
589
587
  return c.json(await financeService.listInvoiceTemplates(c.get("db"), query));
590
588
  })
591
589
  .post("/invoice-templates", async (c) => {
592
- const row = await financeService.createInvoiceTemplate(c.get("db"), insertInvoiceTemplateSchema.parse(await c.req.json()));
590
+ const row = await financeService.createInvoiceTemplate(c.get("db"), await parseJsonBody(c, insertInvoiceTemplateSchema));
593
591
  return c.json({ data: row }, 201);
594
592
  })
595
593
  .get("/invoice-templates/:id", async (c) => {
@@ -599,7 +597,7 @@ export const financeRoutes = new Hono()
599
597
  return c.json({ data: row });
600
598
  })
601
599
  .patch("/invoice-templates/:id", async (c) => {
602
- const row = await financeService.updateInvoiceTemplate(c.get("db"), c.req.param("id"), updateInvoiceTemplateSchema.parse(await c.req.json()));
600
+ const row = await financeService.updateInvoiceTemplate(c.get("db"), c.req.param("id"), await parseJsonBody(c, updateInvoiceTemplateSchema));
603
601
  if (!row)
604
602
  return c.json({ error: "Invoice template not found" }, 404);
605
603
  return c.json({ data: row });
@@ -614,11 +612,11 @@ export const financeRoutes = new Hono()
614
612
  // Tax Regimes
615
613
  // ========================================================================
616
614
  .get("/tax-regimes", async (c) => {
617
- const query = taxRegimeListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
615
+ const query = parseQuery(c, taxRegimeListQuerySchema);
618
616
  return c.json(await financeService.listTaxRegimes(c.get("db"), query));
619
617
  })
620
618
  .post("/tax-regimes", async (c) => {
621
- const row = await financeService.createTaxRegime(c.get("db"), insertTaxRegimeSchema.parse(await c.req.json()));
619
+ const row = await financeService.createTaxRegime(c.get("db"), await parseJsonBody(c, insertTaxRegimeSchema));
622
620
  return c.json({ data: row }, 201);
623
621
  })
624
622
  .get("/tax-regimes/:id", async (c) => {
@@ -628,7 +626,7 @@ export const financeRoutes = new Hono()
628
626
  return c.json({ data: row });
629
627
  })
630
628
  .patch("/tax-regimes/:id", async (c) => {
631
- const row = await financeService.updateTaxRegime(c.get("db"), c.req.param("id"), updateTaxRegimeSchema.parse(await c.req.json()));
629
+ const row = await financeService.updateTaxRegime(c.get("db"), c.req.param("id"), await parseJsonBody(c, updateTaxRegimeSchema));
632
630
  if (!row)
633
631
  return c.json({ error: "Tax regime not found" }, 404);
634
632
  return c.json({ data: row });
@@ -647,7 +645,7 @@ export const financeRoutes = new Hono()
647
645
  return c.json({ data: rows });
648
646
  })
649
647
  .post("/invoices/:id/render", async (c) => {
650
- const input = renderInvoiceInputSchema.parse(await c.req.json());
648
+ const input = await parseJsonBody(c, renderInvoiceInputSchema);
651
649
  const result = await financeService.renderInvoice(c.get("db"), c.req.param("id"), input);
652
650
  if (result.status === "not_found")
653
651
  return c.json({ error: "Invoice not found" }, 404);
@@ -658,7 +656,7 @@ export const financeRoutes = new Hono()
658
656
  return c.json({ data: rows });
659
657
  })
660
658
  .post("/invoices/:id/external-refs", async (c) => {
661
- const row = await financeService.registerInvoiceExternalRef(c.get("db"), c.req.param("id"), insertInvoiceExternalRefSchema.parse(await c.req.json()));
659
+ const row = await financeService.registerInvoiceExternalRef(c.get("db"), c.req.param("id"), await parseJsonBody(c, insertInvoiceExternalRefSchema));
662
660
  if (!row)
663
661
  return c.json({ error: "Invoice not found" }, 404);
664
662
  return c.json({ data: row }, 201);
package/dist/schema.d.ts CHANGED
@@ -655,7 +655,7 @@ export declare const paymentSessions: import("drizzle-orm/pg-core").PgTableWithC
655
655
  tableName: "payment_sessions";
656
656
  dataType: "string";
657
657
  columnType: "PgEnumColumn";
658
- data: "expired" | "cancelled" | "pending" | "failed" | "paid" | "requires_redirect" | "processing" | "authorized";
658
+ data: "pending" | "expired" | "cancelled" | "failed" | "paid" | "requires_redirect" | "processing" | "authorized";
659
659
  driverParam: string;
660
660
  notNull: true;
661
661
  hasDefault: true;
@@ -1280,7 +1280,7 @@ export declare const paymentAuthorizations: import("drizzle-orm/pg-core").PgTabl
1280
1280
  tableName: "payment_authorizations";
1281
1281
  dataType: "string";
1282
1282
  columnType: "PgEnumColumn";
1283
- data: "expired" | "pending" | "failed" | "authorized" | "partially_captured" | "captured" | "voided";
1283
+ data: "pending" | "expired" | "failed" | "authorized" | "partially_captured" | "captured" | "voided";
1284
1284
  driverParam: string;
1285
1285
  notNull: true;
1286
1286
  hasDefault: true;
@@ -1561,7 +1561,7 @@ export declare const paymentCaptures: import("drizzle-orm/pg-core").PgTableWithC
1561
1561
  tableName: "payment_captures";
1562
1562
  dataType: "string";
1563
1563
  columnType: "PgEnumColumn";
1564
- data: "completed" | "pending" | "failed" | "refunded" | "voided";
1564
+ data: "pending" | "completed" | "failed" | "refunded" | "voided";
1565
1565
  driverParam: string;
1566
1566
  notNull: true;
1567
1567
  hasDefault: true;
@@ -1808,7 +1808,7 @@ export declare const bookingPaymentSchedules: import("drizzle-orm/pg-core").PgTa
1808
1808
  tableName: "booking_payment_schedules";
1809
1809
  dataType: "string";
1810
1810
  columnType: "PgEnumColumn";
1811
- data: "expired" | "cancelled" | "pending" | "paid" | "due" | "waived";
1811
+ data: "pending" | "expired" | "cancelled" | "paid" | "due" | "waived";
1812
1812
  driverParam: string;
1813
1813
  notNull: true;
1814
1814
  hasDefault: true;
@@ -2021,7 +2021,7 @@ export declare const bookingGuarantees: import("drizzle-orm/pg-core").PgTableWit
2021
2021
  tableName: "booking_guarantees";
2022
2022
  dataType: "string";
2023
2023
  columnType: "PgEnumColumn";
2024
- data: "expired" | "cancelled" | "pending" | "released" | "failed" | "active";
2024
+ data: "pending" | "expired" | "cancelled" | "released" | "failed" | "active";
2025
2025
  driverParam: string;
2026
2026
  notNull: true;
2027
2027
  hasDefault: true;
@@ -2634,7 +2634,7 @@ export declare const bookingItemCommissions: import("drizzle-orm/pg-core").PgTab
2634
2634
  tableName: "booking_item_commissions";
2635
2635
  dataType: "string";
2636
2636
  columnType: "PgEnumColumn";
2637
- data: "pending" | "paid" | "void" | "accrued" | "payable";
2637
+ data: "pending" | "void" | "paid" | "accrued" | "payable";
2638
2638
  driverParam: string;
2639
2639
  notNull: true;
2640
2640
  hasDefault: true;
@@ -2932,7 +2932,7 @@ export declare const invoices: import("drizzle-orm/pg-core").PgTableWithColumns<
2932
2932
  tableName: "invoices";
2933
2933
  dataType: "string";
2934
2934
  columnType: "PgEnumColumn";
2935
- data: "draft" | "sent" | "partially_paid" | "paid" | "overdue" | "void";
2935
+ data: "void" | "draft" | "sent" | "partially_paid" | "paid" | "overdue";
2936
2936
  driverParam: string;
2937
2937
  notNull: true;
2938
2938
  hasDefault: true;
@@ -3664,7 +3664,7 @@ export declare const payments: import("drizzle-orm/pg-core").PgTableWithColumns<
3664
3664
  tableName: "payments";
3665
3665
  dataType: "string";
3666
3666
  columnType: "PgEnumColumn";
3667
- data: "completed" | "pending" | "failed" | "refunded";
3667
+ data: "pending" | "completed" | "failed" | "refunded";
3668
3668
  driverParam: string;
3669
3669
  notNull: true;
3670
3670
  hasDefault: true;
@@ -4337,7 +4337,7 @@ export declare const supplierPayments: import("drizzle-orm/pg-core").PgTableWith
4337
4337
  tableName: "supplier_payments";
4338
4338
  dataType: "string";
4339
4339
  columnType: "PgEnumColumn";
4340
- data: "completed" | "pending" | "failed" | "refunded";
4340
+ data: "pending" | "completed" | "failed" | "refunded";
4341
4341
  driverParam: string;
4342
4342
  notNull: true;
4343
4343
  hasDefault: true;
@@ -42,7 +42,6 @@ export interface StorageBackedInvoiceDocumentGeneratorOptions {
42
42
  storage: StorageProvider;
43
43
  keyPrefix?: string | ((context: InvoiceDocumentGeneratorContext) => Promise<string> | string);
44
44
  serializer?: StorageBackedInvoiceDocumentSerializer;
45
- signedUrlExpiresIn?: number;
46
45
  }
47
46
  export interface GeneratedInvoiceDocumentRecord {
48
47
  invoiceId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"service-documents.d.ts","sourceRoot":"","sources":["../src/service-documents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-documents.d.ts","sourceRoot":"","sources":["../src/service-documents.ts"],"names":[],"mappings":"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"}
@@ -95,10 +95,6 @@ export function createStorageBackedInvoiceDocumentGenerator(options) {
95
95
  contentType: defaultInvoiceDocumentMimeType(format),
96
96
  metadata: toUploadMetadata(upload.metadata),
97
97
  });
98
- const downloadUrl = uploaded.url ||
99
- (options.signedUrlExpiresIn
100
- ? await options.storage.signedUrl(uploaded.key, options.signedUrlExpiresIn)
101
- : "");
102
98
  return {
103
99
  format,
104
100
  storageKey: uploaded.key,
@@ -108,7 +104,6 @@ export function createStorageBackedInvoiceDocumentGenerator(options) {
108
104
  ...(upload.metadata ?? {}),
109
105
  storageProvider: options.storage.name,
110
106
  ...(uploaded.url ? { url: uploaded.url } : {}),
111
- ...(downloadUrl ? { downloadUrl } : {}),
112
107
  },
113
108
  };
114
109
  };
@@ -220,6 +215,9 @@ export const financeDocumentsService = {
220
215
  format: rendition.format,
221
216
  renderedBodyFormat: prepared.renderedBodyFormat,
222
217
  regenerated: options.regenerated ?? false,
218
+ }, {
219
+ category: "internal",
220
+ source: "service",
223
221
  });
224
222
  return {
225
223
  status: "generated",