@voyantjs/finance 0.5.0 → 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.
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -6
- package/dist/route-runtime.d.ts +13 -0
- package/dist/route-runtime.d.ts.map +1 -0
- package/dist/route-runtime.js +8 -0
- package/dist/routes-documents.d.ts +45 -8
- package/dist/routes-documents.d.ts.map +1 -1
- package/dist/routes-documents.js +51 -8
- package/dist/routes-public.d.ts +564 -9
- package/dist/routes-public.d.ts.map +1 -1
- package/dist/routes-public.js +65 -54
- package/dist/routes-settlement.d.ts +3 -2
- package/dist/routes-settlement.d.ts.map +1 -1
- package/dist/routes-settlement.js +9 -8
- package/dist/routes.d.ts +123 -134
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +59 -61
- package/dist/schema.d.ts +9 -9
- package/dist/service-documents.d.ts +0 -1
- package/dist/service-documents.d.ts.map +1 -1
- package/dist/service-documents.js +3 -5
- package/dist/service-public.d.ts +11 -8
- package/dist/service-public.d.ts.map +1 -1
- package/dist/service-public.js +11 -6
- package/dist/service-settlement.d.ts.map +1 -1
- package/dist/service-settlement.js +3 -0
- package/dist/service.d.ts +126 -126
- package/dist/validation-billing.d.ts +6 -6
- package/dist/validation-payments.d.ts +18 -18
- package/dist/validation-public.d.ts +8 -8
- package/dist/validation-shared.d.ts +8 -8
- package/package.json +7 -7
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { LinkableDefinition, Module } from "@voyantjs/core";
|
|
2
2
|
import type { HonoModule } from "@voyantjs/hono/module";
|
|
3
|
-
import { type
|
|
4
|
-
import { type
|
|
3
|
+
import { type FinanceRuntimeOptions } from "./route-runtime.js";
|
|
4
|
+
import { type PublicFinanceRouteOptions } from "./routes-public.js";
|
|
5
5
|
export type { FinanceRoutes } from "./routes.js";
|
|
6
6
|
export type { PublicFinanceRoutes } from "./routes-public.js";
|
|
7
|
-
export { publicFinanceRoutes } from "./routes-public.js";
|
|
8
|
-
export { publicFinanceService } from "./service-public.js";
|
|
7
|
+
export { createPublicFinanceRoutes, type PublicFinanceRouteOptions, publicFinanceRoutes, } from "./routes-public.js";
|
|
8
|
+
export { type PublicFinanceRuntimeOptions, publicFinanceService } from "./service-public.js";
|
|
9
9
|
export declare const invoiceLinkable: LinkableDefinition;
|
|
10
10
|
export declare const invoiceTemplateLinkable: LinkableDefinition;
|
|
11
11
|
export declare const creditNoteLinkable: LinkableDefinition;
|
|
@@ -15,10 +15,11 @@ export declare const financeLinkable: {
|
|
|
15
15
|
creditNote: LinkableDefinition;
|
|
16
16
|
};
|
|
17
17
|
export declare const financeModule: Module;
|
|
18
|
-
export interface FinanceHonoModuleOptions extends
|
|
18
|
+
export interface FinanceHonoModuleOptions extends FinanceRuntimeOptions, PublicFinanceRouteOptions {
|
|
19
19
|
}
|
|
20
20
|
export declare function createFinanceHonoModule(options?: FinanceHonoModuleOptions): HonoModule;
|
|
21
21
|
export declare const financeHonoModule: HonoModule;
|
|
22
|
+
export { buildFinanceRouteRuntime, FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, type FinanceRouteRuntime, type FinanceRuntimeOptions, } from "./route-runtime.js";
|
|
22
23
|
export { createFinanceAdminDocumentRoutes, type FinanceDocumentRouteOptions, type InvoiceDocumentGenerator, } from "./routes-documents.js";
|
|
23
24
|
export { createFinanceAdminSettlementRoutes, type FinanceSettlementRouteOptions, type InvoiceSettlementPoller, } from "./routes-settlement.js";
|
|
24
25
|
export type { BookingGuarantee, BookingItemCommission, BookingItemTaxLine, BookingPaymentSchedule, CreditNote, CreditNoteLineItem, FinanceNote, Invoice, InvoiceExternalRef, InvoiceLineItem, InvoiceNumberSeries, InvoiceRendition, InvoiceTemplate, NewBookingGuarantee, NewBookingItemCommission, NewBookingItemTaxLine, NewBookingPaymentSchedule, NewCreditNote, NewCreditNoteLineItem, NewFinanceNote, NewInvoice, NewInvoiceExternalRef, NewInvoiceLineItem, NewInvoiceNumberSeries, NewInvoiceRendition, NewInvoiceTemplate, NewPayment, NewPaymentAuthorization, NewPaymentCapture, NewPaymentInstrument, NewPaymentSession, NewSupplierPayment, NewTaxRegime, Payment, PaymentAuthorization, PaymentCapture, PaymentInstrument, PaymentSession, SupplierPayment, TaxRegime, } from "./schema.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Hono } from "hono";
|
|
2
|
+
import { buildFinanceRouteRuntime, FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, } from "./route-runtime.js";
|
|
2
3
|
import { financeRoutes } from "./routes.js";
|
|
3
|
-
import { createFinanceAdminDocumentRoutes
|
|
4
|
-
import {
|
|
5
|
-
import { createFinanceAdminSettlementRoutes
|
|
6
|
-
export { publicFinanceRoutes } from "./routes-public.js";
|
|
4
|
+
import { createFinanceAdminDocumentRoutes } from "./routes-documents.js";
|
|
5
|
+
import { createPublicFinanceRoutes } from "./routes-public.js";
|
|
6
|
+
import { createFinanceAdminSettlementRoutes } from "./routes-settlement.js";
|
|
7
|
+
export { createPublicFinanceRoutes, publicFinanceRoutes, } from "./routes-public.js";
|
|
7
8
|
export { publicFinanceService } from "./service-public.js";
|
|
8
9
|
export const invoiceLinkable = {
|
|
9
10
|
module: "finance",
|
|
@@ -37,14 +38,21 @@ export function createFinanceHonoModule(options = {}) {
|
|
|
37
38
|
.route("/", financeRoutes)
|
|
38
39
|
.route("/", createFinanceAdminDocumentRoutes(options))
|
|
39
40
|
.route("/", createFinanceAdminSettlementRoutes(options));
|
|
41
|
+
const module = {
|
|
42
|
+
...financeModule,
|
|
43
|
+
bootstrap: ({ bindings, container }) => {
|
|
44
|
+
container.register(FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, buildFinanceRouteRuntime(bindings, options));
|
|
45
|
+
},
|
|
46
|
+
};
|
|
40
47
|
return {
|
|
41
|
-
module
|
|
48
|
+
module,
|
|
42
49
|
adminRoutes,
|
|
43
|
-
publicRoutes:
|
|
50
|
+
publicRoutes: createPublicFinanceRoutes(options),
|
|
44
51
|
routes: adminRoutes,
|
|
45
52
|
};
|
|
46
53
|
}
|
|
47
54
|
export const financeHonoModule = createFinanceHonoModule();
|
|
55
|
+
export { buildFinanceRouteRuntime, FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, } from "./route-runtime.js";
|
|
48
56
|
export { createFinanceAdminDocumentRoutes, } from "./routes-documents.js";
|
|
49
57
|
export { createFinanceAdminSettlementRoutes, } from "./routes-settlement.js";
|
|
50
58
|
export { bookingGuarantees, bookingItemCommissions, bookingItemTaxLines, bookingPaymentSchedules, creditNoteLineItems, creditNotes, financeNotes, invoiceExternalRefs, invoiceLineItems, invoiceNumberSeries, invoiceRenditions, invoices, invoiceTemplates, paymentAuthorizations, paymentCaptures, paymentInstruments, paymentSessions, payments, supplierPayments, taxRegimes, } from "./schema.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EventBus } from "@voyantjs/core";
|
|
2
|
+
import type { FinanceDocumentRouteOptions, InvoiceDocumentGenerator } from "./routes-documents.js";
|
|
3
|
+
import type { FinanceSettlementRouteOptions, InvoiceSettlementPoller } from "./routes-settlement.js";
|
|
4
|
+
export type FinanceRouteRuntime = {
|
|
5
|
+
invoiceDocumentGenerator?: InvoiceDocumentGenerator;
|
|
6
|
+
invoiceSettlementPollers: Record<string, InvoiceSettlementPoller>;
|
|
7
|
+
eventBus?: EventBus;
|
|
8
|
+
};
|
|
9
|
+
export declare const FINANCE_ROUTE_RUNTIME_CONTAINER_KEY = "providers.finance.runtime";
|
|
10
|
+
export interface FinanceRuntimeOptions extends FinanceDocumentRouteOptions, FinanceSettlementRouteOptions {
|
|
11
|
+
}
|
|
12
|
+
export declare function buildFinanceRouteRuntime(bindings: Record<string, unknown>, options?: FinanceRuntimeOptions): FinanceRouteRuntime;
|
|
13
|
+
//# sourceMappingURL=route-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-runtime.d.ts","sourceRoot":"","sources":["../src/route-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAClG,OAAO,KAAK,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEpG,MAAM,MAAM,mBAAmB,GAAG;IAChC,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IACnD,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACjE,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,mCAAmC,8BAA8B,CAAA;AAE9E,MAAM,WAAW,qBACf,SAAQ,2BAA2B,EACjC,6BAA6B;CAAG;AAEpC,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,GAAE,qBAA0B,GAClC,mBAAmB,CAQrB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const FINANCE_ROUTE_RUNTIME_CONTAINER_KEY = "providers.finance.runtime";
|
|
2
|
+
export function buildFinanceRouteRuntime(bindings, options = {}) {
|
|
3
|
+
return {
|
|
4
|
+
invoiceDocumentGenerator: options.resolveInvoiceDocumentGenerator?.(bindings) ?? options.invoiceDocumentGenerator,
|
|
5
|
+
invoiceSettlementPollers: options.resolveInvoiceSettlementPollers?.(bindings) ?? options.invoiceSettlementPollers ?? {},
|
|
6
|
+
eventBus: options.resolveEventBus?.(bindings) ?? options.eventBus,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { EventBus } from "@voyantjs/core";
|
|
1
|
+
import type { EventBus, ModuleContainer } from "@voyantjs/core";
|
|
2
2
|
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
3
3
|
import { financeDocumentsService } from "./service-documents.js";
|
|
4
4
|
type Env = {
|
|
5
5
|
Bindings: Record<string, unknown>;
|
|
6
6
|
Variables: {
|
|
7
|
+
container: ModuleContainer;
|
|
7
8
|
db: PostgresJsDatabase;
|
|
8
9
|
userId?: string;
|
|
9
10
|
};
|
|
@@ -12,6 +13,7 @@ export type InvoiceDocumentGenerator = Parameters<typeof financeDocumentsService
|
|
|
12
13
|
export interface FinanceDocumentRouteOptions {
|
|
13
14
|
invoiceDocumentGenerator?: InvoiceDocumentGenerator;
|
|
14
15
|
resolveInvoiceDocumentGenerator?: (bindings: Record<string, unknown>) => InvoiceDocumentGenerator | undefined;
|
|
16
|
+
resolveDocumentDownloadUrl?: (bindings: unknown, storageKey: string) => Promise<string | null> | string | null;
|
|
15
17
|
eventBus?: EventBus;
|
|
16
18
|
resolveEventBus?: (bindings: Record<string, unknown>) => EventBus | undefined;
|
|
17
19
|
}
|
|
@@ -65,12 +67,12 @@ export declare function createFinanceAdminDocumentRoutes(options?: FinanceDocume
|
|
|
65
67
|
renderedBodyFormat: "html" | "markdown" | "lexical_json";
|
|
66
68
|
renderedBody: string;
|
|
67
69
|
rendition: {
|
|
68
|
-
|
|
70
|
+
metadata: import("hono/utils/types").JSONValue;
|
|
69
71
|
id: string;
|
|
70
|
-
status: "pending" | "failed" | "ready" | "stale";
|
|
71
72
|
createdAt: string;
|
|
72
73
|
updatedAt: string;
|
|
73
|
-
|
|
74
|
+
status: "pending" | "failed" | "ready" | "stale";
|
|
75
|
+
format: "json" | "pdf" | "html" | "xml";
|
|
74
76
|
templateId: string | null;
|
|
75
77
|
language: string | null;
|
|
76
78
|
invoiceId: string;
|
|
@@ -136,12 +138,12 @@ export declare function createFinanceAdminDocumentRoutes(options?: FinanceDocume
|
|
|
136
138
|
renderedBodyFormat: "html" | "markdown" | "lexical_json";
|
|
137
139
|
renderedBody: string;
|
|
138
140
|
rendition: {
|
|
139
|
-
|
|
141
|
+
metadata: import("hono/utils/types").JSONValue;
|
|
140
142
|
id: string;
|
|
141
|
-
status: "pending" | "failed" | "ready" | "stale";
|
|
142
143
|
createdAt: string;
|
|
143
144
|
updatedAt: string;
|
|
144
|
-
|
|
145
|
+
status: "pending" | "failed" | "ready" | "stale";
|
|
146
|
+
format: "json" | "pdf" | "html" | "xml";
|
|
145
147
|
templateId: string | null;
|
|
146
148
|
language: string | null;
|
|
147
149
|
invoiceId: string;
|
|
@@ -157,6 +159,41 @@ export declare function createFinanceAdminDocumentRoutes(options?: FinanceDocume
|
|
|
157
159
|
status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
158
160
|
};
|
|
159
161
|
};
|
|
160
|
-
}
|
|
162
|
+
} & {
|
|
163
|
+
"/invoice-renditions/:id/download": {
|
|
164
|
+
$get: {
|
|
165
|
+
input: {
|
|
166
|
+
param: {
|
|
167
|
+
id: string;
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
output: {
|
|
171
|
+
error: string;
|
|
172
|
+
};
|
|
173
|
+
outputFormat: "json";
|
|
174
|
+
status: 404;
|
|
175
|
+
} | {
|
|
176
|
+
input: {
|
|
177
|
+
param: {
|
|
178
|
+
id: string;
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
output: {
|
|
182
|
+
error: string;
|
|
183
|
+
};
|
|
184
|
+
outputFormat: "json";
|
|
185
|
+
status: 501;
|
|
186
|
+
} | {
|
|
187
|
+
input: {
|
|
188
|
+
param: {
|
|
189
|
+
id: string;
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
output: undefined;
|
|
193
|
+
outputFormat: "redirect";
|
|
194
|
+
status: 302;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
}, "/", "/invoice-renditions/:id/download">;
|
|
161
198
|
export {};
|
|
162
199
|
//# sourceMappingURL=routes-documents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-documents.d.ts","sourceRoot":"","sources":["../src/routes-documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"routes-documents.d.ts","sourceRoot":"","sources":["../src/routes-documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AASjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhE,KAAK,GAAG,GAAG;IACT,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,EAAE;QACT,SAAS,EAAE,eAAe,CAAA;QAC1B,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAC/C,OAAO,uBAAuB,CAAC,uBAAuB,CACvD,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;AAEjB,MAAM,WAAW,2BAA2B;IAC1C,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IACnD,+BAA+B,CAAC,EAAE,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,wBAAwB,GAAG,SAAS,CAAA;IACzC,0BAA0B,CAAC,EAAE,CAC3B,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAA;CAC9E;AAyCD,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,2BAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAiEzF"}
|
package/dist/routes-documents.js
CHANGED
|
@@ -1,20 +1,44 @@
|
|
|
1
|
+
import { parseOptionalJsonBody } from "@voyantjs/hono";
|
|
1
2
|
import { Hono } from "hono";
|
|
3
|
+
import { buildFinanceRouteRuntime, FINANCE_ROUTE_RUNTIME_CONTAINER_KEY, } from "./route-runtime.js";
|
|
4
|
+
import { financeService } from "./service.js";
|
|
2
5
|
import { financeDocumentsService } from "./service-documents.js";
|
|
3
6
|
import { generateInvoiceDocumentInputSchema } from "./validation.js";
|
|
4
|
-
function
|
|
5
|
-
return
|
|
7
|
+
function getRuntime(options, bindings, resolveFromContainer) {
|
|
8
|
+
return (resolveFromContainer?.(FINANCE_ROUTE_RUNTIME_CONTAINER_KEY) ??
|
|
9
|
+
buildFinanceRouteRuntime(bindings, options));
|
|
6
10
|
}
|
|
7
|
-
function
|
|
8
|
-
|
|
11
|
+
function getMetadataRecord(metadata) {
|
|
12
|
+
if (!metadata || typeof metadata !== "object" || Array.isArray(metadata)) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
return metadata;
|
|
16
|
+
}
|
|
17
|
+
function maybeUrl(value) {
|
|
18
|
+
return typeof value === "string" && /^https?:\/\//i.test(value) ? value : null;
|
|
19
|
+
}
|
|
20
|
+
function getFallbackDownloadUrl(metadata) {
|
|
21
|
+
const record = getMetadataRecord(metadata);
|
|
22
|
+
if (!record) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
for (const key of ["url", "publicUrl", "downloadUrl", "download_url", "signedUrl"]) {
|
|
26
|
+
const value = maybeUrl(record[key]);
|
|
27
|
+
if (value) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
9
32
|
}
|
|
10
33
|
export function createFinanceAdminDocumentRoutes(options = {}) {
|
|
11
34
|
return new Hono()
|
|
12
35
|
.post("/invoices/:id/generate-document", async (c) => {
|
|
13
|
-
const
|
|
36
|
+
const runtime = getRuntime(options, c.env, (key) => c.var.container?.resolve(key));
|
|
37
|
+
const generator = runtime.invoiceDocumentGenerator;
|
|
14
38
|
if (!generator) {
|
|
15
39
|
return c.json({ error: "Invoice document generator is not configured" }, 501);
|
|
16
40
|
}
|
|
17
|
-
const result = await financeDocumentsService.generateInvoiceDocument(c.get("db"), c.req.param("id"),
|
|
41
|
+
const result = await financeDocumentsService.generateInvoiceDocument(c.get("db"), c.req.param("id"), await parseOptionalJsonBody(c, generateInvoiceDocumentInputSchema), { generator, bindings: c.env, eventBus: runtime.eventBus });
|
|
18
42
|
if (result.status === "not_found")
|
|
19
43
|
return c.json({ error: "Invoice not found" }, 404);
|
|
20
44
|
if (result.status === "generator_failed") {
|
|
@@ -23,16 +47,35 @@ export function createFinanceAdminDocumentRoutes(options = {}) {
|
|
|
23
47
|
return c.json({ data: result }, 201);
|
|
24
48
|
})
|
|
25
49
|
.post("/invoices/:id/regenerate-document", async (c) => {
|
|
26
|
-
const
|
|
50
|
+
const runtime = getRuntime(options, c.env, (key) => c.var.container?.resolve(key));
|
|
51
|
+
const generator = runtime.invoiceDocumentGenerator;
|
|
27
52
|
if (!generator) {
|
|
28
53
|
return c.json({ error: "Invoice document generator is not configured" }, 501);
|
|
29
54
|
}
|
|
30
|
-
const result = await financeDocumentsService.regenerateInvoiceDocument(c.get("db"), c.req.param("id"),
|
|
55
|
+
const result = await financeDocumentsService.regenerateInvoiceDocument(c.get("db"), c.req.param("id"), await parseOptionalJsonBody(c, generateInvoiceDocumentInputSchema), { generator, bindings: c.env, eventBus: runtime.eventBus });
|
|
31
56
|
if (result.status === "not_found")
|
|
32
57
|
return c.json({ error: "Invoice not found" }, 404);
|
|
33
58
|
if (result.status === "generator_failed") {
|
|
34
59
|
return c.json({ error: "Invoice document generation failed" }, 502);
|
|
35
60
|
}
|
|
36
61
|
return c.json({ data: result });
|
|
62
|
+
})
|
|
63
|
+
.get("/invoice-renditions/:id/download", async (c) => {
|
|
64
|
+
const rendition = await financeService.getInvoiceRenditionById(c.get("db"), c.req.param("id"));
|
|
65
|
+
if (!rendition) {
|
|
66
|
+
return c.json({ error: "Invoice rendition not found" }, 404);
|
|
67
|
+
}
|
|
68
|
+
let location = null;
|
|
69
|
+
if (rendition.storageKey) {
|
|
70
|
+
if (!options.resolveDocumentDownloadUrl) {
|
|
71
|
+
return c.json({ error: "Document download resolver is not configured" }, 501);
|
|
72
|
+
}
|
|
73
|
+
location = await options.resolveDocumentDownloadUrl(c.env, rendition.storageKey);
|
|
74
|
+
}
|
|
75
|
+
location ??= getFallbackDownloadUrl(rendition.metadata);
|
|
76
|
+
if (!location) {
|
|
77
|
+
return c.json({ error: "Invoice document is not available" }, 404);
|
|
78
|
+
}
|
|
79
|
+
return c.redirect(location, 302);
|
|
37
80
|
});
|
|
38
81
|
}
|