USP_DATAFORMTEMPLATE_VIEW_FAFEVENTGIFTSUMMARY
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@DATALOADED | bit | INOUT | |
@ADDRESS | nvarchar(max) | INOUT | |
nvarchar(100) | INOUT | ||
@PHONE | nvarchar(20) | INOUT | |
@PREVIOUSDONOR | bit | INOUT | |
@AMOUNT | money | INOUT | |
@RECOGNITION | nvarchar(max) | INOUT | |
@COMMCHANNEL | nvarchar(max) | INOUT | |
@INBOUNDCHANNEL | nvarchar(max) | INOUT | |
@PAYMENTMETHOD | nvarchar(max) | INOUT | |
@TRANSACTIONTYPE | nvarchar(max) | INOUT | |
@MATCHINGGIFTCLAIM | money | INOUT | |
@MATCHINGGIFTPAID | money | INOUT | |
@REVENUEID | uniqueidentifier | INOUT | |
@RECOGNITIONCONSTITUENTID | uniqueidentifier | INOUT | |
@MATCHINGGIFTCLAIMID | uniqueidentifier | INOUT | |
@DONORCONSTITUENTID | uniqueidentifier | INOUT | |
@REVENUESPLITID | uniqueidentifier | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_FAFEVENTGIFTSUMMARY
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@ADDRESS nvarchar(max) = null output,
@EMAIL nvarchar(100) = null output,
@PHONE nvarchar(20) = null output,
@PREVIOUSDONOR bit = null output,
@AMOUNT money = null output,
@RECOGNITION nvarchar(max) = null output,
@COMMCHANNEL nvarchar(max) = null output,
@INBOUNDCHANNEL nvarchar(max) = null output,
@PAYMENTMETHOD nvarchar(max) = null output,
@TRANSACTIONTYPE nvarchar(max) = null output,
@MATCHINGGIFTCLAIM money = null output,
@MATCHINGGIFTPAID money = null output,
@REVENUEID uniqueidentifier = null output,
@RECOGNITIONCONSTITUENTID uniqueidentifier = null output,
@MATCHINGGIFTCLAIMID uniqueidentifier = null output,
@DONORCONSTITUENTID uniqueidentifier = null output,
@REVENUESPLITID uniqueidentifier = null output
)
as
set nocount on;
-- be sure to set this, in case the select returns no rows
set @DATALOADED = 0;
declare @EVENTID uniqueidentifier
SELECT @EVENTID=EVENT.ID FROM REVENUE LEFT JOIN EVENT ON EVENT.APPEALID=REVENUE.APPEALID WHERE REVENUE.ID=@ID
;with EventMembers as
(
select TFT.ID as RECORDID, TFT.NAME, TX.TYPECODE, TX.[TYPE], TX.TEAMCONSTITUENTID as CONSTITUENTID
from dbo.TEAMEXTENSION TX With (NOLOCK)
join dbo.TEAMFUNDRAISINGTEAM TFT With (NOLOCK) on TX.TEAMFUNDRAISINGTEAMID = TFT.ID
where TX.EVENTID = @EVENTID
union all
select R.ID as RECORDID, C.NAME, 0 as TYPECODE, 'REGISTRANT' as [TYPE], C.ID as CONSTITUENTID
from dbo.REGISTRANT R With (NOLOCK)
join dbo.CONSTITUENT C With (NOLOCK) on R.CONSTITUENTID = C.ID
where R.EVENTID = @EVENTID
union all
select S.ID as RECORDID, C.NAME, 0 as TYPECODE, 'SPONSOR' as [TYPE], C.ID as CONSTITUENTID
from dbo.EVENTSPONSOR S With (NOLOCK)
join dbo.CONSTITUENT C With (NOLOCK) on S.CONSTITUENTID = C.ID
where S.EVENTID = @EVENTID and C.ID not in (select CONSTITUENTID from dbo.REGISTRANT R where R.EVENTID = @EVENTID)
)
-- populate the output parameters, which correspond to fields on the form. Note that
-- we set @DATALOADED = 1 to indicate that the load was successful. Otherwise, the system
-- will display a "no data loaded" message.
select @DATALOADED = 1,
@ADDRESS = dbo.UFN_BUILDFULLADDRESS(ADDRESS.ID, ADDRESS.ADDRESSBLOCK, ADDRESS.CITY, ADDRESS.STATEID, ADDRESS.POSTCODE, ADDRESS.COUNTRYID),
@EMAIL = EMAILADDRESS.EMAILADDRESS,
@PHONE = dbo.UFN_PHONE_GETINTERNATIONALNUMBER(PHONE.COUNTRYID, PHONE.NUMBER),
@PREVIOUSDONOR= case when PRIOREVENTREVENUE.ID is null then 0 else 1 end,
@AMOUNT=RS.AMOUNT,
@RECOGNITION=EM.NAME,
@COMMCHANNEL=FECC.CHANNEL,
@INBOUNDCHANNEL=CHANNELCODE.DESCRIPTION,
@PAYMENTMETHOD=RPM.PAYMENTMETHOD,
@TRANSACTIONTYPE=REVENUE.TRANSACTIONTYPE,
@REVENUEID=REVENUE.ID,
@RECOGNITIONCONSTITUENTID=EM.CONSTITUENTID,
@DONORCONSTITUENTID=REVENUE.CONSTITUENTID,
@REVENUESPLITID=RS.ID
from dbo.REVENUE
left join dbo.REVENUESPLIT RS (NOLOCK) on REVENUE.ID = RS.REVENUEID and (REVENUE.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE in (0, 7, 17) OR REVENUE.TRANSACTIONTYPECODE IN (1,2) )
left join dbo.REVENUEPAYMENTMETHOD RPM With (NOLOCK) on RPM.REVENUEID = REVENUE.ID
left join dbo.REVENUERECEIPT RC With (NOLOCK) on RC.REVENUEID = REVENUE.ID
left join dbo.REVENUERECOGNITION RR With (NOLOCK) on RR.REVENUESPLITID = RS.ID
left join dbo.CHANNELCODE on CHANNELCODE.ID=REVENUE.CHANNELCODEID
left join dbo.FAFEVENTCOMMUNICATIONCHANNEL FECC on FECC.TYPEGUID=REVENUE.ID
left join dbo.CONSTITUENT on REVENUE.CONSTITUENTID = CONSTITUENT.ID
left join dbo.ADDRESS on ADDRESS.CONSTITUENTID = CONSTITUENT.ID and ADDRESS.ISPRIMARY = 1
left join dbo.PHONE on PHONE.CONSTITUENTID = CONSTITUENT.ID and PHONE.ISPRIMARY = 1
left join dbo.EMAILADDRESS on EMAILADDRESS.CONSTITUENTID = CONSTITUENT.ID and EMAILADDRESS.ISPRIMARY = 1
left join dbo.EVENTEXTENSION on EVENTEXTENSION.EVENTID = @EVENTID
left join dbo.EVENT PRIOREVENT on PRIOREVENT.ID=EVENTEXTENSION.PRIORYEAREVENTID
left join dbo.REVENUE PRIOREVENTREVENUE on PRIOREVENTREVENUE.APPEALID=PRIOREVENT.APPEALID and PRIOREVENTREVENUE.CONSTITUENTID=CONSTITUENT.ID
left join EventMembers EM on RR.CONSTITUENTID = EM.CONSTITUENTID
where REVENUE.ID = @ID;
;with MatchingGiftClaims as
(
select
coalesce((select sum(INSTALLMENTPAYMENT.AMOUNT) from dbo.INSTALLMENTPAYMENT where INSTALLMENTPAYMENT.PLEDGEID=MATCHINGCLAIM.ID), 0) As MATCHINGGIFTPAIDAMOUNT,
MATCHINGCLAIM.Amount as MATCHINGGIFTCLAIMAMOUNT
from dbo.REVENUEMATCHINGGIFT RMG
inner join REVENUE MATCHINGCLAIM on RMG.ID=MATCHINGCLAIM.ID
where RMG.MGSOURCEREVENUEID=@ID
)
--show an aggregate for matching gift claim and paid amounts (crm allows 1-n claims to be made on the same donation)
select
@MATCHINGGIFTCLAIM=sum(MATCHINGGIFTCLAIMAMOUNT),
@MATCHINGGIFTPAID=sum(MATCHINGGIFTPAIDAMOUNT)
from MatchingGiftClaims
return 0;