diff --git a/app/billing/billing_schemas.py b/app/billing/billing_schemas.py index b8f5574d5..abe263af2 100644 --- a/app/billing/billing_schemas.py +++ b/app/billing/billing_schemas.py @@ -25,6 +25,7 @@ def serialize_ft_billing_remove_emails(rows): "cost": float(row.cost), "free_chargeable_units": row.free_chargeable_units, "charged_units": row.charged_units, + "notifications_sent": row.notifications_sent, } for row in rows if row.notification_type != 'email' @@ -44,6 +45,7 @@ def serialize_ft_billing_yearly_totals(rows): "cost": float(row.cost), "free_chargeable_units": row.free_chargeable_units, "charged_units": row.charged_units, + "notifications_sent": row.notifications_sent, } for row in rows ] diff --git a/app/dao/fact_billing_dao.py b/app/dao/fact_billing_dao.py index b02243768..3c53ea67f 100644 --- a/app/dao/fact_billing_dao.py +++ b/app/dao/fact_billing_dao.py @@ -202,7 +202,7 @@ def fetch_billing_totals_for_year(service_id, year): db.session.query( func.sum(query.c.notifications_sent).label("notifications_sent"), # TEMPORARY: while we switch to "chargeable units" - func.sum(query.c.chargeable_units).label("billable_units"), + func.sum(query.c.billable_units).label("billable_units"), func.sum(query.c.chargeable_units).label("chargeable_units"), query.c.rate.label("rate"), query.c.notification_type.label("notification_type"), @@ -241,7 +241,7 @@ def fetch_monthly_billing_for_year(service_id, year): func.date_trunc('month', query.c.bst_date).cast(Date).label("month"), func.sum(query.c.notifications_sent).label("notifications_sent"), # TEMPORARY: while we switch to "chargeable units" - func.sum(query.c.chargeable_units).label("billable_units"), + func.sum(query.c.billable_units).label("billable_units"), func.sum(query.c.chargeable_units).label("chargeable_units"), query.c.rate.label("rate"), query.c.postage.label("postage"), @@ -275,7 +275,9 @@ def query_service_email_usage_for_year(service_id, year): FactBilling.bst_date, FactBilling.postage, # should always be "none" FactBilling.notifications_sent, - FactBilling.notifications_sent.label("chargeable_units"), + # TEMPORARY: while we switch to "chargeable units" + FactBilling.notifications_sent.label("billable_units"), + FactBilling.billable_units.label("chargeable_units"), FactBilling.rate, FactBilling.notification_type, FactBilling.notifications_sent.label("charged_units"), @@ -296,7 +298,9 @@ def query_service_letter_usage_for_year(service_id, year): FactBilling.bst_date, FactBilling.postage, FactBilling.notifications_sent, - FactBilling.notifications_sent.label("chargeable_units"), + # TEMPORARY: while we switch to "chargeable units" + FactBilling.notifications_sent.label("billable_units"), + FactBilling.billable_units.label("chargeable_units"), FactBilling.rate, FactBilling.notification_type, FactBilling.notifications_sent.label("charged_units"), @@ -348,6 +352,8 @@ def query_service_sms_usage_for_year(service_id, year): FactBilling.bst_date, FactBilling.postage, # should always be "none" FactBilling.notifications_sent, + # TEMPORARY: while we switch to "chargeable units" + chargeable_units.label("billable_units"), chargeable_units.label("chargeable_units"), FactBilling.rate, FactBilling.notification_type, diff --git a/tests/app/billing/test_rest.py b/tests/app/billing/test_rest.py index de990953f..eecbd7413 100644 --- a/tests/app/billing/test_rest.py +++ b/tests/app/billing/test_rest.py @@ -178,6 +178,7 @@ def test_get_yearly_usage_by_monthly_from_ft_billing(admin_request, notify_db_se assert letter_row["cost"] == 9.9 assert letter_row["free_chargeable_units"] == 0 assert letter_row["charged_units"] == 30 + assert letter_row["notifications_sent"] == 30 assert sms_row["month"] == "April" assert sms_row["notification_type"] == "sms" @@ -189,6 +190,7 @@ def test_get_yearly_usage_by_monthly_from_ft_billing(admin_request, notify_db_se assert sms_row["cost"] == 4.212 assert sms_row["free_chargeable_units"] == 4 assert sms_row["charged_units"] == 26 + assert sms_row["notifications_sent"] == 30 def set_up_yearly_data(): @@ -263,6 +265,7 @@ def test_get_yearly_billing_usage_summary_from_ft_billing(admin_request, notify_ assert json_response[0]['cost'] == 0 assert json_response[0]['free_chargeable_units'] == 0 assert json_response[0]['charged_units'] == 275 + assert json_response[0]['notifications_sent'] == 275 assert json_response[1]['notification_type'] == 'letter' assert json_response[1]['billing_units'] == 275 @@ -272,6 +275,7 @@ def test_get_yearly_billing_usage_summary_from_ft_billing(admin_request, notify_ assert json_response[1]['cost'] == 90.75 assert json_response[1]['free_chargeable_units'] == 0 assert json_response[1]['charged_units'] == 275 + assert json_response[1]['notifications_sent'] == 275 assert json_response[2]['notification_type'] == 'sms' assert json_response[2]['billing_units'] == 825 @@ -281,3 +285,4 @@ def test_get_yearly_billing_usage_summary_from_ft_billing(admin_request, notify_ assert json_response[2]['cost'] == 13.3002 assert json_response[2]['free_chargeable_units'] == 4 assert json_response[2]['charged_units'] == 821 + assert json_response[2]['notifications_sent'] == 825 diff --git a/tests/app/dao/test_ft_billing_dao.py b/tests/app/dao/test_ft_billing_dao.py index 1be0bd830..8f83a5adc 100644 --- a/tests/app/dao/test_ft_billing_dao.py +++ b/tests/app/dao/test_ft_billing_dao.py @@ -489,7 +489,7 @@ def test_fetch_monthly_billing_for_year_variable_rates(notify_db_session): assert results[1].notification_type == 'letter' assert results[1].notifications_sent == 1 assert results[1].billable_units == 1 - assert results[1].chargeable_units == 1 + assert results[1].chargeable_units == 2 assert results[1].rate == Decimal('0.36') assert results[1].cost == Decimal('0.36') assert results[1].free_chargeable_units == 0 @@ -614,7 +614,7 @@ def test_fetch_billing_totals_for_year_variable_rates(notify_db_session): assert results[1].notification_type == 'letter' assert results[1].notifications_sent == 1 assert results[1].billable_units == 1 - assert results[1].chargeable_units == 1 + assert results[1].chargeable_units == 2 assert results[1].rate == Decimal('0.36') assert results[1].cost == Decimal('0.36') assert results[1].free_chargeable_units == 0