Overview
An in-house invoice ledger for entering, approving, and managing invoices one at a time. Tax and totals are computed automatically from per-line pre-tax amounts and tax rates.
Problem
An Excel ledger was prone to calculation errors, numbering mistakes, and opaque approval status — and mixed currencies were tedious.
Approach
The original Excel formulas (per-line tax-inclusive/exclusive totals and tax) were implemented as Django models. Serial numbering is serialized via a per-calendar-year lock row so numbers never collide under concurrency. An unapproved → admin-approved flow and second-currency FX conversion are supported.
Key features
- Automatic tax/total calculation from per-line amount + rate
- Auto serial numbering (yearly reset, collision-free under concurrency)
- Unapproved → approved workflow (records approver and timestamp)
- Multi-currency FX conversion
- Counterparty master and filtered search
- Soft delete with author / update-time audit
