HTML invoicing app producing PDF invoices for freelancers. Configuration file allows entities to offer standard lines and rates for freelancers not used to providing invoices.
Find a file
Claude ff5f4bdb19
Apply UX feedback: field locking, dynamic FX labels, line persistence
Charge to:
- All fields locked when "Select"; fill+lock on predefined entity;
  unlock all fields only when "Other" is chosen

Invoice lines:
- QTY, UOM, Price start disabled; Description dropdown is always active
- Predefined item: fills UOM (locked) and rate (editable) from config
- "Other": unlocks all three fields

Foreign currency:
- Unit Price locked and calculated-only when FX is enabled
- Re-enables Unit Price when FX is toggled back to No
- Exchange rate label dynamically shows "Exchange rate (X USD = 1 EUR)"
  using the selected foreign currency and invoice currency
- Per-item label shows "Price per item in USD" (selected FCY)
- Label updates when either currency changes

Invoice output:
- FX note shows "Price per item (foreign currency): USD …" —
  the "Converted from …" prefix is removed from preview and PDF

Invoice lines persistence:
- Lines saved to localStorage on every change (desc, qty, UOM, price,
  FX toggle, FCY, rate, per-item)
- Lines fully restored on page reload including FX state
- "Reset invoice lines" button added to the INVOICE LINES card header
2026-05-24 16:09:12 +00:00
app Apply UX feedback: field locking, dynamic FX labels, line persistence 2026-05-24 16:09:12 +00:00
docs/devdocs Add project specification for kbenestad/invoice 2026-05-19 00:54:22 +07:00
README.md Initial commit 2026-05-18 23:16:11 +07:00

invoice

HTML invoicing app producing PDF invoices for freelancers. Configuration file allows entities to offer standard lines and rates for freelancers not used to providing invoices.