mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-05-27 17:39:51 -04:00
Rename monthly usage attributes to match API
This should make the subsequent changes to use the new API fields
a bit clearer, and also matches the annual usage attributes [^1].
[^1]: 3a1ac189ff/app/main/views/dashboard.py (L343-L350)
This commit is contained in:
@@ -413,24 +413,24 @@ def get_monthly_usage_breakdown(year, free_sms_fragment_limit, monthly_usage):
|
||||
previous_cumulative = cumulative
|
||||
monthly_usage = get_sum_billing_units(sms, month)
|
||||
cumulative += monthly_usage
|
||||
breakdown = get_free_paid_breakdown_for_month(
|
||||
sms_breakdown = get_free_paid_breakdown_for_month(
|
||||
free_sms_fragment_limit, cumulative, previous_cumulative,
|
||||
[billing_month for billing_month in sms if billing_month['month'] == month]
|
||||
)
|
||||
|
||||
letter_units_for_month = [x for x in letters if x['month'] == month]
|
||||
letter_billing = format_letter_details_for_month(letter_units_for_month)
|
||||
letter_breakdown = format_letter_details_for_month(letter_units_for_month)
|
||||
|
||||
letter_total = 0
|
||||
for x in letter_billing:
|
||||
letter_total += x.cost
|
||||
letter_cost = 0
|
||||
for x in letter_breakdown:
|
||||
letter_cost += x.cost
|
||||
yield {
|
||||
'name': month,
|
||||
'letter_total': letter_total,
|
||||
'letters': letter_billing,
|
||||
'sms_paid_count': breakdown['paid'],
|
||||
'sms_free_count': breakdown['free'],
|
||||
'sms_rate': breakdown['sms_rate'],
|
||||
'month': month,
|
||||
'letter_cost': letter_cost,
|
||||
'letter_breakdown': letter_breakdown,
|
||||
'sms_charged': sms_breakdown['paid'],
|
||||
'sms_free_allowance_used': sms_breakdown['free'],
|
||||
'sms_rate': sms_breakdown['sms_rate'],
|
||||
}
|
||||
|
||||
|
||||
@@ -445,7 +445,7 @@ def format_letter_details_for_month(letter_units_for_month):
|
||||
postage_order = {'first class': 0, 'second class': 1, 'international': 2}
|
||||
letter_units_for_month.sort(key=lambda x: (postage_order[x['postage']], x['rate']))
|
||||
|
||||
LetterDetails = namedtuple('LetterDetails', ['billing_units', 'rate', 'cost', 'postage_description'])
|
||||
LetterDetails = namedtuple('LetterDetails', ['sent', 'rate', 'cost', 'postage_description'])
|
||||
|
||||
# Aggregate the rows for international letters which have the same rate
|
||||
result = []
|
||||
@@ -453,7 +453,7 @@ def format_letter_details_for_month(letter_units_for_month):
|
||||
rate_group = list(rate_group)
|
||||
|
||||
letter_details = LetterDetails(
|
||||
billing_units=sum(x['billing_units'] for x in rate_group),
|
||||
sent=sum(x['billing_units'] for x in rate_group),
|
||||
rate=rate_group[0]['rate'],
|
||||
cost=(sum(x['billing_units'] for x in rate_group) * rate_group[0]['rate']),
|
||||
postage_description=rate_group[0]['postage']
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
{% if months %}
|
||||
<div class="dashboard-table usage-table body-copy-table">
|
||||
{% call(month, row_index) list_table(
|
||||
{% call(item, row_index) list_table(
|
||||
months,
|
||||
caption="Total spend",
|
||||
caption_visible=False,
|
||||
@@ -95,29 +95,29 @@
|
||||
field_headings_visible=True
|
||||
) %}
|
||||
{% call row_heading() %}
|
||||
{{ month.name }}
|
||||
{{ item.month }}
|
||||
{% endcall %}
|
||||
{% call field(align='left') %}
|
||||
{{ big_number(
|
||||
(month.sms_rate * month.sms_paid_count) + month.letter_total,
|
||||
(item.sms_rate * item.sms_charged) + item.letter_cost,
|
||||
currency="£",
|
||||
smallest=True
|
||||
) }}
|
||||
<ul>
|
||||
{% if month.sms_free_count %}
|
||||
<li class="tabular-numbers">{{ month.sms_free_count|format_thousands }} free {{ month.sms_free_count|message_count_label('sms', suffix='') }}</li>
|
||||
{% if item.sms_free_allowance_used %}
|
||||
<li class="tabular-numbers">{{ item.sms_free_allowance_used|format_thousands }} free {{ item.sms_free_count|message_count_label('sms', suffix='') }}</li>
|
||||
{% endif %}
|
||||
{% if month.sms_paid_count %}
|
||||
<li class="tabular-numbers">{{ month.sms_paid_count|message_count('sms') }} at
|
||||
{{- ' {:.2f}p'.format(month.sms_rate * 100) }}</li>
|
||||
{% if item.sms_charged %}
|
||||
<li class="tabular-numbers">{{ item.sms_charged|message_count('sms') }} at
|
||||
{{- ' {:.2f}p'.format(item.sms_rate * 100) }}</li>
|
||||
{% endif %}
|
||||
{% for letter in month.letters%}
|
||||
{% if letter.billing_units %}
|
||||
<li class="tabular-numbers">{{ "{:,} {}".format(letter.billing_units, letter.postage_description) }} {{ letter.billing_units|message_count_label('letter', suffix='') }} at
|
||||
{% for letter in item.letter_breakdown %}
|
||||
{% if letter.sent %}
|
||||
<li class="tabular-numbers">{{ "{:,} {}".format(letter.sent, letter.postage_description) }} {{ letter.sent|message_count_label('letter', suffix='') }} at
|
||||
{{ letter.rate | format_number_in_pounds_as_currency }}</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if not (month.sms_free_count or month.sms_paid_count or month.letters) %}
|
||||
{% if not (item.sms_free_allowance_used or item.sms_charged or item.letter_breakdown) %}
|
||||
<li aria-hidden="true">–</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
||||
@@ -1602,100 +1602,100 @@ def test_get_monthly_usage_breakdown(now, expected_number_of_months):
|
||||
|
||||
assert list(breakdown) == [
|
||||
{
|
||||
'sms_free_count': 100000,
|
||||
'name': 'April',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 100000,
|
||||
'month': 'April',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 1.65,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 100000,
|
||||
'name': 'May',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 100000,
|
||||
'month': 'May',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 1.65,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 50000,
|
||||
'name': 'June',
|
||||
'sms_paid_count': 50000,
|
||||
'sms_free_allowance_used': 50000,
|
||||
'month': 'June',
|
||||
'sms_charged': 50000,
|
||||
'sms_rate': 1.71,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'July',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'July',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 0,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'August',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'August',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 0,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'September',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'September',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 0,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'October',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'October',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 0,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'November',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'November',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 0,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'December',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'December',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 0,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'January',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'January',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 0,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'February',
|
||||
'sms_paid_count': 2000,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'February',
|
||||
'sms_charged': 2000,
|
||||
'sms_rate': 1.71,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
{
|
||||
'sms_free_count': 0,
|
||||
'name': 'March',
|
||||
'sms_paid_count': 0,
|
||||
'sms_free_allowance_used': 0,
|
||||
'month': 'March',
|
||||
'sms_charged': 0,
|
||||
'sms_rate': 0,
|
||||
'letter_total': 0,
|
||||
'letters': []
|
||||
'letter_cost': 0,
|
||||
'letter_breakdown': []
|
||||
},
|
||||
][:expected_number_of_months]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user