360 Invoice Printing

Invoices

Invoices stored in SQL Server (invoice + invoice_line). Open one to print it as an A4 PDF with VAT, QR code, barcode and signature lines - or create a new one below.

+ New invoice
Invoice NoCustomerIssue dateDue dateItemsTotal (THB)StatusPrint
INV-202610-005 Green Valley International School 21 Oct 2026 20 Nov 2026 6 8,448.72 DRAFT Open PDF
INV-202610-004 Northstar Logistics Co., Ltd. 16 Oct 2026 15 Nov 2026 4 34,903.40 SENT Open PDF
INV-202610-003 Riverside Hotel Bangkok 11 Oct 2026 10 Nov 2026 2 166.92 SENT Open PDF
INV-202610-002 Lanna Craft Studio 6 Oct 2026 5 Nov 2026 5 39,108.50 SENT Open PDF
INV-202610-001 Bangkok Smile Dental Clinic 1 Oct 2026 31 Oct 2026 7 26,105.86 SENT Open PDF
INV-202609-006 Andaman Dive Resort 26 Sep 2026 26 Oct 2026 5 2,747.76 SENT Open PDF
INV-202609-005 Chiang Mai Coffee House 21 Sep 2026 21 Oct 2026 3 4,964.80 OVERDUE Open PDF
INV-202609-004 Siam Fresh Market Co., Ltd. 16 Sep 2026 16 Oct 2026 5 49,423.30 OVERDUE Open PDF
INV-202609-003 Green Valley International School 11 Sep 2026 11 Oct 2026 6 46,421.95 Open PDF
INV-202609-002 Northstar Logistics Co., Ltd. 6 Sep 2026 6 Oct 2026 6 36,760.92 Open PDF
INV-202609-001 Riverside Hotel Bangkok 1 Sep 2026 1 Oct 2026 4 16,376.35 OVERDUE Open PDF
INV-202608-005 Lanna Craft Studio 27 Aug 2026 26 Sep 2026 7 25,487.40 Open PDF
INV-202608-004 Bangkok Smile Dental Clinic 22 Aug 2026 21 Sep 2026 10 78,414.95 Open PDF
INV-202608-003 Andaman Dive Resort 17 Aug 2026 16 Sep 2026 2 5,371.40 OVERDUE Open PDF
INV-202608-002 Chiang Mai Coffee House 12 Aug 2026 11 Sep 2026 6 17,580.10 Open PDF
INV-202608-001 Siam Fresh Market Co., Ltd. 7 Aug 2026 6 Sep 2026 4 14,113.30 Open PDF

New invoice

ProductQuantity
How it works
  • One query loads invoice + customer + lines: @EntityGraph(attributePaths = {"customer", "lines"}) in InvoiceRepository - no lazy-loading errors while the PDF is built after the transaction.
  • Money is BigDecimal (SQL DECIMAL(12,2)); VAT = (subtotal - discount) x 7 / 100, rounded HALF_UP.
  • The PDF is in InvoicePdfService: header block, bill-to, line table with setHeaderRows(1), totals, QR + Code 128, signatures.
SELECT i.invoice_no, c.name, i.status, COUNT(l.id) AS lines
FROM invoice i JOIN customer c ON c.id = i.customer_id
LEFT JOIN invoice_line l ON l.invoice_id = i.id
GROUP BY i.invoice_no, c.name, i.status ORDER BY i.invoice_no DESC;