diff options
| author | mihna123 <mihailonvojinovic@gmail.com> | 2026-05-24 21:06:33 +0200 |
|---|---|---|
| committer | mihna123 <mihailonvojinovic@gmail.com> | 2026-05-24 21:06:33 +0200 |
| commit | ac9d1c122c8635dc40a397ceb9e2aa9684ba41dd (patch) | |
| tree | 1fa48f721df0fce47739f87f11f2dae5ef3db7cf /src/lib/generate.ts | |
| parent | 4aca1f6f1664d819cc4c6cf1c52f6a57c189f509 (diff) | |
| download | invoice-ac9d1c122c8635dc40a397ceb9e2aa9684ba41dd.tar.gz invoice-ac9d1c122c8635dc40a397ceb9e2aa9684ba41dd.zip | |
feat(generate): add a separator before total for nicer style
Diffstat (limited to 'src/lib/generate.ts')
| -rw-r--r-- | src/lib/generate.ts | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/lib/generate.ts b/src/lib/generate.ts index 51d7b91..06914fa 100644 --- a/src/lib/generate.ts +++ b/src/lib/generate.ts @@ -145,22 +145,30 @@ export async function generateInvoice(invoice: Invoice): Promise<Blob> { doc.text('', MARGIN + T_PADDING, doc.y + T_ROW_HEIGHT / 2); }); + /** Total */ + doc.moveDown(2); + doc.fontSize(12); + + // separator + doc.moveTo(MARGIN, doc.y + 5); + doc.lineTo(doc.page.width - MARGIN, doc.y + 5).stroke(); + doc.moveDown(); + const total = invoice.line_items.reduce( (acc, cur) => acc + (cur.quantity ?? 0) * (cur.rate ?? 0), 0, ); - const totalText = - 'Total: ' + - total.toLocaleString(undefined, { - style: 'currency', - currency: invoice.currency, - }); + const totalCurrency = total.toLocaleString(undefined, { + style: 'currency', + currency: invoice.currency, + }); + + doc.text('Total', MARGIN + T_PADDING); + doc.moveUp(); - doc.moveDown(2); - doc.fontSize(12); doc.text( - totalText, - doc.page.width - MARGIN - T_PADDING - doc.widthOfString(totalText), + totalCurrency, + doc.page.width - MARGIN - T_PADDING - doc.widthOfString(totalCurrency), ); // Notes |
