Added the default report view as the income and expenses log with the default currency, default account and default period. Changed the previous default journal links to the current default.
This commit is contained in:
parent
ec257a4b57
commit
05ac5158f8
@ -19,6 +19,8 @@
|
||||
"""
|
||||
import typing as t
|
||||
|
||||
from flask import current_app
|
||||
|
||||
from accounting.locale import gettext
|
||||
from accounting.models import Account
|
||||
|
||||
@ -62,3 +64,23 @@ class IncomeExpensesAccount:
|
||||
account.title = gettext("current assets and liabilities")
|
||||
account.str = account.title
|
||||
return account
|
||||
|
||||
|
||||
def default_io_account_code() -> str:
|
||||
"""Returns the default account code for the income and expenses log.
|
||||
|
||||
:return: The default account code for the income and expenses log.
|
||||
"""
|
||||
with current_app.app_context():
|
||||
return current_app.config.get("DEFAULT_IO_ACCOUNT", Account.CASH_CODE)
|
||||
|
||||
|
||||
def default_io_account() -> IncomeExpensesAccount:
|
||||
"""Returns the default account for the income and expenses log.
|
||||
|
||||
:return: The default account for the income and expenses log.
|
||||
"""
|
||||
code: str = default_io_account_code()
|
||||
if code == IncomeExpensesAccount.CURRENT_AL_CODE:
|
||||
return IncomeExpensesAccount.current_assets_and_liabilities()
|
||||
return IncomeExpensesAccount(Account.find_by_code(code))
|
||||
|
@ -21,7 +21,9 @@ from flask import url_for
|
||||
|
||||
from accounting.models import Currency, Account
|
||||
from accounting.report.period import Period
|
||||
from .income_expense_account import IncomeExpensesAccount
|
||||
from accounting.template_globals import default_currency_code
|
||||
from .income_expense_account import IncomeExpensesAccount, \
|
||||
default_io_account_code
|
||||
|
||||
|
||||
def journal_url(period: Period) \
|
||||
@ -62,6 +64,10 @@ def income_expenses_url(currency: Currency, account: IncomeExpensesAccount,
|
||||
:param period: The period.
|
||||
:return: The URL of the income and expenses log.
|
||||
"""
|
||||
if currency.code == default_currency_code() \
|
||||
and account.code == default_io_account_code() \
|
||||
and period.is_default:
|
||||
return url_for("accounting.report.default")
|
||||
if period.is_default:
|
||||
return url_for("accounting.report.income-expenses-default",
|
||||
currency=currency, account=account)
|
||||
|
@ -19,19 +19,35 @@
|
||||
"""
|
||||
from flask import Blueprint, request, Response
|
||||
|
||||
from accounting import db
|
||||
from accounting.models import Currency, Account
|
||||
from accounting.report.period import Period, get_period
|
||||
from accounting.template_globals import default_currency_code
|
||||
from accounting.utils.permission import has_permission, can_view
|
||||
from .reports import Journal, Ledger, IncomeExpenses, TrialBalance, \
|
||||
IncomeStatement, BalanceSheet, Search
|
||||
from .template_filters import format_amount
|
||||
from .utils.income_expense_account import IncomeExpensesAccount
|
||||
from .utils.income_expense_account import IncomeExpensesAccount, \
|
||||
default_io_account
|
||||
|
||||
bp: Blueprint = Blueprint("report", __name__)
|
||||
"""The view blueprint for the reports."""
|
||||
bp.add_app_template_filter(format_amount, "accounting_report_format_amount")
|
||||
|
||||
|
||||
@bp.get("", endpoint="default")
|
||||
@has_permission(can_view)
|
||||
def get_default_report() -> str | Response:
|
||||
"""Returns the income and expenses log in the default period.
|
||||
|
||||
:return: The income and expenses log in the default period.
|
||||
"""
|
||||
return __get_income_expenses_list(
|
||||
db.session.get(Currency, default_currency_code()),
|
||||
default_io_account(),
|
||||
get_period())
|
||||
|
||||
|
||||
@bp.get("journal", endpoint="journal-default")
|
||||
@has_permission(can_view)
|
||||
def get_default_journal_list() -> str | Response:
|
||||
|
@ -28,7 +28,7 @@ First written: 2023/1/26
|
||||
</span>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a class="dropdown-item {% if request.endpoint.startswith("accounting.report.") %} active {% endif %}" href="{{ url_for("accounting.report.journal-default") }}">
|
||||
<a class="dropdown-item {% if request.endpoint.startswith("accounting.report.") %} active {% endif %}" href="{{ url_for("accounting.report.default") }}">
|
||||
<i class="fa-solid fa-book"></i>
|
||||
{{ A_("Reports") }}
|
||||
</a>
|
||||
|
@ -23,6 +23,6 @@ First written: 2023/2/25
|
||||
|
||||
{% block header %}{% block title %}{{ A_("Add a New Cash Expense Transaction") }}{% endblock %}{% endblock %}
|
||||
|
||||
{% block back_url %}{{ request.args.get("next") or url_for("accounting.report.journal-default") }}{% endblock %}
|
||||
{% block back_url %}{{ request.args.get("next") or url_for("accounting.report.default") }}{% endblock %}
|
||||
|
||||
{% block action_url %}{{ url_for("accounting.transaction.store", txn_type=txn_type) }}{% endblock %}
|
||||
|
@ -26,7 +26,7 @@ First written: 2023/2/26
|
||||
{% block content %}
|
||||
|
||||
<div class="btn-group mb-3">
|
||||
<a class="btn btn-primary" href="{{ url_for("accounting.report.journal-default")|accounting_or_next }}">
|
||||
<a class="btn btn-primary" href="{{ url_for("accounting.report.default")|accounting_or_next }}">
|
||||
<i class="fa-solid fa-circle-chevron-left"></i>
|
||||
{{ A_("Back") }}
|
||||
</a>
|
||||
|
@ -23,6 +23,6 @@ First written: 2023/2/25
|
||||
|
||||
{% block header %}{% block title %}{{ A_("Add a New Cash Income Transaction") }}{% endblock %}{% endblock %}
|
||||
|
||||
{% block back_url %}{{ request.args.get("next") or url_for("accounting.report.journal-default") }}{% endblock %}
|
||||
{% block back_url %}{{ request.args.get("next") or url_for("accounting.report.default") }}{% endblock %}
|
||||
|
||||
{% block action_url %}{{ url_for("accounting.transaction.store", txn_type=txn_type) }}{% endblock %}
|
||||
|
@ -31,7 +31,7 @@ First written: 2023/2/26
|
||||
{% block content %}
|
||||
|
||||
<div class="btn-group mb-3">
|
||||
<a class="btn btn-primary" href="{{ url_for("accounting.report.journal-default")|accounting_or_next }}">
|
||||
<a class="btn btn-primary" href="{{ url_for("accounting.report.default")|accounting_or_next }}">
|
||||
<i class="fa-solid fa-circle-chevron-left"></i>
|
||||
{{ A_("Back") }}
|
||||
</a>
|
||||
|
@ -23,6 +23,6 @@ First written: 2023/2/25
|
||||
|
||||
{% block header %}{% block title %}{{ A_("Add a New Transfer Transaction") }}{% endblock %}{% endblock %}
|
||||
|
||||
{% block back_url %}{{ request.args.get("next") or url_for("accounting.report.journal-default") }}{% endblock %}
|
||||
{% block back_url %}{{ request.args.get("next") or url_for("accounting.report.default") }}{% endblock %}
|
||||
|
||||
{% block action_url %}{{ url_for("accounting.transaction.store", txn_type=txn_type) }}{% endblock %}
|
||||
|
@ -163,7 +163,7 @@ def delete_transaction(txn: Transaction) -> redirect:
|
||||
sort_transactions_in(txn.date, txn.id)
|
||||
db.session.commit()
|
||||
flash(lazy_gettext("The transaction is deleted successfully."), "success")
|
||||
return redirect(or_next(url_for("accounting.report.journal-default")))
|
||||
return redirect(or_next(url_for("accounting.report.default")))
|
||||
|
||||
|
||||
@bp.get("/dates/<date:txn_date>", endpoint="order")
|
||||
@ -194,10 +194,10 @@ def sort_transactions(txn_date: date) -> redirect:
|
||||
form.save_order()
|
||||
if not form.is_modified:
|
||||
flash(lazy_gettext("The order was not modified."), "success")
|
||||
return redirect(or_next(url_for("accounting.report.journal-default")))
|
||||
return redirect(or_next(url_for("accounting.report.default")))
|
||||
db.session.commit()
|
||||
flash(lazy_gettext("The order is updated successfully."), "success")
|
||||
return redirect(or_next(url_for("accounting.report.journal-default")))
|
||||
return redirect(or_next(url_for("accounting.report.default")))
|
||||
|
||||
|
||||
def __get_detail_uri(txn: Transaction) -> str:
|
||||
|
@ -35,7 +35,7 @@ from testlib_txn import Accounts, get_add_form, get_unchanged_update_form, \
|
||||
|
||||
PREFIX: str = "/accounting/transactions"
|
||||
"""The URL prefix for the transaction management."""
|
||||
RETURN_TO_URI: str = "/accounting/reports/journal"
|
||||
RETURN_TO_URI: str = "/accounting/reports"
|
||||
"""The URL to return to after the operation."""
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user