1- -- Monthly paid- member values split by the selected range's top five clients.
1+ -- Monthly member-payment values split by the selected range's top five clients.
22--
33-- Parameters:
44-- $1 timestamptz - inclusive reporting range start
55-- $2 timestamptz - exclusive reporting range end
66--
7- -- The same ranked customer series is used for every month. Payments for
8- -- unranked or unnamed clients are grouped under Other Customers.
7+ -- The same ranked customer series is used for every month. The latest
8+ -- non-cancelled payment record is counted in its creation month so projected
9+ -- payments remain visible. Payments for unranked or unnamed clients are
10+ -- grouped under Other Customers.
911-- Billing-account ids are normalized and compared as text so the historical
1012-- zero sentinel falls back to challenge billing without unsafe integer casts.
1113WITH bounds AS (
@@ -28,9 +30,9 @@ latest_payment_versions AS MATERIALIZED (
2830 FROM finance .payment p
2931 GROUP BY p .winnings_id
3032),
31- paid_events AS MATERIALIZED (
33+ payment_events AS MATERIALIZED (
3234 SELECT
33- COALESCE( p . date_paid , p . created_at ) AS paid_at ,
35+ p . created_at AS activity_at ,
3436 COALESCE(p .gross_amount , p .total_amount , 0 ) AS amount,
3537 NULLIF(TRIM (cl .id ), ' ' ) AS customer_id,
3638 NULLIF(TRIM (cl .name ), ' ' ) AS customer_label
@@ -56,18 +58,18 @@ paid_events AS MATERIALIZED (
5658 )
5759 LEFT JOIN " billing-accounts" ." Client" cl
5860 ON cl .id = COALESCE(payment_ba." clientId" , challenge_ba." clientId" )
59- WHERE p .payment_status = ' PAID '
61+ WHERE p .payment_status IS DISTINCT FROM ' CANCELLED '
6062 AND w .type = ' PAYMENT'
61- AND COALESCE( p . date_paid , p . created_at ) IS NOT NULL
63+ AND p . created_at IS NOT NULL
6264 AND NULLIF(TRIM (w .winner_id ), ' ' ) IS NOT NULL
6365 AND w .category ::text IS DISTINCT FROM ' TOPGEAR_PAYMENT'
6466),
6567selected_events AS (
6668 SELECT pe.*
67- FROM paid_events pe
69+ FROM payment_events pe
6870 CROSS JOIN bounds b
69- WHERE pe .paid_at >= b .start_at
70- AND pe .paid_at < b .end_at
71+ WHERE pe .activity_at >= b .start_at
72+ AND pe .activity_at < b .end_at
7173),
7274customer_totals AS (
7375 SELECT
@@ -118,7 +120,7 @@ series AS (
118120),
119121monthly_amounts AS (
120122 SELECT
121- DATE_TRUNC(' month' , se .paid_at ) AS month_start,
123+ DATE_TRUNC(' month' , se .activity_at ) AS month_start,
122124 COALESCE(
123125 ' customer-' || tc .customer_id ,
124126 ' other-customers'
@@ -129,7 +131,7 @@ monthly_amounts AS (
129131 ON tc .customer_id = se .customer_id
130132 AND tc .customer_label = se .customer_label
131133 GROUP BY
132- DATE_TRUNC(' month' , se .paid_at ),
134+ DATE_TRUNC(' month' , se .activity_at ),
133135 COALESCE(' customer-' || tc .customer_id , ' other-customers' )
134136)
135137SELECT
0 commit comments