From 2b6da6b369a6af9ef1bca7079a3d2d98cb0fe620 Mon Sep 17 00:00:00 2001 From: zdni Date: Mon, 12 Aug 2024 20:33:07 +0800 Subject: [PATCH] add total income, total expense and total margin in report --- controllers/PDFController.js | 20 ++++++++++++++++++++ controllers/XlsxController.js | 26 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/controllers/PDFController.js b/controllers/PDFController.js index 97d5650..c32b16b 100644 --- a/controllers/PDFController.js +++ b/controllers/PDFController.js @@ -42,6 +42,8 @@ class PDFController { let number = 0; let income = 0; let expense = 0; + let total_income = 0; + let total_expense = 0; let first = true; lines.map((line) => { if(currentDate !== fDate(line.date)) { @@ -92,6 +94,9 @@ class PDFController { income += line.debit; expense += line.credit; + total_income += line.debit; + total_expense += line.credit; + html += ` ${number} @@ -117,6 +122,21 @@ class PDFController { + + + + + + + + + + + + + + +
Total Income${fCurrency(total_income)}
Total Expense${fCurrency(total_expense)}
Margin${fCurrency(total_income-total_expense)}
`; diff --git a/controllers/XlsxController.js b/controllers/XlsxController.js index 81788dc..a742300 100644 --- a/controllers/XlsxController.js +++ b/controllers/XlsxController.js @@ -33,6 +33,9 @@ class XlsxController { let income = 0; let expense = 0; let margin = 0; + let total_income = 0; + let total_expense = 0; + let total = 0; lines.map((line) => { if(currentDate !== fDate(line.date)) { if(row !== 3) { @@ -73,6 +76,9 @@ class XlsxController { income += line.debit; expense += line.credit; + total_income += line.debit; + total_expense += line.credit; + ws.setCell(row, 0, { type: "number", value: number }); ws.setCell(row, 1, { type: "string", value: line.label }); ws.setCell(row, 2, { type: "string", value: line.accountId?.name || '' }); @@ -94,6 +100,26 @@ class XlsxController { ws.setCell(row, 4, { type: "number", value: margin, style: { alignment: {horizontal: "right", vertical: "center"} } }); ws.setMergeCell({ ref: `E${row+1}:F${row+1}` }); + // recapitulation + row += 3 + ws.setCell(row, 0, { type: "string", value: "Total Income" }); + ws.setMergeCell({ ref: `A${row+1}:D${row+1}` }) + ws.setCell(row, 4, { type: "number", value: total_income, style: { alignment: {horizontal: "right", vertical: "center"} } }); + ws.setMergeCell({ ref: `E${row+1}:F${row+1}` }); + + row += 1 + ws.setCell(row, 0, { type: "string", value: "Total Expense" }); + ws.setMergeCell({ ref: `A${row+1}:D${row+1}` }) + ws.setCell(row, 4, { type: "number", value: total_expense, style: { alignment: {horizontal: "right", vertical: "center"} } }); + ws.setMergeCell({ ref: `E${row+1}:F${row+1}` }); + + row += 1 + total = total_income - total_expense + ws.setCell(row, 0, { type: "string", value: "Margin" }); + ws.setMergeCell({ ref: `A${row+1}:D${row+1}` }) + ws.setCell(row, 4, { type: "number", value: total, style: { alignment: {horizontal: "right", vertical: "center"} } }); + ws.setMergeCell({ ref: `E${row+1}:F${row+1}` }); + const xlsx = wb.generateXlsxSync(); const filename = `${fDate(startDate*1)}-${fDate(endDate*1)}.xlsx` writeFileSync(`exports/${filename}`, xlsx);