medusa-invoice
Version:
Generate invoice from Medusa
62 lines • 8.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateInvoiceTable = exports.amountToDisplay = void 0;
const path_1 = __importDefault(require("path"));
const currency_1 = require("../../../../utils/currency");
const amountToDisplay = (amount, currencyCode) => {
const decimalDigits = (0, currency_1.getDecimalDigits)(currencyCode);
return `₹${(amount / Math.pow(10, decimalDigits)).toFixed(decimalDigits)}`;
};
exports.amountToDisplay = amountToDisplay;
function generateTableRow(doc, y, item, hsn, quantity, unitCost, lineTotal, bg) {
if (bg) {
doc
.roundedRect(50, y - 3, 500, 20, 3)
.fillColor("#000000")
.fill();
doc.fillColor("#FFFFFF");
}
else {
doc.fillColor("#000000");
}
doc
.fontSize(10)
.font("Bold")
.text(item, 58, y)
.font("Regular")
.text(hsn, 240, y, { width: 60, align: "left" })
.text(quantity, 300, y, { width: 90, align: "left" })
.text(unitCost, 340, y, { width: 130, align: "right" })
.text(lineTotal, 0, y, { align: "right" });
}
function generateInvoiceTable(doc, y, order, items) {
doc.registerFont("Regular", path_1.default.resolve(__dirname, "../../../../../fonts/NotoSans-Regular.ttf"));
doc.registerFont("Bold", path_1.default.resolve(__dirname, "../../../../../fonts/NotoSans-Bold.ttf"));
doc.font("Regular");
let i;
const invoiceTableTop = y + 15;
generateTableRow(doc, invoiceTableTop, "Item", "HSN", "Quantity", "Unit Cost", "Amount", true);
for (i = 0; i < items.length; i++) {
const item = items[i];
const position = invoiceTableTop + (i + 1) * 30;
generateTableRow(doc, position, item.title, "21069099", item.quantity, (0, exports.amountToDisplay)(item.unit_price * 1.18, order.currency_code), (0, exports.amountToDisplay)(item.total, order.currency_code), false);
}
const subtotalPosition = invoiceTableTop + (i + 1) * 30 + 5;
generateTableRow(doc, subtotalPosition, "", "", "", "Subtotal:", (0, exports.amountToDisplay)(order.subtotal, order.currency_code), false);
const discountPosition = subtotalPosition + 22;
generateTableRow(doc, discountPosition, "", "", "", "Discount:", "-" + (0, exports.amountToDisplay)(order.discount_total, order.currency_code), false);
const shippingPosition = discountPosition + 22;
generateTableRow(doc, shippingPosition, "", "", "", "Shipping:", (0, exports.amountToDisplay)(order.shipping_total, order.currency_code), false);
const taxcgstPosition = shippingPosition + 22;
generateTableRow(doc, taxcgstPosition, "", "", "", "CGST (9%):", (0, exports.amountToDisplay)(order.tax_total / 2, order.currency_code), false);
const taxsgstPosition = taxcgstPosition + 22;
generateTableRow(doc, taxsgstPosition, "", "", "", "SGST (9%):", (0, exports.amountToDisplay)(order.tax_total / 2, order.currency_code), false);
const totalPosition = taxsgstPosition + 22;
generateTableRow(doc, totalPosition, "", "", "", "Total:", (0, exports.amountToDisplay)(order.total, order.currency_code), false);
return totalPosition + 30;
}
exports.generateInvoiceTable = generateInvoiceTable;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvdGVtcGxhdGVzL2ludm9pY2VzL2Jhc2ljL3BhcnRzL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGdEQUF3QjtBQUN4Qix5REFBOEQ7QUFFdkQsTUFBTSxlQUFlLEdBQUcsQ0FDN0IsTUFBYyxFQUNkLFlBQW9CLEVBQ1osRUFBRTtJQUNWLE1BQU0sYUFBYSxHQUFHLElBQUEsMkJBQWdCLEVBQUMsWUFBWSxDQUFDLENBQUM7SUFDckQsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7QUFDN0UsQ0FBQyxDQUFDO0FBTlcsUUFBQSxlQUFlLG1CQU0xQjtBQUVGLFNBQVMsZ0JBQWdCLENBQ3ZCLEdBQUcsRUFDSCxDQUFDLEVBQ0QsSUFBSSxFQUNKLEdBQUcsRUFDSCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxFQUFFO0lBRUYsSUFBSSxFQUFFLEVBQUU7UUFDTixHQUFHO2FBQ0EsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxTQUFTLENBQUM7YUFDcEIsSUFBSSxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzFCO1NBQU07UUFDTCxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzFCO0lBRUQsR0FBRztTQUNBLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDWixJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ1osSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ2pCLElB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