import { formatInvoiceDate, formatMoney, type Invoice, invoiceTotal, } from "@/lib/invoices"; function esc(value: string): string { return value .replace(/&/g, "&") .replace(//g, ">"); } // Render an invoice into a clean, print-styled document in a new window and // trigger the browser's print dialog, where the clinician can "Save as PDF". // Dependency-free — no PDF library needed; swap for jsPDF later if a generated // file is required. export function downloadInvoicePdf(invoice: Invoice, clinicName = "temetro") { const win = window.open("", "_blank", "width=820,height=1040"); if (!win) return; const total = invoiceTotal(invoice); const lineRows = invoice.lineItems .map( (li) => `
| Installment | Due | Amount | Status |
|---|---|---|---|
| ${esc(it.label)} | ${it.dueAt ? formatInvoiceDate(it.dueAt) : "—"} | ${formatMoney(it.amount)} | ${it.paid ? "Paid" : "Unpaid"} |
${esc(invoice.notes)}
` : ""; win.document.write(`| Description | Qty | Unit price | Amount |
|---|---|---|---|
| No line items | |||
| Total | ${formatMoney(total)} | ||