UFN_REVENUE_PARTICIPANT
returns transactions of a participant in an event
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN |
Definition
Copy
CREATE function [dbo].[UFN_REVENUE_PARTICIPANT]
(
@EVENTID as uniqueidentifier,
@CONSTITUENTID as uniqueidentifier
)
returns TABLE
as
return
with REVENUE_INSTALLMENTS_CTE as
(
select
REVENUE.ID as REVENUEID
,REVENUE.TRANSACTIONTYPE
,REVENUE.TRANSACTIONTYPECODE
,REVENUE.CONSTITUENTID
,REVENUE.AMOUNT
,REVENUE.APPEALID
,case when NUMBEROFINSTALLMENTS = 0 then
case when ENDDATE is null then 1 -- Recurring gift with no end date
else
case FREQUENCYCODE
when 0 then datediff(month, REVENUESCHEDULE.STARTDATE, REVENUESCHEDULE.ENDDATE )/12 -- Annually
when 1 then (datediff(month, REVENUESCHEDULE.STARTDATE, REVENUESCHEDULE.ENDDATE )/12)*2 -- Semi-annually
when 2 then (datediff(month, REVENUESCHEDULE.STARTDATE, REVENUESCHEDULE.ENDDATE )/3) -- Quarterly
when 3 then datediff(month, REVENUESCHEDULE.STARTDATE, REVENUESCHEDULE.ENDDATE) -- Monthly
when 5 then 1 -- Single Installment
when 6 then datediff(month, REVENUESCHEDULE.STARTDATE, REVENUESCHEDULE.ENDDATE)/2 -- Bimonthly
when 7 then datediff(month, REVENUESCHEDULE.STARTDATE, REVENUESCHEDULE.ENDDATE)*2 -- Semi-Monthly
when 8 then datediff(week, REVENUESCHEDULE.STARTDATE, REVENUESCHEDULE.ENDDATE) /2 -- Biweekly
when 9 then datediff(week, REVENUESCHEDULE.STARTDATE, REVENUESCHEDULE.ENDDATE) -- Weekly
end + 1 -- Adding one because the start and enddate are inclusive
end
else isnull(NUMBEROFINSTALLMENTS,1)
end as NUMBEROFINSTALLMENTS
from [dbo].[REVENUE] (nolock)
left outer join [dbo].[REVENUESCHEDULE] (nolock) on REVENUE.ID = [REVENUESCHEDULE].ID
)
select
RI.REVENUEID
,RI.CONSTITUENTID as DONOR_CONSTITUENTID
,RS.ID AS [REVENUESPLITID]
,RI.TRANSACTIONTYPECODE
,RS.APPLICATIONCODE
,RI.[TRANSACTIONTYPE] as [RTRANSACTIONTYPE]
,RS.APPLICATION as RAPPLICATION
,case
when TRANSACTIONTYPECODE = 9 AND APPLICATIONCODE = 0 then 'Offline Donation'
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 17 then 'Offline Donation'
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 0 then 'Donation'
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 15 then 'Event sponsorship'
when TRANSACTIONTYPECODE = 1 AND APPLICATIONCODE = 0 then 'Pledge'
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 2 then 'Pledge'
when TRANSACTIONTYPECODE = 2 AND APPLICATIONCODE = 0 then 'Recurring gift'
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 3 then 'Recurring gift'
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 7 then 'Matching gift'
when TRANSACTIONTYPECODE = 3 then 'Matching gift'
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 1 then 'Event registration'
end [TRANSACTIONTYPE]
,case
when TRANSACTIONTYPECODE = 9 AND APPLICATIONCODE = 0 then RS.AMOUNT
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 17 then 0
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 0 then RS.AMOUNT
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 15 then RS.AMOUNT
when TRANSACTIONTYPECODE = 1 AND APPLICATIONCODE = 0 then RS.AMOUNT
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 2 then 0
when TRANSACTIONTYPECODE = 2 AND APPLICATIONCODE = 0 then RS.AMOUNT
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 3 then 0
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 7 then 0
when TRANSACTIONTYPECODE = 3 then RS.AMOUNT
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 1 then RS.AMOUNT
end * CASE when TRANSACTIONTYPECODE = 2 AND APPLICATIONCODE = 0 THEN NUMBEROFINSTALLMENTS ELSE 1 End -- Predicted amount based on installments is applied to recurring gifts only this allow us to select to see paid or unpaid amount for recurring gifts
as [ORIGINAL AMOUNT]
,case
when TRANSACTIONTYPECODE = 9 AND APPLICATIONCODE = 0 then 0
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 17 then RS.AMOUNT
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 0 then RS.AMOUNT
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 15 then RS.AMOUNT
when TRANSACTIONTYPECODE = 1 AND APPLICATIONCODE = 0 then 0
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 2 then RS.AMOUNT
when TRANSACTIONTYPECODE = 2 AND APPLICATIONCODE = 0 then 0
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 3 then RS.AMOUNT
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 7 then RS.AMOUNT
when TRANSACTIONTYPECODE = 3 then 0
when TRANSACTIONTYPECODE = 0 AND APPLICATIONCODE = 1 then RS.AMOUNT
end as [APPLIED AMOUNT]
from dbo.REVENUESPLIT RS (nolock)
inner join REVENUE_INSTALLMENTS_CTE RI on RI.REVENUEID = RS.REVENUEID
inner join dbo.[EVENT] (nolock) on RI.APPEALID = [EVENT].APPEALID
WHERE EVENT.ID = @EVENTID AND RS.ID IN (
SELECT REVENUESPLITID from REVENUERECOGNITION where CONSTITUENTID = @CONSTITUENTID)