06/02 Update account balance adjustment

This commit is contained in:
2026-06-02 15:40:42 -04:00
parent 814ec90581
commit 4e47eddf70
3 changed files with 164 additions and 0 deletions
+56
View File
@@ -137,3 +137,59 @@ def delete(id):
db.session.commit()
flash(f'Account "{account.name}" removed.', 'info')
return redirect(url_for('accounts.index'))
@accounts_bp.route('/<int:id>/adjust', methods=['GET', 'POST'])
@login_required
def adjust_balance(id):
account = db.get_or_404(Account, id)
calc_balance(account.id)
db.session.refresh(account)
current_balance = float(account.balance)
if request.method == 'POST':
from app.models.transaction import Transaction
from app.models.category import Category
from wtforms import ValidationError
try:
new_balance = float(request.form.get('new_balance', '').replace(',', ''))
except (ValueError, AttributeError):
flash('Invalid amount entered.', 'danger')
return redirect(url_for('accounts.adjust_balance', id=id))
difference = round(new_balance - current_balance, 2)
if difference == 0:
flash('Balance is already at that amount — no adjustment needed.', 'info')
return redirect(url_for('accounts.index',
tab='credit' if account.account_type == 'credit_card' else 'bank'))
txn_type = 'income' if difference > 0 else 'expense'
amount = abs(difference)
notes = request.form.get('notes', '').strip() or 'Manual balance adjustment'
txn = Transaction(
account_id=account.id,
transaction_type=txn_type,
amount=amount,
description='Balance Adjustment',
date=date.today(),
notes=notes,
)
db.session.add(txn)
db.session.commit()
calc_balance(account.id)
flash(
f'Balance adjusted by '
f'{"+" if difference > 0 else ""}{difference:,.2f}. '
f'New balance: {new_balance:,.2f}.',
'success'
)
return redirect(url_for('accounts.index',
tab='credit' if account.account_type == 'credit_card' else 'bank'))
return render_template('accounts/adjust.html',
account=account,
current_balance=current_balance)