@codemind.ec/medusa-plugin-invoice 1.0.1 → 1.0.2

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 (30) hide show
  1. package/.medusa/server/src/admin/index.js +1 -1
  2. package/.medusa/server/src/admin/index.mjs +1 -1
  3. package/.medusa/server/src/api/admin/invoice-config/route.js +26 -0
  4. package/.medusa/server/src/api/admin/invoice-templates/[id]/preview/route.js +119 -0
  5. package/.medusa/server/src/api/admin/invoice-templates/[id]/restore/route.js +21 -0
  6. package/.medusa/server/src/api/admin/invoice-templates/[id]/route.js +31 -0
  7. package/.medusa/server/src/api/admin/invoice-templates/route.js +20 -0
  8. package/.medusa/server/src/api/admin/invoice-templates/validators.js +18 -0
  9. package/.medusa/server/src/api/middlewares.js +36 -0
  10. package/.medusa/server/src/index.js +16 -1
  11. package/.medusa/server/src/modules/invoice-generator/errors.js +30 -0
  12. package/.medusa/server/src/modules/invoice-generator/index.js +15 -0
  13. package/.medusa/server/src/modules/invoice-generator/loaders/create-default-config.js +34 -0
  14. package/.medusa/server/src/modules/invoice-generator/migrations/Migration20250728094738.js +18 -0
  15. package/.medusa/server/src/modules/invoice-generator/migrations/Migration20250728124134.js +14 -0
  16. package/.medusa/server/src/modules/invoice-generator/migrations/Migration20250728151454.js +14 -0
  17. package/.medusa/server/src/modules/invoice-generator/migrations/Migration20260120005559.js +14 -0
  18. package/.medusa/server/src/modules/invoice-generator/migrations/Migration20260216191700.js +14 -0
  19. package/.medusa/server/src/modules/invoice-generator/migrations/Migration20260601120000.js +17 -0
  20. package/.medusa/server/src/modules/invoice-generator/models/invoice-config.js +16 -0
  21. package/.medusa/server/src/modules/invoice-generator/models/invoice-template.js +19 -0
  22. package/.medusa/server/src/modules/invoice-generator/models/invoice.js +17 -0
  23. package/.medusa/server/src/modules/invoice-generator/service.js +84 -0
  24. package/.medusa/server/src/modules/invoice-generator/templates/defaults/index.js +380 -0
  25. package/.medusa/server/src/modules/invoice-generator/templates/order-invoice.js +348 -0
  26. package/.medusa/server/src/modules/invoice-generator/templates/quote-proforma.js +468 -0
  27. package/.medusa/server/src/modules/invoice-generator/templates/strategy.js +110 -0
  28. package/README.md +134 -43
  29. package/index.d.ts +138 -0
  30. package/package.json +91 -70
@@ -618,7 +618,7 @@ const TemplateEditorPage = () => {
618
618
  ui.toast.success("Plantilla restaurada");
619
619
  queryClient.invalidateQueries({ queryKey: ["invoice-template", id] });
620
620
  } catch {
621
- ui.toast.error("Error al restaurar. La función de restaurar aún no está implementada.");
621
+ ui.toast.error("Error al restaurar la plantilla");
622
622
  }
623
623
  };
624
624
  const previewHtml = react.useMemo(() => {
@@ -613,7 +613,7 @@ const TemplateEditorPage = () => {
613
613
  toast.success("Plantilla restaurada");
614
614
  queryClient.invalidateQueries({ queryKey: ["invoice-template", id] });
615
615
  } catch {
616
- toast.error("Error al restaurar. La función de restaurar aún no está implementada.");
616
+ toast.error("Error al restaurar la plantilla");
617
617
  }
618
618
  };
619
619
  const previewHtml = useMemo(() => {
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ exports.POST = POST;
5
+ const invoice_generator_1 = require("../../../modules/invoice-generator");
6
+ async function GET(req, res) {
7
+ const query = req.scope.resolve("query");
8
+ const { data: [invoiceConfig] } = await query.graph({
9
+ entity: "invoice_config",
10
+ fields: ["*"],
11
+ });
12
+ res.json({
13
+ invoice_config: invoiceConfig
14
+ });
15
+ }
16
+ async function POST(req, res) {
17
+ const body = req.validatedBody ?? req.body;
18
+ const service = req.scope.resolve(invoice_generator_1.INVOICE_MODULE);
19
+ const configs = await service.listInvoiceConfigs();
20
+ const existing = configs[0];
21
+ const updated = await service.updateInvoiceConfigs({ id: existing.id, ...body });
22
+ res.json({
23
+ invoice_config: updated
24
+ });
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtY29uZmlnL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsa0JBY0M7QUFFRCxvQkFlQztBQWxDRCwwRUFBbUU7QUFHNUQsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFeEMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2xELE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDO0tBQ2QsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLGNBQWMsRUFBRSxhQUFhO0tBQzlCLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUE7SUFDMUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWMsQ0FBNEIsQ0FBQTtJQUU1RSxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO0lBQ2xELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUUzQixNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUksSUFBZ0MsRUFBRSxDQUFDLENBQUE7SUFFN0csR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLGNBQWMsRUFBRSxPQUFPO0tBQ3hCLENBQUMsQ0FBQTtBQUNKLENBQUMifQ==
@@ -0,0 +1,119 @@
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
+ const template = await service.retrieveInvoiceTemplate(id);
9
+ // Generate a preview PDF using the template's HTML with sample data
10
+ const sampleParams = template.type === "order_invoice"
11
+ ? buildOrderInvoiceSample()
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
+ const Handlebars = await import("handlebars");
20
+ const htmlToPdfmake = (await import("html-to-pdfmake")).default;
21
+ const { JSDOM } = await import("jsdom");
22
+ const compiled = Handlebars.compile(template.html_content);
23
+ const html = compiled(sampleParams);
24
+ const { window } = new JSDOM("");
25
+ const content = htmlToPdfmake(html, { window: window });
26
+ const PdfPrinter = (await import("pdfmake")).default;
27
+ const printer = new PdfPrinter({
28
+ Helvetica: {
29
+ normal: "Helvetica",
30
+ bold: "Helvetica-Bold",
31
+ italics: "Helvetica-Oblique",
32
+ bolditalics: "Helvetica-BoldOblique",
33
+ },
34
+ });
35
+ const docDefinition = {
36
+ pageSize: "A4",
37
+ pageMargins: [40, 60, 40, 60],
38
+ content,
39
+ defaultStyle: { font: "Helvetica", fontSize: 10 },
40
+ };
41
+ const pdfDoc = printer.createPdfKitDocument(docDefinition);
42
+ const chunks = [];
43
+ pdfDoc.on("data", (chunk) => chunks.push(chunk));
44
+ pdfDoc.on("end", () => {
45
+ const buffer = Buffer.concat(chunks);
46
+ res.setHeader("Content-Type", "application/pdf");
47
+ res.setHeader("Content-Disposition", `inline; filename="preview-${template.slug}.pdf"`);
48
+ res.send(buffer);
49
+ });
50
+ pdfDoc.end();
51
+ }
52
+ function buildOrderInvoiceSample() {
53
+ return {
54
+ company_name: "Mi Empresa",
55
+ company_ruc: "1234567890001",
56
+ company_address: "Av. Principal 123, Quito, Ecuador",
57
+ company_phone: "+593 99 123 4567",
58
+ company_email: "info@miempresa.com",
59
+ company_logo_base64: "",
60
+ invoice_id: "INV-000001",
61
+ invoice_date: new Date().toLocaleDateString("es-ES"),
62
+ order_display_id: "000042",
63
+ order_date: new Date().toLocaleDateString("es-ES"),
64
+ billing_address: "Juan Pérez\nCalle Ejemplo 456\nQuito, Pichincha\nEC",
65
+ shipping_address: "Juan Pérez\nCalle Ejemplo 456\nQuito, Pichincha\nEC",
66
+ cedula: "1712345678",
67
+ items: [
68
+ { title: "Producto de ejemplo", variant_title: "Grande", quantity: "2", unit_price: "$25.00", total: "$50.00" },
69
+ { title: "Otro producto", variant_title: "", quantity: "1", unit_price: "$15.00", total: "$15.00" },
70
+ ],
71
+ subtotal: "$65.00",
72
+ tax_total: "$7.80",
73
+ shipping_total: "$5.00",
74
+ discount_total: "",
75
+ total: "$77.80",
76
+ is_home_delivery: false,
77
+ notes: "Gracias por su compra. Tiempo de entrega: 3-5 días hábiles.",
78
+ };
79
+ }
80
+ function buildQuoteProformaSample() {
81
+ return {
82
+ company_name: "Mi Empresa",
83
+ company_website: "www.miempresa.com",
84
+ quote_number: "QP-2025-0001",
85
+ date_str: new Date().toLocaleDateString("es-ES"),
86
+ service_name: "SERVICIO DE EJEMPLO",
87
+ config_fields: [
88
+ { label: "Número de personas", value: "50" },
89
+ { label: "Tipo de menú", value: "Premium" },
90
+ ],
91
+ breakdown: [
92
+ { label: "Servicio base (50 personas)", total_formatted: "$500.00" },
93
+ { label: "Menú premium", total_formatted: "$250.00" },
94
+ { label: "Decoración", total_formatted: "$100.00" },
95
+ ],
96
+ totals: {
97
+ subtotal_formatted: "$750.00",
98
+ extras_formatted: "$100.00",
99
+ discount: 0,
100
+ discount_formatted: "",
101
+ shipping: 25,
102
+ shipping_formatted: "$25.00",
103
+ taxes_provided: true,
104
+ taxes_formatted: "$105.00",
105
+ total_formatted: "980.00",
106
+ },
107
+ is_home_delivery: false,
108
+ includes: ["Vajilla completa", "Mantelería", "Personal de servicio", "Montaje y desmontaje"],
109
+ includes_left: ["Vajilla completa", "Personal de servicio"],
110
+ includes_right: ["Mantelería", "Montaje y desmontaje"],
111
+ contact_rows: [
112
+ { label: "Nombre", value: "María García" },
113
+ { label: "Email", value: "maria@ejemplo.com" },
114
+ { label: "Teléfono", value: "+593 99 987 6543" },
115
+ { label: "Fecha del evento", value: "2025-08-15" },
116
+ ],
117
+ };
118
+ }
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtdGVtcGxhdGVzL1tpZF0vcHJldmlldy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLG9CQTREQztBQS9ERCxnRkFBeUU7QUFHbEUsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDekIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWMsQ0FBNEIsQ0FBQTtJQUU1RSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUxRCxvRUFBb0U7SUFDcEUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksS0FBSyxlQUFlO1FBQ3BELENBQUMsQ0FBQyx1QkFBdUIsRUFBRTtRQUMzQixDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtJQUU5QixnRUFBZ0U7SUFDaEUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzNDLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDO0tBQ2QsQ0FBQyxDQUFBO0lBRUYsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDN0MsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO0lBQy9ELE1BQU0sRUFBRSxL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
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const invoice_generator_1 = require("../../../../../modules/invoice-generator");
6
+ const defaults_1 = require("../../../../../modules/invoice-generator/templates/defaults");
7
+ async function POST(req, res) {
8
+ const { id } = req.params;
9
+ const service = req.scope.resolve(invoice_generator_1.INVOICE_MODULE);
10
+ const template = await service.retrieveInvoiceTemplate(id);
11
+ if (!template.is_default) {
12
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Solo se pueden restaurar plantillas por defecto");
13
+ }
14
+ const defaultTpl = defaults_1.DEFAULT_TEMPLATES.find(t => t.slug === template.slug);
15
+ if (!defaultTpl) {
16
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No se encontró plantilla por defecto para slug: ${template.slug}`);
17
+ }
18
+ const updated = await service.updateInvoiceTemplates({ id, html_content: defaultTpl.html });
19
+ res.json({ invoice_template: updated });
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtdGVtcGxhdGVzL1tpZF0vcmVzdG9yZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLG9CQTJCQztBQWhDRCxxREFBdUQ7QUFDdkQsZ0ZBQXlFO0FBRXpFLDBGQUErRjtBQUV4RixLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUN6QixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQ0FBYyxDQUE0QixDQUFBO0lBRTVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRTFELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsaURBQWlELENBQ2xELENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsNEJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDeEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLG1EQUFtRCxRQUFRLENBQUMsSUFBSSxFQUFFLENBQ25FLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRTNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0FBQ3pDLENBQUMifQ==
@@ -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 template = await service.retrieveInvoiceTemplate(id);
12
+ res.json({ invoice_template: template });
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 template = await service.updateInvoiceTemplates({ id, ...body });
19
+ res.json({ invoice_template: template });
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 existing = await service.retrieveInvoiceTemplate(id);
25
+ if (existing.is_default) {
26
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "No se puede eliminar una plantilla por defecto");
27
+ }
28
+ await service.deleteInvoiceTemplates(id);
29
+ res.status(200).json({ id, object: "invoice_template", deleted: true });
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtdGVtcGxhdGVzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxrQkFVQztBQUVELG9CQVdDO0FBRUQsd0JBbUJDO0FBakRELHFEQUF1RDtBQUV2RCw2RUFBc0U7QUFHL0QsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDekIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWMsQ0FBNEIsQ0FBQTtJQUU1RSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUxRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtBQUMxQyxDQUFDO0FBRU0sS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0MsRUFDbEMsR0FBbUI7SUFFbkIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDekIsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFBO0lBQzFDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtDQUFjLENBQTRCLENBQUE7SUFFNUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXRFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0FBQzFDLENBQUM7QUFFTSxLQUFLLFVBQVUsTUFBTSxDQUMxQixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUN6QixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQ0FBYyxDQUE0QixDQUFBO0lBRTVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRTFELElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzdCLGdEQUFnRCxDQUNqRCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRXhDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUN6RSxDQUFDIn0=
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ exports.POST = POST;
5
+ const invoice_generator_1 = require("../../../modules/invoice-generator");
6
+ async function GET(req, res) {
7
+ const query = req.scope.resolve("query");
8
+ const { data: templates } = await query.graph({
9
+ entity: "invoice_template",
10
+ fields: ["id", "name", "slug", "type", "is_default", "created_at", "updated_at"],
11
+ });
12
+ res.json({ invoice_templates: templates });
13
+ }
14
+ async function POST(req, res) {
15
+ const body = req.validatedBody ?? req.body;
16
+ const service = req.scope.resolve(invoice_generator_1.INVOICE_MODULE);
17
+ const template = await service.createInvoiceTemplates(body);
18
+ res.status(201).json({ invoice_template: template });
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludm9pY2UtdGVtcGxhdGVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esa0JBWUM7QUFFRCxvQkFVQztBQTNCRCwwRUFBbUU7QUFHNUQsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFeEMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUMsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7S0FDakYsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7QUFDNUMsQ0FBQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQWtDLEVBQ2xDLEdBQW1CO0lBRW5CLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQTtJQUMxQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQ0FBYyxDQUE0QixDQUFBO0lBRTVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQStCLENBQUMsQ0FBQTtJQUV0RixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7QUFDdEQsQ0FBQyJ9
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateTemplateSchema = exports.CreateTemplateSchema = void 0;
4
+ const zod_1 = require("@medusajs/framework/zod");
5
+ exports.CreateTemplateSchema = zod_1.z.object({
6
+ name: zod_1.z.string().min(1),
7
+ slug: zod_1.z.string().min(1).regex(/^[a-z0-9_]+$/, "Slug must be lowercase alphanumeric with underscores"),
8
+ html_content: zod_1.z.string().min(1),
9
+ type: zod_1.z.enum(["order_invoice", "quote_proforma"]),
10
+ is_default: zod_1.z.boolean().optional().default(false),
11
+ variables_schema: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
12
+ });
13
+ exports.UpdateTemplateSchema = zod_1.z.object({
14
+ name: zod_1.z.string().min(1).optional(),
15
+ html_content: zod_1.z.string().min(1).optional(),
16
+ variables_schema: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vaW52b2ljZS10ZW1wbGF0ZXMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBMkM7QUFFOUIsUUFBQSxvQkFBb0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNDLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLHNEQUFzRCxDQUFDO0lBQ3JHLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixJQUFJLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pELFVBQVUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqRCxnQkFBZ0IsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM5RCxDQUFDLENBQUE7QUFFVyxRQUFBLG9CQUFvQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0MsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ2xDLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMxQyxnQkFBZ0IsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM5RCxDQUFDLENBQUEifQ==
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const medusa_1 = require("@medusajs/medusa");
4
+ const http_1 = require("@medusajs/framework/http");
5
+ const zod_1 = require("@medusajs/framework/zod");
6
+ const validators_1 = require("./admin/invoice-templates/validators");
7
+ const PostInvoiceConfigSchema = zod_1.z.object({
8
+ company_name: zod_1.z.string().optional(),
9
+ company_ruc: zod_1.z.string().optional(),
10
+ company_address: zod_1.z.string().optional(),
11
+ company_phone: zod_1.z.string().optional(),
12
+ company_email: zod_1.z.string().optional(),
13
+ company_logo: zod_1.z.string().optional(),
14
+ notes: zod_1.z.string().optional(),
15
+ admin_notification_email: zod_1.z.string().email().optional().or(zod_1.z.literal("")),
16
+ });
17
+ exports.default = (0, medusa_1.defineMiddlewares)({
18
+ routes: [
19
+ {
20
+ matcher: "/admin/invoice-config",
21
+ methods: ["POST"],
22
+ middlewares: [(0, http_1.validateAndTransformBody)(PostInvoiceConfigSchema)],
23
+ },
24
+ {
25
+ matcher: "/admin/invoice-templates",
26
+ methods: ["POST"],
27
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.CreateTemplateSchema)],
28
+ },
29
+ {
30
+ matcher: "/admin/invoice-templates/:id",
31
+ methods: ["POST"],
32
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.UpdateTemplateSchema)],
33
+ },
34
+ ],
35
+ });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQW9EO0FBQ3BELG1EQUFtRTtBQUNuRSxpREFBMkM7QUFDM0MscUVBQWlHO0FBRWpHLE1BQU0sdUJBQXVCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxlQUFlLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN0QyxhQUFhLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxhQUFhLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1Qix3QkFBd0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDNUUsQ0FBQyxDQUFBO0FBRUYsa0JBQWUsSUFBQSwwQkFBaUIsRUFBQztJQUM3QixNQUFNLEVBQUU7UUFDSjtZQUNJLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLElBQUEsK0JBQXdCLEVBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUNuRTtRQUNEO1lBQ0ksT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxpQ0FBb0IsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsOEJBQThCO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLGlDQUFvQixDQUFDLENBQUM7U0FDaEU7S0FDSjtDQUNKLENBQUMsQ0FBQSJ9
@@ -1,3 +1,18 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
6
+ exports.TemplateType = exports.InvoiceStatus = exports.InvoiceGeneratorService = exports.INVOICE_MODULE = exports.default = void 0;
7
+ // Module
8
+ var invoice_generator_1 = require("./modules/invoice-generator");
9
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(invoice_generator_1).default; } });
10
+ Object.defineProperty(exports, "INVOICE_MODULE", { enumerable: true, get: function () { return invoice_generator_1.INVOICE_MODULE; } });
11
+ var service_1 = require("./modules/invoice-generator/service");
12
+ Object.defineProperty(exports, "InvoiceGeneratorService", { enumerable: true, get: function () { return __importDefault(service_1).default; } });
13
+ // Models / enums
14
+ var invoice_1 = require("./modules/invoice-generator/models/invoice");
15
+ Object.defineProperty(exports, "InvoiceStatus", { enumerable: true, get: function () { return invoice_1.InvoiceStatus; } });
16
+ var invoice_template_1 = require("./modules/invoice-generator/models/invoice-template");
17
+ Object.defineProperty(exports, "TemplateType", { enumerable: true, get: function () { return invoice_template_1.TemplateType; } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsU0FBUztBQUNULGlFQUFxRTtBQUE1RCw2SEFBQSxPQUFPLE9BQUE7QUFBRSxtSEFBQSxjQUFjLE9BQUE7QUFDaEMsK0RBQWdIO0FBQXZHLG1JQUFBLE9BQU8sT0FBMkI7QUFFM0MsaUJBQWlCO0FBQ2pCLHNFQUEwRTtBQUFqRSx3R0FBQSxhQUFhLE9BQUE7QUFDdEIsd0ZBQWtGO0FBQXpFLGdIQUFBLFlBQVksT0FBQSJ9
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PdfGenerationError = exports.TemplateNotFoundError = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ /**
6
+ * Thrown when the service is asked to render a template type
7
+ * that has no registered strategy in the TemplateFactory.
8
+ */
9
+ class TemplateNotFoundError extends utils_1.MedusaError {
10
+ constructor(templateId) {
11
+ super(utils_1.MedusaError.Types.NOT_FOUND, `[InvoiceGenerator] No strategy registered for template: "${templateId}". ` +
12
+ `Register it in TemplateFactory before use.`);
13
+ this.name = "TemplateNotFoundError";
14
+ }
15
+ }
16
+ exports.TemplateNotFoundError = TemplateNotFoundError;
17
+ /**
18
+ * Wraps any rendering failure from pdfmake into a consistent,
19
+ * HTTP-friendly error that Medusa's error handler can serialize.
20
+ */
21
+ class PdfGenerationError extends utils_1.MedusaError {
22
+ constructor(templateId, cause) {
23
+ const message = cause instanceof Error ? cause.message : String(cause);
24
+ super(utils_1.MedusaError.Types.UNEXPECTED_STATE, `[InvoiceGenerator] PDF generation failed for template "${templateId}": ${message}`);
25
+ this.name = "PdfGenerationError";
26
+ this.cause = cause;
27
+ }
28
+ }
29
+ exports.PdfGenerationError = PdfGenerationError;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW52b2ljZS1nZW5lcmF0b3IvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUV2RDs7O0dBR0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLG1CQUFXO0lBQ2xELFlBQVksVUFBa0I7UUFDMUIsS0FBSyxDQUNELG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsNERBQTRELFVBQVUsS0FBSztZQUMzRSw0Q0FBNEMsQ0FDL0MsQ0FBQTtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUE7SUFDdkMsQ0FBQztDQUNKO0FBVEQsc0RBU0M7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLGtCQUFtQixTQUFRLG1CQUFXO0lBRy9DLFlBQVksVUFBa0IsRUFBRSxLQUFjO1FBQzFDLE1BQU0sT0FBTyxHQUNULEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUUxRCxLQUFLLENBQ0QsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLDBEQUEwRCxVQUFVLE1BQU0sT0FBTyxFQUFFLENBQ3RGLENBQUE7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFBO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLENBQUM7Q0FDSjtBQWRELGdEQWNDIn0=
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.INVOICE_MODULE = void 0;
7
+ const create_default_config_1 = __importDefault(require("./loaders/create-default-config"));
8
+ const service_1 = __importDefault(require("./service"));
9
+ const utils_1 = require("@medusajs/framework/utils");
10
+ exports.INVOICE_MODULE = "invoiceGenerator";
11
+ exports.default = (0, utils_1.Module)(exports.INVOICE_MODULE, {
12
+ service: service_1.default,
13
+ loaders: [create_default_config_1.default]
14
+ });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0RkFBdUU7QUFDdkUsd0RBQTRDO0FBQzVDLHFEQUFrRDtBQUVyQyxRQUFBLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQTtBQUVoRCxrQkFBZSxJQUFBLGNBQU0sRUFBQyxzQkFBYyxFQUFFO0lBQ3BDLE9BQU8sRUFBRSxpQkFBb0I7SUFDN0IsT0FBTyxFQUFFLENBQUMsK0JBQXlCLENBQUM7Q0FDckMsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = createDefaultConfigLoader;
4
+ const defaults_1 = require("../templates/defaults");
5
+ async function createDefaultConfigLoader({ container, }) {
6
+ const service = container.resolve("invoiceConfigService");
7
+ const [_, count] = await service.listAndCount();
8
+ if (count === 0) {
9
+ await service.create({
10
+ company_name: process.env.STORE_NAME || "",
11
+ company_ruc: "",
12
+ company_address: process.env.STORE_ADDRESS || "",
13
+ company_phone: process.env.STORE_PHONE || "",
14
+ company_email: process.env.ADMIN_EMAIL || "",
15
+ });
16
+ }
17
+ // ── Seed default HTML templates ───────────────────────────────────────────
18
+ const templateService = container.resolve("invoiceTemplateService");
19
+ const [__, tplCount] = await templateService.listAndCount();
20
+ if (tplCount > 0) {
21
+ return;
22
+ }
23
+ for (const tpl of defaults_1.DEFAULT_TEMPLATES) {
24
+ await templateService.create({
25
+ name: tpl.name,
26
+ slug: tpl.slug,
27
+ html_content: tpl.html,
28
+ type: tpl.type,
29
+ is_default: true,
30
+ variables_schema: null,
31
+ });
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRlZmF1bHQtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW52b2ljZS1nZW5lcmF0b3IvbG9hZGVycy9jcmVhdGUtZGVmYXVsdC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSw0Q0F3Q0M7QUExQ0Qsb0RBQXlEO0FBRTFDLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxFQUN0RCxTQUFTLEdBQ0s7SUFDZCxNQUFNLE9BQU8sR0FFVCxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFFN0MsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUUvQyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQixNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbkIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDMUMsV0FBVyxFQUFFLEVBQUU7WUFDZixlQUFlLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRTtZQUNoRCxhQUFhLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksRUFBRTtZQUM1QyxhQUFhLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksRUFBRTtTQUM3QyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLE1BQU0sZUFBZSxHQUVqQixTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFFL0MsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUUzRCxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQixPQUFNO0lBQ1IsQ0FBQztJQUVELEtBQUssTUFBTSxHQUFHLElBQUksNEJBQWlCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsWUFBWSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBb0I7WUFDOUIsVUFBVSxFQUFFLElBQUk7WUFDaEIsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20250728094738 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20250728094738 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`create table if not exists "invoice" ("id" text not null, "order_id" text not null, "status" text check ("status" in ('latest', 'stale')) not null default 'latest', "pdfContent" jsonb not null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "invoice_pkey" primary key ("id"));`);
8
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_invoice_deleted_at" ON "invoice" (deleted_at) WHERE deleted_at IS NULL;`);
9
+ this.addSql(`create table if not exists "invoice_config" ("id" text not null, "company_name" text not null, "company_address" text not null, "company_phone" text not null, "company_email" text not null, "company_logo" text null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "invoice_config_pkey" primary key ("id"));`);
10
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_invoice_config_deleted_at" ON "invoice_config" (deleted_at) WHERE deleted_at IS NULL;`);
11
+ }
12
+ async down() {
13
+ this.addSql(`drop table if exists "invoice" cascade;`);
14
+ this.addSql(`drop table if exists "invoice_config" cascade;`);
15
+ }
16
+ }
17
+ exports.Migration20250728094738 = Migration20250728094738;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA3MjgwOTQ3MzguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNzI4MDk0NzM4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFxRTtBQUVyRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRTNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtWEFBbVgsQ0FBQyxDQUFDO1FBQ2pZLElBQUksQ0FBQyxNQUFNLENBQUMseUdBQXlHLENBQUMsQ0FBQztRQUV2SCxJQUFJLENBQUMsTUFBTSxDQUFDLGdaQUFnWixDQUFDLENBQUM7UUFDOVosSUFBSSxDQUFDLE1BQU0sQ0FBQyx1SEFBdUgsQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FFRjtBQWhCRCwwREFnQkMifQ==
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20250728124134 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20250728124134 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`alter table if exists "invoice_config" add column if not exists "notes" text null;`);
8
+ }
9
+ async down() {
10
+ this.addSql(`alter table if exists "invoice_config" drop column if exists "notes";`);
11
+ }
12
+ }
13
+ exports.Migration20250728124134 = Migration20250728124134;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA3MjgxMjQxMzQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNzI4MTI0MTM0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFxRTtBQUVyRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRTNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvRkFBb0YsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7SUFDdkYsQ0FBQztDQUVGO0FBVkQsMERBVUMifQ==
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20250728151454 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20250728151454 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`alter table if exists "invoice" add column if not exists "display_id" serial;`);
8
+ }
9
+ async down() {
10
+ this.addSql(`alter table if exists "invoice" drop column if exists "display_id";`);
11
+ }
12
+ }
13
+ exports.Migration20250728151454 = Migration20250728151454;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA3MjgxNTE0NTQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNzI4MTUxNDU0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFxRTtBQUVyRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRTNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7SUFDckYsQ0FBQztDQUVGO0FBVkQsMERBVUMifQ==
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260120005559 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20260120005559 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`alter table if exists "invoice_config" add column if not exists "company_ruc" text;`);
8
+ }
9
+ async down() {
10
+ this.addSql(`alter table if exists "invoice_config" drop column if exists "company_ruc";`);
11
+ }
12
+ }
13
+ exports.Migration20260120005559 = Migration20260120005559;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjAxMjAwMDU1NTkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwMTIwMDA1NTU5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFxRTtBQUVyRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRTNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxRkFBcUYsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLDZFQUE2RSxDQUFDLENBQUM7SUFDN0YsQ0FBQztDQUVGO0FBVkQsMERBVUMifQ==
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260216191700 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20260216191700 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`alter table if exists "invoice_config" add column if not exists "admin_notification_email" text;`);
8
+ }
9
+ async down() {
10
+ this.addSql(`alter table if exists "invoice_config" drop column if exists "admin_notification_email";`);
11
+ }
12
+ }
13
+ exports.Migration20260216191700 = Migration20260216191700;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjAyMTYxOTE3MDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwMjE2MTkxNzAwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFxRTtBQUVyRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRXpDLEtBQUssQ0FBQyxFQUFFO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrR0FBa0csQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsMEZBQTBGLENBQUMsQ0FBQztJQUM1RyxDQUFDO0NBRUo7QUFWRCwwREFVQyJ9
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260601120000 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20260601120000 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`create table if not exists "invoice_template" ("id" text not null, "name" text not null, "slug" text not null, "html_content" text not null, "type" text check ("type" in ('order_invoice', 'quote_proforma')) not null, "is_default" boolean not null default false, "variables_schema" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "invoice_template_pkey" primary key ("id"));`);
8
+ this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_invoice_template_slug_unique" ON "invoice_template" ("slug") WHERE "deleted_at" IS NULL;`);
9
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_invoice_template_deleted_at" ON "invoice_template" ("deleted_at") WHERE "deleted_at" IS NULL;`);
10
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_invoice_template_type" ON "invoice_template" ("type");`);
11
+ }
12
+ async down() {
13
+ this.addSql(`drop table if exists "invoice_template" cascade;`);
14
+ }
15
+ }
16
+ exports.Migration20260601120000 = Migration20260601120000;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA2MDExMjAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwNjAxMTIwMDAwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFxRTtBQUVyRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRTNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQywrZEFBK2QsQ0FBQyxDQUFDO1FBQzdlLElBQUksQ0FBQyxNQUFNLENBQUMsaUlBQWlJLENBQUMsQ0FBQztRQUMvSSxJQUFJLENBQUMsTUFBTSxDQUFDLCtIQUErSCxDQUFDLENBQUM7UUFDN0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyx3RkFBd0YsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUVGO0FBYkQsMERBYUMifQ==
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvoiceConfig = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ exports.InvoiceConfig = utils_1.model.define("invoice_config", {
6
+ id: utils_1.model.id().primaryKey(),
7
+ company_name: utils_1.model.text(),
8
+ company_ruc: utils_1.model.text().nullable(),
9
+ company_address: utils_1.model.text(),
10
+ company_phone: utils_1.model.text(),
11
+ company_email: utils_1.model.text(),
12
+ company_logo: utils_1.model.text().nullable(),
13
+ notes: utils_1.model.text().nullable(),
14
+ admin_notification_email: utils_1.model.text().nullable(),
15
+ });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnZvaWNlLWdlbmVyYXRvci9tb2RlbHMvaW52b2ljZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWlEO0FBRXBDLFFBQUEsYUFBYSxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7SUFDMUQsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsWUFBWSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDMUIsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsZUFBZSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDN0IsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDM0IsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDM0IsWUFBWSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsS0FBSyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUIsd0JBQXdCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNsRCxDQUFDLENBQUEifQ==
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvoiceTemplate = exports.TemplateType = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ var TemplateType;
6
+ (function (TemplateType) {
7
+ TemplateType["ORDER_INVOICE"] = "order_invoice";
8
+ TemplateType["QUOTE_PROFORMA"] = "quote_proforma";
9
+ })(TemplateType || (exports.TemplateType = TemplateType = {}));
10
+ exports.InvoiceTemplate = utils_1.model.define("invoice_template", {
11
+ id: utils_1.model.id().primaryKey(),
12
+ name: utils_1.model.text(),
13
+ slug: utils_1.model.text(),
14
+ html_content: utils_1.model.text(),
15
+ type: utils_1.model.enum(TemplateType),
16
+ is_default: utils_1.model.boolean().default(false),
17
+ variables_schema: utils_1.model.json().nullable(),
18
+ });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludm9pY2UtZ2VuZXJhdG9yL21vZGVscy9pbnZvaWNlLXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFpRDtBQUVqRCxJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDdEIsK0NBQStCLENBQUE7SUFDL0IsaURBQWlDLENBQUE7QUFDbkMsQ0FBQyxFQUhXLFlBQVksNEJBQVosWUFBWSxRQUd2QjtBQUVZLFFBQUEsZUFBZSxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7SUFDOUQsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsWUFBWSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDMUIsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzlCLFVBQVUsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMxQyxnQkFBZ0IsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzFDLENBQUMsQ0FBQSJ9
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Invoice = exports.InvoiceStatus = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ var InvoiceStatus;
6
+ (function (InvoiceStatus) {
7
+ InvoiceStatus["LATEST"] = "latest";
8
+ InvoiceStatus["STALE"] = "stale";
9
+ })(InvoiceStatus || (exports.InvoiceStatus = InvoiceStatus = {}));
10
+ exports.Invoice = utils_1.model.define("invoice", {
11
+ id: utils_1.model.id().primaryKey(),
12
+ display_id: utils_1.model.autoincrement(),
13
+ order_id: utils_1.model.text(),
14
+ status: utils_1.model.enum(InvoiceStatus).default(InvoiceStatus.LATEST),
15
+ pdfContent: utils_1.model.json(),
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludm9pY2UtZ2VuZXJhdG9yL21vZGVscy9pbnZvaWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFpRDtBQUVqRCxJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIsa0NBQWlCLENBQUE7SUFDakIsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsYUFBYSw2QkFBYixhQUFhLFFBR3hCO0FBRVksUUFBQSxPQUFPLEdBQUcsYUFBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7SUFDN0MsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsVUFBVSxFQUFFLGFBQUssQ0FBQyxhQUFhLEVBQUU7SUFDakMsUUFBUSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDdEIsTUFBTSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDL0QsVUFBVSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7Q0FDekIsQ0FBQyxDQUFBIn0=