From 0d7e68592bad87b7a10c383831e15f795590abdb Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Wed, 1 Apr 2020 11:58:35 +1100 Subject: [PATCH] Tweak general ledger/account transactions report Correctly show period Refer to "begin date" and "end date" --- ledger_pyreport/__init__.py | 28 +++++++++---------- ledger_pyreport/jinja2/balance.html | 8 +++--- ledger_pyreport/jinja2/index.html | 4 +-- ledger_pyreport/jinja2/pandl.html | 2 +- ledger_pyreport/jinja2/transactions.html | 14 +++++----- .../jinja2/transactions_commodity.html | 10 +++---- ledger_pyreport/jinja2/trial.html | 2 +- ledger_pyreport/jinja2/trial_multiple.html | 2 +- 8 files changed, 35 insertions(+), 35 deletions(-) diff --git a/ledger_pyreport/__init__.py b/ledger_pyreport/__init__.py index 17eb992..60df5bd 100644 --- a/ledger_pyreport/__init__.py +++ b/ledger_pyreport/__init__.py @@ -139,8 +139,8 @@ def pandl(): @app.route('/transactions') def transactions(): - date = datetime.strptime(flask.request.args['date'], '%Y-%m-%d') - pstart = datetime.strptime(flask.request.args['pstart'], '%Y-%m-%d') + date_beg = datetime.strptime(flask.request.args['date_beg'], '%Y-%m-%d') + date_end = datetime.strptime(flask.request.args['date_end'], '%Y-%m-%d') account = flask.request.args.get('account', None) cash = flask.request.args.get('cash', False) commodity = flask.request.args.get('commodity', False) @@ -148,42 +148,42 @@ def transactions(): report_currency = Currency(*config['report_currency']) # General ledger - l = ledger.raw_transactions_at_date(date) + l = ledger.raw_transactions_at_date(date_end) if cash: l = accounting.ledger_to_cash(l, report_currency) # Unrealized gains - l = accounting.add_unrealized_gains(accounting.trial_balance(l, date, pstart), report_currency).ledger + l = accounting.add_unrealized_gains(accounting.trial_balance(l, date_end, date_beg), report_currency).ledger if not account: # General Ledger - transactions = [t for t in l.transactions if t.date <= date and t.date >= pstart] + transactions = [t for t in l.transactions if t.date <= date_end and t.date >= date_beg] total_dr = sum((p.amount for t in transactions for p in t.postings if p.amount > 0), Balance()).exchange(report_currency, True) total_cr = sum((p.amount for t in transactions for p in t.postings if p.amount < 0), Balance()).exchange(report_currency, True) - return flask.render_template('transactions.html', date=date, pstart=pstart, period=describe_period(date, pstart), account=None, ledger=l, transactions=transactions, total_dr=total_dr, total_cr=total_cr, report_currency=report_currency, cash=cash) + return flask.render_template('transactions.html', date_beg=date_beg, date_end=date_end, period=describe_period(date_end, date_beg), account=None, ledger=l, transactions=transactions, total_dr=total_dr, total_cr=total_cr, report_currency=report_currency, cash=cash) elif commodity: # Account Transactions with commodity detail account = l.get_account(account) - transactions = [t for t in l.transactions if t.date <= date and t.date >= pstart and any(p.account == account for p in t.postings)] + transactions = [t for t in l.transactions if t.date <= date_end and t.date >= date_beg and any(p.account == account for p in t.postings)] - opening_balance = accounting.trial_balance(l, pstart - timedelta(days=1), pstart).get_balance(account).clean() - closing_balance = accounting.trial_balance(l, date, pstart).get_balance(account).clean() + opening_balance = accounting.trial_balance(l, date_beg - timedelta(days=1), date_beg).get_balance(account).clean() + closing_balance = accounting.trial_balance(l, date_end, date_beg).get_balance(account).clean() def matching_posting(transaction, amount): return next((p for p in transaction.postings if p.account == account and p.amount.currency == amount.currency), None) - return flask.render_template('transactions_commodity.html', date=date, pstart=pstart, period=describe_period(date, pstart), account=account, ledger=l, transactions=transactions, opening_balance=opening_balance, closing_balance=closing_balance, report_currency=report_currency, cash=cash, timedelta=timedelta, matching_posting=matching_posting) + return flask.render_template('transactions_commodity.html', date_beg=date_beg, date_end=date_end, period=describe_period(date_end, date_beg), account=account, ledger=l, transactions=transactions, opening_balance=opening_balance, closing_balance=closing_balance, report_currency=report_currency, cash=cash, timedelta=timedelta, matching_posting=matching_posting) else: # Account Transactions account = l.get_account(account) - transactions = [t for t in l.transactions if t.date <= date and t.date >= pstart and any(p.account == account for p in t.postings)] + transactions = [t for t in l.transactions if t.date <= date_end and t.date >= date_beg and any(p.account == account for p in t.postings)] - opening_balance = accounting.trial_balance(l, pstart - timedelta(days=1), pstart).get_balance(account).exchange(report_currency, True) - closing_balance = accounting.trial_balance(l, date, pstart).get_balance(account).exchange(report_currency, True) + opening_balance = accounting.trial_balance(l, date_beg - timedelta(days=1), date_beg).get_balance(account).exchange(report_currency, True) + closing_balance = accounting.trial_balance(l, date_end, date_beg).get_balance(account).exchange(report_currency, True) - return flask.render_template('transactions.html', date=date, pstart=pstart, period=describe_period(date, pstart), account=account, ledger=l, transactions=transactions, opening_balance=opening_balance, closing_balance=closing_balance, report_currency=report_currency, cash=cash, timedelta=timedelta) + return flask.render_template('transactions.html', date_beg=date_beg, date_end=date_end, period=describe_period(date_end, date_beg), account=account, ledger=l, transactions=transactions, opening_balance=opening_balance, closing_balance=closing_balance, report_currency=report_currency, cash=cash, timedelta=timedelta) @app.route('/transaction') def transaction(): diff --git a/ledger_pyreport/jinja2/balance.html b/ledger_pyreport/jinja2/balance.html index 7be02fd..17a9ec4 100644 --- a/ledger_pyreport/jinja2/balance.html +++ b/ledger_pyreport/jinja2/balance.html @@ -23,9 +23,9 @@ {% if balance_sheets|length == 1 %} {% if account.name == config['current_year_earnings'] %} - + {% else %} - + {% endif %} {{ account.bits[-1] }} @@ -38,9 +38,9 @@ {% if not amount.near_zero %} {% if account.name == config['current_year_earnings'] %} - {{ amount|a('/pandl?' + {'date_end': balance_sheet.date.strftime('%Y-%m-%d'), 'date_beg': balance_sheets[0].pstart.strftime('%Y-%m-%d'), 'compare': '0', 'cash': 'on' if cash else ''}|urlencode) }} + {{ amount|a('/pandl?' + {'date_end': balance_sheet.date.strftime('%Y-%m-%d'), 'date_beg': balance_sheets[0].pstart.strftime('%Y-%m-%d'), 'compare': '0', 'cash': 'on' if cash else '', 'scope': 'both'}|urlencode) }} {% else %} - {{ amount|a('/transactions?' + {'date': balance_sheet.date.strftime('%Y-%m-%d'), 'pstart': balance_sheet.pstart.strftime('%Y-%m-%d'), 'account': account.name, 'cash': 'on' if cash else ''}|urlencode) }} + {{ amount|a('/transactions?' + {'date_end': balance_sheet.date.strftime('%Y-%m-%d'), 'date_beg': balance_sheet.pstart.strftime('%Y-%m-%d'), 'account': account.name, 'cash': 'on' if cash else ''}|urlencode) }} {% endif %} {% endif %} diff --git a/ledger_pyreport/jinja2/index.html b/ledger_pyreport/jinja2/index.html index 285cf35..74c8941 100644 --- a/ledger_pyreport/jinja2/index.html +++ b/ledger_pyreport/jinja2/index.html @@ -54,8 +54,8 @@
- - + +
diff --git a/ledger_pyreport/jinja2/pandl.html b/ledger_pyreport/jinja2/pandl.html index a85cba7..fa329d7 100644 --- a/ledger_pyreport/jinja2/pandl.html +++ b/ledger_pyreport/jinja2/pandl.html @@ -22,7 +22,7 @@ {% if pandls|length == 1 %} - {{ account.bits[-1] }} + {{ account.bits[-1] }} {% else %} {{ account.bits[-1] }} {% endif %} diff --git a/ledger_pyreport/jinja2/transactions.html b/ledger_pyreport/jinja2/transactions.html index b5276a4..fbef23a 100644 --- a/ledger_pyreport/jinja2/transactions.html +++ b/ledger_pyreport/jinja2/transactions.html @@ -18,11 +18,11 @@ {% extends 'base_report.html' %} -{% block title %}{% if account %}Account Transactions{% else %}General Ledger{% endif %} as at {{ date.strftime('%d %B %Y') }}{% endblock %} +{% block title %}{% if account %}Account Transactions{% else %}General Ledger{% endif %} for the {{ period }}{% endblock %} {% block links %} {{ super() }} - {% if account %}Show commodity detail{% endif %} + {% if account %}Show commodity detail{% endif %} {% endblock %} {% block report %} @@ -46,9 +46,9 @@ {% set ns = namespace(balance=None) %} {% if account %} - {% set prevlink = '/transactions?' + {'date': (pstart - timedelta(days=1)).strftime('%Y-%m-%d'), 'pstart': pstart.replace(year=pstart.year-1).strftime('%Y-%m-%d'), 'account': account.name, 'cash': 'on' if cash else ''}|urlencode %} + {% set prevlink = '/transactions?' + {'date_end': (date_beg - timedelta(days=1)).strftime('%Y-%m-%d'), 'date_beg': date_beg.replace(year=date_beg.year-1).strftime('%Y-%m-%d'), 'account': account.name, 'cash': 'on' if cash else ''}|urlencode %} - {{ pstart.strftime('%Y-%m-%d') }} + {{ date_beg.strftime('%Y-%m-%d') }} Opening Balance @@ -73,7 +73,7 @@ {% if loop.first %}{% if transaction.id %}{% endif %}{{ transaction.date.strftime('%Y-%m-%d') }}{% if transaction.id %}{% endif %}{% endif %} {% if loop.first %}{% if transaction.id %}{% endif %}{{ transaction.description }}{% if transaction.id %}{% endif %}{% endif %} - {{ (posting.account.name|e).__str__().replace(':', ':')|safe }} + {{ (posting.account.name|e).__str__().replace(':', ':')|safe }} {% if account %} {# Reverse Dr/Cr so it's from the "perspective" of this account #} {% set ns.balance = ns.balance - amount %} @@ -98,7 +98,7 @@ {% if account %} - {{ date.strftime('%Y-%m-%d') }} + {{ date_end.strftime('%Y-%m-%d') }} Closing Balance @@ -113,7 +113,7 @@ {% else %} - {{ date.strftime('%Y-%m-%d') }} + {{ date_end.strftime('%Y-%m-%d') }} Total {{ total_dr|b }} diff --git a/ledger_pyreport/jinja2/transactions_commodity.html b/ledger_pyreport/jinja2/transactions_commodity.html index 4bbd754..d079f44 100644 --- a/ledger_pyreport/jinja2/transactions_commodity.html +++ b/ledger_pyreport/jinja2/transactions_commodity.html @@ -18,7 +18,7 @@ {% extends 'base_report.html' %} -{% block title %}Account Transactions as at {{ date.strftime('%d %B %Y') }}{% endblock %} +{% block title %}Account Transactions for the {{ period }}{% endblock %} {% block report %}

Account Transactions

@@ -39,10 +39,10 @@ {% set ns = namespace(balance=None) %} - {% set prevlink = '/transactions?' + {'date': (pstart - timedelta(days=1)).strftime('%Y-%m-%d'), 'pstart': pstart.replace(year=pstart.year-1).strftime('%Y-%m-%d'), 'account': account.name, 'cash': 'on' if cash else '', 'commodity': 'on'}|urlencode %} + {% set prevlink = '/transactions?' + {'date_end': (date_beg - timedelta(days=1)).strftime('%Y-%m-%d'), 'date_beg': date_beg.replace(year=date_beg.year-1).strftime('%Y-%m-%d'), 'account': account.name, 'cash': 'on' if cash else '', 'commodity': 'on'}|urlencode %} {% for amount in opening_balance.amounts %} - {% if loop.first %}{{ pstart.strftime('%Y-%m-%d') }}{% endif %} + {% if loop.first %}{{ date_beg.strftime('%Y-%m-%d') }}{% endif %} {% if loop.first %}Opening Balance{% endif %} @@ -52,7 +52,7 @@ {% else %} - {{ pstart.strftime('%Y-%m-%d') }} + {{ date_beg.strftime('%Y-%m-%d') }} Opening Balance @@ -90,7 +90,7 @@ {% for amount in closing_balance.amounts %} - {% if loop.first %}{{ date.strftime('%Y-%m-%d') }}{% endif %} + {% if loop.first %}{{ date_end.strftime('%Y-%m-%d') }}{% endif %} {% if loop.first %}Closing Balance{% endif %} diff --git a/ledger_pyreport/jinja2/trial.html b/ledger_pyreport/jinja2/trial.html index 4237453..73db59d 100644 --- a/ledger_pyreport/jinja2/trial.html +++ b/ledger_pyreport/jinja2/trial.html @@ -33,7 +33,7 @@ {% for account in accounts %} {# Display in "cost basis" as we have already accounted for unrealised gains #} {% set balance = trial_balance.get_balance(account).exchange(report_currency, True) %} - {% set trn_url = "/transactions?" + {'date': trial_balance.date.strftime('%Y-%m-%d'), 'pstart': trial_balance.pstart.strftime('%Y-%m-%d'), 'account': account.name, 'cash': 'on' if cash else ''}|urlencode %} + {% set trn_url = "/transactions?" + {'date_end': trial_balance.date.strftime('%Y-%m-%d'), 'date_beg': trial_balance.pstart.strftime('%Y-%m-%d'), 'account': account.name, 'cash': 'on' if cash else ''}|urlencode %} {% if not balance.near_zero %} {{ account.name }} diff --git a/ledger_pyreport/jinja2/trial_multiple.html b/ledger_pyreport/jinja2/trial_multiple.html index a55341c..07957c5 100644 --- a/ledger_pyreport/jinja2/trial_multiple.html +++ b/ledger_pyreport/jinja2/trial_multiple.html @@ -34,7 +34,7 @@ {{ account.name }} {% for trial_balance in trial_balances %} {% set balance = trial_balance.get_balance(account).exchange(report_currency, True) %} - {% if not balance.near_zero %}{{ balance|abs|b }} {% if balance >= 0 %}Dr{% else %}Cr{% endif %}{% endif %} + {% if not balance.near_zero %}{{ balance|abs|b }} {% if balance >= 0 %}Dr{% else %}Cr{% endif %}{% endif %} {% endfor %} {% endfor %}