asxpio/lib
Sergei Poljanski a605ccdc52
invoicing: Prawn PDF renderer with Noto fonts
InvoicePdf.render(invoice) returns A4 PDF bytes. Layout: title + number,
horizontal rule, two-column FROM/BILL TO, meta strip (issued/due/currency/
status) bracketed by rules, line items table, right-aligned totals with
optional GEL equivalent, payment block (Bank of Georgia IBAN), optional
notes, repeating footer with issuer ID and page number.

Both party columns capture pdf.y after rendering and the global cursor jumps
to whichever ran longer — avoids the bbox cursor-restore footgun that was
collapsing the meta strip into the FROM column.

Noto Sans Georgian is registered as a fallback family so the Georgian legal
name renders without needing a separate text run.

Issuer details (legal name, tax ID, registration, address, bank) are
hardcoded as a constant — these are public on the rendered site already and
change rarely enough that a config file would be overkill.
2026-05-26 17:43:38 +03:00
..
db.rb db: connection helper and invoices migration 2026-05-26 17:43:18 +03:00
invoice.rb invoicing: Invoice model with number allocation and totals 2026-05-26 17:43:28 +03:00
invoice_pdf.rb invoicing: Prawn PDF renderer with Noto fonts 2026-05-26 17:43:38 +03:00
mailer.rb useful icon and links 2026-05-05 00:57:11 +04:00
rate_limit.rb ruby rework with contact form 2026-05-05 00:45:27 +04:00