Reject invalid dated balances on account creation

This commit is contained in:
2026-10-07 15:15:20 +00:00
parent fc2d2a6fae
commit 8caf1f8379
2 changed files with 55 additions and 0 deletions
@@ -27,6 +27,12 @@ def create_ledger_account(name: str, type: str = "bank", institution: str = "",
except Exception as e: return fail("validation_error", str(e))
if basis_date and (last_balance is None or last_balance == ""):
return fail("validation_error", "last_balance_basis_date requires last_balance")
if last_balance is not None:
try:
from .account_valuation_service import _strict_int
last_balance = _strict_int(last_balance, "last_balance", allow_none=False)
except (ValueError, TypeError) as e:
return fail("validation_error", str(e))
with db(db_path) as conn:
conn.execute("INSERT INTO accounts(id,name,type,institution,currency,active,memo,account_number_masked,holder_name,last_balance,last_balance_basis_date,last_synced_at,statement_status,liquidity_bucket,created_at,updated_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", (account_id,name.strip(),type,institution,currency.upper(),int(active),memo,account_number_masked,holder_name,last_balance,basis_date,last_synced_at,statement_status_norm,liquidity_bucket_norm,ts,ts))
row = conn.execute("SELECT * FROM accounts WHERE id=?", (account_id,)).fetchone()