diff --git a/app/main/views/dashboard.py b/app/main/views/dashboard.py index 095582b29..6001660df 100644 --- a/app/main/views/dashboard.py +++ b/app/main/views/dashboard.py @@ -1,4 +1,5 @@ import calendar +from collections import namedtuple from datetime import datetime from functools import partial from itertools import groupby @@ -416,15 +417,21 @@ def get_free_paid_breakdown_for_billable_units(year, free_sms_fragment_limit, bi free_sms_fragment_limit, cumulative, previous_cumulative, [billing_month for billing_month in sms_units if billing_month['month'] == month] ) - letter_billing = [(x['billing_units'], x['rate'], (x['billing_units'] * x['rate']), x['postage']) + + LetterDetails = namedtuple('LetterDetails', ['billing_units', 'rate', 'cost', 'postage']) + + letter_billing = [LetterDetails(billing_units=x['billing_units'], + rate=x['rate'], + cost=(x['billing_units'] * x['rate']), + postage=x['postage']) for x in letter_units if x['month'] == month] if letter_billing: - letter_billing.sort(key=lambda x: (x[3], x[1])) + letter_billing.sort(key=lambda x: (x.postage, x.rate)) letter_total = 0 for x in letter_billing: - letter_total += x[2] + letter_total += x.cost letter_cumulative += letter_total yield { 'name': month, diff --git a/app/templates/views/usage.html b/app/templates/views/usage.html index 1517e2790..2ffefa85c 100644 --- a/app/templates/views/usage.html +++ b/app/templates/views/usage.html @@ -108,9 +108,9 @@ {{- ' {:.2f}p'.format(sms_rate * 100) }} {% endif %} {% for letter in month.letters%} - {% if letter[0] %} -
  • {{ "{:,} {}".format(letter[0], letter[3])}} class {{ message_count_label(letter[0], 'letter', '') }}at - {{ '{:.0f}p'.format(letter[1] * 100) }}
  • + {% if letter.billing_units %} +
  • {{ "{:,} {}".format(letter.billing_units, letter.postage)}} class {{ message_count_label(letter.billing_units, 'letter', '') }}at + {{ '{:.0f}p'.format(letter.rate * 100) }}
  • {% endif %} {% endfor %} {% if not (month.free or month.paid or month.letters) %}