@codemind.ec/medusa-plugin-invoice 1.0.5 → 1.1.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/.medusa/server/src/admin/index.js +806 -378
- package/.medusa/server/src/admin/index.mjs +809 -381
- package/.medusa/server/src/api/admin/invoice-config/[id]/route.js +31 -0
- package/.medusa/server/src/api/admin/invoice-config/[id]/set-default/route.js +19 -0
- package/.medusa/server/src/api/admin/invoice-config/route.js +6 -8
- package/.medusa/server/src/api/admin/invoice-templates/[id]/preview/route.js +26 -33
- package/.medusa/server/src/api/admin/invoice-templates/route.js +2 -2
- package/.medusa/server/src/api/admin/invoice-templates/validators.js +3 -1
- package/.medusa/server/src/modules/invoice-generator/migrations/Migration20260321120000.js +29 -0
- package/.medusa/server/src/modules/invoice-generator/models/invoice-config.js +2 -1
- package/.medusa/server/src/modules/invoice-generator/models/invoice-template.js +2 -1
- package/.medusa/server/src/modules/invoice-generator/service.js +63 -11
- package/.medusa/server/src/modules/invoice-generator/templates/order-invoice.js +3 -3
- package/.medusa/server/src/modules/invoice-generator/templates/quote-proforma.js +3 -3
- package/.medusa/server/src/modules/invoice-generator/templates/strategy.js +4 -13
- package/package.json +86 -89
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
exports.POST = POST;
|
|
5
|
+
exports.DELETE = DELETE;
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const invoice_generator_1 = require("../../../../modules/invoice-generator");
|
|
8
|
+
async function GET(req, res) {
|
|
9
|
+
const { id } = req.params;
|
|
10
|
+
const service = req.scope.resolve(invoice_generator_1.INVOICE_MODULE);
|
|
11
|
+
const config = await service.retrieveInvoiceConfig(id);
|
|
12
|
+
res.json({ invoice_config: config });
|
|
13
|
+
}
|
|
14
|
+
async function POST(req, res) {
|
|
15
|
+
const { id } = req.params;
|
|
16
|
+
const body = req.validatedBody ?? req.body;
|
|
17
|
+
const service = req.scope.resolve(invoice_generator_1.INVOICE_MODULE);
|
|
18
|
+
const updated = await service.updateInvoiceConfigs({ id, ...body });
|
|
19
|
+
res.json({ invoice_config: updated });
|
|
20
|
+
}
|
|
21
|
+
async function DELETE(req, res) {
|
|
22
|
+
const { id } = req.params;
|
|
23
|
+
const service = req.scope.resolve(invoice_generator_1.INVOICE_MODULE);
|
|
24
|
+
const config = await service.retrieveInvoiceConfig(id);
|
|
25
|
+
if (config.is_default) {
|
|
26
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "No se puede eliminar la empresa por defecto. Asigne otra empresa como default primero.");
|
|
27
|
+
}
|
|
28
|
+
await service.deleteInvoiceConfigs(id);
|
|
29
|
+
res.status(200).json({ id, object: "invoice_config", deleted: true });
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtY29uZmlnL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxrQkFVQztBQUVELG9CQVdDO0FBRUQsd0JBbUJDO0FBaERELHFEQUF1RDtBQUN2RCw2RUFBc0U7QUFHL0QsS0FBSyxVQUFVLEdBQUcsQ0FDckIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDekIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWMsQ0FBNEIsQ0FBQTtJQUU1RSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUV0RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7QUFDeEMsQ0FBQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBQ3pCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQTtJQUMxQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQ0FBYyxDQUE0QixDQUFBO0lBRTVFLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUksSUFBZ0MsRUFBRSxDQUFDLENBQUE7SUFFaEcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFFTSxLQUFLLFVBQVUsTUFBTSxDQUN4QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUN6QixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQ0FBYyxDQUE0QixDQUFBO0lBRTVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRXRELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzdCLHdGQUF3RixDQUMzRixDQUFBO0lBQ0wsQ0FBQztJQUVELE1BQU0sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRXRDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUN6RSxDQUFDIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const invoice_generator_1 = require("../../../../../modules/invoice-generator");
|
|
5
|
+
async function POST(req, res) {
|
|
6
|
+
const { id } = req.params;
|
|
7
|
+
const service = req.scope.resolve(invoice_generator_1.INVOICE_MODULE);
|
|
8
|
+
// Unset all defaults first
|
|
9
|
+
const all = await service.listInvoiceConfigs();
|
|
10
|
+
for (const cfg of all) {
|
|
11
|
+
if (cfg.is_default) {
|
|
12
|
+
await service.updateInvoiceConfigs({ id: cfg.id, is_default: false });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// Set the requested one as default
|
|
16
|
+
const updated = await service.updateInvoiceConfigs({ id, is_default: true });
|
|
17
|
+
res.json({ invoice_config: updated });
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtY29uZmlnL1tpZF0vc2V0LWRlZmF1bHQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxvQkFtQkM7QUF0QkQsZ0ZBQXlFO0FBR2xFLEtBQUssVUFBVSxJQUFJLENBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBQ3pCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtDQUFjLENBQTRCLENBQUE7SUFFNUUsMkJBQTJCO0lBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUE7SUFDOUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQixNQUFNLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ3pFLENBQUM7SUFDTCxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRTVFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtBQUN6QyxDQUFDIn0=
|
|
@@ -5,22 +5,20 @@ exports.POST = POST;
|
|
|
5
5
|
const invoice_generator_1 = require("../../../modules/invoice-generator");
|
|
6
6
|
async function GET(req, res) {
|
|
7
7
|
const query = req.scope.resolve("query");
|
|
8
|
-
const { data:
|
|
8
|
+
const { data: configs } = await query.graph({
|
|
9
9
|
entity: "invoice_config",
|
|
10
10
|
fields: ["*"],
|
|
11
11
|
});
|
|
12
12
|
res.json({
|
|
13
|
-
|
|
13
|
+
invoice_configs: configs
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
async function POST(req, res) {
|
|
17
17
|
const body = req.validatedBody ?? req.body;
|
|
18
18
|
const service = req.scope.resolve(invoice_generator_1.INVOICE_MODULE);
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
res.json({
|
|
23
|
-
invoice_config: updated
|
|
19
|
+
const config = await service.createInvoiceConfigs(body);
|
|
20
|
+
res.status(201).json({
|
|
21
|
+
invoice_config: config
|
|
24
22
|
});
|
|
25
23
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtY29uZmlnL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsa0JBY0M7QUFFRCxvQkFZQztBQS9CRCwwRUFBbUU7QUFHNUQsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFeEMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDMUMsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7S0FDZCxDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsZUFBZSxFQUFFLE9BQU87S0FDekIsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQTtJQUMxQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQ0FBYyxDQUE0QixDQUFBO0lBRTVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQStCLENBQUMsQ0FBQTtJQUVsRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuQixjQUFjLEVBQUUsTUFBTTtLQUN2QixDQUFDLENBQUE7QUFDSixDQUFDIn0=
|
|
@@ -10,44 +10,37 @@ async function POST(req, res) {
|
|
|
10
10
|
const sampleParams = template.type === "order_invoice"
|
|
11
11
|
? buildOrderInvoiceSample()
|
|
12
12
|
: buildQuoteProformaSample();
|
|
13
|
-
// Temporarily override the strategy to use this template's HTML
|
|
14
|
-
const query = req.scope.resolve("query");
|
|
15
|
-
const { data: [config] } = await query.graph({
|
|
16
|
-
entity: "invoice_config",
|
|
17
|
-
fields: ["*"],
|
|
18
|
-
});
|
|
19
13
|
const Handlebars = (await import("handlebars")).default;
|
|
20
|
-
const htmlToPdfmake = (await import("html-to-pdfmake")).default;
|
|
21
|
-
const { JSDOM } = await import("jsdom");
|
|
22
14
|
const compiled = Handlebars.compile(template.html_content);
|
|
23
15
|
const html = compiled(sampleParams);
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
// Render HTML → PDF via puppeteer-core + system chromium
|
|
17
|
+
const puppeteer = await import("puppeteer-core");
|
|
18
|
+
const executablePath = process.env.PUPPETEER_CHROMIUM_PATH || "/usr/bin/chromium";
|
|
19
|
+
const browser = await puppeteer.default.launch({
|
|
20
|
+
executablePath,
|
|
21
|
+
args: [
|
|
22
|
+
"--no-sandbox",
|
|
23
|
+
"--disable-setuid-sandbox",
|
|
24
|
+
"--disable-dev-shm-usage",
|
|
25
|
+
"--disable-gpu",
|
|
26
|
+
],
|
|
27
|
+
headless: true,
|
|
34
28
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
pdfDoc.on("data", (chunk) => chunks.push(chunk));
|
|
44
|
-
pdfDoc.on("end", () => {
|
|
45
|
-
const buffer = Buffer.concat(chunks);
|
|
29
|
+
try {
|
|
30
|
+
const page = await browser.newPage();
|
|
31
|
+
await page.setContent(html, { waitUntil: "networkidle0" });
|
|
32
|
+
const pdfBuffer = await page.pdf({
|
|
33
|
+
format: "A4",
|
|
34
|
+
printBackground: true,
|
|
35
|
+
margin: { top: "10mm", right: "10mm", bottom: "10mm", left: "10mm" },
|
|
36
|
+
});
|
|
46
37
|
res.setHeader("Content-Type", "application/pdf");
|
|
47
38
|
res.setHeader("Content-Disposition", `inline; filename="preview-${template.slug}.pdf"`);
|
|
48
|
-
res.send(
|
|
49
|
-
}
|
|
50
|
-
|
|
39
|
+
res.send(Buffer.from(pdfBuffer));
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
await browser.close();
|
|
43
|
+
}
|
|
51
44
|
}
|
|
52
45
|
function buildOrderInvoiceSample() {
|
|
53
46
|
return {
|
|
@@ -116,4 +109,4 @@ function buildQuoteProformaSample() {
|
|
|
116
109
|
],
|
|
117
110
|
};
|
|
118
111
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtdGVtcGxhdGVzL1tpZF0vcHJldmlldy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLG9CQWlEQztBQXBERCxnRkFBeUU7QUFHbEUsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDekIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWMsQ0FBNEIsQ0FBQTtJQUU1RSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUxRCxvRUFBb0U7SUFDcEUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksS0FBSyxlQUFlO1FBQ3BELENBQUMsQ0FBQyx1QkFBdUIsRUFBRTtRQUMzQixDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtJQUU5QixNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO0lBQ3ZELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzFELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUVuQyx5REFBeUQ7SUFDekQsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUNoRCxNQUFNLGNBQWMsR0FDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxtQkFBbUIsQ0FBQTtJQUU1RCxNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFB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
|
|
@@ -7,7 +7,7 @@ async function GET(req, res) {
|
|
|
7
7
|
const query = req.scope.resolve("query");
|
|
8
8
|
const { data: templates } = await query.graph({
|
|
9
9
|
entity: "invoice_template",
|
|
10
|
-
fields: ["id", "name", "slug", "type", "is_default", "created_at", "updated_at"],
|
|
10
|
+
fields: ["id", "name", "slug", "type", "is_default", "company_id", "created_at", "updated_at"],
|
|
11
11
|
});
|
|
12
12
|
res.json({ invoice_templates: templates });
|
|
13
13
|
}
|
|
@@ -17,4 +17,4 @@ async function POST(req, res) {
|
|
|
17
17
|
const template = await service.createInvoiceTemplates(body);
|
|
18
18
|
res.status(201).json({ invoice_template: template });
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtdGVtcGxhdGVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esa0JBWUM7QUFFRCxvQkFVQztBQTNCRCwwRUFBbUU7QUFHNUQsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFeEMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUMsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO0tBQy9GLENBQUMsQ0FBQTtJQUVGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0FBQzVDLENBQUM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUFrQyxFQUNsQyxHQUFtQjtJQUVuQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUE7SUFDMUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWMsQ0FBNEIsQ0FBQTtJQUU1RSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUErQixDQUFDLENBQUE7SUFFdEYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0FBQ3RELENBQUMifQ==
|
|
@@ -9,10 +9,12 @@ exports.CreateTemplateSchema = zod_1.z.object({
|
|
|
9
9
|
type: zod_1.z.enum(["order_invoice", "quote_proforma"]),
|
|
10
10
|
is_default: zod_1.z.boolean().optional().default(false),
|
|
11
11
|
variables_schema: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
|
|
12
|
+
company_id: zod_1.z.string().nullable().optional(),
|
|
12
13
|
});
|
|
13
14
|
exports.UpdateTemplateSchema = zod_1.z.object({
|
|
14
15
|
name: zod_1.z.string().min(1).optional(),
|
|
15
16
|
html_content: zod_1.z.string().min(1).optional(),
|
|
16
17
|
variables_schema: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
|
|
18
|
+
company_id: zod_1.z.string().nullable().optional(),
|
|
17
19
|
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vaW52b2ljZS10ZW1wbGF0ZXMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBMkM7QUFFOUIsUUFBQSxvQkFBb0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNDLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLHNEQUFzRCxDQUFDO0lBQ3JHLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixJQUFJLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pELFVBQVUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqRCxnQkFBZ0IsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3RCxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM3QyxDQUFDLENBQUE7QUFFVyxRQUFBLG9CQUFvQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0MsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ2xDLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMxQyxnQkFBZ0IsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3RCxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM3QyxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260321120000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260321120000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
// Add is_default to invoice_config
|
|
8
|
+
this.addSql(`ALTER TABLE IF EXISTS "invoice_config" ADD COLUMN IF NOT EXISTS "is_default" boolean NOT NULL DEFAULT false;`);
|
|
9
|
+
// Set the first existing config as default
|
|
10
|
+
this.addSql(`
|
|
11
|
+
UPDATE "invoice_config"
|
|
12
|
+
SET "is_default" = true
|
|
13
|
+
WHERE "id" = (
|
|
14
|
+
SELECT "id" FROM "invoice_config"
|
|
15
|
+
WHERE "deleted_at" IS NULL
|
|
16
|
+
ORDER BY "created_at" ASC
|
|
17
|
+
LIMIT 1
|
|
18
|
+
);
|
|
19
|
+
`);
|
|
20
|
+
// Add company_id to invoice_template
|
|
21
|
+
this.addSql(`ALTER TABLE IF EXISTS "invoice_template" ADD COLUMN IF NOT EXISTS "company_id" text NULL;`);
|
|
22
|
+
}
|
|
23
|
+
async down() {
|
|
24
|
+
this.addSql(`ALTER TABLE IF EXISTS "invoice_config" DROP COLUMN IF EXISTS "is_default";`);
|
|
25
|
+
this.addSql(`ALTER TABLE IF EXISTS "invoice_template" DROP COLUMN IF EXISTS "company_id";`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.Migration20260321120000 = Migration20260321120000;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjAzMjExMjAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwMzIxMTIwMDAwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFxRTtBQUVyRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRXpDLEtBQUssQ0FBQyxFQUFFO1FBQ2IsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsOEdBQThHLENBQUMsQ0FBQztRQUU1SCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7Ozs7Ozs7O0tBU2YsQ0FBQyxDQUFDO1FBRUMscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsMkZBQTJGLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLDRFQUE0RSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7Q0FFSjtBQTNCRCwwREEyQkMifQ==
|
|
@@ -12,5 +12,6 @@ exports.InvoiceConfig = utils_1.model.define("invoice_config", {
|
|
|
12
12
|
company_logo: utils_1.model.text().nullable(),
|
|
13
13
|
notes: utils_1.model.text().nullable(),
|
|
14
14
|
admin_notification_email: utils_1.model.text().nullable(),
|
|
15
|
+
is_default: utils_1.model.boolean().default(false),
|
|
15
16
|
});
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9tb2RlbHMvaW52b2ljZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWlEO0FBRXBDLFFBQUEsYUFBYSxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7SUFDMUQsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsWUFBWSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDMUIsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsZUFBZSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDN0IsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDM0IsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDM0IsWUFBWSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsS0FBSyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUIsd0JBQXdCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNqRCxVQUFVLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Q0FDM0MsQ0FBQyxDQUFBIn0=
|
|
@@ -15,5 +15,6 @@ exports.InvoiceTemplate = utils_1.model.define("invoice_template", {
|
|
|
15
15
|
type: utils_1.model.enum(TemplateType),
|
|
16
16
|
is_default: utils_1.model.boolean().default(false),
|
|
17
17
|
variables_schema: utils_1.model.json().nullable(),
|
|
18
|
+
company_id: utils_1.model.text().nullable(),
|
|
18
19
|
});
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludm9pY2UtZ2VuZXJhdG9yL21vZGVscy9pbnZvaWNlLXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFpRDtBQUVqRCxJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDdEIsK0NBQStCLENBQUE7SUFDL0IsaURBQWlDLENBQUE7QUFDbkMsQ0FBQyxFQUhXLFlBQVksNEJBQVosWUFBWSxRQUd2QjtBQUVZLFFBQUEsZUFBZSxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7SUFDOUQsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsWUFBWSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDMUIsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzlCLFVBQVUsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMxQyxnQkFBZ0IsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pDLFVBQVUsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3BDLENBQUMsQ0FBQSJ9
|
|
@@ -15,7 +15,7 @@ const order_invoice_1 = require("./templates/order-invoice");
|
|
|
15
15
|
const quote_proforma_1 = require("./templates/quote-proforma");
|
|
16
16
|
strategy_1.TemplateFactory.register("order_invoice", order_invoice_1.OrderInvoiceStrategy);
|
|
17
17
|
strategy_1.TemplateFactory.register("quote_proforma", quote_proforma_1.QuoteProformaStrategy);
|
|
18
|
-
// ── PDF printer
|
|
18
|
+
// ── PDF printer (pdfmake fallback) ────────────────────────────────────────────
|
|
19
19
|
const fonts = {
|
|
20
20
|
Helvetica: {
|
|
21
21
|
normal: "Helvetica",
|
|
@@ -32,36 +32,88 @@ class InvoiceGeneratorService extends (0, utils_1.MedusaService)({
|
|
|
32
32
|
InvoiceTemplate: invoice_template_1.InvoiceTemplate,
|
|
33
33
|
}) {
|
|
34
34
|
async generatePdf(params) {
|
|
35
|
-
const
|
|
36
|
-
|
|
35
|
+
const result = await this.resolveResult(params);
|
|
36
|
+
if (result.type === "html") {
|
|
37
|
+
return this.renderHtmlToPdf(result.html);
|
|
38
|
+
}
|
|
39
|
+
return this.renderToBuffer(params.template, result.definition);
|
|
37
40
|
}
|
|
38
41
|
// ── Private helpers ─────────────────────────────────────────────────────────
|
|
39
|
-
async
|
|
42
|
+
async resolveResult(params) {
|
|
40
43
|
if (!params.invoice_id) {
|
|
41
44
|
return this.buildWithStrategy(params);
|
|
42
45
|
}
|
|
43
46
|
const invoice = await this.retrieveInvoice(params.invoice_id);
|
|
44
47
|
const cached = invoice.pdfContent;
|
|
45
|
-
if (Object.keys(cached).length > 0) {
|
|
46
|
-
|
|
48
|
+
if (cached && Object.keys(cached).length > 0) {
|
|
49
|
+
// New format with type discriminator
|
|
50
|
+
if (cached.type === "html") {
|
|
51
|
+
return { type: "html", html: cached.html };
|
|
52
|
+
}
|
|
53
|
+
if (cached.type === "pdfmake") {
|
|
54
|
+
return { type: "pdfmake", definition: cached.definition };
|
|
55
|
+
}
|
|
56
|
+
// Legacy format: raw pdfmake definition without wrapper
|
|
57
|
+
return { type: "pdfmake", definition: cached };
|
|
47
58
|
}
|
|
48
|
-
const
|
|
59
|
+
const result = await this.buildWithStrategy(params);
|
|
49
60
|
await this.updateInvoices({
|
|
50
61
|
id: invoice.id,
|
|
51
|
-
pdfContent: JSON.parse(JSON.stringify(
|
|
62
|
+
pdfContent: JSON.parse(JSON.stringify(result)),
|
|
52
63
|
});
|
|
53
|
-
return
|
|
64
|
+
return result;
|
|
54
65
|
}
|
|
55
66
|
async buildWithStrategy(params) {
|
|
56
67
|
const configs = await this.listInvoiceConfigs();
|
|
57
|
-
|
|
68
|
+
// Resolve template (to check company_id)
|
|
58
69
|
const templates = await this.listInvoiceTemplates({
|
|
59
70
|
slug: params.template,
|
|
60
71
|
});
|
|
61
72
|
const htmlTemplate = templates[0]?.html_content ?? null;
|
|
73
|
+
const templateCompanyId = templates[0]?.company_id;
|
|
74
|
+
// Resolve company: template.company_id → is_default → first available
|
|
75
|
+
let config = null;
|
|
76
|
+
if (templateCompanyId) {
|
|
77
|
+
config = configs.find((c) => c.id === templateCompanyId) ?? null;
|
|
78
|
+
}
|
|
79
|
+
if (!config) {
|
|
80
|
+
config = configs.find((c) => c.is_default === true) ?? null;
|
|
81
|
+
}
|
|
82
|
+
if (!config) {
|
|
83
|
+
config = configs[0] ?? null;
|
|
84
|
+
}
|
|
62
85
|
const strategy = strategy_1.TemplateFactory.resolve(params.template);
|
|
63
86
|
return strategy.buildDocumentDefinition(params.data, config, htmlTemplate);
|
|
64
87
|
}
|
|
88
|
+
/** Renders raw HTML to PDF via puppeteer-core + system chromium */
|
|
89
|
+
async renderHtmlToPdf(html) {
|
|
90
|
+
const puppeteer = await import("puppeteer-core");
|
|
91
|
+
const executablePath = process.env.PUPPETEER_CHROMIUM_PATH || "/usr/bin/chromium";
|
|
92
|
+
const browser = await puppeteer.default.launch({
|
|
93
|
+
executablePath,
|
|
94
|
+
args: [
|
|
95
|
+
"--no-sandbox",
|
|
96
|
+
"--disable-setuid-sandbox",
|
|
97
|
+
"--disable-dev-shm-usage",
|
|
98
|
+
"--disable-gpu",
|
|
99
|
+
],
|
|
100
|
+
headless: true,
|
|
101
|
+
});
|
|
102
|
+
try {
|
|
103
|
+
const page = await browser.newPage();
|
|
104
|
+
await page.setContent(html, { waitUntil: "networkidle0" });
|
|
105
|
+
const pdfBuffer = await page.pdf({
|
|
106
|
+
format: "A4",
|
|
107
|
+
printBackground: true,
|
|
108
|
+
margin: { top: "10mm", right: "10mm", bottom: "10mm", left: "10mm" },
|
|
109
|
+
});
|
|
110
|
+
return Buffer.from(pdfBuffer);
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
await browser.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Renders a pdfmake TDocumentDefinitions to a PDF buffer (fallback path) */
|
|
65
117
|
renderToBuffer(templateId, docDefinition) {
|
|
66
118
|
return new Promise((resolve, reject) => {
|
|
67
119
|
const chunks = [];
|
|
@@ -81,4 +133,4 @@ class InvoiceGeneratorService extends (0, utils_1.MedusaService)({
|
|
|
81
133
|
}
|
|
82
134
|
}
|
|
83
135
|
exports.default = InvoiceGeneratorService;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludm9pY2UtZ2VuZXJhdG9yL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBeUQ7QUFHekQsc0RBQWdDO0FBQ2hDLDREQUF1RDtBQUN2RCw4Q0FBMEM7QUFDMUMsZ0VBQTJEO0FBQzNELHFDQUE2QztBQUM3QyxtREFBd0U7QUFFeEUsZ0ZBQWdGO0FBQ2hGLDZEQUFnRTtBQUNoRSwrREFBa0U7QUFJbEUsMEJBQWUsQ0FBQyxRQUFRLENBQW9CLGVBQWUsRUFBRSxvQ0FBb0IsQ0FBQyxDQUFBO0FBQ2xGLDBCQUFlLENBQUMsUUFBUSxDQUFxQixnQkFBZ0IsRUFBRSxzQ0FBcUIsQ0FBQyxDQUFBO0FBRXJGLGlGQUFpRjtBQUVqRixNQUFNLEtBQUssR0FBRztJQUNaLFNBQVMsRUFBRTtRQUNULE1BQU0sRUFBRSxXQUFXO1FBQ25CLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixXQUFXLEVBQUUsdUJBQXVCO0tBQ3JDO0NBQ08sQ0FBQTtBQUVWLE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQVFyQyxpRkFBaUY7QUFFakYsTUFBTSx1QkFBd0IsU0FBUSxJQUFBLHFCQUFhLEVBQUM7SUFDbEQsYUFBYSxFQUFiLDhCQUFhO0lBQ2IsT0FBTyxFQUFQLGlCQUFPO0lBQ1AsZUFBZSxFQUFmLGtDQUFlO0NBQ2hCLENBQUM7SUFDQSxLQUFLLENBQUMsV0FBVyxDQUNmLE1BQW1EO1FBRW5ELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUUvQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJ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
|
|
@@ -27,7 +27,7 @@ const tableLayout = {
|
|
|
27
27
|
class OrderInvoiceStrategy extends strategy_1.BaseDocumentStrategy {
|
|
28
28
|
async buildDocumentDefinition(input, config, htmlTemplate) {
|
|
29
29
|
const { order, items } = input;
|
|
30
|
-
// ── If HTML template provided, render via Handlebars
|
|
30
|
+
// ── If HTML template provided, render via Handlebars → HTML string ──
|
|
31
31
|
if (htmlTemplate) {
|
|
32
32
|
return this.buildFromHtml(htmlTemplate, input, config);
|
|
33
33
|
}
|
|
@@ -276,7 +276,7 @@ class OrderInvoiceStrategy extends strategy_1.BaseDocumentStrategy {
|
|
|
276
276
|
},
|
|
277
277
|
defaultStyle: { font: "Helvetica" },
|
|
278
278
|
};
|
|
279
|
-
return docDef;
|
|
279
|
+
return { type: "pdfmake", definition: docDef };
|
|
280
280
|
}
|
|
281
281
|
// ── Private helpers ─────────────────────────────────────────────────────────
|
|
282
282
|
formatAddress(addr, fallback) {
|
|
@@ -345,4 +345,4 @@ class OrderInvoiceStrategy extends strategy_1.BaseDocumentStrategy {
|
|
|
345
345
|
}
|
|
346
346
|
}
|
|
347
347
|
exports.OrderInvoiceStrategy = OrderInvoiceStrategy;
|
|
348
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludm9pY2UtZ2VuZXJhdG9yL3RlbXBsYXRlcy9vcmRlci1pbnZvaWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLHlDQUFpRDtBQTREakQsaUZBQWlGO0FBRWpGOzs7O0dBSUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLElBQXFCO0lBQzdDLE9BQU8sT0FBUSxJQUFvQyxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUE7QUFDbEYsQ0FBQztBQUVELGlGQUFpRjtBQUVqRixNQUFNLFdBQVcsR0FBc0I7SUFDbkMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUNwQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztJQUN2RCxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRztJQUNyQixVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDbkUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7SUFDM0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckIs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QUssRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNyRCxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDN0QsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2hFLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7Z0JBQ2pGLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDM0MsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQzFELFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUMxRCxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUM3RSxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtnQkFDL0QsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7Z0JBQ2hFLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVB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
|
|
348
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludm9pY2UtZ2VuZXJhdG9yL3RlbXBsYXRlcy9vcmRlci1pbnZvaWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLHlDQUFtRTtBQTREbkUsaUZBQWlGO0FBRWpGOzs7O0dBSUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLElBQXFCO0lBQzdDLE9BQU8sT0FBUSxJQUFvQyxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUE7QUFDbEYsQ0FBQztBQUVELGlGQUFpRjtBQUVqRixNQUFNLFdBQVcsR0FBc0I7SUFDbkMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUNwQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztJQUN2RCxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRztJQUNyQixVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDbkUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7SUFDM0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckIs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QUssRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNyRCxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDN0QsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2hFLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7Z0JBQ2pGLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDM0MsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQzFELFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUMxRCxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUM3RSxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtnQkFDL0QsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7Z0JBQ2hFLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVB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
|