USP_DATALIST_CONSTITUENT_REVENUEHISTORY
This datalist returns a filtered list of revenue associated with a constituent.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@REVENUETYPEOPTIONCODE | smallint | IN | Revenue type |
@DATERANGECODE | smallint | IN | Date range |
@ISGROUP | bit | IN | |
@PRESERVERELATIONSHIPS | bit | IN | Preserve revenue relationships |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@SITEFILTERMODE | tinyint | IN | Sites |
@SITESSELECTED | xml | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | Input parameter indicating the ID of the feature to use for site security checking. |
@SECURITYFEATURETYPE | tinyint | IN | Input parameter indicating the type of the feature to use for site security checking. |
@CURRENCYCODE | tinyint | IN | Currency |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENT_REVENUEHISTORY
(
@CONSTITUENTID uniqueidentifier,
@REVENUETYPEOPTIONCODE smallint = 0,
@DATERANGECODE smallint = 2,
@ISGROUP bit = 0,
@PRESERVERELATIONSHIPS bit = 1,
@CURRENTAPPUSERID uniqueidentifier = null,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@CURRENCYCODE tinyint = 2
)
as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
declare @STARTDATE datetime;
declare @ENDDATE datetime;
if @DATERANGECODE = 1 --Last 30 Days
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-29,@CURRENTDATE));
else if @DATERANGECODE = 2 --Last 90 Days
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-89,@CURRENTDATE));
else if @DATERANGECODE = 3 --Last Year
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,1,dateadd(year,-1,@CURRENTDATE)));
else
set @STARTDATE = @CURRENTDATE;
set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATE);
declare @MULTICURRENCYENABLED bit;
set @MULTICURRENCYENABLED = dbo.UFN_CONDITIONSETTING_EVALUATEEXISTSCONDITION('Multicurrency');
if @MULTICURRENCYENABLED = 0
set @CURRENCYCODE = 1;
declare @CURRENCYID uniqueidentifier;
if @CURRENCYCODE = 1
set @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if @CURRENCYCODE = 3
begin
set @CURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);
if @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
set @CURRENCYCODE = 1
end;
with MYSITESREV_CTE as
(
select
ID,
CONSTITUENTID,
AMOUNT,
TRANSACTIONTYPE,
TRANSACTIONTYPECODE,
DATE,
DATEADDED,
TRANSACTIONCURRENCYID,
BASECURRENCYID,
TRANSACTIONAMOUNT,
ORGANIZATIONAMOUNT
from
dbo.REVENUE
where
REVENUE.CONSTITUENTID = @CONSTITUENTID
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = REVENUE.ID
-- Using a case statement since the standard site extension filters
-- resulted in a poor plan
and case
when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 then 1
when exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[REVSITES].[SITEID] or (SITEID is null and [REVSITES].[SITEID] is null)) then 1
else 0
end = 1
and
(
@SITEFILTERMODE = 0
or
exists(select UFN_SITE_BUILDDATALISTSITEFILTER.SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) where UFN_SITE_BUILDDATALISTSITEFILTER.SITEID = REVSITES.SITEID)
)
)
)
select
ID,
RECORDID,
DATEADDED,
TYPECODE,
PARENT,
TYPE,
DATE,
AMOUNT,
GROSSAMOUNT,
BALANCE,
DESIGNATIONS,
PAYMENTMETHOD,
CATEGORY,
row_number() over (order by [TYPE]) as SEQUENCE,
MATCHINGGIFTCONSTITUENT,
CAMPAIGNS, --Bug 15945 - AdamBu - Each revenue type needs to retrieve campaigns differently, so do that below before they are unioned.
SITES,
DISPLAYCURRENCY
from
(
-- Donations, event registration payments, membership, and other payments
select
cast(RS.ID as nvarchar(36)) as ID,
MYSITESREV_CTE.ID as RECORDID,
ISVISIBLE =
Case
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE = 0 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 1 then 1 else 0 end -- Donations
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE = 1 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 5 then 1 else 0 end -- Event registration fees
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE = 4 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 6 then 1 else 0 end -- Other payment
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE = 5 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 7 then 1 else 0 end -- Membership fees
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE = 12 then case @REVENUETYPEOPTIONCODE when 0 then 1 else 0 end -- Auction purchases
end,
MYSITESREV_CTE.TRANSACTIONTYPECODE as TYPECODE,
case
when RS.TYPE = 'Sponsorship' then
case
when RS.APPLICATIONCODE = 0 then 'Sponsorship ' + lower(RS.APPLICATION)
else 'Sponsorship ' + RS.APPLICATION + ' payment'
end
else
case
when RS.APPLICATIONCODE = 0 then RS.APPLICATION
else RS.APPLICATION + ' payment'
end
end as TYPE,
dbo.UDA_BUILDLIST(distinct GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME) as CATEGORY,
MYSITESREV_CTE.DATE,
MYSITESREV_CTE.DATEADDED,
case @CURRENCYCODE
when 2 then RS.TRANSACTIONAMOUNT
when 1 then dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RS.ID,@CURRENCYID)
when 3 then dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RS.ID,@CURRENCYID)
else RS.AMOUNT
end as AMOUNT,
dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATESPLITGROSSAMOUNTINCURRENCY(RS.ID, 1, @CURRENCYID) as GROSSAMOUNT,
null as BALANCE,
dbo.UFN_DESIGNATION_GETNAME(RS.DESIGNATIONID) as DESIGNATIONS,
RPM.PAYMENTMETHOD as PAYMENTMETHOD,
PARENT = null,
MATCHINGGIFTCONSTITUENT = null,
(
select
dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME)
from
dbo.CAMPAIGN
inner join
dbo.REVENUESPLITCAMPAIGN on CAMPAIGN.ID = REVENUESPLITCAMPAIGN.CAMPAIGNID
where
REVENUESPLITCAMPAIGN.REVENUESPLITID = RS.ID
) as CAMPAIGNS,
dbo.UFN_REVENUESPLIT_BUILDSITELIST(RS.ID) SITES,
case @CURRENCYCODE
when 2 then MYSITESREV_CTE.TRANSACTIONCURRENCYID
when 0 then MYSITESREV_CTE.BASECURRENCYID
else @CURRENCYID
end as DISPLAYCURRENCY
from
MYSITESREV_CTE
left join dbo.REVENUEPAYMENTMETHOD RPM on MYSITESREV_CTE.ID = RPM.REVENUEID
inner join dbo.REVENUESPLIT RS on MYSITESREV_CTE.ID = RS.REVENUEID
left join dbo.REVENUECATEGORY RC on RS.ID = RC.ID
left join dbo.GLREVENUECATEGORYMAPPING on RC.GLREVENUECATEGORYMAPPINGID = GLREVENUECATEGORYMAPPING.ID
where
(MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE in (0,1,4,5,12)) and
(@DATERANGECODE = 0 or (MYSITESREV_CTE.DATE >= @STARTDATE and MYSITESREV_CTE.DATE <= @ENDDATE)) and
MYSITESREV_CTE.CONSTITUENTID = @CONSTITUENTID
group by
MYSITESREV_CTE.ID, RS.ID, MYSITESREV_CTE.TRANSACTIONTYPECODE, MYSITESREV_CTE.DATE, MYSITESREV_CTE.DATEADDED, RS.AMOUNT, RPM.PAYMENTMETHOD, MYSITESREV_CTE.TRANSACTIONTYPE, RS.APPLICATIONCODE, RS.APPLICATION, RS.DESIGNATIONID,RS.TYPE, RS.TRANSACTIONAMOUNT, MYSITESREV_CTE.TRANSACTIONCURRENCYID, MYSITESREV_CTE.BASECURRENCYID, RS.AMOUNT
union all
-- Pledges, Recurring gifts, Auction donations, Matching gift claims (by this constituent matching someone else's gift --> Orgs Only),
-- Planned gifts, Grant awards
select
cast(MYSITESREV_CTE.ID as nvarchar(36)) as ID,
MYSITESREV_CTE.ID as RECORDID,
ISVISIBLE =
Case
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 2 then 1 else 0 end -- Pledges
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 2 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 3 then 1 else 0 end -- Recurring gifts
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 3 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 4 then 1 else 0 end -- Matching gift claims
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 4 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 8 then 1 else 0 end -- Planned gifts
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 6 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 9 then 1 else 0 end -- Grant awards
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 7 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 10 then 1 else 0 end -- Auction donations
end,
MYSITESREV_CTE.TRANSACTIONTYPECODE as TYPECODE,
case
when RS.TYPE = 'Sponsorship' then 'Sponsorship ' + LOWER(MYSITESREV_CTE.TRANSACTIONTYPE)
else MYSITESREV_CTE.TRANSACTIONTYPE
end as TYPE,
dbo.UDA_BUILDLIST(distinct GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME) as CATEGORY,
MYSITESREV_CTE.DATE,
MYSITESREV_CTE.DATEADDED,
case @CURRENCYCODE
when 2 then MYSITESREV_CTE.TRANSACTIONAMOUNT
when 1 then dbo.UFN_REVENUE_GETAMOUNTINCURRENCY(MYSITESREV_CTE.ID,@CURRENCYID)
when 3 then dbo.UFN_REVENUE_GETAMOUNTINCURRENCY(MYSITESREV_CTE.ID,@CURRENCYID)
else MYSITESREV_CTE.AMOUNT
end as AMOUNT,
case MYSITESREV_CTE.TRANSACTIONTYPECODE
when 1 then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGEGROSSAMOUNTINCURRENCY(MYSITESREV_CTE.ID, @CURRENCYID)
when 2 then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEGROSSAMOUNTINCURRENCY(MYSITESREV_CTE.ID, 1, @CURRENCYID)
else null
end as GROSSAMOUNT,
case MYSITESREV_CTE.TRANSACTIONTYPECODE
when 1 then dbo.UFN_PLEDGE_GETBALANCEINCURRENCY(MYSITESREV_CTE.ID, @CURRENCYID)
when 3 then dbo.UFN_PLEDGE_GETBALANCEINCURRENCY(MYSITESREV_CTE.ID, @CURRENCYID)
else null
end as BALANCE,
dbo.UFN_REVENUE_DESIGNATIONLIST(MYSITESREV_CTE.ID) as DESIGNATIONS,
case MYSITESREV_CTE.TRANSACTIONTYPECODE
when 1 then null
when 3 then null
else RPM.PAYMENTMETHOD
end as PAYMENTMETHOD,
PARENT = null,
MATCHINGGIFTCONSTITUENT = null,
dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME) as CAMPAIGNS,
dbo.UDA_BUILDLIST(distinct [SITE].NAME) as SITES,
case @CURRENCYCODE
when 2 then MYSITESREV_CTE.TRANSACTIONCURRENCYID
when 0 then MYSITESREV_CTE.BASECURRENCYID
else @CURRENCYID
end as DISPLAYCURRENCY
from
MYSITESREV_CTE
inner join dbo.REVENUESPLIT RS on MYSITESREV_CTE.ID = RS.REVENUEID
inner join dbo.REVENUEPAYMENTMETHOD RPM on MYSITESREV_CTE.ID = RPM.REVENUEID
left outer join dbo.REVENUECATEGORY RC on RS.ID = RC.ID
left outer join dbo.GLREVENUECATEGORYMAPPING on RC.GLREVENUECATEGORYMAPPINGID = GLREVENUECATEGORYMAPPING.ID
left outer join dbo.REVENUESPLITCAMPAIGN on REVENUESPLITCAMPAIGN.REVENUESPLITID = RS.ID
left outer join dbo.CAMPAIGN on CAMPAIGN.ID = REVENUESPLITCAMPAIGN.CAMPAIGNID
outer apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RS.ID) REVENUESPLITSITE
left outer join dbo.[SITE] on [SITE].ID = REVENUESPLITSITE.SITEID
where
(MYSITESREV_CTE.TRANSACTIONTYPECODE <> 0) and
(@DATERANGECODE = 0 or (MYSITESREV_CTE.DATE >= @STARTDATE and MYSITESREV_CTE.DATE <= @ENDDATE)) and
MYSITESREV_CTE.CONSTITUENTID = @CONSTITUENTID
group by
MYSITESREV_CTE.ID, MYSITESREV_CTE.TRANSACTIONTYPECODE, MYSITESREV_CTE.DATE, MYSITESREV_CTE.DATEADDED, MYSITESREV_CTE.AMOUNT, RPM.PAYMENTMETHOD, MYSITESREV_CTE.TRANSACTIONTYPE,RS.TYPE, MYSITESREV_CTE.TRANSACTIONAMOUNT, MYSITESREV_CTE.TRANSACTIONCURRENCYID,MYSITESREV_CTE.BASECURRENCYID
union all
-- Pledge payment, Recurring gift payment, Matching gift payment, Planned gift payment, Grant award payment
-- Bug 15888 - AdamBu - Under a pledge, only break up the payments by split, not installment.
-- This allows us to match matching gift claim splits to payment splits based on designation.
select
ID =
Case RS.APPLICATIONCODE
when 3 then cast(RS.ID as nvarchar(36)) + cast(RGA.SOURCEREVENUEID as nvarchar(36))
else cast(RS.ID as nvarchar(36))
end,
MYSITESREV_CTE.ID as RECORDID,
ISVISIBLE =
Case RS.APPLICATIONCODE
when 2 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 2 then 1 else 0 end
when 3 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 3 then 1 else 0 end
when 6 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 8 then 1 else 0 end
when 7 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 4 then 1 else 0 end
when 8 then case @REVENUETYPEOPTIONCODE when 0 then 1 when 9 then 1 else 0 end
end,
MYSITESREV_CTE.TRANSACTIONTYPECODE as TYPECODE,
case
when RS.TYPE = 'Sponsorship' then 'Sponsorship payment'
else RS.APPLICATION + ' payment'
end as TYPE,
dbo.UDA_BUILDLIST(distinct GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME) as CATEGORY,
MYSITESREV_CTE.DATE,
MYSITESREV_CTE.DATEADDED,
-- For unapplied matching gift payments, use the revenue split amount
case when RS.APPLICATIONCODE = 7 and ISP.PLEDGEID is null then
case @CURRENCYCODE
when 2 then RS.TRANSACTIONAMOUNT
when 1 then dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RS.ID,@CURRENCYID)
when 3 then dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RS.ID,@CURRENCYID)
else RS.AMOUNT
end
else
case @CURRENCYCODE
when 2 then RS.TRANSACTIONAMOUNT
when 1 then coalesce(sum(dbo.UFN_RECURRINGGIFTACTIVITY_GETAMOUNTINCURRENCY(RGA.ID, @CURRENCYID)), 0) + coalesce(sum(dbo.UFN_INSTALLMENTSPLITPAYMENT_GETAMOUNTINCURRENCY(ISP.ID,@CURRENCYID)), 0)
when 3 then coalesce(sum(dbo.UFN_RECURRINGGIFTACTIVITY_GETAMOUNTINCURRENCY(RGA.ID, @CURRENCYID)), 0) + coalesce(sum(dbo.UFN_INSTALLMENTSPLITPAYMENT_GETAMOUNTINCURRENCY(ISP.ID,@CURRENCYID)), 0)
else coalesce(sum(RGA.AMOUNT), 0) + coalesce(sum(ISP.AMOUNT), 0)
end
end as AMOUNT,
dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATESPLITGROSSAMOUNTINCURRENCY(RS.ID, 1, @CURRENCYID) as GROSSAMOUNT,
null as BALANCE,
dbo.UFN_DESIGNATION_GETNAME(RS.DESIGNATIONID) as DESIGNATIONS,
RPM.PAYMENTMETHOD,
PARENT =
case @PRESERVERELATIONSHIPS
when 1 then
case RS.APPLICATIONCODE
when 3 then cast(RGA.SOURCEREVENUEID as nvarchar(36))
else cast(ISP.PLEDGEID as nvarchar(36))
end
else null
end,
MATCHINGGIFTCONSTITUENT = null,
(
select
dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME)
from
dbo.CAMPAIGN
inner join
dbo.REVENUESPLITCAMPAIGN on CAMPAIGN.ID = REVENUESPLITCAMPAIGN.CAMPAIGNID
where
REVENUESPLITCAMPAIGN.REVENUESPLITID = RS.ID
) as CAMPAIGNS,
dbo.UFN_REVENUESPLIT_BUILDSITELIST(RS.ID) SITES,
case @CURRENCYCODE
when 2 then MYSITESREV_CTE.TRANSACTIONCURRENCYID
when 0 then MYSITESREV_CTE.BASECURRENCYID
else @CURRENCYID
end as DISPLAYCURRENCY
from
MYSITESREV_CTE
inner join dbo.REVENUESPLIT RS on MYSITESREV_CTE.ID = RS.REVENUEID
left outer join dbo.REVENUEPAYMENTMETHOD RPM on MYSITESREV_CTE.ID = RPM.REVENUEID
left outer join dbo.INSTALLMENTSPLITPAYMENT ISP on ISP.PAYMENTID = RS.ID
left outer join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.ID = ISP.INSTALLMENTSPLITID
left outer join dbo.RECURRINGGIFTACTIVITY RGA on RGA.PAYMENTREVENUEID = RS.ID
left join dbo.REVENUECATEGORY RC on RS.ID = RC.ID
left join dbo.GLREVENUECATEGORYMAPPING on RC.GLREVENUECATEGORYMAPPINGID = GLREVENUECATEGORYMAPPING.ID
where
MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and
RS.APPLICATIONCODE in (2,3,6,7,8) and -- Pledge payment, Recurring gift payment, Matching gift payment, Grant award payment
(@DATERANGECODE = 0 or (MYSITESREV_CTE.DATE >= @STARTDATE and MYSITESREV_CTE.DATE <= @ENDDATE))
group by
MYSITESREV_CTE.ID, RS.ID, MYSITESREV_CTE.TRANSACTIONTYPECODE, MYSITESREV_CTE.DATE, MYSITESREV_CTE.DATEADDED, MYSITESREV_CTE.AMOUNT, RS.APPLICATIONCODE, RS.APPLICATION, RS.DESIGNATIONID,
RGA.SOURCEREVENUEID, ISP.PLEDGEID, RPM.PAYMENTMETHOD, MYSITESREV_CTE.TRANSACTIONTYPE, INSTALLMENTSPLIT.DESIGNATIONID,RS.TYPE,RS.TRANSACTIONAMOUNT, MYSITESREV_CTE.TRANSACTIONCURRENCYID,
MYSITESREV_CTE.BASECURRENCYID, RS.AMOUNT
union all
-- write-offs
select
null as ID,
null as RECORDID,
case
when @REVENUETYPEOPTIONCODE = 0 then 1
when @REVENUETYPEOPTIONCODE = 2 and MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 then 1
when @REVENUETYPEOPTIONCODE = 9 and MYSITESREV_CTE.TRANSACTIONTYPECODE = 6 then 1
else 0
end as ISVISIBLE,
null as TYPECODE,
case MYSITESREV_CTE.TRANSACTIONTYPECODE
when 1 then 'Pledge write-off'
when 6 then 'Grant award write-off'
end as TYPE,
null as CATEGORY,
WO.DATE as DATE,
WO.DATEADDED as DATEADDED,
case @CURRENCYCODE
when 2 then IWO.TRANSACTIONAMOUNT
when 1 then dbo.UFN_INSTALLMENTSPLITWRITEOFF_GETAMOUNTINCURRENCY(IWO.ID,@CURRENCYID)
when 3 then dbo.UFN_INSTALLMENTSPLITWRITEOFF_GETAMOUNTINCURRENCY(IWO.ID,@CURRENCYID)
else IWO.AMOUNT
end as AMOUNT,
null as GROSSAMOUNT,
null as BALANCE,
null as DESIGNATIONS,
null as PAYMENTMETHOD,
PARENT =
case @PRESERVERELATIONSHIPS
when 1 then cast(WO.REVENUEID as nvarchar(36))
else null
end,
MATCHINGGIFTCONSTITUENT = null,
(
select
dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME)
from
dbo.CAMPAIGN
inner join
dbo.REVENUESPLITCAMPAIGN on CAMPAIGN.ID = REVENUESPLITCAMPAIGN.CAMPAIGNID
inner join
dbo.REVENUESPLIT on REVENUESPLIT.ID = REVENUESPLITCAMPAIGN.REVENUESPLITID
where
REVENUESPLIT.REVENUEID = MYSITESREV_CTE.ID
) as CAMPAIGNS,
SITE.NAME,
case @CURRENCYCODE
when 2 then MYSITESREV_CTE.TRANSACTIONCURRENCYID
when 0 then MYSITESREV_CTE.BASECURRENCYID
else @CURRENCYID
end as DISPLAYCURRENCY
from
dbo.WRITEOFF WO
inner join MYSITESREV_CTE on MYSITESREV_CTE.ID = WO.REVENUEID
inner join dbo.INSTALLMENTSPLITWRITEOFF IWO on IWO.WRITEOFFID = WO.ID
inner join dbo.WRITEOFFSPLIT WOS on WOS.WRITEOFFID = WO.ID
inner join dbo.DESIGNATION on DESIGNATION.ID = WOS.DESIGNATIONID
inner join dbo.DESIGNATIONLEVEL on coalesce(DESIGNATION.DESIGNATIONLEVEL5ID,DESIGNATION.DESIGNATIONLEVEL4ID,DESIGNATION.DESIGNATIONLEVEL3ID,DESIGNATION.DESIGNATIONLEVEL2ID,DESIGNATION.DESIGNATIONLEVEL1ID) = DESIGNATIONLEVEL.ID
left join dbo.SITE on SITE.ID = DESIGNATIONLEVEL.SITEID
where
MYSITESREV_CTE.CONSTITUENTID = @CONSTITUENTID
and exists(select ID from dbo.REVENUESPLIT where REVENUEID=MYSITESREV_CTE.ID)
union all
-- Matching gift claims, matching revenue from this constituent
select distinct
ID = case
when RS2.APPLICATIONCODE in (2,7) then cast(RS.ID as nvarchar(36)) + cast(RS.ID as nvarchar(36))
when RS2.APPLICATIONCODE = 3 then cast(RS.ID as nvarchar(36)) + cast(R2.ID as nvarchar(36)) + cast(RGA.SOURCEREVENUEID as nvarchar(36))
else cast(RS.ID as nvarchar(36)) + cast(RMG.MGSOURCEREVENUEID as nvarchar(36))
end,
MYSITESREV_CTE.ID as RECORDID,
ISVISIBLE =
case @REVENUETYPEOPTIONCODE
when 0 then 1
when 1 then case when R2.TRANSACTIONTYPECODE = 0 and RS2.APPLICATIONCODE = 0 then 1 else 0 end
when 2 then case when R2.TRANSACTIONTYPECODE = 0 and RS2.APPLICATIONCODE = 2 then 1 else 0 end
when 3 then case when R2.TRANSACTIONTYPECODE = 0 and RS2.APPLICATIONCODE = 3 then 1 else 0 end
when 4 then case when R2.TRANSACTIONTYPECODE = 0 and RS2.APPLICATIONCODE = 7 then 1 else 0 end
when 5 then case when R2.TRANSACTIONTYPECODE = 0 and RS2.APPLICATIONCODE = 1 then 1 else 0 end
when 7 then case when R2.TRANSACTIONTYPECODE = 0 and RS2.APPLICATIONCODE = 5 then 1 else 0 end
when 9 then case when R2.TRANSACTIONTYPECODE = 0 and RS2.APPLICATIONCODE = 8 then 1 else 0 end
end,
MYSITESREV_CTE.TRANSACTIONTYPECODE as TYPECODE,
MYSITESREV_CTE.TRANSACTIONTYPE + ' (' + C.NAME + ')' as TYPE,
dbo.UDA_BUILDLIST(distinct GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME) as CATEGORY,
MYSITESREV_CTE.DATE,
MYSITESREV_CTE.DATEADDED,
case @CURRENCYCODE
when 2 then RS.TRANSACTIONAMOUNT
when 1 then dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RS.ID,@CURRENCYID)
when 3 then dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RS.ID,@CURRENCYID)
else RS.AMOUNT
end as AMOUNT,
null as GROSSAMOUNT,
dbo.UFN_PLEDGE_GETDESIGNATIONBALANCEINCURRENCY(MYSITESREV_CTE.ID, RS.DESIGNATIONID, @CURRENCYID) [BALANCE],
dbo.UFN_DESIGNATION_GETNAME(RS.DESIGNATIONID) as DESIGNATIONS,
RPM.PAYMENTMETHOD,
PARENT =
case @PRESERVERELATIONSHIPS
when 1 then
case
when RS2.APPLICATIONCODE in (2,7,8) then cast(RS2.ID as nvarchar(36))
when RS2.APPLICATIONCODE = 3 then cast(R2.ID as nvarchar(36)) + cast(RGA.SOURCEREVENUEID as nvarchar(36))
else cast(RMG.MGSOURCEREVENUEID as nvarchar(36))
end
else null
end,
MATCHINGGIFTCONSTITUENT = C.NAME,
(
select
dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME)
from
dbo.CAMPAIGN
inner join
dbo.REVENUESPLITCAMPAIGN on CAMPAIGN.ID = REVENUESPLITCAMPAIGN.CAMPAIGNID
where
REVENUESPLITCAMPAIGN.REVENUESPLITID = RS.ID
) as CAMPAIGNS,
dbo.UFN_REVENUESPLIT_BUILDSITELIST(RS.ID) SITES,
case @CURRENCYCODE
when 2 then MYSITESREV_CTE.TRANSACTIONCURRENCYID
when 0 then MYSITESREV_CTE.BASECURRENCYID
else @CURRENCYID
end as DISPLAYCURRENCY
from
MYSITESREV_CTE
inner join dbo.REVENUEMATCHINGGIFT RMG on RMG.ID = MYSITESREV_CTE.ID
inner join dbo.REVENUE R2 on R2.ID = RMG.MGSOURCEREVENUEID
inner join dbo.REVENUESPLIT RS on RS.REVENUEID = MYSITESREV_CTE.ID
inner join dbo.REVENUESPLIT RS2 on RS2.REVENUEID = R2.ID
left outer join dbo.REVENUEPAYMENTMETHOD RPM on RPM.REVENUEID = MYSITESREV_CTE.ID
left outer join dbo.INSTALLMENTSPLITPAYMENT ISP on ISP.PAYMENTID = RS2.ID
inner join dbo.CONSTITUENT C on C.ID = MYSITESREV_CTE.CONSTITUENTID
left outer join dbo.RECURRINGGIFTACTIVITY RGA on RGA.PAYMENTREVENUEID = RS2.ID
left join dbo.REVENUECATEGORY RC on RS.ID = RC.ID
left join dbo.GLREVENUECATEGORYMAPPING on RC.GLREVENUECATEGORYMAPPINGID = GLREVENUECATEGORYMAPPING.ID
where
MYSITESREV_CTE.TRANSACTIONTYPECODE = 3 and -- Matching gift claims
R2.CONSTITUENTID = @CONSTITUENTID and
(@DATERANGECODE = 0 or (MYSITESREV_CTE.DATE >= @STARTDATE and MYSITESREV_CTE.DATE <= @ENDDATE))
and RS.DESIGNATIONID = RS2.DESIGNATIONID
group by
MYSITESREV_CTE.ID, RS.ID, RS.AMOUNT, MYSITESREV_CTE.TRANSACTIONTYPECODE, MYSITESREV_CTE.TRANSACTIONTYPE, MYSITESREV_CTE.DATE, MYSITESREV_CTE.DATEADDED, RPM.PAYMENTMETHOD, RGA.SOURCEREVENUEID,
R2.TRANSACTIONTYPECODE, C.NAME, RS2.APPLICATIONCODE, RMG.MGSOURCEREVENUEID, R2.ID, RS.DESIGNATIONID, RS2.ID, RS.TRANSACTIONAMOUNT, MYSITESREV_CTE.TRANSACTIONCURRENCYID, MYSITESREV_CTE.BASECURRENCYID,
RS.AMOUNT
) as REVENUEHISTORY
where ISVISIBLE = 1
order by TYPE asc, DATE desc, DATEADDED desc;