Compare letter page count with billable units in DVLA response file

We compare the page_count in the response file we receive from the DVLA
with the billable_units of the letter. If these don't match, we log an
error.
This commit is contained in:
Katie Smith
2018-01-17 09:52:13 +00:00
parent f1c75c5c5d
commit 84e25d6b98
4 changed files with 86 additions and 0 deletions

View File

@@ -45,6 +45,7 @@ from app.dao.notifications_dao import (
dao_update_notifications_for_job_to_sent_to_dvla,
dao_update_notifications_by_reference,
dao_get_last_notification_added_for_job_id,
dao_get_notification_by_reference,
)
from app.dao.provider_details_dao import get_current_provider
from app.dao.service_inbound_api_dao import get_service_inbound_api_for_service
@@ -476,6 +477,8 @@ def update_letter_notifications_statuses(self, filename):
raise
else:
for update in notification_updates:
check_billable_units(update)
status = NOTIFICATION_DELIVERED if update.status == DVLA_RESPONSE_STATUS_SENT \
else NOTIFICATION_TEMPORARY_FAILURE
updated_count = dao_update_notifications_by_reference(
@@ -503,6 +506,16 @@ def process_updates_from_file(response_file):
return notification_updates
def check_billable_units(notification_update):
notification = dao_get_notification_by_reference(notification_update.reference)
if int(notification_update.page_count) != notification.billable_units:
msg = 'Notification with id {} had {} billable_units but a page count of {}'.format(
notification.id, notification.billable_units, notification_update.page_count)
current_app.logger.error(msg)
@notify_celery.task(bind=True, name="send-inbound-sms", max_retries=5, default_retry_delay=300)
@statsd(namespace="tasks")
def send_inbound_sms_to_service(self, inbound_sms_id, service_id):