USP_GROUP_5YEARRECOGNITIONGET
Returns the 5 year recognition history for a group.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@DESIGNATIONLEVELCATEGORYCODEID | uniqueidentifier | IN | |
@DESIGNATIONID | uniqueidentifier | IN | |
@INCLUDERECOGNITIONALLDATES | bit | IN | |
@CAMPAIGNID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SITEFILTERMODE | tinyint | IN | |
@SITESSELECTED | xml | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | tinyint | IN | |
@CURRENCYCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_GROUP_5YEARRECOGNITIONGET
(
@CONSTITUENTID uniqueidentifier,
@DESIGNATIONLEVELCATEGORYCODEID uniqueidentifier = null,
@DESIGNATIONID uniqueidentifier = null,
@INCLUDERECOGNITIONALLDATES bit = 0,
@CAMPAIGNID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@CURRENCYCODE tinyint = 1 -- (1, null) = organization, 3 = my base
)
as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @SELECTEDCURRENCYID uniqueidentifier;
if @CURRENCYCODE = 3
begin
if dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID) is not null
begin
select @SELECTEDCURRENCYID = CURRENCYSET.BASECURRENCYID
from dbo.CURRENCYSET
where
CURRENCYSET.ID = dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID);
end
else
begin
select @SELECTEDCURRENCYID = CURRENCYSET.BASECURRENCYID
from dbo.CURRENCYSET
where
CURRENCYSET.ID = dbo.UFN_CURRENCYSET_GETAPPUSERDEFAULTCURRENCYSET();
end
end
else
set @SELECTEDCURRENCYID = @ORGANIZATIONCURRENCYID;
declare @CURRENCYISOCODE nvarchar(3);
declare @CURRENCYDECIMALDIGITS tinyint;
declare @CURRENCYSYMBOL nvarchar(5);
declare @CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;
declare @CURRENCYROUNDINGTYPECODE tinyint;
select
@CURRENCYISOCODE = CURRENCYPROPERTIES.ISO4217,
@CURRENCYDECIMALDIGITS = CURRENCYPROPERTIES.DECIMALDIGITS,
@CURRENCYSYMBOL = CURRENCYPROPERTIES.CURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE = CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE,
@CURRENCYROUNDINGTYPECODE = CURRENCYPROPERTIES.ROUNDINGTYPECODE
from
dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES;
declare @ISUK bit = 0;
set @ISUK = dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D');
declare @ISHOUSEHOLD bit, @GROUPINCLUDESMEMBERGIVING bit;
select
@GROUPINCLUDESMEMBERGIVING =
case
when GD.GROUPTYPECODE = 0 then 1
when GD.GROUPTYPECODE = 1 then GT.INCLUDEMEMBERGIVING
end,
@ISHOUSEHOLD =
case
when GD.GROUPTYPECODE = 0 then 1
else 0
end
from dbo.GROUPDATA GD
left join dbo.GROUPTYPE GT on GD.GROUPTYPEID = GT.ID
where GD.ID=@CONSTITUENTID;
with MYSITESREV_CTE as
(
select
ID,
CONSTITUENTID,
TRANSACTIONTYPECODE,
DATE
from
dbo.REVENUE
where 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
/*next line is #SITEEXTENTION code*/
and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[REVSITES].[SITEID] or (SITEID is null and [REVSITES].[SITEID] is null)))
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
FISCALYEAR,
sum(case when TYPE = 0 then RECOGNITIONAMOUNT else 0 end) as GIFTS, -- (Gift)
sum(case when TYPE = 1 then RECOGNITIONAMOUNT else 0 end) as PLEDGES, -- (Pledge)
sum(case when TYPE = 2 then RECOGNITIONAMOUNT else 0 end) as PAYMENTS, -- (Pledge Payments)
sum(case when TYPE = 3 then RECOGNITIONAMOUNT else 0 end) as WRITEOFFS,
count(distinct case when TYPE in (0, 1) then REVENUERECOGNITIONID else null end) as NUMBER,
0 as PLEDGEBALANCE,
isnull(sum(
case
when (TYPE = 0 or TYPE = 1) then TAXCLAIMAMOUNT
else 0
end
), 0) TAXCLAIMAMOUNT,
ISO4217,
DECIMALDIGITS,
CURRENCYSYMBOL,
SYMBOLDISPLAYSETTINGCODE
from
(
-- group member gifts, pledges, or payments
select
REVENUERECOGNITION.ID as REVENUERECOGNITIONID,
REVENUESPLIT.ID as REVENUESPLITID,
case
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0, 3) then 0 -- Gift
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 or MYSITESREV_CTE.TRANSACTIONTYPECODE = 3 then 1 --Pledge and Matching Gift Claims
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 2 then 2 --Payment (Pledge payment)
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 7 then 0 --Auction donation
end as TYPE,
REVENUERECOGNITION.AMOUNTINCURRENCY RECOGNITIONAMOUNT,
REVENUESPLIT.AMOUNTINCURRENCY as REVENUESPLITAMOUNT,
dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(REVENUERECOGNITION.EFFECTIVEDATE,0) FISCALYEAR,
MYSITESREV_CTE.TRANSACTIONTYPECODE,
REVENUESPLIT.APPLICATIONCODE,
case
when @ISHOUSEHOLD = 1 then
isnull (case
when REVENUESPLIT.AMOUNTINCURRENCY > 0 then
case MYSITESREV_CTE.TRANSACTIONTYPECODE
when 0 then
case
when REVENUERECOGNITION.AMOUNTINCURRENCY > REVENUESPLIT.AMOUNTINCURRENCY then REVENUESPLITGIFTAID.TAXCLAIMAMOUNTINCURRENCY
else REVENUERECOGNITION.AMOUNTINCURRENCY/REVENUESPLIT.AMOUNTINCURRENCY * REVENUESPLITGIFTAID.TAXCLAIMAMOUNTINCURRENCY
end
when 1 then
case
when REVENUERECOGNITION.AMOUNTINCURRENCY > REVENUESPLIT.AMOUNTINCURRENCY
then PLEDGEINSTALLMENTSPLITTAXCLAIMAMOUNT.TAXCLAIMAMOUNTINCURRENCY
else REVENUERECOGNITION.AMOUNTINCURRENCY/REVENUESPLIT.AMOUNTINCURRENCY * PLEDGEINSTALLMENTSPLITTAXCLAIMAMOUNT.TAXCLAIMAMOUNTINCURRENCY
end
else 0
end
else 0
end, 0)
else 0
end as [TAXCLAIMAMOUNT],
@CURRENCYISOCODE ISO4217,
@CURRENCYDECIMALDIGITS DECIMALDIGITS,
@CURRENCYSYMBOL CURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE SYMBOLDISPLAYSETTINGCODE
from dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @CURRENCYROUNDINGTYPECODE) REVENUERECOGNITION
left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @CURRENCYROUNDINGTYPECODE) REVENUESPLIT on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
inner join MYSITESREV_CTE on REVENUESPLIT.REVENUEID = MYSITESREV_CTE.ID
inner join dbo.GROUPMEMBER GM on REVENUERECOGNITION.CONSTITUENTID = GM.MEMBERID
left join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
left join dbo.DESIGNATION DESIGNATION on DESIGNATION.ID = REVENUESPLIT.DESIGNATIONID
left join dbo.DESIGNATIONLEVEL DL1 on DL1.ID =
case
when DESIGNATION.DESIGNATIONLEVEL5ID is not null then DESIGNATION.DESIGNATIONLEVEL5ID
when DESIGNATION.DESIGNATIONLEVEL4ID is not null then DESIGNATION.DESIGNATIONLEVEL4ID
when DESIGNATION.DESIGNATIONLEVEL3ID is not null then DESIGNATION.DESIGNATIONLEVEL3ID
when DESIGNATION.DESIGNATIONLEVEL2ID is not null then DESIGNATION.DESIGNATIONLEVEL2ID
else DESIGNATION.DESIGNATIONLEVEL1ID
end
left join dbo.REVENUESPLITCAMPAIGN on REVENUESPLIT.ID = REVENUESPLITCAMPAIGN.REVENUESPLITID
left join dbo.UFN_REVENUESPLITGIFTAID_GETELIGIBLE(1) ELIGIBLEGIFTAID on ELIGIBLEGIFTAID.ID = REVENUESPLIT.ID
left join dbo.UFN_REVENUESPLITGIFTAID_GETAMOUNTSINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @CURRENCYROUNDINGTYPECODE) REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = ELIGIBLEGIFTAID.ID
left join dbo.UFN_PLEDGEINSTALLMENTSPLIT_CALCULATETAXCLAIMAMOUNTSINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @CURRENCYROUNDINGTYPECODE) PLEDGEINSTALLMENTSPLITTAXCLAIMAMOUNT on PLEDGEINSTALLMENTSPLITTAXCLAIMAMOUNT.REVENUESPLITID = REVENUESPLIT.ID
where
@GROUPINCLUDESMEMBERGIVING = 1
and GM.GROUPID = @CONSTITUENTID
and REVENUERECOGNITION.EFFECTIVEDATE > dateadd(year,-5,dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(@CURRENTDATE,1))
and REVENUERECOGNITION.EFFECTIVEDATE < dateadd(year,1,dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(@CURRENTDATE,0))
and (@DESIGNATIONLEVELCATEGORYCODEID is null or @DESIGNATIONLEVELCATEGORYCODEID = DL1.DESIGNATIONLEVELCATEGORYCODEID)
and (@DESIGNATIONID is null or DESIGNATION.ID = @DESIGNATIONID)
and (@CAMPAIGNID is null or REVENUESPLITCAMPAIGN.CAMPAIGNID = @CAMPAIGNID)
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= REVENUERECOGNITION.EFFECTIVEDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= REVENUERECOGNITION.EFFECTIVEDATE))
or (GMDR.DATEFROM <= REVENUERECOGNITION.EFFECTIVEDATE and GMDR.DATETO >= REVENUERECOGNITION.EFFECTIVEDATE))
and dbo.UFN_REVENUE_USERHASDESIGNATIONSITEACCESS(MYSITESREV_CTE.ID,@CURRENTAPPUSERID) = 1
union all
-- group gifts, pledges, or payments
select
REVENUERECOGNITION.ID as REVENUERECOGNITIONID,
REVENUESPLIT.ID as REVENUESPLITID,
case
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0, 3) then 0 -- Gift
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 or MYSITESREV_CTE.TRANSACTIONTYPECODE = 3 then 1 --Pledge
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 2 then 2 --Payment (Pledge payment)
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 7 then 0 --Auction donation
end as TYPE,
REVENUERECOGNITION.AMOUNTINCURRENCY RECOGNITIONAMOUNT,
REVENUESPLIT.AMOUNTINCURRENCY as REVENUESPLITAMOUNT,
dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(REVENUERECOGNITION.EFFECTIVEDATE,0) FISCALYEAR,
MYSITESREV_CTE.TRANSACTIONTYPECODE,
REVENUESPLIT.APPLICATIONCODE,
0 TAXCLAIMAMOUNT,
@CURRENCYISOCODE ISO4217,
@CURRENCYDECIMALDIGITS DECIMALDIGITS,
@CURRENCYSYMBOL CURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE SYMBOLDISPLAYSETTINGCODE
from dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @CURRENCYROUNDINGTYPECODE) REVENUERECOGNITION
left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @CURRENCYROUNDINGTYPECODE) REVENUESPLIT on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
inner join MYSITESREV_CTE on REVENUESPLIT.REVENUEID = MYSITESREV_CTE.ID
left join dbo.DESIGNATION DESIGNATION on DESIGNATION.ID = REVENUESPLIT.DESIGNATIONID
left join dbo.DESIGNATIONLEVEL DL1 on DL1.ID =
case
when DESIGNATION.DESIGNATIONLEVEL5ID is not null then DESIGNATION.DESIGNATIONLEVEL5ID
when DESIGNATION.DESIGNATIONLEVEL4ID is not null then DESIGNATION.DESIGNATIONLEVEL4ID
when DESIGNATION.DESIGNATIONLEVEL3ID is not null then DESIGNATION.DESIGNATIONLEVEL3ID
when DESIGNATION.DESIGNATIONLEVEL2ID is not null then DESIGNATION.DESIGNATIONLEVEL2ID
else DESIGNATION.DESIGNATIONLEVEL1ID
end
left join dbo.REVENUESPLITCAMPAIGN on REVENUESPLIT.ID = REVENUESPLITCAMPAIGN.REVENUESPLITID
left join dbo.UFN_REVENUESPLITGIFTAID_GETELIGIBLE(1) ELIGIBLEGIFTAID on ELIGIBLEGIFTAID.ID = REVENUESPLIT.ID
left join dbo.UFN_REVENUESPLITGIFTAID_GETAMOUNTSINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @CURRENCYROUNDINGTYPECODE) REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = ELIGIBLEGIFTAID.ID
left join dbo.UFN_PLEDGEINSTALLMENTSPLIT_CALCULATETAXCLAIMAMOUNTSINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENCYDECIMALDIGITS, @CURRENCYROUNDINGTYPECODE) PLEDGEINSTALLMENTSPLITTAXCLAIMAMOUNT on PLEDGEINSTALLMENTSPLITTAXCLAIMAMOUNT.REVENUESPLITID = REVENUESPLIT.ID
where
REVENUERECOGNITION.CONSTITUENTID = @CONSTITUENTID
and REVENUERECOGNITION.EFFECTIVEDATE > dateadd(year,-5,dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(@CURRENTDATE,1))
and REVENUERECOGNITION.EFFECTIVEDATE < dateadd(year,1,dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(@CURRENTDATE,0))
and (@DESIGNATIONLEVELCATEGORYCODEID is null or @DESIGNATIONLEVELCATEGORYCODEID = DL1.DESIGNATIONLEVELCATEGORYCODEID)
and (@DESIGNATIONID is null or DESIGNATION.ID = @DESIGNATIONID)
and (@CAMPAIGNID is null or REVENUESPLITCAMPAIGN.CAMPAIGNID = @CAMPAIGNID)
and dbo.UFN_REVENUE_USERHASDESIGNATIONSITEACCESS(MYSITESREV_CTE.ID,@CURRENTAPPUSERID) = 1
) as DATA
where TYPE is not NULL
group by FISCALYEAR, ISO4217, DECIMALDIGITS, CURRENCYSYMBOL, SYMBOLDISPLAYSETTINGCODE;