from finance.models import Account, ReconciliationCheckpoint from finance.reconciliation import ledger_balance_through from .base import lock, money, save, write @write("reconciliation_checkpoint.created") def create_reconciliation_checkpoint(*, account_id, as_of_date, institution_balance): account = lock(Account, account_id, active=True) institution_balance = money(institution_balance, allow_zero=True) ledger_balance = ledger_balance_through(account.pk, as_of_date) checkpoint = save(ReconciliationCheckpoint( account=account, as_of_date=as_of_date, institution_balance=institution_balance, ledger_balance_at_creation=ledger_balance, difference_at_creation=money(institution_balance - ledger_balance, allow_zero=True), )) return checkpoint, [ "account", "as_of_date", "institution_balance", "ledger_balance_at_creation", "difference_at_creation", ]