diff --git a/app/main/views/dashboard.py b/app/main/views/dashboard.py index ac048c141..7120be291 100644 --- a/app/main/views/dashboard.py +++ b/app/main/views/dashboard.py @@ -169,6 +169,37 @@ def usage(service_id): ) +@main.route("/services//ft-usage") +@login_required +@user_has_permissions('manage_service') +def ft_usage(service_id): + year, current_financial_year = requested_and_current_financial_year(request) + + free_sms_allowance = billing_api_client.get_free_sms_fragment_limit_for_year(service_id, year) + units = billing_api_client.get_billable_units_ft(service_id, year) + yearly_usage = billing_api_client.get_service_usage_ft(service_id, year) + + usage_template = 'views/usage.html' + if 'letter' in current_service['permissions']: + usage_template = 'views/usage-with-letters.html' + return render_template( + usage_template, + months=list(get_free_paid_breakdown_for_billable_units( + year, + free_sms_allowance, + units + )), + selected_year=year, + years=get_tuples_of_financial_years( + partial(url_for, '.ft_usage', service_id=service_id), + start=current_financial_year - 1, + end=current_financial_year + 1, + ), + **calculate_usage(yearly_usage, + free_sms_allowance) + ) + + @main.route("/services//monthly") @login_required @user_has_permissions('view_activity') diff --git a/app/notify_client/billing_api_client.py b/app/notify_client/billing_api_client.py index 10e0ce948..3de5949d9 100644 --- a/app/notify_client/billing_api_client.py +++ b/app/notify_client/billing_api_client.py @@ -19,6 +19,20 @@ class BillingAPIClient(NotifyAdminAPIClient): params=dict(year=year) ) + # Temporary methods to compare the usage before and after using ft_billing + def get_billable_units_ft(self, service_id, year): + return self.get( + '/service/{0}/billing/ft-monthly-usage'.format(service_id), + params=dict(year=year) + ) + + # Temporary methods to compare the usage before and after using ft_billing + def get_service_usage_ft(self, service_id, year=None): + return self.get( + '/service/{0}/billing/ft-yearly-usage-summary'.format(service_id), + params=dict(year=year) + ) + def get_free_sms_fragment_limit_for_year(self, service_id, year=None): result = self.get( '/service/{0}/billing/free-sms-fragment-limit'.format(service_id),