@endora-commerce/mod-invoices 0.106.0 → 0.107.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/README.md +7 -8
- package/dist/admin/components/InvoiceSectionTabs.d.ts +8 -0
- package/dist/admin/components/InvoiceSectionTabs.d.ts.map +1 -1
- package/dist/admin/components/InvoiceSectionTabs.js +13 -2
- package/dist/admin/components/InvoiceSectionTabs.js.map +1 -1
- package/dist/admin/document-blocks/InvoiceDivider.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceDivider.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceDivider.js +5 -0
- package/dist/admin/document-blocks/InvoiceDivider.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceFooter.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceFooter.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceFooter.js +5 -0
- package/dist/admin/document-blocks/InvoiceFooter.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceHeader.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceHeader.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceHeader.js +5 -0
- package/dist/admin/document-blocks/InvoiceHeader.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceLineItems.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceLineItems.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceLineItems.js +5 -0
- package/dist/admin/document-blocks/InvoiceLineItems.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceLogo.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceLogo.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceLogo.js +5 -0
- package/dist/admin/document-blocks/InvoiceLogo.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceNotes.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceNotes.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceNotes.js +5 -0
- package/dist/admin/document-blocks/InvoiceNotes.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceParties.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceParties.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceParties.js +5 -0
- package/dist/admin/document-blocks/InvoiceParties.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceSpacer.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceSpacer.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceSpacer.js +5 -0
- package/dist/admin/document-blocks/InvoiceSpacer.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceTotals.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceTotals.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceTotals.js +5 -0
- package/dist/admin/document-blocks/InvoiceTotals.js.map +1 -0
- package/dist/admin/document-blocks/InvoiceVatSummary.d.ts +5 -0
- package/dist/admin/document-blocks/InvoiceVatSummary.d.ts.map +1 -0
- package/dist/admin/document-blocks/InvoiceVatSummary.js +5 -0
- package/dist/admin/document-blocks/InvoiceVatSummary.js.map +1 -0
- package/dist/admin/index.d.ts +3 -1
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +62 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/pages/InvoiceTemplatesRedirect.d.ts +10 -0
- package/dist/admin/pages/InvoiceTemplatesRedirect.d.ts.map +1 -0
- package/dist/admin/pages/InvoiceTemplatesRedirect.js +14 -0
- package/dist/admin/pages/InvoiceTemplatesRedirect.js.map +1 -0
- package/dist/admin/templates/invoice-puck-config.d.ts +7 -21
- package/dist/admin/templates/invoice-puck-config.d.ts.map +1 -1
- package/dist/admin/templates/invoice-puck-config.js +7 -26
- package/dist/admin/templates/invoice-puck-config.js.map +1 -1
- package/dist/backend/document/block-descriptions.d.ts +22 -0
- package/dist/backend/document/block-descriptions.d.ts.map +1 -0
- package/dist/backend/{pdf-components/descriptor.js → document/block-descriptions.js} +8 -24
- package/dist/backend/document/block-descriptions.js.map +1 -0
- package/dist/backend/document/document-templates-grant.d.ts +29 -0
- package/dist/backend/document/document-templates-grant.d.ts.map +1 -0
- package/dist/backend/document/document-templates-grant.js +45 -0
- package/dist/backend/document/document-templates-grant.js.map +1 -0
- package/dist/backend/document/invoice-document-type.d.ts +38 -0
- package/dist/backend/document/invoice-document-type.d.ts.map +1 -0
- package/dist/backend/document/invoice-document-type.js +108 -0
- package/dist/backend/document/invoice-document-type.js.map +1 -0
- package/dist/backend/document/render-invoice.d.ts +14 -0
- package/dist/backend/document/render-invoice.d.ts.map +1 -0
- package/dist/backend/document/render-invoice.js +24 -0
- package/dist/backend/document/render-invoice.js.map +1 -0
- package/dist/backend/index.d.ts +1 -3
- package/dist/backend/index.d.ts.map +1 -1
- package/dist/backend/index.js +48 -6
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/pdf-components/tree-mapper.d.ts +5 -21
- package/dist/backend/pdf-components/tree-mapper.d.ts.map +1 -1
- package/dist/backend/pdf-components/tree-mapper.js +8 -44
- package/dist/backend/pdf-components/tree-mapper.js.map +1 -1
- package/dist/backend/plugin.d.ts +9 -12
- package/dist/backend/plugin.d.ts.map +1 -1
- package/dist/backend/plugin.js +3 -16
- package/dist/backend/plugin.js.map +1 -1
- package/dist/backend/routes.admin.d.ts +3 -5
- package/dist/backend/routes.admin.d.ts.map +1 -1
- package/dist/backend/routes.admin.js +8 -53
- package/dist/backend/routes.admin.js.map +1 -1
- package/dist/backend/routes.customer.d.ts +3 -5
- package/dist/backend/routes.customer.d.ts.map +1 -1
- package/dist/backend/routes.customer.js +3 -3
- package/dist/backend/routes.customer.js.map +1 -1
- package/dist/backend/services/invoice-email-dispatch.d.ts +7 -3
- package/dist/backend/services/invoice-email-dispatch.d.ts.map +1 -1
- package/dist/backend/services/invoice-email-dispatch.js +2 -1
- package/dist/backend/services/invoice-email-dispatch.js.map +1 -1
- package/dist/manifest.d.ts +7 -3
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +25 -14
- package/dist/manifest.js.map +1 -1
- package/dist/migrations/20261017T075839_invoices_drop_invoice_templates.d.ts +20 -0
- package/dist/migrations/20261017T075839_invoices_drop_invoice_templates.d.ts.map +1 -0
- package/dist/migrations/20261017T075839_invoices_drop_invoice_templates.js +43 -0
- package/dist/migrations/20261017T075839_invoices_drop_invoice_templates.js.map +1 -0
- package/dist/migrations/index.d.ts +2 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +3 -1
- package/dist/migrations/index.js.map +1 -1
- package/docs/invoices.md +21 -14
- package/i18n/en.json +3 -3
- package/i18n/pl.json +3 -3
- package/package.json +13 -13
- package/dist/admin/pages/InvoiceTemplateEditor.d.ts +0 -11
- package/dist/admin/pages/InvoiceTemplateEditor.d.ts.map +0 -1
- package/dist/admin/pages/InvoiceTemplateEditor.js +0 -189
- package/dist/admin/pages/InvoiceTemplateEditor.js.map +0 -1
- package/dist/admin/pages/InvoiceTemplatesPage.d.ts +0 -10
- package/dist/admin/pages/InvoiceTemplatesPage.d.ts.map +0 -1
- package/dist/admin/pages/InvoiceTemplatesPage.js +0 -60
- package/dist/admin/pages/InvoiceTemplatesPage.js.map +0 -1
- package/dist/admin/templates/described-blocks.d.ts +0 -67
- package/dist/admin/templates/described-blocks.d.ts.map +0 -1
- package/dist/admin/templates/described-blocks.js +0 -83
- package/dist/admin/templates/described-blocks.js.map +0 -1
- package/dist/admin/templates/invoice-builder-plugin.d.ts +0 -4
- package/dist/admin/templates/invoice-builder-plugin.d.ts.map +0 -1
- package/dist/admin/templates/invoice-builder-plugin.js +0 -12
- package/dist/admin/templates/invoice-builder-plugin.js.map +0 -1
- package/dist/backend/entities/invoice-template.entity.d.ts +0 -22
- package/dist/backend/entities/invoice-template.entity.d.ts.map +0 -1
- package/dist/backend/entities/invoice-template.entity.js +0 -84
- package/dist/backend/entities/invoice-template.entity.js.map +0 -1
- package/dist/backend/pdf-components/descriptor.d.ts +0 -29
- package/dist/backend/pdf-components/descriptor.d.ts.map +0 -1
- package/dist/backend/pdf-components/descriptor.js.map +0 -1
- package/dist/backend/services/invoice-pdf-renderer.d.ts +0 -57
- package/dist/backend/services/invoice-pdf-renderer.d.ts.map +0 -1
- package/dist/backend/services/invoice-pdf-renderer.js +0 -158
- package/dist/backend/services/invoice-pdf-renderer.js.map +0 -1
- package/dist/backend/services/invoice-template-service.d.ts +0 -43
- package/dist/backend/services/invoice-template-service.d.ts.map +0 -1
- package/dist/backend/services/invoice-template-service.js +0 -147
- package/dist/backend/services/invoice-template-service.js.map +0 -1
package/dist/backend/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { effectiveState, lazyPort } from '@endora-commerce/platform/kernel';
|
|
1
|
+
import { effectiveState, enterSystemScope, lazyPort } from '@endora-commerce/platform/kernel';
|
|
2
|
+
import { z } from 'zod';
|
|
2
3
|
import { invoicesModule } from './plugin.js';
|
|
3
4
|
import { CorrectiveInvoiceProvider } from './services/corrective-invoice.js';
|
|
4
5
|
import { ErpSaleDocumentWritePortService } from './services/erp-sale-document-write-port.js';
|
|
@@ -14,7 +15,8 @@ import { INVOICE_ISSUED_DEFAULT } from './email-templates/invoice-issued.default
|
|
|
14
15
|
import { InvoiceExternalAttachment } from './entities/invoice-external-attachment.entity.js';
|
|
15
16
|
import { InvoiceLine } from './entities/invoice-line.entity.js';
|
|
16
17
|
import { InvoiceNumberCounter } from './entities/invoice-number-counter.entity.js';
|
|
17
|
-
import {
|
|
18
|
+
import { createInvoiceDocumentType } from './document/invoice-document-type.js';
|
|
19
|
+
import { GRANT_DONE_SETTING, grantDocumentTemplatesAccess } from './document/document-templates-grant.js';
|
|
18
20
|
import { Invoice } from './entities/invoice.entity.js';
|
|
19
21
|
export function registerModule(ctx) {
|
|
20
22
|
ctx.di.register({
|
|
@@ -61,7 +63,7 @@ export function registerModule(ctx) {
|
|
|
61
63
|
})
|
|
62
64
|
.singleton(),
|
|
63
65
|
invoices: ctx
|
|
64
|
-
.asFunction(({ emFactory, eventBus, auditLogService
|
|
66
|
+
.asFunction(({ emFactory, eventBus, auditLogService }) => {
|
|
65
67
|
const cradle = () => ctx.cradle();
|
|
66
68
|
const result = invoicesModule({
|
|
67
69
|
emFactory,
|
|
@@ -100,7 +102,9 @@ export function registerModule(ctx) {
|
|
|
100
102
|
resolveRecipientEmail: createRecipientEmailResolver(lazyPort(ctx, 'customerAccountReadPort')),
|
|
101
103
|
resolveLanguage: createChannelLanguageResolver(emFactory),
|
|
102
104
|
loadAssetImage: createAssetImageLoader(lazyPort(ctx, 'assetReadPort')),
|
|
103
|
-
|
|
105
|
+
// `specs/152-compare-pdf-template/` — every invoice PDF is produced
|
|
106
|
+
// by `document_templates`, which this manifest binds (owner answer N2).
|
|
107
|
+
documents: lazyPort(ctx, 'documentRenderPort'),
|
|
104
108
|
ledgerRouting: {
|
|
105
109
|
numberingModeFor: async (salesChannelId) => {
|
|
106
110
|
if (!effectiveState.isPresent('invoice_ledger'))
|
|
@@ -164,7 +168,6 @@ export function registerModule(ctx) {
|
|
|
164
168
|
* and asks presence before the call.
|
|
165
169
|
*/
|
|
166
170
|
ctx.di.providePort('invoicePlacementApplyPort', ctx.asFunction(() => new InvoicePlacementApplyService()).singleton());
|
|
167
|
-
ctx.di.providePort('invoicePdfRenderer', ctx.asFunction(({ invoices }) => invoices.handle.pdfRenderer).singleton());
|
|
168
171
|
/**
|
|
169
172
|
* The corrective invoice a return settlement issues (feature 046 / 047 US3),
|
|
170
173
|
* as this module's port instead of a class both roots constructed (T143c).
|
|
@@ -269,6 +272,46 @@ export function registerModule(ctx) {
|
|
|
269
272
|
ctx.onBoot(async () => {
|
|
270
273
|
await ctx.cradle().invoicesNumberingConfiguration.reconcile();
|
|
271
274
|
});
|
|
275
|
+
/**
|
|
276
|
+
* The *Invoice* document type (`specs/152-compare-pdf-template/`), pushed into
|
|
277
|
+
* `document_templates`' registry. A **contribution-only** hook and
|
|
278
|
+
* deliberately without a presence probe: the registry answers a type only
|
|
279
|
+
* while its module is present, so a probe that returned early would leave
|
|
280
|
+
* invoices without a document type after an operator switched them back on,
|
|
281
|
+
* until the next restart.
|
|
282
|
+
*/
|
|
283
|
+
ctx.onBoot(() => {
|
|
284
|
+
const { invoicePdfBlockRegistry, invoices } = ctx.cradle();
|
|
285
|
+
lazyPort(ctx, 'documentTypeRegistry').register(createInvoiceDocumentType({
|
|
286
|
+
contributed: invoicePdfBlockRegistry,
|
|
287
|
+
loadAssetImage: invoices.handle.loadAssetImage,
|
|
288
|
+
}));
|
|
289
|
+
});
|
|
290
|
+
/**
|
|
291
|
+
* Owner answers N3 and P2 — the one-time grant that keeps invoice editors
|
|
292
|
+
* able to edit invoice templates in *Document templates*. A **working** hook,
|
|
293
|
+
* so it decides presence first and outside anything that could catch it
|
|
294
|
+
* (D-68): with invoicing off nothing is written, and the grant runs the first
|
|
295
|
+
* boot invoicing is present again. Once it has run, a hidden setting says so
|
|
296
|
+
* and it never runs again.
|
|
297
|
+
*/
|
|
298
|
+
ctx.onBoot(async () => {
|
|
299
|
+
if (!effectiveState.isPresent('invoices'))
|
|
300
|
+
return;
|
|
301
|
+
const settings = lazyPort(ctx, 'settingsReadPort');
|
|
302
|
+
const settingsAdmin = lazyPort(ctx, 'settingsAdminService');
|
|
303
|
+
await enterSystemScope('invoices: one-time document template access grant', () => grantDocumentTemplatesAccess({
|
|
304
|
+
roles: lazyPort(ctx, 'adminRolePort'),
|
|
305
|
+
isDone: () => settings.get(GRANT_DONE_SETTING, null, z.boolean()),
|
|
306
|
+
markDone: async () => {
|
|
307
|
+
await settingsAdmin.setValueForAllChannels(GRANT_DONE_SETTING, true, null, { actorAdminUserId: null });
|
|
308
|
+
},
|
|
309
|
+
}).then((outcome) => {
|
|
310
|
+
if (outcome.status === 'granted' && outcome.roleCodes.length > 0) {
|
|
311
|
+
ctx.log.info({ roleCodes: outcome.roleCodes }, '[invoices] granted document template access to roles');
|
|
312
|
+
}
|
|
313
|
+
}));
|
|
314
|
+
});
|
|
272
315
|
}
|
|
273
316
|
/**
|
|
274
317
|
* The module's persisted entity classes, on the `./backend` subpath, as one
|
|
@@ -284,7 +327,6 @@ export function registerModule(ctx) {
|
|
|
284
327
|
export const entities = [
|
|
285
328
|
InvoiceLine,
|
|
286
329
|
InvoiceNumberCounter,
|
|
287
|
-
InvoiceTemplate,
|
|
288
330
|
InvoiceExternalAttachment,
|
|
289
331
|
Invoice,
|
|
290
332
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,9 @@ import type { AmountToWordsLocale } from '../services/amount-to-words.js';
|
|
|
5
5
|
* This module's own invoice template blocks — the ten it renders itself.
|
|
6
6
|
*
|
|
7
7
|
* A block another module declares is rendered by that module, through
|
|
8
|
-
* `invoicePdfBlockRegistry` (`specs/134-paid-module-extraction/` T063)
|
|
9
|
-
*
|
|
8
|
+
* `invoicePdfBlockRegistry` (`specs/134-paid-module-extraction/` T063). Since
|
|
9
|
+
* feature 152 the document-template engine walks the tree; this file maps one
|
|
10
|
+
* own block to its section builder.
|
|
10
11
|
*/
|
|
11
12
|
export declare const INVOICE_COMPONENT_NAMES: readonly ["invoices.InvoiceHeader", "invoices.InvoiceParties", "invoices.InvoiceLineItems", "invoices.InvoiceVatSummary", "invoices.InvoiceTotals", "invoices.InvoiceNotes", "invoices.InvoiceSpacer", "invoices.InvoiceDivider", "invoices.InvoiceLogo", "invoices.InvoiceFooter"];
|
|
12
13
|
export type InvoiceComponentName = (typeof INVOICE_COMPONENT_NAMES)[number];
|
|
@@ -15,23 +16,6 @@ export interface OwnBlockRenderOptions {
|
|
|
15
16
|
/** A present, placed contributed block prints the KSeF number (T137). */
|
|
16
17
|
readonly suppressKsefNumber?: boolean;
|
|
17
18
|
}
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
* contributor resolved — or `undefined` when no present module renders `name`.
|
|
21
|
-
*/
|
|
22
|
-
export type ContributedBlockRenderer = (name: string) => ((props: Record<string, unknown>) => Content) | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Map a Puck content tree (one language) to pdfmake content, dispatching each
|
|
25
|
-
* of this module's own blocks to its section builder and every other block to
|
|
26
|
-
* `contributed`. A block nothing renders — its declaring module absent, off or
|
|
27
|
-
* unknown — is skipped without throwing, and its stored props are never
|
|
28
|
-
* touched (feature 096, FR-019/FR-020). Returns `null` when the tree has no
|
|
29
|
-
* renderable block so the caller can fall back to the built-in layout
|
|
30
|
-
* (FR-016); a tree with at least one does not fall back.
|
|
31
|
-
*/
|
|
32
|
-
export declare function treeToContent(tree: unknown, inv: InvoiceDetail, locale: AmountToWordsLocale, contributed?: ContributedBlockRenderer, options?: OwnBlockRenderOptions): Content[] | null;
|
|
33
|
-
/** The block names a tree places, in order — what a render asks contributors to resolve for. */
|
|
34
|
-
export declare function placedBlockNames(tree: unknown): string[];
|
|
35
|
-
/** Extract the per-language Puck tree from a CMS-style content envelope. */
|
|
36
|
-
export declare function pickLanguageTree(content: unknown, language: string): unknown;
|
|
19
|
+
/** Render one of this module's own blocks — `undefined` for any other name. */
|
|
20
|
+
export declare function renderOwnBlock(name: string, props: Record<string, unknown>, inv: InvoiceDetail, locale: AmountToWordsLocale, options?: OwnBlockRenderOptions): Content | undefined;
|
|
37
21
|
//# sourceMappingURL=tree-mapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-mapper.d.ts","sourceRoot":"","sources":["../../../src/backend/pdf-components/tree-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAc1E
|
|
1
|
+
{"version":3,"file":"tree-mapper.d.ts","sourceRoot":"","sources":["../../../src/backend/pdf-components/tree-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAc1E;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,qRAW1B,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAsBD,+EAA+E;AAC/E,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE,qBAA0B,GAClC,OAAO,GAAG,SAAS,CAGrB"}
|
|
@@ -3,8 +3,9 @@ import { headerSection, partiesSection, lineItemsSection, vatSummarySection, tot
|
|
|
3
3
|
* This module's own invoice template blocks — the ten it renders itself.
|
|
4
4
|
*
|
|
5
5
|
* A block another module declares is rendered by that module, through
|
|
6
|
-
* `invoicePdfBlockRegistry` (`specs/134-paid-module-extraction/` T063)
|
|
7
|
-
*
|
|
6
|
+
* `invoicePdfBlockRegistry` (`specs/134-paid-module-extraction/` T063). Since
|
|
7
|
+
* feature 152 the document-template engine walks the tree; this file maps one
|
|
8
|
+
* own block to its section builder.
|
|
8
9
|
*/
|
|
9
10
|
export const INVOICE_COMPONENT_NAMES = [
|
|
10
11
|
'invoices.InvoiceHeader',
|
|
@@ -30,47 +31,10 @@ const COMPONENT_MAP = {
|
|
|
30
31
|
'invoices.InvoiceLogo': (p) => logoSection(p),
|
|
31
32
|
'invoices.InvoiceFooter': (p, inv) => footerSection(p, inv),
|
|
32
33
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* unknown — is skipped without throwing, and its stored props are never
|
|
39
|
-
* touched (feature 096, FR-019/FR-020). Returns `null` when the tree has no
|
|
40
|
-
* renderable block so the caller can fall back to the built-in layout
|
|
41
|
-
* (FR-016); a tree with at least one does not fall back.
|
|
42
|
-
*/
|
|
43
|
-
export function treeToContent(tree, inv, locale, contributed = NO_CONTRIBUTED_BLOCKS, options = {}) {
|
|
44
|
-
const nodes = tree?.content;
|
|
45
|
-
if (!Array.isArray(nodes))
|
|
46
|
-
return null;
|
|
47
|
-
const out = [];
|
|
48
|
-
for (const node of nodes) {
|
|
49
|
-
const type = node?.type;
|
|
50
|
-
if (typeof type !== 'string')
|
|
51
|
-
continue;
|
|
52
|
-
if (type in COMPONENT_MAP) {
|
|
53
|
-
out.push(COMPONENT_MAP[type](node.props ?? {}, inv, locale, options));
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
const render = contributed(type);
|
|
57
|
-
if (render)
|
|
58
|
-
out.push(render(node.props ?? {}));
|
|
59
|
-
}
|
|
60
|
-
return out.length > 0 ? out : null;
|
|
61
|
-
}
|
|
62
|
-
/** The block names a tree places, in order — what a render asks contributors to resolve for. */
|
|
63
|
-
export function placedBlockNames(tree) {
|
|
64
|
-
const nodes = tree?.content;
|
|
65
|
-
if (!Array.isArray(nodes))
|
|
66
|
-
return [];
|
|
67
|
-
return nodes.map((node) => node?.type).filter((type) => typeof type === 'string');
|
|
68
|
-
}
|
|
69
|
-
/** Extract the per-language Puck tree from a CMS-style content envelope. */
|
|
70
|
-
export function pickLanguageTree(content, language) {
|
|
71
|
-
const env = content;
|
|
72
|
-
if (!env?.languages)
|
|
73
|
-
return null;
|
|
74
|
-
return env.languages[language] ?? Object.values(env.languages)[0] ?? null;
|
|
34
|
+
/** Render one of this module's own blocks — `undefined` for any other name. */
|
|
35
|
+
export function renderOwnBlock(name, props, inv, locale, options = {}) {
|
|
36
|
+
if (!(name in COMPONENT_MAP))
|
|
37
|
+
return undefined;
|
|
38
|
+
return COMPONENT_MAP[name](props, inv, locale, options);
|
|
75
39
|
}
|
|
76
40
|
//# sourceMappingURL=tree-mapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-mapper.js","sourceRoot":"","sources":["../../../src/backend/pdf-components/tree-mapper.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB
|
|
1
|
+
{"version":3,"file":"tree-mapper.js","sourceRoot":"","sources":["../../../src/backend/pdf-components/tree-mapper.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,wBAAwB;IACxB,yBAAyB;IACzB,2BAA2B;IAC3B,4BAA4B;IAC5B,wBAAwB;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,yBAAyB;IACzB,sBAAsB;IACtB,wBAAwB;CAChB,CAAC;AAgBX,MAAM,aAAa,GAAyC;IAC1D,wBAAwB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC;IACtF,yBAAyB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,2BAA2B,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;IACjE,4BAA4B,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;IACnE,wBAAwB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3E,uBAAuB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC;IACzD,wBAAwB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACjD,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACnD,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7C,wBAAwB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC;CAC5D,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,KAA8B,EAC9B,GAAkB,EAClB,MAA2B,EAC3B,UAAiC,EAAE;IAEnC,IAAI,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO,aAAa,CAAC,IAA4B,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC"}
|
package/dist/backend/plugin.d.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import type { FastifyInstance, FastifyRequest } from 'fastify';
|
|
2
2
|
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
3
|
-
import type { AssetReadPort, AssetsLibraryPort, InvoiceAttachmentFetchPort, OrderReadPort, OrderRecord, TransactionalEmailSender } from '@endora-commerce/contracts';
|
|
3
|
+
import type { AssetReadPort, AssetsLibraryPort, DocumentRenderPort, InvoiceAttachmentFetchPort, OrderReadPort, OrderRecord, TransactionalEmailSender } from '@endora-commerce/contracts';
|
|
4
4
|
import { InvoiceService, type InvoiceAuditRecorder } from './services/invoice-service.js';
|
|
5
5
|
import type { LedgerNumberingLookup } from './services/vendor-number-hold.js';
|
|
6
6
|
import type { AuditPort } from '@endora-commerce/platform/kernel';
|
|
7
|
-
import { InvoicePdfRenderer } from './services/invoice-pdf-renderer.js';
|
|
8
|
-
import type { InvoicePdfBlockRegistry } from './services/invoice-pdf-block-registry.js';
|
|
9
7
|
import type { LoadAssetImage } from './pdf-components/embed-logo-images.js';
|
|
10
8
|
import { InvoiceNumberGenerator } from './services/invoice-number-generator.js';
|
|
11
9
|
import { type SettingsReader } from './services/seller-settings.js';
|
|
12
10
|
import { InvoiceEmailDispatcher } from './services/invoice-email-dispatch.js';
|
|
13
|
-
import { InvoiceTemplateService } from './services/invoice-template-service.js';
|
|
14
11
|
import { createAutoIssueReactor } from './services/auto-issue-reactor.js';
|
|
15
12
|
import type { RequireAdminFactory } from '@endora-commerce/platform/kernel';
|
|
16
13
|
/**
|
|
@@ -81,29 +78,29 @@ export interface InvoicesModuleOptions {
|
|
|
81
78
|
eventBus?: InvoicesEventBus;
|
|
82
79
|
/** FR-035 — audit-log recorder for issuance / correction. */
|
|
83
80
|
audit?: InvoiceAuditRecorder;
|
|
84
|
-
/** Feature 054 — full audit sink
|
|
81
|
+
/** Feature 054 — the full audit sink (co-transactional). */
|
|
85
82
|
auditLog?: AuditPort;
|
|
86
83
|
/**
|
|
87
84
|
* Load image bytes for InvoiceLogo from the Assets Library (avoids pdfmake
|
|
88
|
-
* self-fetching `/assets/file/:id`
|
|
85
|
+
* self-fetching `/assets/file/:id`). Used by the invoice document type's logo
|
|
86
|
+
* block; kept on the handle for the wiring test (D-223).
|
|
89
87
|
*/
|
|
90
88
|
loadAssetImage: LoadAssetImage;
|
|
91
89
|
/** Mode B wait. Absent ledger degrades to today's ready path. */
|
|
92
90
|
ledgerRouting?: LedgerNumberingLookup;
|
|
93
91
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
92
|
+
* `document_templates`' render port — every invoice PDF is produced through
|
|
93
|
+
* it since `specs/152-compare-pdf-template/` (the download, the regenerate,
|
|
94
|
+
* the customer download and the e-mail attachment). `invoices` binds the
|
|
95
|
+
* facility (owner answer N2), so it is resolved without a presence probe.
|
|
97
96
|
*/
|
|
98
|
-
|
|
97
|
+
documents: Pick<DocumentRenderPort, 'render'>;
|
|
99
98
|
}
|
|
100
99
|
export interface InvoicesModuleHandle {
|
|
101
100
|
/** FR-002 reactor; `backend.ts` owns its subscription. */
|
|
102
101
|
autoIssueReactor: ReturnType<typeof createAutoIssueReactor>;
|
|
103
102
|
invoiceService: InvoiceService;
|
|
104
|
-
pdfRenderer: InvoicePdfRenderer;
|
|
105
103
|
numberGenerator: InvoiceNumberGenerator;
|
|
106
|
-
templateService: InvoiceTemplateService;
|
|
107
104
|
emailDispatcher: InvoiceEmailDispatcher;
|
|
108
105
|
/**
|
|
109
106
|
* The logo loader this module resolved for itself (T118c).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,aAAa,EACb,WAAW,EACX,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/backend/plugin.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { InvoiceService } from './services/invoice-service.js';
|
|
2
|
-
import { InvoicePdfRenderer } from './services/invoice-pdf-renderer.js';
|
|
3
2
|
import { InvoiceNumberGenerator, createSettingsPatternResolver } from './services/invoice-number-generator.js';
|
|
4
3
|
import { SellerSettingsResolver } from './services/seller-settings.js';
|
|
5
4
|
import { InvoiceEmailDispatcher } from './services/invoice-email-dispatch.js';
|
|
6
|
-
import { InvoiceTemplateService } from './services/invoice-template-service.js';
|
|
7
5
|
import { createAutoIssueReactor } from './services/auto-issue-reactor.js';
|
|
8
6
|
import { registerInvoicesAdminRoutes } from './routes.admin.js';
|
|
9
7
|
import { registerInvoicesCustomerRoutes } from './routes.customer.js';
|
|
@@ -18,11 +16,6 @@ export function invoicesModule(options) {
|
|
|
18
16
|
: undefined, async (invoiceId) => {
|
|
19
17
|
await emailOnReadyHolder.dispatch?.(invoiceId);
|
|
20
18
|
}, options.ledgerRouting);
|
|
21
|
-
const pdfRenderer = new InvoicePdfRenderer({
|
|
22
|
-
loadAssetImage: options.loadAssetImage,
|
|
23
|
-
blocks: options.pdfBlocks,
|
|
24
|
-
});
|
|
25
|
-
const templateService = new InvoiceTemplateService(options.emFactory, options.auditLog);
|
|
26
19
|
// T118c — built unconditionally. The three inputs used to be optional bridge
|
|
27
20
|
// members, so a composition that supplied two of the three got no dispatcher
|
|
28
21
|
// at all and every issued invoice answered `not_sent` / `no_sender` — a
|
|
@@ -31,7 +24,7 @@ export function invoicesModule(options) {
|
|
|
31
24
|
const emailDispatcher = new InvoiceEmailDispatcher({
|
|
32
25
|
orderReadPort: options.orderReadPort,
|
|
33
26
|
invoiceService,
|
|
34
|
-
|
|
27
|
+
documents: options.documents,
|
|
35
28
|
settingsService: options.settingsService,
|
|
36
29
|
getSender: options.getTransactionalEmailSender,
|
|
37
30
|
resolveRecipientEmail: options.resolveRecipientEmail,
|
|
@@ -51,22 +44,17 @@ export function invoicesModule(options) {
|
|
|
51
44
|
const handle = {
|
|
52
45
|
autoIssueReactor,
|
|
53
46
|
invoiceService,
|
|
54
|
-
pdfRenderer,
|
|
55
47
|
numberGenerator,
|
|
56
|
-
templateService,
|
|
57
48
|
emailDispatcher,
|
|
58
49
|
loadAssetImage: options.loadAssetImage,
|
|
59
50
|
};
|
|
60
51
|
const plugin = async (app) => {
|
|
61
|
-
// Seed the system generic template once (idempotent).
|
|
62
|
-
await templateService.ensureGenericSeed().catch(() => undefined);
|
|
63
52
|
await registerInvoicesAdminRoutes(app, {
|
|
64
53
|
emFactory: options.emFactory,
|
|
65
54
|
orderReadPort: options.orderReadPort,
|
|
66
55
|
requireAdmin: options.requireAdmin,
|
|
67
56
|
invoiceService,
|
|
68
|
-
|
|
69
|
-
templateService,
|
|
57
|
+
documents: options.documents,
|
|
70
58
|
emailDispatcher,
|
|
71
59
|
resolveAdminUserId: options.resolveAdminUserId,
|
|
72
60
|
});
|
|
@@ -78,8 +66,7 @@ export function invoicesModule(options) {
|
|
|
78
66
|
requireCustomer: options.requireCustomer,
|
|
79
67
|
resolveCustomerContext: options.resolveCustomerContext,
|
|
80
68
|
invoiceService,
|
|
81
|
-
|
|
82
|
-
templateService,
|
|
69
|
+
documents: options.documents,
|
|
83
70
|
});
|
|
84
71
|
};
|
|
85
72
|
return { handle, plugin };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import type { FastifyInstance, FastifyRequest } from 'fastify';
|
|
2
2
|
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
3
|
-
import { type OrderReadPort } from '@endora-commerce/contracts';
|
|
3
|
+
import { type DocumentRenderPort, type OrderReadPort } from '@endora-commerce/contracts';
|
|
4
4
|
import type { InvoiceService } from './services/invoice-service.js';
|
|
5
|
-
import type { InvoicePdfRenderer } from './services/invoice-pdf-renderer.js';
|
|
6
|
-
import type { InvoiceTemplateService } from './services/invoice-template-service.js';
|
|
7
5
|
import type { RequireAdminFactory } from '@endora-commerce/platform/kernel';
|
|
8
6
|
import type { InvoiceEmailDispatchResult } from './services/invoice-email-dispatch.js';
|
|
9
7
|
/** Minimal email-dispatch seam — implemented by the US5 dispatcher. */
|
|
@@ -25,8 +23,8 @@ export interface InvoicesAdminDeps {
|
|
|
25
23
|
orderReadPort: OrderReadPort;
|
|
26
24
|
requireAdmin: RequireAdminFactory;
|
|
27
25
|
invoiceService: InvoiceService;
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
/** `document_templates`' render port (`specs/152-compare-pdf-template/`). */
|
|
27
|
+
documents: Pick<DocumentRenderPort, 'render'>;
|
|
30
28
|
/**
|
|
31
29
|
* T118c — required, both of them. Each was optional because the *bridge*
|
|
32
30
|
* member behind it was, and a composition that omitted one got a route that
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.admin.d.ts","sourceRoot":"","sources":["../../src/backend/routes.admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"routes.admin.d.ts","sourceRoot":"","sources":["../../src/backend/routes.admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,KAAK,kBAAkB,EAIvB,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,uEAAuE;AACvE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1D,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACvC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,aAAa,CAAC;IAC/B,6DAA6D;IAC7D,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,mBAAmB,CAAC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,6EAA6E;IAC7E,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAC9C;;;;;;OAMG;IACH,eAAe,EAAE,sBAAsB,CAAC;IACxC,kBAAkB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5D;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CA2Jf"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { issueInvoiceRequestSchema, sendInvoiceEmailRequestSchema, } from '@endora-commerce/contracts';
|
|
2
2
|
import { Invoice } from './entities/invoice.entity.js';
|
|
3
3
|
import { isOrgInScope } from '@endora-commerce/platform/tenancy';
|
|
4
|
-
import {
|
|
5
|
-
import { invoicePageBuilderDescriptor } from './pdf-components/descriptor.js';
|
|
6
|
-
import { sampleInvoiceDetail } from './pdf-components/sample.js';
|
|
7
|
-
import { pickLanguageTree } from './pdf-components/tree-mapper.js';
|
|
8
|
-
const RENDER_LANGUAGE = 'pl-PL';
|
|
4
|
+
import { renderInvoicePdf } from './document/render-invoice.js';
|
|
9
5
|
export async function registerInvoicesAdminRoutes(app, deps) {
|
|
10
|
-
const { emFactory, orderReadPort, requireAdmin, invoiceService,
|
|
6
|
+
const { emFactory, orderReadPort, requireAdmin, invoiceService, documents } = deps;
|
|
11
7
|
// List ------------------------------------------------------------------
|
|
12
8
|
app.get('/api/v1/admin/invoices', { preHandler: requireAdmin('invoices:read') }, async (request) => {
|
|
13
9
|
const q = (request.query ?? {});
|
|
@@ -80,8 +76,7 @@ export async function registerInvoicesAdminRoutes(app, deps) {
|
|
|
80
76
|
// PDF (rendered on demand) ---------------------------------------------
|
|
81
77
|
app.get('/api/v1/admin/invoices/:id/pdf', { preHandler: requireAdmin('invoices:read'), config: { streamingResponse: true } }, async (request, reply) => {
|
|
82
78
|
const detail = await invoiceService.buildDetail(request.params.id);
|
|
83
|
-
const
|
|
84
|
-
const pdf = await pdfRenderer.render(detail, 'pl', tree);
|
|
79
|
+
const pdf = await renderInvoicePdf(documents, detail);
|
|
85
80
|
reply
|
|
86
81
|
.header('content-type', 'application/pdf')
|
|
87
82
|
.header('content-disposition', `attachment; filename="invoice-${detail.number.replace(/\W+/g, '_')}.pdf"`);
|
|
@@ -103,13 +98,12 @@ export async function registerInvoicesAdminRoutes(app, deps) {
|
|
|
103
98
|
return { data: detail, email };
|
|
104
99
|
});
|
|
105
100
|
// Regenerate PDF — the PDF is rendered on demand, so "regenerate" actually
|
|
106
|
-
// re-runs the full render pipeline (template
|
|
101
|
+
// re-runs the full render pipeline (document template + pdfmake) to validate that
|
|
107
102
|
// a fresh document can be produced and to surface any rendering error to the
|
|
108
103
|
// operator instead of silently doing nothing. Returns the refreshed detail.
|
|
109
104
|
app.post('/api/v1/admin/invoices/:id/regenerate-pdf', { preHandler: requireAdmin('invoices:write') }, async (request) => {
|
|
110
105
|
const detail = await invoiceService.buildDetail(request.params.id);
|
|
111
|
-
|
|
112
|
-
await pdfRenderer.render(detail, 'pl', tree);
|
|
106
|
+
await renderInvoicePdf(documents, detail);
|
|
113
107
|
return { data: detail };
|
|
114
108
|
});
|
|
115
109
|
// (Re)send the invoice email -------------------------------------------
|
|
@@ -132,48 +126,9 @@ export async function registerInvoicesAdminRoutes(app, deps) {
|
|
|
132
126
|
data: result.sent ? { ok: true } : { ok: false, reason: result.reason },
|
|
133
127
|
};
|
|
134
128
|
});
|
|
135
|
-
//
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
app.get('/api/v1/admin/invoice-templates/:id', { preHandler: requireAdmin('invoices:read') }, async (request) => ({ data: await templateService.get(request.params.id) }));
|
|
139
|
-
const createTemplateSchema = z.object({
|
|
140
|
-
code: z.string().min(1).max(180),
|
|
141
|
-
name: z.string().min(1).max(200),
|
|
142
|
-
salesChannelId: z.string().uuid().nullable().optional(),
|
|
143
|
-
});
|
|
144
|
-
app.post('/api/v1/admin/invoice-templates', { preHandler: requireAdmin('invoices:write'), schema: { body: createTemplateSchema } }, async (request, reply) => {
|
|
145
|
-
const body = createTemplateSchema.parse(request.body);
|
|
146
|
-
const created = await templateService.create({
|
|
147
|
-
code: body.code,
|
|
148
|
-
name: body.name,
|
|
149
|
-
salesChannelId: body.salesChannelId ?? null,
|
|
150
|
-
});
|
|
151
|
-
reply.status(201);
|
|
152
|
-
return { data: created };
|
|
153
|
-
});
|
|
154
|
-
const saveContentSchema = z.object({ data: z.unknown(), version: z.number().int() });
|
|
155
|
-
app.put('/api/v1/admin/invoice-templates/:id/content/:language', { preHandler: requireAdmin('invoices:write'), schema: { body: saveContentSchema } }, async (request) => {
|
|
156
|
-
const body = saveContentSchema.parse(request.body);
|
|
157
|
-
return {
|
|
158
|
-
data: await templateService.saveContent(request.params.id, request.params.language, body.data, body.version),
|
|
159
|
-
};
|
|
160
|
-
});
|
|
161
|
-
// Preview: sample invoice through this template's saved tree (GET) or a draft
|
|
162
|
-
// canvas tree (POST) without persisting.
|
|
163
|
-
app.get('/api/v1/admin/invoice-templates/:id/preview', { preHandler: requireAdmin('invoices:write'), config: { streamingResponse: true } }, async (request, reply) => {
|
|
164
|
-
const tpl = await templateService.get(request.params.id);
|
|
165
|
-
const tree = pickLanguageTree(tpl.content, RENDER_LANGUAGE);
|
|
166
|
-
const pdf = await pdfRenderer.render(sampleInvoiceDetail(), 'en', tree);
|
|
167
|
-
reply.header('content-type', 'application/pdf').header('content-disposition', 'inline; filename="preview.pdf"');
|
|
168
|
-
return reply.send(pdf);
|
|
169
|
-
});
|
|
170
|
-
app.post('/api/v1/admin/invoice-templates/:id/preview', { preHandler: requireAdmin('invoices:write') }, async (request, reply) => {
|
|
171
|
-
await templateService.get(request.params.id); // 404 if missing
|
|
172
|
-
const body = z.object({ data: z.unknown() }).parse(request.body);
|
|
173
|
-
const pdf = await pdfRenderer.render(sampleInvoiceDetail(), 'en', body.data);
|
|
174
|
-
reply.header('content-type', 'application/pdf').header('content-disposition', 'inline; filename="preview.pdf"');
|
|
175
|
-
return reply.send(pdf);
|
|
176
|
-
});
|
|
129
|
+
// The invoice-template administration API (`/api/v1/admin/invoice-templates*`)
|
|
130
|
+
// was withdrawn when invoice templates moved into *Document templates*
|
|
131
|
+
// (`specs/152-compare-pdf-template/`, owner answer N4).
|
|
177
132
|
}
|
|
178
133
|
/**
|
|
179
134
|
* Send-on-issue, and what became of it (issue #149).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.admin.js","sourceRoot":"","sources":["../../src/backend/routes.admin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routes.admin.js","sourceRoot":"","sources":["../../src/backend/routes.admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import type { FastifyInstance, FastifyRequest } from 'fastify';
|
|
2
2
|
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
3
|
-
import { type AssetsLibraryPort, type InvoiceAttachmentFetchPort, type OrderReadPort } from '@endora-commerce/contracts';
|
|
3
|
+
import { type AssetsLibraryPort, type DocumentRenderPort, type InvoiceAttachmentFetchPort, type OrderReadPort } from '@endora-commerce/contracts';
|
|
4
4
|
import type { InvoiceService } from './services/invoice-service.js';
|
|
5
|
-
import type { InvoicePdfRenderer } from './services/invoice-pdf-renderer.js';
|
|
6
|
-
import type { InvoiceTemplateService } from './services/invoice-template-service.js';
|
|
7
5
|
export interface InvoicesCustomerDeps {
|
|
8
6
|
emFactory: () => EntityManager;
|
|
9
7
|
/** `orders`' published read model — the ownership check (feature 075, Phase C). */
|
|
@@ -21,8 +19,8 @@ export interface InvoicesCustomerDeps {
|
|
|
21
19
|
organizationId: string;
|
|
22
20
|
};
|
|
23
21
|
invoiceService: InvoiceService;
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
/** `document_templates`' render port (`specs/152-compare-pdf-template/`). */
|
|
23
|
+
documents: Pick<DocumentRenderPort, 'render'>;
|
|
26
24
|
}
|
|
27
25
|
/**
|
|
28
26
|
* Storefront customer invoice routes (feature 047, US4). A customer lists and
|