@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.
Files changed (144) hide show
  1. package/README.md +7 -8
  2. package/dist/admin/components/InvoiceSectionTabs.d.ts +8 -0
  3. package/dist/admin/components/InvoiceSectionTabs.d.ts.map +1 -1
  4. package/dist/admin/components/InvoiceSectionTabs.js +13 -2
  5. package/dist/admin/components/InvoiceSectionTabs.js.map +1 -1
  6. package/dist/admin/document-blocks/InvoiceDivider.d.ts +5 -0
  7. package/dist/admin/document-blocks/InvoiceDivider.d.ts.map +1 -0
  8. package/dist/admin/document-blocks/InvoiceDivider.js +5 -0
  9. package/dist/admin/document-blocks/InvoiceDivider.js.map +1 -0
  10. package/dist/admin/document-blocks/InvoiceFooter.d.ts +5 -0
  11. package/dist/admin/document-blocks/InvoiceFooter.d.ts.map +1 -0
  12. package/dist/admin/document-blocks/InvoiceFooter.js +5 -0
  13. package/dist/admin/document-blocks/InvoiceFooter.js.map +1 -0
  14. package/dist/admin/document-blocks/InvoiceHeader.d.ts +5 -0
  15. package/dist/admin/document-blocks/InvoiceHeader.d.ts.map +1 -0
  16. package/dist/admin/document-blocks/InvoiceHeader.js +5 -0
  17. package/dist/admin/document-blocks/InvoiceHeader.js.map +1 -0
  18. package/dist/admin/document-blocks/InvoiceLineItems.d.ts +5 -0
  19. package/dist/admin/document-blocks/InvoiceLineItems.d.ts.map +1 -0
  20. package/dist/admin/document-blocks/InvoiceLineItems.js +5 -0
  21. package/dist/admin/document-blocks/InvoiceLineItems.js.map +1 -0
  22. package/dist/admin/document-blocks/InvoiceLogo.d.ts +5 -0
  23. package/dist/admin/document-blocks/InvoiceLogo.d.ts.map +1 -0
  24. package/dist/admin/document-blocks/InvoiceLogo.js +5 -0
  25. package/dist/admin/document-blocks/InvoiceLogo.js.map +1 -0
  26. package/dist/admin/document-blocks/InvoiceNotes.d.ts +5 -0
  27. package/dist/admin/document-blocks/InvoiceNotes.d.ts.map +1 -0
  28. package/dist/admin/document-blocks/InvoiceNotes.js +5 -0
  29. package/dist/admin/document-blocks/InvoiceNotes.js.map +1 -0
  30. package/dist/admin/document-blocks/InvoiceParties.d.ts +5 -0
  31. package/dist/admin/document-blocks/InvoiceParties.d.ts.map +1 -0
  32. package/dist/admin/document-blocks/InvoiceParties.js +5 -0
  33. package/dist/admin/document-blocks/InvoiceParties.js.map +1 -0
  34. package/dist/admin/document-blocks/InvoiceSpacer.d.ts +5 -0
  35. package/dist/admin/document-blocks/InvoiceSpacer.d.ts.map +1 -0
  36. package/dist/admin/document-blocks/InvoiceSpacer.js +5 -0
  37. package/dist/admin/document-blocks/InvoiceSpacer.js.map +1 -0
  38. package/dist/admin/document-blocks/InvoiceTotals.d.ts +5 -0
  39. package/dist/admin/document-blocks/InvoiceTotals.d.ts.map +1 -0
  40. package/dist/admin/document-blocks/InvoiceTotals.js +5 -0
  41. package/dist/admin/document-blocks/InvoiceTotals.js.map +1 -0
  42. package/dist/admin/document-blocks/InvoiceVatSummary.d.ts +5 -0
  43. package/dist/admin/document-blocks/InvoiceVatSummary.d.ts.map +1 -0
  44. package/dist/admin/document-blocks/InvoiceVatSummary.js +5 -0
  45. package/dist/admin/document-blocks/InvoiceVatSummary.js.map +1 -0
  46. package/dist/admin/index.d.ts +3 -1
  47. package/dist/admin/index.d.ts.map +1 -1
  48. package/dist/admin/index.js +62 -2
  49. package/dist/admin/index.js.map +1 -1
  50. package/dist/admin/pages/InvoiceTemplatesRedirect.d.ts +10 -0
  51. package/dist/admin/pages/InvoiceTemplatesRedirect.d.ts.map +1 -0
  52. package/dist/admin/pages/InvoiceTemplatesRedirect.js +14 -0
  53. package/dist/admin/pages/InvoiceTemplatesRedirect.js.map +1 -0
  54. package/dist/admin/templates/invoice-puck-config.d.ts +7 -21
  55. package/dist/admin/templates/invoice-puck-config.d.ts.map +1 -1
  56. package/dist/admin/templates/invoice-puck-config.js +7 -26
  57. package/dist/admin/templates/invoice-puck-config.js.map +1 -1
  58. package/dist/backend/document/block-descriptions.d.ts +22 -0
  59. package/dist/backend/document/block-descriptions.d.ts.map +1 -0
  60. package/dist/backend/{pdf-components/descriptor.js → document/block-descriptions.js} +8 -24
  61. package/dist/backend/document/block-descriptions.js.map +1 -0
  62. package/dist/backend/document/document-templates-grant.d.ts +29 -0
  63. package/dist/backend/document/document-templates-grant.d.ts.map +1 -0
  64. package/dist/backend/document/document-templates-grant.js +45 -0
  65. package/dist/backend/document/document-templates-grant.js.map +1 -0
  66. package/dist/backend/document/invoice-document-type.d.ts +38 -0
  67. package/dist/backend/document/invoice-document-type.d.ts.map +1 -0
  68. package/dist/backend/document/invoice-document-type.js +108 -0
  69. package/dist/backend/document/invoice-document-type.js.map +1 -0
  70. package/dist/backend/document/render-invoice.d.ts +14 -0
  71. package/dist/backend/document/render-invoice.d.ts.map +1 -0
  72. package/dist/backend/document/render-invoice.js +24 -0
  73. package/dist/backend/document/render-invoice.js.map +1 -0
  74. package/dist/backend/index.d.ts +1 -3
  75. package/dist/backend/index.d.ts.map +1 -1
  76. package/dist/backend/index.js +48 -6
  77. package/dist/backend/index.js.map +1 -1
  78. package/dist/backend/pdf-components/tree-mapper.d.ts +5 -21
  79. package/dist/backend/pdf-components/tree-mapper.d.ts.map +1 -1
  80. package/dist/backend/pdf-components/tree-mapper.js +8 -44
  81. package/dist/backend/pdf-components/tree-mapper.js.map +1 -1
  82. package/dist/backend/plugin.d.ts +9 -12
  83. package/dist/backend/plugin.d.ts.map +1 -1
  84. package/dist/backend/plugin.js +3 -16
  85. package/dist/backend/plugin.js.map +1 -1
  86. package/dist/backend/routes.admin.d.ts +3 -5
  87. package/dist/backend/routes.admin.d.ts.map +1 -1
  88. package/dist/backend/routes.admin.js +8 -53
  89. package/dist/backend/routes.admin.js.map +1 -1
  90. package/dist/backend/routes.customer.d.ts +3 -5
  91. package/dist/backend/routes.customer.d.ts.map +1 -1
  92. package/dist/backend/routes.customer.js +3 -3
  93. package/dist/backend/routes.customer.js.map +1 -1
  94. package/dist/backend/services/invoice-email-dispatch.d.ts +7 -3
  95. package/dist/backend/services/invoice-email-dispatch.d.ts.map +1 -1
  96. package/dist/backend/services/invoice-email-dispatch.js +2 -1
  97. package/dist/backend/services/invoice-email-dispatch.js.map +1 -1
  98. package/dist/manifest.d.ts +9 -3
  99. package/dist/manifest.d.ts.map +1 -1
  100. package/dist/manifest.js +25 -14
  101. package/dist/manifest.js.map +1 -1
  102. package/dist/migrations/20261017T075839_invoices_drop_invoice_templates.d.ts +20 -0
  103. package/dist/migrations/20261017T075839_invoices_drop_invoice_templates.d.ts.map +1 -0
  104. package/dist/migrations/20261017T075839_invoices_drop_invoice_templates.js +43 -0
  105. package/dist/migrations/20261017T075839_invoices_drop_invoice_templates.js.map +1 -0
  106. package/dist/migrations/index.d.ts +2 -1
  107. package/dist/migrations/index.d.ts.map +1 -1
  108. package/dist/migrations/index.js +3 -1
  109. package/dist/migrations/index.js.map +1 -1
  110. package/docs/invoices.md +21 -14
  111. package/i18n/en.json +3 -3
  112. package/i18n/pl.json +3 -3
  113. package/package.json +13 -13
  114. package/dist/admin/pages/InvoiceTemplateEditor.d.ts +0 -11
  115. package/dist/admin/pages/InvoiceTemplateEditor.d.ts.map +0 -1
  116. package/dist/admin/pages/InvoiceTemplateEditor.js +0 -189
  117. package/dist/admin/pages/InvoiceTemplateEditor.js.map +0 -1
  118. package/dist/admin/pages/InvoiceTemplatesPage.d.ts +0 -10
  119. package/dist/admin/pages/InvoiceTemplatesPage.d.ts.map +0 -1
  120. package/dist/admin/pages/InvoiceTemplatesPage.js +0 -60
  121. package/dist/admin/pages/InvoiceTemplatesPage.js.map +0 -1
  122. package/dist/admin/templates/described-blocks.d.ts +0 -67
  123. package/dist/admin/templates/described-blocks.d.ts.map +0 -1
  124. package/dist/admin/templates/described-blocks.js +0 -83
  125. package/dist/admin/templates/described-blocks.js.map +0 -1
  126. package/dist/admin/templates/invoice-builder-plugin.d.ts +0 -4
  127. package/dist/admin/templates/invoice-builder-plugin.d.ts.map +0 -1
  128. package/dist/admin/templates/invoice-builder-plugin.js +0 -12
  129. package/dist/admin/templates/invoice-builder-plugin.js.map +0 -1
  130. package/dist/backend/entities/invoice-template.entity.d.ts +0 -22
  131. package/dist/backend/entities/invoice-template.entity.d.ts.map +0 -1
  132. package/dist/backend/entities/invoice-template.entity.js +0 -84
  133. package/dist/backend/entities/invoice-template.entity.js.map +0 -1
  134. package/dist/backend/pdf-components/descriptor.d.ts +0 -29
  135. package/dist/backend/pdf-components/descriptor.d.ts.map +0 -1
  136. package/dist/backend/pdf-components/descriptor.js.map +0 -1
  137. package/dist/backend/services/invoice-pdf-renderer.d.ts +0 -57
  138. package/dist/backend/services/invoice-pdf-renderer.d.ts.map +0 -1
  139. package/dist/backend/services/invoice-pdf-renderer.js +0 -158
  140. package/dist/backend/services/invoice-pdf-renderer.js.map +0 -1
  141. package/dist/backend/services/invoice-template-service.d.ts +0 -43
  142. package/dist/backend/services/invoice-template-service.d.ts.map +0 -1
  143. package/dist/backend/services/invoice-template-service.js +0 -147
  144. package/dist/backend/services/invoice-template-service.js.map +0 -1
@@ -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 { InvoiceTemplate } from './entities/invoice-template.entity.js';
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, invoicePdfBlockRegistry }) => {
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
- pdfBlocks: invoicePdfBlockRegistry,
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":"AAuBA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAI5E,OAAO,EAAE,cAAc,EAAyD,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AA+EvD,MAAM,UAAU,cAAc,CAAC,GAAkB;IAC/C,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;QACd;;;;;;;WAOG;QACH,8BAA8B,EAAE,GAAG;aAChC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAkB,EAAE,EAAE;YAC5C,MAAM,aAAa,GAAG,QAAQ,CAAoB,GAAG,EAAE,sBAAsB,CAAC,CAAC;YAC/E,OAAO,IAAI,6BAA6B,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACpF,CAAC,CAAC;aACD,SAAS,EAAE;QAEd;;;;;;;;;WASG;QACH,uBAAuB,EAAE,GAAG;aACzB,UAAU,CACT,GAAG,EAAE,CAAC,IAAI,uBAAuB,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CACpF;aACA,SAAS,EAAE;QAEd;;;;;;;;WAQG;QACH,8BAA8B,EAAE,GAAG;aAChC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAkB,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;YAC/D,OAAO,IAAI,8BAA8B,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAClD,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CACjD,CAAC;QACJ,CAAC,CAAC;aACD,SAAS,EAAE;QAEd,QAAQ,EAAE,GAAG;aACV,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,uBAAuB,EAAkB,EAAE,EAAE;YAChG,MAAM,MAAM,GAAG,GAAmB,EAAE,CAAC,GAAG,CAAC,MAAM,EAAkB,CAAC;YAClE,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,SAAS;gBACT,sEAAsE;gBACtE,iEAAiE;gBACjE,oEAAoE;gBACpE,iEAAiE;gBACjE,+DAA+D;gBAC/D,sEAAsE;gBACtE,aAAa,EAAE,QAAQ,CAAgB,GAAG,EAAE,eAAe,CAAC;gBAC5D,aAAa,EAAE,QAAQ,CAAgB,GAAG,EAAE,eAAe,CAAC;gBAC5D,aAAa,EAAE,QAAQ,CAAoB,GAAG,EAAE,mBAAmB,CAAC;gBACpE,oEAAoE;gBACpE,kEAAkE;gBAClE,wDAAwD;gBACxD,uBAAuB,EAAE,MAAM,EAAE,CAAC,8BAA8B;gBAChE,QAAQ;gBACR,KAAK,EAAE,eAAe;gBACtB,QAAQ,EAAE,eAAe;gBACzB,eAAe,EAAE,QAAQ,CACvB,GAAG,EACH,kBAAkB,CACnB;gBACD,YAAY,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CACjD,GAAG,CAAC,MAAM,EAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;gBACnE,eAAe,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAC9B,GAAG,CAAC,MAAM,EAAkB,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;gBAC1D,qEAAqE;gBACrE,sEAAsE;gBACtE,0EAA0E;gBAC1E,iEAAiE;gBACjE,mEAAmE;gBACnE,oEAAoE;gBACpE,6CAA6C;gBAC7C,kBAAkB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,WAAW;gBAC3E,sBAAsB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC;gBACtE,mEAAmE;gBACnE,oEAAoE;gBACpE,4DAA4D;gBAC5D,2BAA2B,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,gCAAgC,EAAE;gBAC9E,qBAAqB,EAAE,4BAA4B,CACjD,QAAQ,CAA0B,GAAG,EAAE,yBAAyB,CAAC,CAClE;gBACD,eAAe,EAAE,6BAA6B,CAAC,SAAS,CAAC;gBACzD,cAAc,EAAE,sBAAsB,CAAC,QAAQ,CAAgB,GAAG,EAAE,eAAe,CAAC,CAAC;gBACrF,SAAS,EAAE,uBAAuB;gBAClC,aAAa,EAAE;oBACb,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;wBACzC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC;4BAAE,OAAO,QAAQ,CAAC;wBACjE,OAAO,QAAQ,CACb,GAAG,EACH,0BAA0B,CAC3B,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;oBACrC,CAAC;oBACD,oBAAoB,EAAE,KAAK,IAAI,EAAE;wBAC/B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC;4BAAE,OAAO,IAAI,CAAC;wBAC7D,OAAO,QAAQ,CACb,GAAG,EACH,0BAA0B,CAC3B,CAAC,oBAAoB,EAAE,CAAC;oBAC3B,CAAC;iBACF;aACF,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,SAAS,EAAE;KACf,CAAC,CAAC;IAEH,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,gBAAgB,EAChB,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAC7F,CAAC;IACF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,0BAA0B,EAC1B,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAC7F,CAAC;IACF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,qBAAqB,EACrB,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAC7F,CAAC;IACF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,2BAA2B,EAC3B,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAC7F,CAAC;IACF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,qBAAqB,EACrB,GAAG;SACA,UAAU,CAAC,CAAC,EAAE,SAAS,EAAkB,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAgB,GAAG,EAAE,eAAe,CAAC,CAAC;QAC7D,OAAO,IAAI,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC;SACD,SAAS,EAAE,CACf,CAAC;IACF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,wBAAwB,EACxB,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAC9F,CAAC;IACF,8EAA8E;IAC9E,gDAAgD;IAChD,EAAE;IACF,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,qEAAqE;IACrE,iEAAiE;IACjE,8EAA8E;IAE9E,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,iBAAiB,EACjB,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAkB,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CACjG,CAAC;IAEF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,0BAA0B,EAC1B,GAAG;SACA,UAAU,CAAC,CAAC,EAAE,SAAS,EAAkB,EAAE,EAAE,CAAC,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;SAC7F,SAAS,EAAE,CACf,CAAC;IAEF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,gBAAgB,EAChB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC,SAAS,EAAE,CACzD,CAAC;IAEF;;;;;;;;;;;;;;;;;;;OAmBG;IACH,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,2BAA2B,EAC3B,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,4BAA4B,EAAE,CAAC,CAAC,SAAS,EAAE,CACrE,CAAC;IAEF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,oBAAoB,EACpB,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAC1F,CAAC;IAEF;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,eAAe,GAAG,QAAQ,CAAyB,GAAG,EAAE,wBAAwB,CAAC,CAAC;IACxF,GAAG,CAAC,EAAE,CAAC,WAAW,CAChB,uBAAuB,EACvB,GAAG;SACA,UAAU,CACT,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAkB,EAAE,EAAE,CAC3D,IAAI,yBAAyB,CAC3B,SAAS,EACT,GAAG,EAAE,CAAC,eAAe,EACrB,eAAe,EACf,QAAQ,EACR;QACE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBAAE,OAAO,QAAQ,CAAC;YACjE,OAAO,QAAQ,CACb,GAAG,EACH,0BAA0B,CAC3B,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;QACD,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC7D,OAAO,QAAQ,CACb,GAAG,EACH,0BAA0B,CAC3B,CAAC,oBAAoB,EAAE,CAAC;QAC3B,CAAC;KACF,CACF,CACJ;SACA,SAAS,EAAE,CACf,CAAC;IAEF;;;;;;;OAOG;IACH,GAAG,CAAC,SAAS,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzD,MAAM,GAAG;aACN,MAAM,EAAkB;aACxB,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAkB,CAAC,QAAQ,CAAC,MAEnC,CAAC;QACnB,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACpB,iEAAiE;QACjE,0DAA0D;QAC1D,uEAAuE;QACvE,yEAAyE;QACzE,qBAAqB;QACrB,MAAM,QAAQ,GAAG,QAAQ,CAA4B,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAC/E,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;OAUG;IACH,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,MAAM,UAAU,GAAG,QAAQ,CACzB,GAAG,EACH,+BAA+B,CAChC,CAAC;QACF,UAAU,CAAC,QAAQ,CAAC,+BAA+B,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,CAAC,MAAM,EAAkB,CAAC,8BAA8B,CAAC,SAAS,EAAE,CAAC;IAChF,CAAC,CAAC,CAAC;AAEL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW;IACX,oBAAoB;IACpB,eAAe;IACf,yBAAyB;IACzB,OAAO;CACR,CAAC"}
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): the
9
- * {@link ContributedBlockRenderer} a caller hands {@link treeToContent}.
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
- * A contributed block's renderer for one render, already bound to the data its
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;;;;;;GAMG;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;AA8BD;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,IAAI,EAAE,MAAM,KACT,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;AAI/D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,mBAAmB,EAC3B,WAAW,GAAE,wBAAgD,EAC7D,OAAO,GAAE,qBAA0B,GAClC,OAAO,EAAE,GAAG,IAAI,CAelB;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAIxD;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI5E"}
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): the
7
- * {@link ContributedBlockRenderer} a caller hands {@link treeToContent}.
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
- const NO_CONTRIBUTED_BLOCKS = () => undefined;
34
- /**
35
- * Map a Puck content tree (one language) to pdfmake content, dispatching each
36
- * of this module's own blocks to its section builder and every other block to
37
- * `contributed`. A block nothing renders — its declaring module absent, off or
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":"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"}
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"}
@@ -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 for invoice-template writes (co-transactional). */
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` during Preview PDF).
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
- * The blocks other modules render onto the PDF (`specs/134-paid-module-extraction/`
95
- * T063/T126) — this module's own `invoicePdfBlockRegistry`, which contributors
96
- * push into from their composition roots.
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
- pdfBlocks: InvoicePdfBlockRegistry;
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":"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"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"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"}
@@ -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
- pdfRenderer,
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
- pdfRenderer,
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
- pdfRenderer,
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":"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"}
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
- pdfRenderer: InvoicePdfRenderer;
29
- templateService: InvoiceTemplateService;
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,EAIL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAIrF,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,WAAW,EAAE,kBAAkB,CAAC;IAChC,eAAe,EAAE,sBAAsB,CAAC;IACxC;;;;;;OAMG;IACH,eAAe,EAAE,sBAAsB,CAAC;IACxC,kBAAkB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5D;AAID,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Of"}
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 { z } from 'zod';
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, pdfRenderer, templateService } = deps;
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 tree = await templateService.resolveTree(detail.salesChannelId, RENDER_LANGUAGE);
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 tree + pdfmake) to validate that
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
- const tree = await templateService.resolveTree(detail.salesChannelId, RENDER_LANGUAGE);
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
- // --- Invoice templates (US6) ------------------------------------------
136
- app.get('/api/v1/admin/invoice-templates', { preHandler: requireAdmin('invoices:read') }, async () => ({ data: await templateService.list() }));
137
- app.get('/api/v1/admin/invoice-templates/page-builder/config', { preHandler: requireAdmin('invoices:read') }, async () => ({ data: invoicePageBuilderDescriptor(pdfRenderer.blocks) }));
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
- pdfRenderer: InvoicePdfRenderer;
25
- templateService: InvoiceTemplateService;
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