- Bill late-fee invoices under a dedicated naming series (LPF-.YYYY.-),
registered on Sales Invoice via after_migrate, so they are easy to spot
and filter.
- Late fees are never taxed: a zero 'Actual' tax line keeps the taxes
table non-empty so ERPNext skips auto-applying company/item tax
templates (posts nothing to the ledger). Fee total == computed fee.
- generate_statements(skip_late_fee=...) generates a statement without
billing a fee.
- Record every generation on the customer's timeline (add_comment) as an
audit trail, noting Total Due and the fee invoice raised / skipped.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>