Fixed the URL of the 3351 brought-forward subject in the balance sheet to the income statement before the current period in the accounting application.
This commit is contained in:
parent
b652d090d3
commit
2c3bd43345
@ -293,7 +293,6 @@ First written: 2020/7/20
|
|||||||
</li>
|
</li>
|
||||||
{% for item in group.details %}
|
{% for item in group.details %}
|
||||||
<li class="list-group-item d-flex justify-content-between align-items-center account">
|
<li class="list-group-item d-flex justify-content-between align-items-center account">
|
||||||
{# TODO: Link to the income statement for account #3351 #}
|
|
||||||
<a class="list-group-item-action" href="{{ item.url }}">
|
<a class="list-group-item-action" href="{{ item.url }}">
|
||||||
{{ item.title|title }}
|
{{ item.title|title }}
|
||||||
<div class="float-right">
|
<div class="float-right">
|
||||||
|
@ -719,7 +719,7 @@ def balance_sheet(request, period):
|
|||||||
code=Account.ACCUMULATED_BALANCE)
|
code=Account.ACCUMULATED_BALANCE)
|
||||||
brought_forward.amount = balance
|
brought_forward.amount = balance
|
||||||
brought_forward.url = reverse(
|
brought_forward.url = reverse(
|
||||||
"accounting:income-statement", args=(period,))
|
"accounting:income-statement", args=(period.period_before(),))
|
||||||
accounts.append(brought_forward)
|
accounts.append(brought_forward)
|
||||||
balance = Record.objects \
|
balance = Record.objects \
|
||||||
.filter(
|
.filter(
|
||||||
|
@ -358,6 +358,24 @@ class Period:
|
|||||||
else self._data_end
|
else self._data_end
|
||||||
return dateformat.format(day, "Y-m-d")
|
return dateformat.format(day, "Y-m-d")
|
||||||
|
|
||||||
|
def period_before(self):
|
||||||
|
"""Returns the specification of the period before the current period.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str|None: The specification of the period before the current
|
||||||
|
period, or None if there is no data before the current period.
|
||||||
|
"""
|
||||||
|
if self._data_start is None:
|
||||||
|
return None
|
||||||
|
if self.start <= self._data_start:
|
||||||
|
return None
|
||||||
|
previous_day = self.start - datetime.timedelta(days=1)
|
||||||
|
if re.match("^[0-9]{4}$", self.spec):
|
||||||
|
return "-" + str(previous_day.year)
|
||||||
|
if re.match("^[0-9]{4}-[0-9]{2}$", self.spec):
|
||||||
|
return dateformat.format(previous_day, "-Y-m")
|
||||||
|
return dateformat.format(previous_day, "-Y-m-d")
|
||||||
|
|
||||||
def month_picker_params(self):
|
def month_picker_params(self):
|
||||||
"""Returns the parameters for the month-picker, as a JSON text string.
|
"""Returns the parameters for the month-picker, as a JSON text string.
|
||||||
|
|
||||||
@ -436,6 +454,21 @@ class Period:
|
|||||||
self.description = gettext(
|
self.description = gettext(
|
||||||
"Since %s") % self.get_month_text(year, month)
|
"Since %s") % self.get_month_text(year, month)
|
||||||
return
|
return
|
||||||
|
# Until a specific month
|
||||||
|
m = re.match("^-([0-9]{4})-([0-9]{2})$", spec)
|
||||||
|
if m is not None:
|
||||||
|
year = int(m.group(1))
|
||||||
|
month = int(m.group(2))
|
||||||
|
try:
|
||||||
|
until_month = datetime.date(year, month, 1)
|
||||||
|
except ValueError:
|
||||||
|
self.invalid_period()
|
||||||
|
return
|
||||||
|
self.start = datetime.date(2000, 1, 1)
|
||||||
|
self.end = self.get_month_last_day(until_month)
|
||||||
|
self.description = gettext(
|
||||||
|
"Until %s") % self.get_month_text(year, month)
|
||||||
|
return
|
||||||
# A specific year
|
# A specific year
|
||||||
m = re.match("^([0-9]{4})$", spec)
|
m = re.match("^([0-9]{4})$", spec)
|
||||||
if m is not None:
|
if m is not None:
|
||||||
@ -454,6 +487,25 @@ class Period:
|
|||||||
else:
|
else:
|
||||||
self.description = str(year)
|
self.description = str(year)
|
||||||
return
|
return
|
||||||
|
# Until a specific year
|
||||||
|
m = re.match("^-([0-9]{4})$", spec)
|
||||||
|
if m is not None:
|
||||||
|
year = int(m.group(1))
|
||||||
|
try:
|
||||||
|
self.end = datetime.date(year, 12, 31)
|
||||||
|
except ValueError:
|
||||||
|
self.invalid_period()
|
||||||
|
return
|
||||||
|
self.start = datetime.date(2000, 1, 1)
|
||||||
|
today = timezone.localdate()
|
||||||
|
if year == today.year:
|
||||||
|
year_text = gettext("This Year")
|
||||||
|
elif year == today.year - 1:
|
||||||
|
year_text = gettext("Last Year")
|
||||||
|
else:
|
||||||
|
year_text = str(year)
|
||||||
|
self.description = gettext("Until %s") % year_text
|
||||||
|
return
|
||||||
# All time
|
# All time
|
||||||
if spec == "-":
|
if spec == "-":
|
||||||
self.start = datetime.date(2000, 1, 1)
|
self.start = datetime.date(2000, 1, 1)
|
||||||
@ -524,6 +576,21 @@ class Period:
|
|||||||
self.spec = dateformat.format(self.start, "Y-m-d")
|
self.spec = dateformat.format(self.start, "Y-m-d")
|
||||||
self.description = self.get_date_text(self.start)
|
self.description = self.get_date_text(self.start)
|
||||||
return
|
return
|
||||||
|
# Until a specific day
|
||||||
|
m = re.match("^-([0-9]{4})-([0-9]{2})-([0-9]{2})$", spec)
|
||||||
|
if m is not None:
|
||||||
|
try:
|
||||||
|
self.end = datetime.date(
|
||||||
|
int(m.group(1)),
|
||||||
|
int(m.group(2)),
|
||||||
|
int(m.group(3)))
|
||||||
|
except ValueError:
|
||||||
|
self.invalid_period()
|
||||||
|
return
|
||||||
|
self.start = datetime.date(2000, 1, 1)
|
||||||
|
self.description = gettext(
|
||||||
|
"Until %s") % self.get_date_text(self.end)
|
||||||
|
return
|
||||||
# Wrong period format
|
# Wrong period format
|
||||||
self.invalid_period()
|
self.invalid_period()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user