From 111f2169af651fbaa0fce5771a7db33e0c5b72e2 Mon Sep 17 00:00:00 2001 From: Mark Pullan Date: Tue, 10 Mar 2026 14:26:13 +0000 Subject: [PATCH 1/6] SMS Nudge billed by originator --- ...null_resource_billing_transactions_view.tf | 3 +- .../sql/views/billing_transactions.sql | 70 ++++++++++++++----- 2 files changed, 54 insertions(+), 19 deletions(-) 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..5b164407 100644 --- a/infrastructure/terraform/components/reporting/null_resource_billing_transactions_view.tf +++ b/infrastructure/terraform/components/reporting/null_resource_billing_transactions_view.tf @@ -8,7 +8,8 @@ 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 } 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..e1ff7057 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,5 @@ -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 +10,56 @@ 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(completedtime) AS billingdate, + originatingclientid AS clientid, + originatingcampaignid AS campaignid, + originatingbillingrefid AS billingref, + NULL AS senderodscode, + communicationtype, + specificationid, + specificationbillingid, + messagelength, + messagelengthunits, + status, + sendtime + FROM request_item_plan_status_smsnudge +) + +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 + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 +ORDER BY + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; From 43afbeaaf1c1ef35df39b7b7bda909c0eb39781f Mon Sep 17 00:00:00 2001 From: Mark Pullan Date: Tue, 10 Mar 2026 14:29:23 +0000 Subject: [PATCH 2/6] Column name consistency fixes --- .../reporting/scripts/sql/views/billing_transactions.sql | 2 +- .../scripts/sql/views/request_item_plan_status_smsnudge.sql | 4 ++-- .../scripts/sql/views/request_item_status_smsnudge.sql | 2 +- .../sql/views/request_item_status_smsnudge_staging.sql | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) 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 e1ff7057..70995b64 100644 --- a/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql +++ b/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql @@ -22,7 +22,7 @@ WITH joined_request_item_plans AS ( DATE(completedtime) AS billingdate, originatingclientid AS clientid, originatingcampaignid AS campaignid, - originatingbillingrefid AS billingref, + originatingbillingref AS billingref, NULL AS senderodscode, communicationtype, specificationid, 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 From a873366c18a3d33030397b8577ed358c25258c01 Mon Sep 17 00:00:00 2001 From: Mark Pullan Date: Tue, 10 Mar 2026 15:34:49 +0000 Subject: [PATCH 3/6] Support the originating sender ODS code --- .../sql/views/billing_transactions.sql | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) 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 70995b64..6ac13bb9 100644 --- a/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql +++ b/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql @@ -19,19 +19,22 @@ WITH joined_request_item_plans AS ( WHERE ri.clientid != ${sms_nudge_client_id} UNION ALL SELECT - DATE(completedtime) AS billingdate, - originatingclientid AS clientid, - originatingcampaignid AS campaignid, - originatingbillingref AS billingref, - NULL AS senderodscode, - communicationtype, - specificationid, - specificationbillingid, - messagelength, - messagelengthunits, - status, - sendtime - FROM request_item_plan_status_smsnudge + 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 From 481f08213265cd5223c4194b48c51602d16fdfce Mon Sep 17 00:00:00 2001 From: Mark Pullan Date: Tue, 10 Mar 2026 15:43:59 +0000 Subject: [PATCH 4/6] Sonarqube fix --- .../sql/views/billing_transactions.sql | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) 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 6ac13bb9..0160deee 100644 --- a/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql +++ b/infrastructure/terraform/components/reporting/scripts/sql/views/billing_transactions.sql @@ -63,6 +63,24 @@ WHERE ) ) GROUP BY - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 + billingdate, + clientid, + campaignid, + billingref, + senderodscode, + communicationtype, + specificationid, + specificationbillingid, + messagelength, + messagelengthunits ORDER BY - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; + billingdate, + clientid, + campaignid, + billingref, + senderodscode, + communicationtype, + specificationid, + specificationbillingid, + messagelength, + messagelengthunits; From ac521840365084c0c1174e3e3ec87a204167a873 Mon Sep 17 00:00:00 2001 From: Mark Pullan Date: Tue, 10 Mar 2026 16:11:02 +0000 Subject: [PATCH 5/6] Fix missing dependency --- .../reporting/null_resource_billing_transactions_view.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 5b164407..76e9eef5 100644 --- a/infrastructure/terraform/components/reporting/null_resource_billing_transactions_view.tf +++ b/infrastructure/terraform/components/reporting/null_resource_billing_transactions_view.tf @@ -15,6 +15,7 @@ resource "null_resource" "billing_transactions_view" { 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 ] } From 7c21e95f86de886bedeb1e5ed0972320a1261cee Mon Sep 17 00:00:00 2001 From: Mark Pullan Date: Tue, 10 Mar 2026 16:17:49 +0000 Subject: [PATCH 6/6] Missing view creation line --- .../reporting/scripts/sql/views/billing_transactions.sql | 1 + 1 file changed, 1 insertion(+) 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 0160deee..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,3 +1,4 @@ +CREATE OR REPLACE VIEW ${view_name} AS WITH joined_request_item_plans AS ( SELECT DATE(rip.completedtime) AS billingdate,