Month-end close
Read Overview → The period lock.
The one correction that matters: the period lock resolves the period from the voucher's
entryDate — the day the transaction belongs to — and is applied on insert and on
update. It used to resolve from createdAt, so a back-dated entry slipped into a closed
period while a correctly dated entry keyed in later was refused. Reports had the same bug
and now aggregate by entryDate in IST (Reports).
Locking, unlocking and closing a period each need their own permission and stamp who did it.
A closed period cannot be changed at all; finance.periods.close is super-admin only. A
financial year closed with close_financial_year cannot be reopened.
A close checklist driven by real blockers — unapproved vouchers, unreconciled bank lines, pending refunds, unposted tour completions — is INT-154 and is not built.