Process trial balance before displaying individual transaction
This is required to show unrealised gains, etc.
This commit is contained in:
parent
d87d49fc00
commit
e1e28060e8
@ -304,6 +304,8 @@ def transactions():
|
||||
|
||||
@app.route('/transaction')
|
||||
def transaction():
|
||||
date = datetime.strptime(flask.request.args['date'], '%Y-%m-%d')
|
||||
pstart = datetime.strptime(flask.request.args['pstart'], '%Y-%m-%d')
|
||||
uuid = flask.request.args['uuid']
|
||||
cash = flask.request.args.get('cash', False)
|
||||
commodity = flask.request.args.get('commodity', False)
|
||||
@ -314,17 +316,19 @@ def transaction():
|
||||
if cash:
|
||||
l = accounting.ledger_to_cash(l, report_commodity)
|
||||
|
||||
l = accounting.trial_balance(l, date, pstart, report_commodity).ledger
|
||||
|
||||
transaction = next((t for t in l.transactions if str(t.uuid) == uuid))
|
||||
|
||||
if commodity:
|
||||
total_dr = sum((p.amount for p in transaction.postings if p.amount > 0), Balance()).clean()
|
||||
total_cr = sum((p.amount for p in transaction.postings if p.amount < 0), Balance()).clean()
|
||||
totals = itertools.zip_longest(total_dr.amounts, total_cr.amounts)
|
||||
return flask.render_template('transaction_commodity.html', ledger=l, transaction=transaction, totals=totals, total_dr=total_dr.exchange(report_commodity, True), total_cr=total_cr.exchange(report_commodity, True), report_commodity=report_commodity, cash=cash)
|
||||
return flask.render_template('transaction_commodity.html', ledger=l, transaction=transaction, totals=totals, total_dr=total_dr.exchange(report_commodity, True), total_cr=total_cr.exchange(report_commodity, True), report_commodity=report_commodity, cash=cash, date=date, pstart=pstart)
|
||||
else:
|
||||
total_dr = sum((p.amount for p in transaction.postings if p.amount > 0), Balance()).exchange(report_commodity, True)
|
||||
total_cr = sum((p.amount for p in transaction.postings if p.amount < 0), Balance()).exchange(report_commodity, True)
|
||||
return flask.render_template('transaction.html', ledger=l, transaction=transaction, total_dr=total_dr, total_cr=total_cr, report_commodity=report_commodity, cash=cash)
|
||||
return flask.render_template('transaction.html', ledger=l, transaction=transaction, total_dr=total_dr, total_cr=total_cr, report_commodity=report_commodity, cash=cash, date=date, pstart=pstart)
|
||||
|
||||
# Template filters
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
{% block links %}
|
||||
{{ super() }}
|
||||
<a href="/transaction?{{ {'uuid': transaction.uuid, 'cash': 'on' if cash else '', 'commodity': 'on'}|urlencode }}">Show commodity detail</a>
|
||||
<a href="/transaction?{{ {'date': date.strftime('%Y-%m-%d'), 'pstart': pstart.strftime('%Y-%m-%d'), 'uuid': transaction.uuid, 'cash': 'on' if cash else '', 'commodity': 'on'}|urlencode }}">Show commodity detail</a>
|
||||
{% endblock %}
|
||||
|
||||
{% block report %}
|
||||
|
@ -67,7 +67,7 @@
|
||||
{% endif %}
|
||||
|
||||
{% for transaction in transactions %}
|
||||
{% set trn_url = '/transaction?' + {'uuid': transaction.uuid, 'cash': 'on' if cash else ''}|urlencode %}
|
||||
{% set trn_url = '/transaction?' + {'date': date_end.strftime('%Y-%m-%d'), 'pstart': date_beg.strftime('%Y-%m-%d'), 'uuid': transaction.uuid, 'cash': 'on' if cash else ''}|urlencode %}
|
||||
|
||||
{% if transaction.has_comment_detail %}
|
||||
<tr class="trn-first">
|
||||
|
@ -66,7 +66,7 @@
|
||||
{% set ns.balance = opening_balance %}
|
||||
|
||||
{% for transaction in transactions %}
|
||||
{% set trn_url = '/transaction?' + {'uuid': transaction.uuid, 'cash': 'on' if cash else ''}|urlencode %}
|
||||
{% set trn_url = '/transaction?' + {'date': date_end.strftime('%Y-%m-%d'), 'pstart': date_beg.strftime('%Y-%m-%d'), 'uuid': transaction.uuid, 'cash': 'on' if cash else ''}|urlencode %}
|
||||
{% for posting in transaction.postings if posting.account == account %}
|
||||
{% set ns.balance = ns.balance + posting.amount %}
|
||||
{% endfor %}
|
||||
|
Reference in New Issue
Block a user