@zosmaai/medusa-documents-v2 0.2.13 → 0.2.15
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 +58 -1
- package/.medusa/server/src/admin/index.mjs +59 -2
- package/.medusa/server/src/api/admin/documents/invoice/route.js +35 -25
- package/.medusa/server/src/modules/documents/migrations/Migration20260811120000.js +14 -0
- package/.medusa/server/src/modules/documents/models/document-invoice.js +2 -2
- package/.medusa/server/src/modules/documents/service.js +16 -6
- package/.medusa/server/src/modules/documents/services/templates/invoices/india-gst/parts/table.js +9 -4
- package/.medusa/server/src/modules/documents/types/constants.js +4 -2
- package/.medusa/server/src/ui-components/actions-dropdown/actions-dropdown.js +3 -2
- package/.medusa/server/src/ui-components/actions-dropdown/invoice/button-force-new-invoice.js +76 -0
- package/.medusa/server/src/ui-components/settings/settings-invoice.js +2 -2
- package/package.json +1 -1
|
@@ -70,6 +70,62 @@ const GenerateInvoiceDropdownButton = ({ order, updateInvoiceNumber }) => {
|
|
|
70
70
|
"Generate new invoice"
|
|
71
71
|
] });
|
|
72
72
|
};
|
|
73
|
+
const ForceNewInvoiceDropdownButton = ({ order, updateInvoiceNumber }) => {
|
|
74
|
+
const [isLoading, setLoading] = React.useState(false);
|
|
75
|
+
React.useEffect(() => {
|
|
76
|
+
if (!isLoading) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
fetch(`/admin/documents/invoice`, {
|
|
80
|
+
method: "POST",
|
|
81
|
+
credentials: "include",
|
|
82
|
+
headers: {
|
|
83
|
+
"Content-Type": "application/json"
|
|
84
|
+
},
|
|
85
|
+
body: JSON.stringify({
|
|
86
|
+
order_id: order.id,
|
|
87
|
+
force_new: true
|
|
88
|
+
})
|
|
89
|
+
}).then((res) => res.json()).then((responseJson) => {
|
|
90
|
+
if (responseJson && responseJson.message) {
|
|
91
|
+
ui.toast.error("Invoice", {
|
|
92
|
+
description: `Problem happened when generating new invoice number. ${responseJson.message}`
|
|
93
|
+
});
|
|
94
|
+
} else {
|
|
95
|
+
if (responseJson.buffer) {
|
|
96
|
+
updateInvoiceNumber(order.id, responseJson.invoice.displayNumber);
|
|
97
|
+
const anyBuffer = responseJson.buffer;
|
|
98
|
+
const blob = new Blob([new Uint8Array(anyBuffer.data)], { type: "application/pdf" });
|
|
99
|
+
ui.toast.dismiss();
|
|
100
|
+
const pdfURL = URL.createObjectURL(blob);
|
|
101
|
+
window.open(pdfURL, "_blank");
|
|
102
|
+
} else {
|
|
103
|
+
ui.toast.dismiss();
|
|
104
|
+
ui.toast.error("Invoice", {
|
|
105
|
+
description: "Problem happened when generating new invoice number"
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setLoading(false);
|
|
110
|
+
}).catch((error) => {
|
|
111
|
+
var _a, _b;
|
|
112
|
+
console.error(error);
|
|
113
|
+
ui.toast.dismiss();
|
|
114
|
+
const trueError = error;
|
|
115
|
+
ui.toast.error("Invoice", {
|
|
116
|
+
description: (_b = (_a = trueError == null ? void 0 : trueError.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}, [isLoading]);
|
|
120
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu.Item, { className: "gap-x-2", onClick: () => {
|
|
121
|
+
if (window.confirm("This mints a brand new invoice number for this order, replacing the current one. The old number stays burned (not reusable). Continue?")) {
|
|
122
|
+
setLoading(true);
|
|
123
|
+
}
|
|
124
|
+
}, children: [
|
|
125
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowPath, {}),
|
|
126
|
+
"Generate new invoice number"
|
|
127
|
+
] });
|
|
128
|
+
};
|
|
73
129
|
const GeneratePackingSlipDropdownButton = ({ order, updatePackingSlipNumber }) => {
|
|
74
130
|
const [isLoading, setLoading] = React.useState(false);
|
|
75
131
|
const [error, setError] = React.useState(void 0);
|
|
@@ -127,6 +183,7 @@ function ActionsDropdown({ order, updateInvoiceNumber, updatePackingSlipNumber }
|
|
|
127
183
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { children: /* @__PURE__ */ jsxRuntime.jsx(icons.EllipsisHorizontal, {}) }) }),
|
|
128
184
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu.Content, { children: [
|
|
129
185
|
/* @__PURE__ */ jsxRuntime.jsx(GenerateInvoiceDropdownButton, { order, updateInvoiceNumber }),
|
|
186
|
+
/* @__PURE__ */ jsxRuntime.jsx(ForceNewInvoiceDropdownButton, { order, updateInvoiceNumber }),
|
|
130
187
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenu.Separator, {}),
|
|
131
188
|
/* @__PURE__ */ jsxRuntime.jsx(GeneratePackingSlipDropdownButton, { order, updatePackingSlipNumber })
|
|
132
189
|
] })
|
|
@@ -1466,7 +1523,7 @@ const InvoiceSettingsForm = ({ invoiceSettings, setOpenModal }) => {
|
|
|
1466
1523
|
};
|
|
1467
1524
|
const INVOICE_NUMBER_PLACEHOLDER = "{invoice_number}";
|
|
1468
1525
|
const errorText = `Text ${INVOICE_NUMBER_PLACEHOLDER} needs to be included in input.`;
|
|
1469
|
-
const LABEL_MUST_FORMAT = `Format must include ${INVOICE_NUMBER_PLACEHOLDER}`;
|
|
1526
|
+
const LABEL_MUST_FORMAT = `Format must include ${INVOICE_NUMBER_PLACEHOLDER}. Optional: {year}, {month} (from order date), e.g. INV-{year}-{month}-{invoice_number}`;
|
|
1470
1527
|
const LABEL_MUST_FORCED = `Forced number must be a number`;
|
|
1471
1528
|
const LABEL_INFO_FORCED = `It will auto-increment starting from this number.`;
|
|
1472
1529
|
const validateFormatNumber = (value) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { defineRouteConfig } from "@medusajs/admin-sdk";
|
|
3
3
|
import { toast, DropdownMenu, IconButton, TooltipProvider, Tooltip, Text, StatusBadge, Table, Container, Alert, Heading, Button, RadioGroup, Label, Tabs, FocusModal, Input, Toaster } from "@medusajs/ui";
|
|
4
|
-
import { FlyingBox, EllipsisHorizontal, InformationCircle, DocumentText } from "@medusajs/icons";
|
|
4
|
+
import { FlyingBox, ArrowPath, EllipsisHorizontal, InformationCircle, DocumentText } from "@medusajs/icons";
|
|
5
5
|
import { Grid, CircularProgress, Link, Box } from "@mui/material";
|
|
6
6
|
import React, { useState, useEffect, useMemo, useReducer } from "react";
|
|
7
7
|
import clsx from "clsx";
|
|
@@ -65,6 +65,62 @@ const GenerateInvoiceDropdownButton = ({ order, updateInvoiceNumber }) => {
|
|
|
65
65
|
"Generate new invoice"
|
|
66
66
|
] });
|
|
67
67
|
};
|
|
68
|
+
const ForceNewInvoiceDropdownButton = ({ order, updateInvoiceNumber }) => {
|
|
69
|
+
const [isLoading, setLoading] = useState(false);
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
if (!isLoading) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
fetch(`/admin/documents/invoice`, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
credentials: "include",
|
|
77
|
+
headers: {
|
|
78
|
+
"Content-Type": "application/json"
|
|
79
|
+
},
|
|
80
|
+
body: JSON.stringify({
|
|
81
|
+
order_id: order.id,
|
|
82
|
+
force_new: true
|
|
83
|
+
})
|
|
84
|
+
}).then((res) => res.json()).then((responseJson) => {
|
|
85
|
+
if (responseJson && responseJson.message) {
|
|
86
|
+
toast.error("Invoice", {
|
|
87
|
+
description: `Problem happened when generating new invoice number. ${responseJson.message}`
|
|
88
|
+
});
|
|
89
|
+
} else {
|
|
90
|
+
if (responseJson.buffer) {
|
|
91
|
+
updateInvoiceNumber(order.id, responseJson.invoice.displayNumber);
|
|
92
|
+
const anyBuffer = responseJson.buffer;
|
|
93
|
+
const blob = new Blob([new Uint8Array(anyBuffer.data)], { type: "application/pdf" });
|
|
94
|
+
toast.dismiss();
|
|
95
|
+
const pdfURL = URL.createObjectURL(blob);
|
|
96
|
+
window.open(pdfURL, "_blank");
|
|
97
|
+
} else {
|
|
98
|
+
toast.dismiss();
|
|
99
|
+
toast.error("Invoice", {
|
|
100
|
+
description: "Problem happened when generating new invoice number"
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
setLoading(false);
|
|
105
|
+
}).catch((error) => {
|
|
106
|
+
var _a, _b;
|
|
107
|
+
console.error(error);
|
|
108
|
+
toast.dismiss();
|
|
109
|
+
const trueError = error;
|
|
110
|
+
toast.error("Invoice", {
|
|
111
|
+
description: (_b = (_a = trueError == null ? void 0 : trueError.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}, [isLoading]);
|
|
115
|
+
return /* @__PURE__ */ jsxs(DropdownMenu.Item, { className: "gap-x-2", onClick: () => {
|
|
116
|
+
if (window.confirm("This mints a brand new invoice number for this order, replacing the current one. The old number stays burned (not reusable). Continue?")) {
|
|
117
|
+
setLoading(true);
|
|
118
|
+
}
|
|
119
|
+
}, children: [
|
|
120
|
+
/* @__PURE__ */ jsx(ArrowPath, {}),
|
|
121
|
+
"Generate new invoice number"
|
|
122
|
+
] });
|
|
123
|
+
};
|
|
68
124
|
const GeneratePackingSlipDropdownButton = ({ order, updatePackingSlipNumber }) => {
|
|
69
125
|
const [isLoading, setLoading] = useState(false);
|
|
70
126
|
const [error, setError] = useState(void 0);
|
|
@@ -122,6 +178,7 @@ function ActionsDropdown({ order, updateInvoiceNumber, updatePackingSlipNumber }
|
|
|
122
178
|
/* @__PURE__ */ jsx(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(IconButton, { children: /* @__PURE__ */ jsx(EllipsisHorizontal, {}) }) }),
|
|
123
179
|
/* @__PURE__ */ jsxs(DropdownMenu.Content, { children: [
|
|
124
180
|
/* @__PURE__ */ jsx(GenerateInvoiceDropdownButton, { order, updateInvoiceNumber }),
|
|
181
|
+
/* @__PURE__ */ jsx(ForceNewInvoiceDropdownButton, { order, updateInvoiceNumber }),
|
|
125
182
|
/* @__PURE__ */ jsx(DropdownMenu.Separator, {}),
|
|
126
183
|
/* @__PURE__ */ jsx(GeneratePackingSlipDropdownButton, { order, updatePackingSlipNumber })
|
|
127
184
|
] })
|
|
@@ -1461,7 +1518,7 @@ const InvoiceSettingsForm = ({ invoiceSettings, setOpenModal }) => {
|
|
|
1461
1518
|
};
|
|
1462
1519
|
const INVOICE_NUMBER_PLACEHOLDER = "{invoice_number}";
|
|
1463
1520
|
const errorText = `Text ${INVOICE_NUMBER_PLACEHOLDER} needs to be included in input.`;
|
|
1464
|
-
const LABEL_MUST_FORMAT = `Format must include ${INVOICE_NUMBER_PLACEHOLDER}`;
|
|
1521
|
+
const LABEL_MUST_FORMAT = `Format must include ${INVOICE_NUMBER_PLACEHOLDER}. Optional: {year}, {month} (from order date), e.g. INV-{year}-{month}-{invoice_number}`;
|
|
1465
1522
|
const LABEL_MUST_FORCED = `Forced number must be a number`;
|
|
1466
1523
|
const LABEL_INFO_FORCED = `It will auto-increment starting from this number.`;
|
|
1467
1524
|
const validateFormatNumber = (value) => {
|
|
@@ -30,33 +30,43 @@ const POST = async (req, res) => {
|
|
|
30
30
|
relations: ['shipping_address', 'billing_address', 'items']
|
|
31
31
|
});
|
|
32
32
|
if (order) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
id
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
newInvoiceId: result.invoice.id,
|
|
52
|
-
oldInvoiceId: orderWithInvoice.document_invoice ? orderWithInvoice.document_invoice.id : undefined
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
res.status(201).json(result);
|
|
33
|
+
// Idempotency check: if order already has an invoice, return it instead of minting new number
|
|
34
|
+
const query = req.scope.resolve(utils_3.ContainerRegistrationKeys.QUERY);
|
|
35
|
+
const { data: [orderWithInvoice], } = await query.graph({
|
|
36
|
+
entity: "order",
|
|
37
|
+
filters: {
|
|
38
|
+
id: [
|
|
39
|
+
order.id
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
fields: [
|
|
43
|
+
"document_invoice.*",
|
|
44
|
+
],
|
|
45
|
+
});
|
|
46
|
+
const forceNew = body.force_new === true;
|
|
47
|
+
let result;
|
|
48
|
+
if (orderWithInvoice.document_invoice && !forceNew) {
|
|
49
|
+
// Order already has invoice - regenerate PDF from existing invoice
|
|
50
|
+
result = await documentsModuleService.getInvoice(order, orderWithInvoice.document_invoice.id, true);
|
|
56
51
|
}
|
|
57
52
|
else {
|
|
58
|
-
|
|
53
|
+
// No existing invoice, or forced - mint a new number
|
|
54
|
+
result = await documentsModuleService.generateInvoiceForOrder(order);
|
|
55
|
+
if (result.invoice) {
|
|
56
|
+
await (0, assign_invoice_1.default)(req.scope)
|
|
57
|
+
.run({
|
|
58
|
+
input: {
|
|
59
|
+
orderId: order.id,
|
|
60
|
+
newInvoiceId: result.invoice.id,
|
|
61
|
+
oldInvoiceId: orderWithInvoice.document_invoice ? orderWithInvoice.document_invoice.id : undefined
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Invoice not generated');
|
|
67
|
+
}
|
|
59
68
|
}
|
|
69
|
+
res.status(201).json(result);
|
|
60
70
|
}
|
|
61
71
|
else {
|
|
62
72
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Invalid order id');
|
|
@@ -109,4 +119,4 @@ const GET = async (req, res) => {
|
|
|
109
119
|
}
|
|
110
120
|
};
|
|
111
121
|
exports.GET = GET;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9pbnZvaWNlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7OztHQVVHOzs7Ozs7QUFPSCwyQ0FBNkM7QUFFN0MsNkRBQWdFO0FBQ2hFLHFEQUFvRDtBQUNwRCxxREFBc0U7QUFDdEUsMEZBQStFO0FBR3hFLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDbkIsRUFBRTtJQUVGLE1BQU0sc0JBQXNCLEdBQTJCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUE7SUFDMUYsTUFBTSxrQkFBa0IsR0FBeUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hFLGVBQU8sQ0FBQyxLQUFLLENBQ2QsQ0FBQztJQUVGLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFRLEdBQUcsQ0FBQyxJQUFXLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQWEsTUFBTSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM1RSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQztZQUMxRCxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUM7U0FDNUQsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLDhGQUE4RjtZQUM5RixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoRSxNQUFNLEVBQ0osSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsR0FDekIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JB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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260811120000 = void 0;
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
|
+
class Migration20260811120000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`alter table if exists "document_invoice" add constraint "document_invoice_number_unique" unique ("number");`);
|
|
8
|
+
}
|
|
9
|
+
async down() {
|
|
10
|
+
this.addSql(`alter table if exists "document_invoice" drop constraint if exists "document_invoice_number_unique";`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.Migration20260811120000 = Migration20260811120000;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA4MTExMjAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kb2N1bWVudHMvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDgxMTEyMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBa0Q7QUFFbEQsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUUzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsNkdBQTZHLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzR0FBc0csQ0FBQyxDQUFDO0lBQ3RILENBQUM7Q0FFRjtBQVZELDBEQVVDIn0=
|
|
@@ -19,7 +19,7 @@ const document_invoice_settings_1 = __importDefault(require("./document-invoice-
|
|
|
19
19
|
const document_settings_1 = __importDefault(require("./document-settings"));
|
|
20
20
|
const DocumentInvoice = utils_1.model.define("document_invoice", {
|
|
21
21
|
id: utils_1.model.id().primaryKey(),
|
|
22
|
-
number: utils_1.model.number(),
|
|
22
|
+
number: utils_1.model.number().unique(),
|
|
23
23
|
displayNumber: utils_1.model.text(),
|
|
24
24
|
invoiceSettings: utils_1.model.belongsTo(() => document_invoice_settings_1.default, {
|
|
25
25
|
mappedBy: 'documentInvoice'
|
|
@@ -29,4 +29,4 @@ const DocumentInvoice = utils_1.model.define("document_invoice", {
|
|
|
29
29
|
})
|
|
30
30
|
});
|
|
31
31
|
exports.default = DocumentInvoice;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2RvY3VtZW50cy9tb2RlbHMvZG9jdW1lbnQtaW52b2ljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7R0FVRzs7Ozs7QUFFSCxxREFBaUQ7QUFDakQsNEZBQWlFO0FBQ2pFLDRFQUFrRDtBQUVsRCxNQUFNLGVBQWUsR0FBRyxhQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO0lBQ3ZELEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzNCLE1BQU0sRUFBRSxhQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFO0lBQy9CLGFBQWEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzNCLGVBQWUsRUFBRSxhQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLG1DQUF1QixFQUFFO1FBQzlELFFBQVEsRUFBRSxpQkFBaUI7S0FDNUIsQ0FBQztJQUNGLFFBQVEsRUFBRSxhQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUFnQixFQUFFO1FBQ2hELFFBQVEsRUFBRSxpQkFBaUI7S0FDNUIsQ0FBQztDQUNILENBQUMsQ0FBQTtBQUVGLGtCQUFlLGVBQWUsQ0FBQSJ9
|
|
@@ -81,7 +81,7 @@ class DocumentsModuleService extends (0, utils_2.MedusaService)({
|
|
|
81
81
|
}
|
|
82
82
|
const lastInvoice = await this.listDocumentInvoices({}, {
|
|
83
83
|
order: {
|
|
84
|
-
|
|
84
|
+
number: "DESC"
|
|
85
85
|
},
|
|
86
86
|
take: 1
|
|
87
87
|
});
|
|
@@ -90,10 +90,20 @@ class DocumentsModuleService extends (0, utils_2.MedusaService)({
|
|
|
90
90
|
}
|
|
91
91
|
return '1';
|
|
92
92
|
}
|
|
93
|
+
formatInvoiceDisplayNumber(format, nextNumber, date) {
|
|
94
|
+
if (!format) {
|
|
95
|
+
return nextNumber;
|
|
96
|
+
}
|
|
97
|
+
const paddedNumber = nextNumber.padStart(2, '0');
|
|
98
|
+
return format
|
|
99
|
+
.replace(constants_1.INVOICE_YEAR_PLACEHOLDER, date.getFullYear().toString())
|
|
100
|
+
.replace(constants_1.INVOICE_MONTH_PLACEHOLDER, (date.getMonth() + 1).toString().padStart(2, '0'))
|
|
101
|
+
.replace(constants_1.INVOICE_NUMBER_PLACEHOLDER, paddedNumber);
|
|
102
|
+
}
|
|
93
103
|
async getNextPackingSlipNumber() {
|
|
94
104
|
const lastPackingSlip = await this.listDocumentPackingSlips({}, {
|
|
95
105
|
order: {
|
|
96
|
-
|
|
106
|
+
number: "DESC"
|
|
97
107
|
},
|
|
98
108
|
take: 1
|
|
99
109
|
});
|
|
@@ -197,7 +207,7 @@ class DocumentsModuleService extends (0, utils_2.MedusaService)({
|
|
|
197
207
|
if (validationPassed) {
|
|
198
208
|
const testInvoice = {
|
|
199
209
|
number: parseInt(nextNumber),
|
|
200
|
-
displayNumber: invoiceSettings.numberFormat ?
|
|
210
|
+
displayNumber: this.formatInvoiceDisplayNumber(invoiceSettings.numberFormat, nextNumber, order.created_at ? new Date(order.created_at) : new Date()),
|
|
201
211
|
created_at: new Date(Date.now())
|
|
202
212
|
};
|
|
203
213
|
const buffer = await (0, invoice_generator_1.generateInvoice)(templateKind, lastDocumentSettings[0], testInvoice, order);
|
|
@@ -248,7 +258,7 @@ class DocumentsModuleService extends (0, utils_2.MedusaService)({
|
|
|
248
258
|
const nextNumber = await this.getNextInvoiceNumber(RESET_FORCED_NUMBER);
|
|
249
259
|
const entryInvoice = {
|
|
250
260
|
number: parseInt(nextNumber),
|
|
251
|
-
displayNumber: invoiceSettings.numberFormat ?
|
|
261
|
+
displayNumber: this.formatInvoiceDisplayNumber(invoiceSettings.numberFormat, nextNumber, order.created_at ? new Date(order.created_at) : new Date()),
|
|
252
262
|
created_at: new Date(Date.now()),
|
|
253
263
|
invoice_settings_id: invoiceSettings.id,
|
|
254
264
|
settings_id: lastDocumentSettings[0].id
|
|
@@ -493,10 +503,10 @@ class DocumentsModuleService extends (0, utils_2.MedusaService)({
|
|
|
493
503
|
async getTestDisplayNumber(formatNumber, forcedNumber) {
|
|
494
504
|
const nextNumber = forcedNumber !== undefined ? forcedNumber : await this.getNextInvoiceNumber();
|
|
495
505
|
if (nextNumber) {
|
|
496
|
-
return
|
|
506
|
+
return this.formatInvoiceDisplayNumber(formatNumber, nextNumber, new Date());
|
|
497
507
|
}
|
|
498
508
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Neither forced number is set or any order present');
|
|
499
509
|
}
|
|
500
510
|
}
|
|
501
511
|
exports.default = DocumentsModuleService;
|
|
502
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2RvY3VtZW50cy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7OztHQVVHOzs7OztBQUVILDJDQUErRDtBQUMvRCxxREFBeUQ7QUFHekQsaUZBQXdEO0FBQ3hELDJGQUFpRTtBQUNqRSxtRkFBMEQ7QUFDMUQsbUdBQXlFO0FBQ3pFLDZHQUFrRjtBQUdsRix5REFBcUY7QUFDckYsaURBQWdHO0FBQ2hHLCtFQUF3RztBQUN4Ryx5RkFBNEo7QUFXNUosTUFBTSxzQkFBdUIsU0FBUSxJQUFBLHFCQUFhLEVBQUM7SUFDakQsZUFBZSxFQUFmLDBCQUFlO0lBQ2YsbUJBQW1CLEVBQW5CLCtCQUFtQjtJQUNuQixnQkFBZ0IsRUFBaEIsMkJBQWdCO0lBQ2hCLHVCQUF1QixFQUF2QixtQ0FBdUI7SUFDdkIsMkJBQTJCLEVBQTNCLHdDQUEyQjtDQUM1QixDQUFDO0lBTUEsWUFBWSxFQUNXLEVBQUUsT0FBdUI7UUFDOUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQ0FBc0M7UUFDbEQsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEVBQUU7WUFDN0UsS0FBSyxFQUFFO2dCQUNMLFVBQVUsRUFBRSxNQUFNO2FBQ25CO1lBQ0QsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUE7UUFDRixJQUFJLDJCQUEyQixJQUFJLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLDZCQUE2QixDQUFDO2dCQUN0RCxZQUFZLEVBQUUsU0FBUztnQkFDdkIsWUFBWSxFQUFFLDJCQUEyQixDQUFDLENBQUMsQ0FB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
|
|
512
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2RvY3VtZW50cy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7OztHQVVHOzs7OztBQUVILDJDQUErRDtBQUMvRCxxREFBeUQ7QUFHekQsaUZBQXdEO0FBQ3hELDJGQUFpRTtBQUNqRSxtRkFBMEQ7QUFDMUQsbUdBQXlFO0FBQ3pFLDZHQUFrRjtBQUdsRix5REFBcUY7QUFDckYsaURBQXFKO0FBQ3JKLCtFQUF3RztBQUN4Ryx5RkFBNEo7QUFXNUosTUFBTSxzQkFBdUIsU0FBUSxJQUFBLHFCQUFhLEVBQUM7SUFDakQsZUFBZSxFQUFmLDBCQUFlO0lBQ2YsbUJBQW1CLEVBQW5CLCtCQUFtQjtJQUNuQixnQkFBZ0IsRUFBaEIsMkJBQWdCO0lBQ2hCLHVCQUF1QixFQUF2QixtQ0FBdUI7SUFDdkIsMkJBQTJCLEVBQTNCLHdDQUEyQjtDQUM1QixDQUFDO0lBTUEsWUFBWSxFQUNXLEVBQUUsT0FBdUI7UUFDOUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQ0FBc0M7UUFDbEQsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEVBQUU7WUFDN0UsS0FBSyxFQUFFO2dCQUNMLFVBQVUsRUFBRSxNQUFNO2FBQ25CO1lBQ0QsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUE7UUFDRixJQUFJLDJCQUEyQixJQUFJLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLDZCQUE2QixDQUFDO2dCQUN0RCxZQUFZLEVBQUUsU0FBUztnQkFDdkIsWUFBWSxFQUFFLDJCQUEyQixDQUFDLENBQUMsQ0FB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
|
package/.medusa/server/src/modules/documents/services/templates/invoices/india-gst/parts/table.js
CHANGED
|
@@ -21,8 +21,9 @@ function generateTableRow(doc, y, item, hsn, quantity, unitCost, lineTotal) {
|
|
|
21
21
|
nextY = _y + height;
|
|
22
22
|
}
|
|
23
23
|
doc
|
|
24
|
-
.text(
|
|
25
|
-
.text(
|
|
24
|
+
// ponytail: HSN/SAC column hidden, B2C-only for now. Re-enable when B2B sales resume: restore width 190, uncomment .text(hsn, 235, _y, { width: 55 })
|
|
25
|
+
.text(item, 40, _y, { width: 250 })
|
|
26
|
+
// .text(hsn, 235, _y, { width: 55 })
|
|
26
27
|
.text(quantity, 295, _y, { width: 45, align: "right" })
|
|
27
28
|
.text(unitCost, 345, _y, { width: 85, align: "right" })
|
|
28
29
|
.text(lineTotal, 435, _y, { width: 120, align: "right" });
|
|
@@ -42,13 +43,16 @@ function generateInvoiceTable(doc, y, order, items, isInterState) {
|
|
|
42
43
|
(0, hr_1.generateHr)(doc, invoiceTableTop + 15);
|
|
43
44
|
doc.font("Regular");
|
|
44
45
|
let currentY = invoiceTableTop + 25;
|
|
46
|
+
let taxableTotal = 0;
|
|
45
47
|
for (i = 0; i < items.length; i++) {
|
|
46
48
|
if (currentY > pageHeight) {
|
|
47
49
|
doc.addPage();
|
|
48
50
|
currentY = 50;
|
|
49
51
|
}
|
|
50
52
|
const item = items[i];
|
|
51
|
-
|
|
53
|
+
const lineTaxableValue = Number(item.raw_subtotal.value);
|
|
54
|
+
taxableTotal += lineTaxableValue;
|
|
55
|
+
currentY = generateTableRow(doc, currentY, item.title, item.metadata?.hsn_code ? String(item.metadata.hsn_code) : '', item.quantity, amountToDisplayNormalized(lineTaxableValue / item.quantity, order.currency_code), amountToDisplayNormalized(lineTaxableValue, order.currency_code));
|
|
52
56
|
currentY += 5;
|
|
53
57
|
if (currentY > pageHeight) {
|
|
54
58
|
doc.addPage();
|
|
@@ -66,6 +70,7 @@ function generateInvoiceTable(doc, y, order, items, isInterState) {
|
|
|
66
70
|
const taxTotal = order.tax_total.numeric;
|
|
67
71
|
const grandTotal = order.total.numeric;
|
|
68
72
|
doc.fontSize(9);
|
|
73
|
+
currentY = generateTotalRow(doc, currentY, (0, i18next_1.t)("invoice-table-taxable-value", "Taxable Value"), amountToDisplayNormalized(taxableTotal, order.currency_code));
|
|
69
74
|
currentY = generateTotalRow(doc, currentY, (0, i18next_1.t)("invoice-table-shipping", "Shipping"), amountToDisplayNormalized(shippingTotal, order.currency_code));
|
|
70
75
|
if (isInterState) {
|
|
71
76
|
currentY = generateTotalRow(doc, currentY, "IGST", amountToDisplayNormalized(taxTotal, order.currency_code));
|
|
@@ -85,4 +90,4 @@ function generateInvoiceTable(doc, y, order, items, isInterState) {
|
|
|
85
90
|
doc.font("Regular");
|
|
86
91
|
return currentY + 25;
|
|
87
92
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kb2N1bWVudHMvc2VydmljZXMvdGVtcGxhdGVzL2ludm9pY2VzL2luZGlhLWdzdC9wYXJ0cy90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJDQSxvREEyR0M7QUF0SkQsNkNBQWtEO0FBQ2xELHFDQUE0QjtBQUU1Qiw0REFBaUU7QUFHakUsU0FBUyx5QkFBeUIsQ0FBQyxNQUFjLEVBQUUsWUFBb0I7SUFDckUsTUFBTSxhQUFhLEdBQUcsSUFBQSwyQkFBZ0IsRUFBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztBQUNqRyxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTO0lBQ3hFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFaEIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUV2QixJQUFJLEtBQUssR0FBRyxVQUFVLEVBQUUs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
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* limitations under the License.
|
|
12
12
|
*/
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.PACKING_SLIP_NUMBER_PLACEHOLDER = exports.INVOICE_NUMBER_PLACEHOLDER = void 0;
|
|
14
|
+
exports.INVOICE_MONTH_PLACEHOLDER = exports.INVOICE_YEAR_PLACEHOLDER = exports.PACKING_SLIP_NUMBER_PLACEHOLDER = exports.INVOICE_NUMBER_PLACEHOLDER = void 0;
|
|
15
15
|
exports.INVOICE_NUMBER_PLACEHOLDER = `{invoice_number}`;
|
|
16
16
|
exports.PACKING_SLIP_NUMBER_PLACEHOLDER = `{packing_slip_number}`;
|
|
17
|
-
|
|
17
|
+
exports.INVOICE_YEAR_PLACEHOLDER = `{year}`;
|
|
18
|
+
exports.INVOICE_MONTH_PLACEHOLDER = `{month}`;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvZG9jdW1lbnRzL3R5cGVzL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7R0FVRzs7O0FBRVUsUUFBQSwwQkFBMEIsR0FBRyxrQkFBa0IsQ0FBQztBQUNoRCxRQUFBLCtCQUErQixHQUFHLHVCQUF1QixDQUFDO0FBQzFELFFBQUEsd0JBQXdCLEdBQUcsUUFBUSxDQUFDO0FBQ3BDLFFBQUEseUJBQXlCLEdBQUcsU0FBUyxDQUFDIn0=
|
|
@@ -8,8 +8,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
8
8
|
const icons_1 = require("@medusajs/icons");
|
|
9
9
|
const ui_1 = require("@medusajs/ui");
|
|
10
10
|
const button_generate_invoice_1 = __importDefault(require("./invoice/button-generate-invoice"));
|
|
11
|
+
const button_force_new_invoice_1 = __importDefault(require("./invoice/button-force-new-invoice"));
|
|
11
12
|
const button_generate_packing_slip_1 = __importDefault(require("./packing-slip/button-generate-packing-slip"));
|
|
12
13
|
function ActionsDropdown({ order, updateInvoiceNumber, updatePackingSlipNumber }) {
|
|
13
|
-
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(ui_1.DropdownMenu, { children: [(0, jsx_runtime_1.jsx)(ui_1.DropdownMenu.Trigger, { asChild: true, children: (0, jsx_runtime_1.jsx)(ui_1.IconButton, { children: (0, jsx_runtime_1.jsx)(icons_1.EllipsisHorizontal, {}) }) }), (0, jsx_runtime_1.jsxs)(ui_1.DropdownMenu.Content, { children: [(0, jsx_runtime_1.jsx)(button_generate_invoice_1.default, { order: order, updateInvoiceNumber: updateInvoiceNumber }), (0, jsx_runtime_1.jsx)(ui_1.DropdownMenu.Separator, {}), (0, jsx_runtime_1.jsx)(button_generate_packing_slip_1.default, { order: order, updatePackingSlipNumber: updatePackingSlipNumber })] })] }) }));
|
|
14
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(ui_1.DropdownMenu, { children: [(0, jsx_runtime_1.jsx)(ui_1.DropdownMenu.Trigger, { asChild: true, children: (0, jsx_runtime_1.jsx)(ui_1.IconButton, { children: (0, jsx_runtime_1.jsx)(icons_1.EllipsisHorizontal, {}) }) }), (0, jsx_runtime_1.jsxs)(ui_1.DropdownMenu.Content, { children: [(0, jsx_runtime_1.jsx)(button_generate_invoice_1.default, { order: order, updateInvoiceNumber: updateInvoiceNumber }), (0, jsx_runtime_1.jsx)(button_force_new_invoice_1.default, { order: order, updateInvoiceNumber: updateInvoiceNumber }), (0, jsx_runtime_1.jsx)(ui_1.DropdownMenu.Separator, {}), (0, jsx_runtime_1.jsx)(button_generate_packing_slip_1.default, { order: order, updatePackingSlipNumber: updatePackingSlipNumber })] })] }) }));
|
|
14
15
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1kcm9wZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91aS1jb21wb25lbnRzL2FjdGlvbnMtZHJvcGRvd24vYWN0aW9ucy1kcm9wZG93bi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFNQSwwQ0FtQkM7O0FBekJELDJDQUFvRDtBQUNwRCxxQ0FBdUQ7QUFDdkQsZ0dBQThFO0FBQzlFLGtHQUErRTtBQUMvRSwrR0FBNEY7QUFFNUYsU0FBZ0IsZUFBZSxDQUFDLEVBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUF3RTtJQUUxSixPQUFPLENBQ0wsMkRBQ0Esd0JBQUMsaUJBQVksZUFDWCx1QkFBQyxpQkFBWSxDQUFDLE9BQU8sSUFBQyxPQUFPLGtCQUMzQix1QkFBQyxlQUFVLGNBQ1QsdUJBQUMsMEJBQWtCLEtBQUcsR0FDWCxHQUNRLEVBQ3ZCLHdCQUFDLGlCQUFZLENBQUMsT0FBTyxlQUNuQix1QkFBQyxpQ0FBNkIsSUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixHQUFHLEVBQ3hGLHVCQUFDLGtDQUE2QixJQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEdBQUcsRUFDeEYsdUJBQUMsaUJBQVksQ0FBQyxTQUFTLEtBQUcsRUFDMUIsdUJBQUMsc0NBQWlDLElBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsR0FBRyxJQUMvRSxJQUNWLEdBQ1osQ0FDSixDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
/*
|
|
5
|
+
* Copyright 2024 RSC-Labs, https://rsoftcon.com/
|
|
6
|
+
*
|
|
7
|
+
* MIT License
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
15
|
+
const icons_1 = require("@medusajs/icons");
|
|
16
|
+
const ui_1 = require("@medusajs/ui");
|
|
17
|
+
const react_1 = require("react");
|
|
18
|
+
const ForceNewInvoiceDropdownButton = ({ order, updateInvoiceNumber }) => {
|
|
19
|
+
const [isLoading, setLoading] = (0, react_1.useState)(false);
|
|
20
|
+
(0, react_1.useEffect)(() => {
|
|
21
|
+
if (!isLoading) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
fetch(`/admin/documents/invoice`, {
|
|
25
|
+
method: "POST",
|
|
26
|
+
credentials: "include",
|
|
27
|
+
headers: {
|
|
28
|
+
"Content-Type": "application/json",
|
|
29
|
+
},
|
|
30
|
+
body: JSON.stringify({
|
|
31
|
+
order_id: order.id,
|
|
32
|
+
force_new: true
|
|
33
|
+
})
|
|
34
|
+
})
|
|
35
|
+
.then((res) => res.json())
|
|
36
|
+
.then((responseJson) => {
|
|
37
|
+
if (responseJson && responseJson.message) {
|
|
38
|
+
ui_1.toast.error("Invoice", {
|
|
39
|
+
description: `Problem happened when generating new invoice number. ${responseJson.message}`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
if (responseJson.buffer) {
|
|
44
|
+
updateInvoiceNumber(order.id, responseJson.invoice.displayNumber);
|
|
45
|
+
const anyBuffer = responseJson.buffer;
|
|
46
|
+
const blob = new Blob([new Uint8Array(anyBuffer.data)], { type: 'application/pdf' });
|
|
47
|
+
ui_1.toast.dismiss();
|
|
48
|
+
const pdfURL = URL.createObjectURL(blob);
|
|
49
|
+
window.open(pdfURL, '_blank');
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
ui_1.toast.dismiss();
|
|
53
|
+
ui_1.toast.error("Invoice", {
|
|
54
|
+
description: 'Problem happened when generating new invoice number',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
setLoading(false);
|
|
59
|
+
})
|
|
60
|
+
.catch((error) => {
|
|
61
|
+
console.error(error);
|
|
62
|
+
ui_1.toast.dismiss();
|
|
63
|
+
const trueError = error;
|
|
64
|
+
ui_1.toast.error("Invoice", {
|
|
65
|
+
description: trueError?.response?.data?.message,
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}, [isLoading]);
|
|
69
|
+
return ((0, jsx_runtime_1.jsxs)(ui_1.DropdownMenu.Item, { className: "gap-x-2", onClick: () => {
|
|
70
|
+
if (window.confirm('This mints a brand new invoice number for this order, replacing the current one. The old number stays burned (not reusable). Continue?')) {
|
|
71
|
+
setLoading(true);
|
|
72
|
+
}
|
|
73
|
+
}, children: [(0, jsx_runtime_1.jsx)(icons_1.ArrowPath, {}), "Generate new invoice number"] }));
|
|
74
|
+
};
|
|
75
|
+
exports.default = ForceNewInvoiceDropdownButton;
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWZvcmNlLW5ldy1pbnZvaWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3VpLWNvbXBvbmVudHMvYWN0aW9ucy1kcm9wZG93bi9pbnZvaWNlL2J1dHRvbi1mb3JjZS1uZXctaW52b2ljZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILDJDQUEyQztBQUMzQyxxQ0FBa0Q7QUFDbEQsaUNBQTRDO0FBRTVDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBNEMsRUFBRSxFQUFFO0lBRWpILE1BQU0sQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsSUFBQSxnQkFBUSxFQUFDLEtBQUssQ0FBQyxDQUFBO0lBRS9DLElBQUEsaUJBQVMsRUFBQyxHQUFHLEVBQUU7UUFDYixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUNELEtBQUssQ0FBQywwQkFBMEIsRUFBRTtZQUNoQyxNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDbEIsU0FBUyxFQUFFLElBQUk7YUFDaEIsQ0FBQztTQUNILENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN6QixJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNyQixJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3pDLFVBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFO29CQUNyQixXQUFXLEVBQUUsd0RBQXdELFlBQVksQ0FBQyxPQUFPLEVBQUU7aUJBQzVGLENBQUMsQ0FBQTtZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDeEIsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO29CQUNqRSxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBYSxDQUFDO29CQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFFLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFHLGlCQUFpQixFQUFDLENBQUMsQ0FBQztvQkFDeEYsVUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFVBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDaEIsVUFBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7d0JBQ3JCLFdBQVcsRUFBRSxxREFBcUQ7cUJBQ25FLENBQUMsQ0FBQTtnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUNELFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsVUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sU0FBUyxHQUFHLEtBQVksQ0FBQztZQUMvQixVQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFDckIsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU87YUFDaEQsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBRWYsT0FBTyxDQUNMLHdCQUFDLGlCQUFZLENBQUMsSUFBSSxJQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNuRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsd0lBQXdJLENBQUMsRUFBRSxDQUFDO2dCQUM3SixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbEIsQ0FBQztRQUNILENBQUMsYUFDQyx1QkFBQyxpQkFBUyxLQUFFLG1DQUVNLENBQ3JCLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxrQkFBZSw2QkFBNkIsQ0FBQSJ9
|
|
@@ -61,7 +61,7 @@ const InvoiceSettingsForm = ({ invoiceSettings, setOpenModal }) => {
|
|
|
61
61
|
};
|
|
62
62
|
const INVOICE_NUMBER_PLACEHOLDER = '{invoice_number}';
|
|
63
63
|
const errorText = `Text ${INVOICE_NUMBER_PLACEHOLDER} needs to be included in input.`;
|
|
64
|
-
const LABEL_MUST_FORMAT = `Format must include ${INVOICE_NUMBER_PLACEHOLDER}`;
|
|
64
|
+
const LABEL_MUST_FORMAT = `Format must include ${INVOICE_NUMBER_PLACEHOLDER}. Optional: {year}, {month} (from order date), e.g. INV-{year}-{month}-{invoice_number}`;
|
|
65
65
|
const LABEL_MUST_FORCED = `Forced number must be a number`;
|
|
66
66
|
const LABEL_INFO_FORCED = `It will auto-increment starting from this number.`;
|
|
67
67
|
const validateFormatNumber = (value) => {
|
|
@@ -136,4 +136,4 @@ const InvoiceSettingsModal = () => {
|
|
|
136
136
|
return ((0, jsx_runtime_1.jsxs)(ui_1.FocusModal, { open: open, onOpenChange: setOpen, children: [(0, jsx_runtime_1.jsx)(ui_1.FocusModal.Trigger, { asChild: true, children: (0, jsx_runtime_1.jsx)(ui_1.Button, { children: "Change settings" }) }), (0, jsx_runtime_1.jsxs)(ui_1.FocusModal.Content, { children: [(0, jsx_runtime_1.jsx)(ui_1.FocusModal.Header, {}), (0, jsx_runtime_1.jsx)(InvoiceSettingsModalDetails, { setOpenModal: setOpen })] })] }));
|
|
137
137
|
};
|
|
138
138
|
exports.default = InvoiceSettingsModal;
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91aS1jb21wb25lbnRzL3NldHRpbmdzL3NldHRpbmdzLWludm9pY2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFFSCxxQ0FBcUY7QUFDckYsNENBQXVEO0FBQ3ZELHFEQUEwQztBQUMxQyxxQ0FBcUM7QUFDckMsaUNBQTRDO0FBRTVDLHdHQUE2RTtBQU83RSxNQUFNLG1CQUFtQixHQUFHLENBQUMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFtRSxFQUFFLEVBQUU7SUFFakksTUFBTSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFBLHlCQUFPLEdBQW1CLENBQUE7SUFDcEYsTUFBTSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsR0FBRyxJQUFBLGdCQUFRLEVBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLEdBQUcsSUFBQSxnQkFBUSxFQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNoRixNQUFNLENBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBRSxHQUFHLElBQUEsZ0JBQVEsRUFBcUIsU0FBUyxDQUFDLENBQUM7SUFFcEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFxQixFQUFFLEVBQUU7UUFDekMsS0FBSyxDQUFDLDRDQUE0QyxFQUFFO1lBQ2xELE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLFNBQVM7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7WUFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixZQUFZLEVBQUUsSUFBSSxD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
|