import hashlib from datetime import date from decimal import Decimal from app.parsers.base import ParsedStatement def balance_difference(p: ParsedStatement) -> Decimal: total = sum((t.amount for t in p.transactions), Decimal("0")) return (p.opening_balance + total - p.closing_balance).copy_abs() def dedup_hash(account_id: int, booking_date: date, amount: Decimal, purpose: str) -> str: raw = f"{account_id}|{booking_date.isoformat()}|{amount:.2f}|{' '.join(purpose.split())}" return hashlib.sha256(raw.encode()).hexdigest()