UFN_REVENUE_CALCPARTICIPANTRAISEDTOTAL

Calculate components of participant raised total from transaction records.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@EVENTID uniqueidentifier IN

Definition

Copy



CREATE function [dbo].[UFN_REVENUE_CALCPARTICIPANTRAISEDTOTAL]
(
    @CONSTITUENTID    uniqueidentifier,
    @EVENTID uniqueidentifier
)
RETURNS TABLE  
AS  
RETURN  

    with TRANS_CTE as (
        select DONOR_CONSTITUENTID = case when TRANSACTIONTYPE = 'Event registration' then null else DONOR_CONSTITUENTID end,
            RECEIVEDAMOUNT = case when TRANSACTIONTYPE = 'Event registration' then 0 else [APPLIED AMOUNT] end
            REGAMOUNT = case when TRANSACTIONTYPE = 'Event registration' then [ORIGINAL AMOUNT] else 0 end
            UNPAIDPLEDGEAMOUNT = case when TRANSACTIONTYPE = 'Pledge' then ([ORIGINAL AMOUNT] - [APPLIED AMOUNT]) else 0 end,
            UNPAIDRECURRINGAMOUNT = case when TRANSACTIONTYPE = 'Recurring gift' then ([ORIGINAL AMOUNT] - [APPLIED AMOUNT]) else 0 end,
            MATCHINGGIFTCLAIMAMOUNT = case when TRANSACTIONTYPE = 'Matching gift' then ([ORIGINAL AMOUNT] - [APPLIED AMOUNT]) else 0 end,
            UNCONFIRMEDOFFLINEAMOUNT = case when TRANSACTIONTYPE = 'Offline Donation' then ([ORIGINAL AMOUNT] - [APPLIED AMOUNT]) else 0 end,

            GIFTCOUNT_DONATION = case when TRANSACTIONTYPE = 'Donation' then  1 else 0 end,

            GIFTCOUNT_UNPAIDPLEDGES_ON =                -- pledge header

                case when TRANSACTIONTYPECODE = 1 AND APPLICATIONCODE = 0 then 1 else 0 end,
            GIFTCOUNT_UNPAIDPLEDGES_OFF =               -- pledge header with at least one payment

                case when TRANSACTIONTYPECODE = 1 AND APPLICATIONCODE = 0 and exists(select 1 from INSTALLMENTSPLITPAYMENT where PLEDGEID = RP.REVENUEID) then 1 else 0 end,

            GIFTCOUNT_PENDINGMATCHINGGIFTS_ON =         -- matching gift header

                case when TRANSACTIONTYPECODE = 3 then 1 else 0 end,
            GIFTCOUNT_PENDINGMATCHINGGIFTS_OFF =        -- matching gift payment

                case when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 7 then 1 else 0 end,

            GIFTCOUNT_UNPAIDRECURRINGGIFTS_ON =         -- recurring gift header or number of payments, whichever is greater

                case when TRANSACTIONTYPECODE = 2 AND APPLICATIONCODE = 0 then
                    (select case when c > 1 then c else 1 end from
                        (select count(*) as c from dbo.RECURRINGGIFTINSTALLMENTPAYMENT where PAYMENTID = RP.REVENUEID) v1)
                else 0 end,
            GIFTCOUNT_UNPAIDRECURRINGGIFTS_OFF =         -- number of recurring payments

                case when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 3 then 1 else 0 end,

            GIFTCOUNT_UNCONFIRMEDPARTICIPANTGIFTENTRY_ON =      -- offline donation header (the pledge treatment)

                case when TRANSACTIONTYPECODE = 9 AND APPLICATIONCODE = 0 then 1 else 0 end,
            GIFTCOUNT_UNCONFIRMEDPARTICIPANTGIFTENTRY_OFF =     -- offline donation header with at least one payment

                case when TRANSACTIONTYPECODE = 9 AND APPLICATIONCODE = 0 and exists(select 1 from INSTALLMENTSPLITPAYMENT where PLEDGEID = RP.REVENUEID) then 1 else 0 end
        from [dbo].[UFN_REVENUE_PARTICIPANT](@EVENTID, @CONSTITUENTID) RP
    )
    select 
        RECEIVEDAMOUNT = SUM(RECEIVEDAMOUNT), 
        REGAMOUNT = SUM(REGAMOUNT), 
        UNPAIDPLEDGEAMOUNT = SUM(UNPAIDPLEDGEAMOUNT),
        UNPAIDRECURRINGAMOUNT = SUM(UNPAIDRECURRINGAMOUNT),
        MATCHINGGIFTCLAIMAMOUNT = SUM(MATCHINGGIFTCLAIMAMOUNT),
        UNCONFIRMEDOFFLINEAMOUNT = SUM(UNCONFIRMEDOFFLINEAMOUNT),
        DONORCOUNT = COUNT(distinct DONOR_CONSTITUENTID),
        GIFTCOUNT_DONATION = SUM(GIFTCOUNT_DONATION),
        GIFTCOUNT_UNPAIDPLEDGES_ON = SUM(GIFTCOUNT_UNPAIDPLEDGES_ON),
        GIFTCOUNT_UNPAIDPLEDGES_OFF = SUM(GIFTCOUNT_UNPAIDPLEDGES_OFF),
        GIFTCOUNT_PENDINGMATCHINGGIFTS_ON = SUM(GIFTCOUNT_PENDINGMATCHINGGIFTS_ON),
        GIFTCOUNT_PENDINGMATCHINGGIFTS_OFF = SUM(GIFTCOUNT_PENDINGMATCHINGGIFTS_OFF),
        GIFTCOUNT_UNPAIDRECURRINGGIFTS_ON = SUM(GIFTCOUNT_UNPAIDRECURRINGGIFTS_ON),
        GIFTCOUNT_UNPAIDRECURRINGGIFTS_OFF = SUM(GIFTCOUNT_UNPAIDRECURRINGGIFTS_OFF),
        GIFTCOUNT_UNCONFIRMEDPARTICIPANTGIFTENTRY_ON = SUM(GIFTCOUNT_UNCONFIRMEDPARTICIPANTGIFTENTRY_ON),
        GIFTCOUNT_UNCONFIRMEDPARTICIPANTGIFTENTRY_OFF = SUM(GIFTCOUNT_UNCONFIRMEDPARTICIPANTGIFTENTRY_OFF)
    from TRANS_CTE