From 3c661100e55f477d51b398236d8336cb318e0980 Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Mon, 2 Jan 2023 18:57:25 +1100 Subject: [PATCH] Re-implement charging statement lines for consolidated Transaction model --- drcr/statements/views.py | 26 ++++++++++++------- .../templates/statements/statement_lines.html | 2 ++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/drcr/statements/views.py b/drcr/statements/views.py index 50d1a35..6412afa 100644 --- a/drcr/statements/views.py +++ b/drcr/statements/views.py @@ -18,8 +18,9 @@ from flask import abort, redirect, render_template, request from .. import AMOUNT_DPS from ..database import db +from ..models import Posting, Transaction from ..webapp import app -from .models import StatementLine +from .models import StatementLine, StatementLineReconciliation @app.route('/statement-lines') def statement_lines(): @@ -36,19 +37,26 @@ def statement_line_charge(): if not statement_line: abort(404) - # Delete existing postings - statement_line.delete_postings() + if statement_line.reconciliation: + raise Exception('NYI') - transaction = StatementLineTransaction( + # Create transaction + posting_source = Posting(account=statement_line.source_account, quantity=statement_line.quantity, commodity=statement_line.commodity) + posting_charge = Posting(account=request.form['charge-account'], quantity=-statement_line.quantity, commodity=statement_line.commodity) + transaction = Transaction( dt=statement_line.dt, description=statement_line.description, - postings=[ - StatementLinePosting(statement_line=statement_line, account=statement_line.source_account, quantity=statement_line.quantity, commodity=statement_line.commodity), - StatementLinePosting(account=request.form['charge-account'], quantity=-statement_line.quantity, commodity=statement_line.commodity) - ] + postings=[posting_source, posting_charge] ) - db.session.add(transaction) + + # Reconcile statement line + reconciliation = StatementLineReconciliation( + statement_line=statement_line, + posting=posting_source + ) + db.session.add(reconciliation) + db.session.commit() return 'OK' diff --git a/drcr/templates/statements/statement_lines.html b/drcr/templates/statements/statement_lines.html index 90119b6..6b553d4 100644 --- a/drcr/templates/statements/statement_lines.html +++ b/drcr/templates/statements/statement_lines.html @@ -84,6 +84,8 @@ if (xhr.status === 200) { document.querySelector('[data-line-id="' + lineId + '"] .charge-account a').innerText = chargeAccount; document.querySelector('[data-line-id="' + lineId + '"] .charge-account a').className = 'text-body'; + } else { + alert('Error when charging statement line'); } }); xhr.open('POST', '/statement-lines/charge');