Display transaction detail w/ commodity in two-column Dr/Cr layout
This commit is contained in:
parent
516afe9aed
commit
d3cd7eebaa
@ -22,6 +22,7 @@ from .model import *
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
import flask
|
import flask
|
||||||
|
import itertools
|
||||||
|
|
||||||
app = flask.Flask(__name__, template_folder='jinja2')
|
app = flask.Flask(__name__, template_folder='jinja2')
|
||||||
|
|
||||||
@ -199,12 +200,14 @@ def transaction():
|
|||||||
|
|
||||||
transaction = next((t for t in l.transactions if str(t.id) == tid))
|
transaction = next((t for t in l.transactions if str(t.id) == tid))
|
||||||
|
|
||||||
total_dr = sum((p.amount for p in transaction.postings if p.amount > 0), Balance()).exchange(report_currency, True)
|
|
||||||
total_cr = sum((p.amount for p in transaction.postings if p.amount < 0), Balance()).exchange(report_currency, True)
|
|
||||||
|
|
||||||
if commodity:
|
if commodity:
|
||||||
return flask.render_template('transaction_commodity.html', ledger=l, transaction=transaction, total_dr=total_dr, total_cr=total_cr, report_currency=report_currency, cash=cash)
|
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_currency, True), total_cr=total_cr.exchange(report_currency, True), report_currency=report_currency, cash=cash)
|
||||||
else:
|
else:
|
||||||
|
total_dr = sum((p.amount for p in transaction.postings if p.amount > 0), Balance()).exchange(report_currency, True)
|
||||||
|
total_cr = sum((p.amount for p in transaction.postings if p.amount < 0), Balance()).exchange(report_currency, True)
|
||||||
return flask.render_template('transaction.html', ledger=l, transaction=transaction, total_dr=total_dr, total_cr=total_cr, report_currency=report_currency, cash=cash)
|
return flask.render_template('transaction.html', ledger=l, transaction=transaction, total_dr=total_dr, total_cr=total_cr, report_currency=report_currency, cash=cash)
|
||||||
|
|
||||||
# Template filters
|
# Template filters
|
||||||
|
@ -41,8 +41,9 @@
|
|||||||
{#<th style="width: 5em;">Date</th>#}
|
{#<th style="width: 5em;">Date</th>#}
|
||||||
<th>Description</th>
|
<th>Description</th>
|
||||||
<th style="max-width: 8em;">Account</th>
|
<th style="max-width: 8em;">Account</th>
|
||||||
<th style="width: 1em;"></th>
|
<th style="text-align: right; width: 5em;">Dr</th>
|
||||||
<th style="text-align: right; width: 5em;">Amount</th>
|
<th style="width: 4em;"></th>
|
||||||
|
<th style="text-align: right; width: 5em;">Cr</th>
|
||||||
<th style="width: 4em;"></th>
|
<th style="width: 4em;"></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -51,10 +52,48 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>{{ posting.comment }}</td>
|
<td>{{ posting.comment }}</td>
|
||||||
<td>{{ (posting.account.name|e).__str__().replace(':', ':<wbr>')|safe }}</td>
|
<td>{{ (posting.account.name|e).__str__().replace(':', ':<wbr>')|safe }}</td>
|
||||||
<td>{% if posting.amount >= 0 %}Dr{% else %}Cr{% endif %}</td>
|
{% if posting.amount >= 0 %}
|
||||||
<td style="text-align: right;"><span title="{{ posting.amount.tostr(False) }}">{{ posting.amount|abs|bc }}</span></td>
|
<td style="text-align: right;"><span title="{{ posting.amount.tostr(False) }}">{{ posting.amount|abs|bc }}</span></td>
|
||||||
<td>{% if posting.amount.currency.price %}<span title="{{ posting.amount.tostr(False) }}">{{ '{' + posting.amount.currency.price|bc + '}' }}</span>{% endif %}</td>
|
<td>{% if posting.amount.currency.price %}<span title="{{ posting.amount.tostr(False) }}">{{ '{' + posting.amount.currency.price|bc + '}' }}</span>{% endif %}</td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
{% else %}
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td style="text-align: right;"><span title="{{ posting.amount.tostr(False) }}">{{ -posting.amount|abs|bc }}</span></td>
|
||||||
|
<td>{% if posting.amount.currency.price %}<span title="{{ posting.amount.tostr(False) }}">{{ '{' + posting.amount.currency.price|bc + '}' }}</span>{% endif %}</td>
|
||||||
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{% for dr_amount, cr_amount in totals %}
|
||||||
|
<tr class="total explicit-rules" style="{% if loop.first %}border-top: 1pt solid black;{% endif %}{% if loop.last %}border-bottom: 1pt solid black;{% endif %}">
|
||||||
|
<td>{% if loop.first %}Total{% endif %}</td>
|
||||||
|
<td></td>
|
||||||
|
{% if dr_amount %}
|
||||||
|
<td style="text-align: right;"><span title="{{ dr_amount.tostr(False) }}">{{ dr_amount|abs|bc }}</span></td>
|
||||||
|
<td>{% if dr_amount.currency.price %}<span title="{{ dr_amount.tostr(False) }}">{{ '{' + dr_amount.currency.price|bc + '}' }}</span>{% endif %}</td>
|
||||||
|
{% else %}
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
{% endif %}
|
||||||
|
{% if cr_amount %}
|
||||||
|
<td style="text-align: right;"><span title="{{ cr_amount.tostr(False) }}">{{ -cr_amount|abs|bc }}</span></td>
|
||||||
|
<td>{% if cr_amount.currency.price %}<span title="{{ cr_amount.tostr(False) }}">{{ '{' + cr_amount.currency.price|bc + '}' }}</span>{% endif %}</td>
|
||||||
|
{% else %}
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
{% endif %}
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<tr class="total">
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td style="text-align: right;"><span title="{{ total_dr.tostr(False) }}">{{ total_dr|abs|bc }}</span></td>
|
||||||
|
<td></td>
|
||||||
|
<td style="text-align: right;"><span title="{{ total_cr.tostr(False) }}">{{ -total_cr|abs|bc }}</span></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
Reference in New Issue
Block a user