@endora-commerce/mod-invoices 0.105.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 +9 -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
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { InvoiceTemplateBlockField } from '@endora-commerce/contracts';
|
|
2
|
-
import type { InvoicePdfBlockRegistry } from '../services/invoice-pdf-block-registry.js';
|
|
3
|
-
/**
|
|
4
|
-
* Page-builder descriptor for the invoice template WYSIWYG palette (US6).
|
|
5
|
-
* Served to the admin editor so it can offer the bounded invoice component set.
|
|
6
|
-
*
|
|
7
|
-
* The field shape is the published contract's, because a contributed block
|
|
8
|
-
* describes its own fields (`specs/134-paid-module-extraction/` T063).
|
|
9
|
-
*/
|
|
10
|
-
export type InvoiceComponentField = InvoiceTemplateBlockField;
|
|
11
|
-
export interface InvoiceComponentDescriptor {
|
|
12
|
-
name: string;
|
|
13
|
-
ownerModule: string;
|
|
14
|
-
label: string;
|
|
15
|
-
fields: Record<string, InvoiceComponentField>;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* The descriptor `GET /api/v1/admin/invoice-templates/page-builder/config`
|
|
19
|
-
* serves: this module's ten blocks, then every present contributor's.
|
|
20
|
-
*
|
|
21
|
-
* Built per request rather than held as a constant, because a contributor's
|
|
22
|
-
* presence is read on every call — switching one off removes its block from
|
|
23
|
-
* the palette description without a restart, and switching it on restores it.
|
|
24
|
-
*/
|
|
25
|
-
export declare function invoicePageBuilderDescriptor(blocks: InvoicePdfBlockRegistry): {
|
|
26
|
-
schemaVersion: 1;
|
|
27
|
-
components: InvoiceComponentDescriptor[];
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=descriptor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/backend/pdf-components/descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAGzF;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAE9D,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAC/C;AA+MD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,uBAAuB,GAAG;IAC7E,aAAa,EAAE,CAAC,CAAC;IACjB,UAAU,EAAE,0BAA0B,EAAE,CAAC;CAC1C,CAkBA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../../src/backend/pdf-components/descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { Content } from 'pdfmake/interfaces.js';
|
|
2
|
-
import type { InvoiceDetail } from '@endora-commerce/contracts';
|
|
3
|
-
import type { AmountToWordsLocale } from './amount-to-words.js';
|
|
4
|
-
import { InvoicePdfBlockRegistry } from './invoice-pdf-block-registry.js';
|
|
5
|
-
import { type LoadAssetImage } from '../pdf-components/embed-logo-images.js';
|
|
6
|
-
export type InvoicePdfRendererOptions = {
|
|
7
|
-
/** Load library asset bytes for InvoiceLogo (avoids pdfmake self-HTTP). */
|
|
8
|
-
loadAssetImage?: LoadAssetImage;
|
|
9
|
-
/**
|
|
10
|
-
* The blocks other modules render (T063/T126). Defaults to an empty,
|
|
11
|
-
* always-present registry, so a renderer a unit test builds renders this
|
|
12
|
-
* module's own blocks and nothing else.
|
|
13
|
-
*/
|
|
14
|
-
blocks?: InvoicePdfBlockRegistry;
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Renders an invoice to a PDF Buffer using pdfmake (feature 047, R1/R2/US6).
|
|
18
|
-
*
|
|
19
|
-
* When a WYSIWYG (Puck) template tree is supplied and yields renderable invoice
|
|
20
|
-
* components, the PDF follows that layout; otherwise it falls back to the
|
|
21
|
-
* built-in generic layout (FR-016). Both paths share the same section builders.
|
|
22
|
-
*/
|
|
23
|
-
export declare class InvoicePdfRenderer {
|
|
24
|
-
#private;
|
|
25
|
-
/**
|
|
26
|
-
* The contributed-block seam — the generalisation of the
|
|
27
|
-
* `setKsefVerificationResolver` this class carried from feature 059 to 134.
|
|
28
|
-
*
|
|
29
|
-
* That setter was one vendor's contribution point: a composition root had to
|
|
30
|
-
* call it after building both modules, which only this repository's
|
|
31
|
-
* reference root did, so on an instance composed through the platform the
|
|
32
|
-
* PDF carried no KSeF verification block while `ksef` was installed and on
|
|
33
|
-
* (`research.md` D16 §1 item 7). A contributor now registers the whole block —
|
|
34
|
-
* renderer, description and the per-render data it needs — from its own
|
|
35
|
-
* composition, and every render path reads it here.
|
|
36
|
-
*/
|
|
37
|
-
readonly blocks: InvoicePdfBlockRegistry;
|
|
38
|
-
constructor(opts?: InvoicePdfRendererOptions);
|
|
39
|
-
render(invoice: InvoiceDetail, locale?: AmountToWordsLocale, templateTree?: unknown): Promise<Buffer>;
|
|
40
|
-
/**
|
|
41
|
-
* The pdfmake content an invoice renders to — the template's blocks, or the
|
|
42
|
-
* built-in layout when the template places none this module or a present
|
|
43
|
-
* contributor renders (FR-016).
|
|
44
|
-
*
|
|
45
|
-
* Public because it is the one place every render path meets, which makes it
|
|
46
|
-
* the place a test asserts what a PDF carries without parsing one.
|
|
47
|
-
*/
|
|
48
|
-
content(invoice: InvoiceDetail, locale?: AmountToWordsLocale, templateTree?: unknown): Promise<Content[]>;
|
|
49
|
-
/**
|
|
50
|
-
* Each block's per-render data, read once. A rejection is the block's `null`:
|
|
51
|
-
* the data is an enrichment, and an invoice — a legal document — never fails
|
|
52
|
-
* to render on it. The `catch` is around a contributed callback, not a port.
|
|
53
|
-
*/
|
|
54
|
-
private resolveContributed;
|
|
55
|
-
private buildDoc;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=invoice-pdf-renderer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invoice-pdf-renderer.d.ts","sourceRoot":"","sources":["../../../src/backend/services/invoice-pdf-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAyC,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAA+B,MAAM,4BAA4B,CAAC;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAchE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,wCAAwC,CAAC;AA+DhD,MAAM,MAAM,yBAAyB,GAAG;IACtC,2EAA2E;IAC3E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,kBAAkB;;IAG7B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;gBAE7B,IAAI,GAAE,yBAA8B;IAK1C,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,MAAM,GAAE,mBAA0B,EAClC,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,MAAM,CAAC;IAWlB;;;;;;;OAOG;IACG,OAAO,CACX,OAAO,EAAE,aAAa,EACtB,MAAM,GAAE,mBAA0B,EAClC,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,OAAO,EAAE,CAAC;IAgDrB;;;;OAIG;YACW,kBAAkB;IAgBhC,OAAO,CAAC,QAAQ;CASjB"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { createRequire } from 'node:module';
|
|
3
|
-
import { headerSection, partiesSection, lineItemsSection, vatSummarySection, totalsSection, } from '../pdf-components/sections.js';
|
|
4
|
-
import { INVOICE_COMPONENT_NAMES, placedBlockNames, treeToContent, } from '../pdf-components/tree-mapper.js';
|
|
5
|
-
import { InvoicePdfBlockRegistry } from './invoice-pdf-block-registry.js';
|
|
6
|
-
import { embedInvoiceLogoImages, } from '../pdf-components/embed-logo-images.js';
|
|
7
|
-
const requireFromHere = createRequire(import.meta.url);
|
|
8
|
-
const pdfMake = requireFromHere('pdfmake');
|
|
9
|
-
function buildFontDictionary() {
|
|
10
|
-
const fontsDir = requireFromHere
|
|
11
|
-
.resolve('pdfmake/package.json')
|
|
12
|
-
.replace(/package\.json$/, `fonts${path.sep}Roboto${path.sep}`);
|
|
13
|
-
return {
|
|
14
|
-
Roboto: {
|
|
15
|
-
normal: `${fontsDir}Roboto-Regular.ttf`,
|
|
16
|
-
bold: `${fontsDir}Roboto-Medium.ttf`,
|
|
17
|
-
italics: `${fontsDir}Roboto-Italic.ttf`,
|
|
18
|
-
bolditalics: `${fontsDir}Roboto-MediumItalic.ttf`,
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
let fontsRegistered = false;
|
|
23
|
-
/**
|
|
24
|
-
* Built-in generic layout — the FR-016 fallback when no valid template exists.
|
|
25
|
-
*
|
|
26
|
-
* Its last entries are the present contributors' blocks, with their default
|
|
27
|
-
* props. That is where `ksefSection(inv)` used to be written out: a use of the
|
|
28
|
-
* KSeF block the E4 ruling's table did not list, generalised with the other
|
|
29
|
-
* four rather than kept (`specs/134-paid-module-extraction/` T063).
|
|
30
|
-
*/
|
|
31
|
-
function builtinLayout(inv, locale, contributed, suppressKsefNumber) {
|
|
32
|
-
return [
|
|
33
|
-
headerSection(inv, {}, { suppressKsefNumber }),
|
|
34
|
-
partiesSection(inv),
|
|
35
|
-
lineItemsSection(inv),
|
|
36
|
-
{
|
|
37
|
-
columns: [
|
|
38
|
-
{ width: '55%', stack: [vatSummarySection(inv)] },
|
|
39
|
-
{ width: '45%', stack: [totalsSection(inv, locale)] },
|
|
40
|
-
],
|
|
41
|
-
margin: [0, 0, 0, 16],
|
|
42
|
-
},
|
|
43
|
-
...(inv.kind === 'correction' && inv.originalInvoiceId
|
|
44
|
-
? [{ text: 'Dokument korygujący do faktury pierwotnej.', italics: true, margin: [0, 0, 0, 8] }]
|
|
45
|
-
: []),
|
|
46
|
-
...contributed,
|
|
47
|
-
];
|
|
48
|
-
}
|
|
49
|
-
const OWN_BLOCKS = new Set(INVOICE_COMPONENT_NAMES);
|
|
50
|
-
/**
|
|
51
|
-
* Renders an invoice to a PDF Buffer using pdfmake (feature 047, R1/R2/US6).
|
|
52
|
-
*
|
|
53
|
-
* When a WYSIWYG (Puck) template tree is supplied and yields renderable invoice
|
|
54
|
-
* components, the PDF follows that layout; otherwise it falls back to the
|
|
55
|
-
* built-in generic layout (FR-016). Both paths share the same section builders.
|
|
56
|
-
*/
|
|
57
|
-
export class InvoicePdfRenderer {
|
|
58
|
-
#loadAssetImage;
|
|
59
|
-
/**
|
|
60
|
-
* The contributed-block seam — the generalisation of the
|
|
61
|
-
* `setKsefVerificationResolver` this class carried from feature 059 to 134.
|
|
62
|
-
*
|
|
63
|
-
* That setter was one vendor's contribution point: a composition root had to
|
|
64
|
-
* call it after building both modules, which only this repository's
|
|
65
|
-
* reference root did, so on an instance composed through the platform the
|
|
66
|
-
* PDF carried no KSeF verification block while `ksef` was installed and on
|
|
67
|
-
* (`research.md` D16 §1 item 7). A contributor now registers the whole block —
|
|
68
|
-
* renderer, description and the per-render data it needs — from its own
|
|
69
|
-
* composition, and every render path reads it here.
|
|
70
|
-
*/
|
|
71
|
-
blocks;
|
|
72
|
-
constructor(opts = {}) {
|
|
73
|
-
this.#loadAssetImage = opts.loadAssetImage;
|
|
74
|
-
this.blocks = opts.blocks ?? new InvoicePdfBlockRegistry();
|
|
75
|
-
}
|
|
76
|
-
async render(invoice, locale = 'pl', templateTree) {
|
|
77
|
-
if (!fontsRegistered) {
|
|
78
|
-
pdfMake.setFonts(buildFontDictionary());
|
|
79
|
-
// Images are inlined as data URIs by embedInvoiceLogoImages — deny network.
|
|
80
|
-
pdfMake.setUrlAccessPolicy(() => false);
|
|
81
|
-
fontsRegistered = true;
|
|
82
|
-
}
|
|
83
|
-
const content = await this.content(invoice, locale, templateTree);
|
|
84
|
-
return pdfMake.createPdf(this.buildDoc(content)).getBuffer();
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* The pdfmake content an invoice renders to — the template's blocks, or the
|
|
88
|
-
* built-in layout when the template places none this module or a present
|
|
89
|
-
* contributor renders (FR-016).
|
|
90
|
-
*
|
|
91
|
-
* Public because it is the one place every render path meets, which makes it
|
|
92
|
-
* the place a test asserts what a PDF carries without parsing one.
|
|
93
|
-
*/
|
|
94
|
-
async content(invoice, locale = 'pl', templateTree) {
|
|
95
|
-
const tree = templateTree
|
|
96
|
-
? await embedInvoiceLogoImages(templateTree, this.#loadAssetImage)
|
|
97
|
-
: undefined;
|
|
98
|
-
const present = this.blocks.present();
|
|
99
|
-
const placed = tree ? new Set(placedBlockNames(tree)) : null;
|
|
100
|
-
const resolved = await this.resolveContributed(invoice.id, present.filter((block) => placed === null || placed.has(block.name)));
|
|
101
|
-
const contributed = (name) => {
|
|
102
|
-
if (OWN_BLOCKS.has(name))
|
|
103
|
-
return undefined;
|
|
104
|
-
const block = this.blocks.find(name);
|
|
105
|
-
if (!block)
|
|
106
|
-
return undefined;
|
|
107
|
-
return (props) => block.render({ props, invoice, locale, resolved: resolved.get(name) ?? null });
|
|
108
|
-
};
|
|
109
|
-
// T137 (D22 §3(a)): the KSeF number is printed exactly once. The header
|
|
110
|
-
// stands down only while a block that prints it is present **and placed**
|
|
111
|
-
// in this tree; otherwise the header prints it, whatever any module's state.
|
|
112
|
-
const printsNumber = present.filter((block) => block.printsKsefReferenceNumber === true);
|
|
113
|
-
const suppressInTree = placed !== null && printsNumber.some((block) => placed.has(block.name));
|
|
114
|
-
const fromTemplate = tree
|
|
115
|
-
? treeToContent(tree, invoice, locale, contributed, { suppressKsefNumber: suppressInTree })
|
|
116
|
-
: null;
|
|
117
|
-
if (fromTemplate)
|
|
118
|
-
return fromTemplate;
|
|
119
|
-
const fallbackResolved = placed === null ? resolved : await this.resolveContributed(invoice.id, present);
|
|
120
|
-
return builtinLayout(invoice, locale, present.map((block) => block.render({
|
|
121
|
-
props: {},
|
|
122
|
-
invoice,
|
|
123
|
-
locale,
|
|
124
|
-
resolved: fallbackResolved.get(block.name) ?? null,
|
|
125
|
-
})),
|
|
126
|
-
// The built-in layout places every present contributor's block.
|
|
127
|
-
printsNumber.length > 0);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Each block's per-render data, read once. A rejection is the block's `null`:
|
|
131
|
-
* the data is an enrichment, and an invoice — a legal document — never fails
|
|
132
|
-
* to render on it. The `catch` is around a contributed callback, not a port.
|
|
133
|
-
*/
|
|
134
|
-
async resolveContributed(invoiceId, blocks) {
|
|
135
|
-
const out = new Map();
|
|
136
|
-
for (const block of blocks) {
|
|
137
|
-
if (!block.resolve)
|
|
138
|
-
continue;
|
|
139
|
-
try {
|
|
140
|
-
out.set(block.name, (await block.resolve(invoiceId)) ?? null);
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
out.set(block.name, null);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return out;
|
|
147
|
-
}
|
|
148
|
-
buildDoc(content) {
|
|
149
|
-
return {
|
|
150
|
-
pageSize: 'A4',
|
|
151
|
-
pageMargins: [40, 40, 40, 48],
|
|
152
|
-
defaultStyle: { fontSize: 10, font: 'Roboto' },
|
|
153
|
-
styles: { docTitle: { fontSize: 14, bold: true } },
|
|
154
|
-
content,
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=invoice-pdf-renderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invoice-pdf-renderer.js","sourceRoot":"","sources":["../../../src/backend/services/invoice-pdf-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
2
|
-
import type { AuditPort } from '@endora-commerce/platform/kernel';
|
|
3
|
-
export interface InvoiceTemplateSummary {
|
|
4
|
-
id: string;
|
|
5
|
-
code: string;
|
|
6
|
-
name: string;
|
|
7
|
-
salesChannelId: string | null;
|
|
8
|
-
languages: string[];
|
|
9
|
-
active: boolean;
|
|
10
|
-
isSystem: boolean;
|
|
11
|
-
version: number;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Invoice template CRUD + resolution (feature 047, US6). One seeded global
|
|
15
|
-
* generic template (system); optional per-channel overrides. Resolution:
|
|
16
|
-
* per-channel active → global active → seeded generic (FR-015/016).
|
|
17
|
-
*/
|
|
18
|
-
export declare class InvoiceTemplateService {
|
|
19
|
-
#private;
|
|
20
|
-
private readonly emFactory;
|
|
21
|
-
private readonly auditLog?;
|
|
22
|
-
constructor(emFactory: () => EntityManager, auditLog?: AuditPort | undefined);
|
|
23
|
-
/**
|
|
24
|
-
* Install or refresh the system generic template (lifecycle / boot).
|
|
25
|
-
* When the on-disk seed revision advances, existing `generic` system rows
|
|
26
|
-
* are rewritten so admin editors see the current default props/layout.
|
|
27
|
-
*/
|
|
28
|
-
ensureGenericSeed(): Promise<void>;
|
|
29
|
-
list(): Promise<InvoiceTemplateSummary[]>;
|
|
30
|
-
get(id: string): Promise<InvoiceTemplateSummary & {
|
|
31
|
-
content: Record<string, unknown>;
|
|
32
|
-
}>;
|
|
33
|
-
create(input: {
|
|
34
|
-
code: string;
|
|
35
|
-
name: string;
|
|
36
|
-
salesChannelId?: string | null;
|
|
37
|
-
}): Promise<InvoiceTemplateSummary>;
|
|
38
|
-
/** Save the Puck tree for one language with optimistic concurrency. */
|
|
39
|
-
saveContent(id: string, language: string, data: unknown, version: number): Promise<InvoiceTemplateSummary>;
|
|
40
|
-
/** Resolve the active template's Puck tree for a channel + language. */
|
|
41
|
-
resolveTree(salesChannelId: string | null, language: string): Promise<unknown | null>;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=invoice-template-service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invoice-template-service.d.ts","sourceRoot":"","sources":["../../../src/backend/services/invoice-template-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAQlE,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD;;;;GAIG;AACH,qBAAa,sBAAsB;;IAE/B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBADT,SAAS,EAAE,MAAM,aAAa,EAC9B,QAAQ,CAAC,EAAE,SAAS,YAAA;IAevC;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BlC,IAAI,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAMzC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAOvF,MAAM,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAsBpH,uEAAuE;IACjE,WAAW,CACf,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,sBAAsB,CAAC;IAoBlC,wEAAwE;IAClE,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAW5F"}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { HttpError } from '@endora-commerce/platform/http';
|
|
2
|
-
import { ERROR_CODES } from '@endora-commerce/contracts';
|
|
3
|
-
import { InvoiceTemplate } from '../entities/invoice-template.entity.js';
|
|
4
|
-
import { pickLanguageTree } from '../pdf-components/tree-mapper.js';
|
|
5
|
-
import { recordAuditFromContext } from '@endora-commerce/platform/commands';
|
|
6
|
-
import { GENERIC_INVOICE_TEMPLATE_CODE, GENERIC_INVOICE_TEMPLATE_CONTENT, GENERIC_INVOICE_TEMPLATE_LANGUAGES, GENERIC_INVOICE_TEMPLATE_SEED_REVISION, } from '../seeds/generic-invoice-template.js';
|
|
7
|
-
function summary(t) {
|
|
8
|
-
return {
|
|
9
|
-
id: t.id,
|
|
10
|
-
code: t.code,
|
|
11
|
-
name: t.name,
|
|
12
|
-
salesChannelId: t.salesChannelId ?? null,
|
|
13
|
-
languages: t.languages,
|
|
14
|
-
active: t.active,
|
|
15
|
-
isSystem: t.isSystem,
|
|
16
|
-
version: t.version,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Invoice template CRUD + resolution (feature 047, US6). One seeded global
|
|
21
|
-
* generic template (system); optional per-channel overrides. Resolution:
|
|
22
|
-
* per-channel active → global active → seeded generic (FR-015/016).
|
|
23
|
-
*/
|
|
24
|
-
export class InvoiceTemplateService {
|
|
25
|
-
emFactory;
|
|
26
|
-
auditLog;
|
|
27
|
-
constructor(emFactory, auditLog) {
|
|
28
|
-
this.emFactory = emFactory;
|
|
29
|
-
this.auditLog = auditLog;
|
|
30
|
-
}
|
|
31
|
-
#audit(em, action, objectId, stateAfter) {
|
|
32
|
-
if (this.auditLog) {
|
|
33
|
-
recordAuditFromContext(this.auditLog, em, {
|
|
34
|
-
action,
|
|
35
|
-
objectType: 'invoice_template',
|
|
36
|
-
objectId,
|
|
37
|
-
stateBefore: null,
|
|
38
|
-
stateAfter,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Install or refresh the system generic template (lifecycle / boot).
|
|
44
|
-
* When the on-disk seed revision advances, existing `generic` system rows
|
|
45
|
-
* are rewritten so admin editors see the current default props/layout.
|
|
46
|
-
*/
|
|
47
|
-
async ensureGenericSeed() {
|
|
48
|
-
// command-coverage-ignore: idempotent boot seed of the system generic invoice
|
|
49
|
-
// template — a bootstrap, not an operator-initiated write.
|
|
50
|
-
const em = this.emFactory();
|
|
51
|
-
const existing = await em.findOne(InvoiceTemplate, { code: GENERIC_INVOICE_TEMPLATE_CODE, isSystem: true });
|
|
52
|
-
if (existing) {
|
|
53
|
-
const rev = Number(existing.content?.schema_version ?? 0);
|
|
54
|
-
if (rev >= GENERIC_INVOICE_TEMPLATE_SEED_REVISION)
|
|
55
|
-
return;
|
|
56
|
-
existing.content = structuredClone(GENERIC_INVOICE_TEMPLATE_CONTENT);
|
|
57
|
-
existing.languages = [...GENERIC_INVOICE_TEMPLATE_LANGUAGES];
|
|
58
|
-
existing.version += 1;
|
|
59
|
-
await em.flush();
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
// Only seed if no global template occupies the active-global slot.
|
|
63
|
-
const globalActive = await em.findOne(InvoiceTemplate, { salesChannelId: null, active: true });
|
|
64
|
-
const tpl = em.create(InvoiceTemplate, {
|
|
65
|
-
code: GENERIC_INVOICE_TEMPLATE_CODE,
|
|
66
|
-
name: 'Generic invoice template',
|
|
67
|
-
salesChannelId: null,
|
|
68
|
-
content: structuredClone(GENERIC_INVOICE_TEMPLATE_CONTENT),
|
|
69
|
-
languages: [...GENERIC_INVOICE_TEMPLATE_LANGUAGES],
|
|
70
|
-
active: !globalActive,
|
|
71
|
-
isSystem: true,
|
|
72
|
-
version: 1,
|
|
73
|
-
});
|
|
74
|
-
await em.persistAndFlush(tpl);
|
|
75
|
-
}
|
|
76
|
-
async list() {
|
|
77
|
-
const em = this.emFactory();
|
|
78
|
-
const rows = await em.find(InvoiceTemplate, {}, { orderBy: { isSystem: 'desc', name: 'asc' } });
|
|
79
|
-
return rows.map(summary);
|
|
80
|
-
}
|
|
81
|
-
async get(id) {
|
|
82
|
-
const em = this.emFactory();
|
|
83
|
-
const t = await em.findOne(InvoiceTemplate, { id });
|
|
84
|
-
if (!t)
|
|
85
|
-
throw new HttpError(404, ERROR_CODES.NOT_FOUND, 'Invoice template not found.');
|
|
86
|
-
return { ...summary(t), content: t.content };
|
|
87
|
-
}
|
|
88
|
-
async create(input) {
|
|
89
|
-
const em = this.emFactory();
|
|
90
|
-
const channelId = input.salesChannelId ?? null;
|
|
91
|
-
// Deactivate any currently-active template in the same scope so the new one
|
|
92
|
-
// can become the single active template (partial-unique index).
|
|
93
|
-
await em.nativeUpdate(InvoiceTemplate, { salesChannelId: channelId, active: true }, { active: false });
|
|
94
|
-
const tpl = em.create(InvoiceTemplate, {
|
|
95
|
-
code: input.code,
|
|
96
|
-
name: input.name,
|
|
97
|
-
salesChannelId: channelId,
|
|
98
|
-
content: structuredClone(GENERIC_INVOICE_TEMPLATE_CONTENT),
|
|
99
|
-
languages: GENERIC_INVOICE_TEMPLATE_LANGUAGES,
|
|
100
|
-
active: true,
|
|
101
|
-
isSystem: false,
|
|
102
|
-
version: 1,
|
|
103
|
-
});
|
|
104
|
-
em.persist(tpl);
|
|
105
|
-
this.#audit(em, 'invoice_template.create', tpl.id, { code: tpl.code, name: tpl.name });
|
|
106
|
-
await em.flush();
|
|
107
|
-
return summary(tpl);
|
|
108
|
-
}
|
|
109
|
-
/** Save the Puck tree for one language with optimistic concurrency. */
|
|
110
|
-
async saveContent(id, language, data, version) {
|
|
111
|
-
const em = this.emFactory();
|
|
112
|
-
const t = await em.findOne(InvoiceTemplate, { id });
|
|
113
|
-
if (!t)
|
|
114
|
-
throw new HttpError(404, ERROR_CODES.NOT_FOUND, 'Invoice template not found.');
|
|
115
|
-
if (t.version !== version) {
|
|
116
|
-
throw new HttpError(409, ERROR_CODES.VERSION_CONFLICT, 'Template was modified by someone else.');
|
|
117
|
-
}
|
|
118
|
-
const content = { ...t.content };
|
|
119
|
-
const languages = content['languages'] ?? {};
|
|
120
|
-
languages[language] = data;
|
|
121
|
-
content['languages'] = languages;
|
|
122
|
-
content['schema_version'] = content['schema_version'] ?? 1;
|
|
123
|
-
t.content = content;
|
|
124
|
-
if (!t.languages.includes(language))
|
|
125
|
-
t.languages = [...t.languages, language];
|
|
126
|
-
t.version += 1;
|
|
127
|
-
this.#audit(em, 'invoice_template.save_content', t.id, { language, version: t.version });
|
|
128
|
-
await em.persistAndFlush(t);
|
|
129
|
-
return summary(t);
|
|
130
|
-
}
|
|
131
|
-
/** Resolve the active template's Puck tree for a channel + language. */
|
|
132
|
-
async resolveTree(salesChannelId, language) {
|
|
133
|
-
const em = this.emFactory();
|
|
134
|
-
let t = null;
|
|
135
|
-
if (salesChannelId) {
|
|
136
|
-
t = await em.findOne(InvoiceTemplate, { salesChannelId, active: true });
|
|
137
|
-
}
|
|
138
|
-
if (!t)
|
|
139
|
-
t = await em.findOne(InvoiceTemplate, { salesChannelId: null, active: true });
|
|
140
|
-
if (!t)
|
|
141
|
-
t = await em.findOne(InvoiceTemplate, { code: GENERIC_INVOICE_TEMPLATE_CODE });
|
|
142
|
-
if (!t)
|
|
143
|
-
return null;
|
|
144
|
-
return pickLanguageTree(t.content, language);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=invoice-template-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invoice-template-service.js","sourceRoot":"","sources":["../../../src/backend/services/invoice-template-service.ts"],"names":[],"mappings":"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"}
|