diff --git a/infrastructure/terraform/components/reporting/null_resource_billing_transactions_view.tf b/infrastructure/terraform/components/reporting/null_resource_billing_transactions_view.tf index 1e9b4dc1..76e9eef5 100644 --- a/infrastructure/terraform/components/reporting/null_resource_billing_transactions_view.tf +++ b/infrastructure/terraform/components/reporting/null_resource_billing_transactions_view.tf @@ -8,12 +8,14 @@ resource "null_resource" "billing_transactions_view" { ${path.module}/scripts/create_replace_view.sh \ ${aws_athena_workgroup.setup.name} \ ${aws_glue_catalog_database.reporting.name} \ - billing_transactions + billing_transactions \ + sms_nudge_client_id "${local.sms_nudge_client_id}" EOT } depends_on = [ null_resource.request_item_plan_status_table, - null_resource.request_item_status_table + null_resource.request_item_status_table, + null_resource.request_item_plan_status_smsnudge_view ] } diff --git a/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql b/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql index 879c8e0c..9fc3d657 100644 --- a/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql +++ b/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql @@ -1,5 +1,6 @@ CREATE OR REPLACE VIEW ${view_name} AS -SELECT +WITH joined_request_item_plans AS ( + SELECT DATE(rip.completedtime) AS billingdate, rip.clientid, rip.campaignid, @@ -10,22 +11,77 @@ SELECT rip.specificationbillingid, rip.messagelength, rip.messagelengthunits, - COUNT(*) AS messagecount -FROM request_item_plan_status rip -INNER JOIN request_item_status ri -ON - rip.clientid = ri.clientid AND - rip.requestitemid = ri.requestitemid + rip.status, + rip.sendtime + FROM request_item_plan_status rip + INNER JOIN request_item_status ri + ON rip.clientid = ri.clientid + AND rip.requestitemid = ri.requestitemid + WHERE ri.clientid != ${sms_nudge_client_id} + UNION ALL + SELECT + DATE(rip.completedtime) AS billingdate, + rip.originatingclientid AS clientid, + rip.originatingcampaignid AS campaignid, + rip.originatingbillingref AS billingref, + orip.senderodscode, + rip.communicationtype, + rip.specificationid, + rip.specificationbillingid, + rip.messagelength, + rip.messagelengthunits, + rip.status, + rip.sendtime + FROM request_item_plan_status_smsnudge rip + INNER JOIN request_item_plan_status orip + ON rip.originatingclientid = orip.clientid + AND rip.originatingrequestitemplanid = orip.requestitemplanid +) + +SELECT + billingdate, + clientid, + campaignid, + billingref, + senderodscode, + communicationtype, + specificationid, + specificationbillingid, + messagelength, + messagelengthunits, + COUNT(*) AS messagecount +FROM joined_request_item_plans WHERE - rip.completedtime IS NOT NULL AND + billingdate IS NOT NULL + AND ( ( - ( - --Bill for all text messages forwarded to the supplier - (rip.communicationtype ='SMS') AND (rip.status IN ('DELIVERED', 'FAILED')) AND (sendtime IS NOT NULL) - ) OR ( - --Bill for all letters accepted by the supplier - (rip.communicationtype ='LETTER') AND (rip.status='DELIVERED') - ) + -- Bill for all text messages forwarded to the supplier + (communicationtype = 'SMS') AND (status IN ('DELIVERED', 'FAILED')) AND (sendtime IS NOT NULL) + ) + OR ( + -- Bill for all letters accepted by the supplier + (communicationtype = 'LETTER') AND (status = 'DELIVERED') ) -GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 -ORDER BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 + ) +GROUP BY + billingdate, + clientid, + campaignid, + billingref, + senderodscode, + communicationtype, + specificationid, + specificationbillingid, + messagelength, + messagelengthunits +ORDER BY + billingdate, + clientid, + campaignid, + billingref, + senderodscode, + communicationtype, + specificationid, + specificationbillingid, + messagelength, + messagelengthunits; diff --git a/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_plan_status_smsnudge.sql b/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_plan_status_smsnudge.sql index 15186595..7c1b54ae 100644 --- a/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_plan_status_smsnudge.sql +++ b/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_plan_status_smsnudge.sql @@ -3,10 +3,10 @@ SELECT rip.*, ris.originatingclientid, ris.originatingcampaignid, - ris.originatingbillingrefid, + ris.originatingbillingref, ris.originatingrequestitemid, ris.originatingrequestitemplanid, - original_ri.sendinggroupid AS originalsendinggroupid + original_ri.sendinggroupid AS originatingsendinggroupid FROM request_item_plan_status rip LEFT JOIN request_item_status_smsnudge_staging ris ON rip.requestitemid = ris.requestitemid diff --git a/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_status_smsnudge.sql b/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_status_smsnudge.sql index e44a02d8..b19dbba7 100644 --- a/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_status_smsnudge.sql +++ b/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_status_smsnudge.sql @@ -1,7 +1,7 @@ CREATE OR REPLACE VIEW ${view_name} AS SELECT ris.*, - rips.originalsendinggroupid + rips.originatingsendinggroupid FROM request_item_status_smsnudge_staging ris LEFT JOIN request_item_plan_status_smsnudge rips ON ris.requestitemid = rips.requestitemid diff --git a/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_status_smsnudge_staging.sql b/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_status_smsnudge_staging.sql index 52048ba5..957467ea 100644 --- a/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_status_smsnudge_staging.sql +++ b/infrastructure/terraform/components/reporting/scripts/sql/views/request_item_status_smsnudge_staging.sql @@ -3,7 +3,7 @@ SELECT ris.*, NULLIF(split_part(ris.billingref, '|', 1), '') AS originatingclientid, NULLIF(split_part(ris.billingref, '|', 2), '') AS originatingcampaignid, - NULLIF(split_part(ris.billingref, '|', 3), '') AS originatingbillingrefid, + NULLIF(split_part(ris.billingref, '|', 3), '') AS originatingbillingref, NULLIF(split_part(ris.requestitemrefid, '_', 1), '') AS originatingrequestitemid, NULLIF(split_part(ris.requestitemrefid, '_', 2), '') AS originatingrequestitemplanid FROM request_item_status ris