USP_DATALIST_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY
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. |
@GROUPBY | tinyint | IN | Group by |
@TRANSACTIONTYPEOPTIONCODE | int | IN | Type |
@REVENUETYPEOPTIONCODE | int | IN | Revenue type |
@DATEFILTER | tinyint | IN | Date range |
@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. |
@INCLUDEGROUPMEMBERREVENUE | bit | IN | |
@RECOGNITIONFILTERID | uniqueidentifier | IN | Recognition filter |
@CURRENCYCODE | tinyint | IN | Currency |
@CAMPAIGNFILTERMODE | tinyint | IN | Campaigns |
@CAMPAIGNSSELECTED | xml | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY
(
@CONSTITUENTID uniqueidentifier,
@GROUPBY tinyint = 0, -- 0=Commitment, 1=Transaction, null=None
@TRANSACTIONTYPEOPTIONCODE int = null, -- -1=All, otherwise revenue.transactiontypecode
@REVENUETYPEOPTIONCODE int = null, -- -1=All, otherwise revenuesplit.revenuetypecode
@DATEFILTER tinyint = 16,
@CURRENTAPPUSERID uniqueidentifier = null,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@INCLUDEGROUPMEMBERREVENUE bit = 0,
@RECOGNITIONFILTERID uniqueidentifier = '00000000-0000-0000-0000-000000000000',
@CURRENCYCODE tinyint = 0,
@CAMPAIGNFILTERMODE tinyint = 0,
@CAMPAIGNSSELECTED xml = null,
@STARTDATE datetime = null,
@ENDDATE datetime = null
)
with execute as OWNER
as
set nocount on;
begin
declare
@CURRENCYID uniqueidentifier,
@ORGANIZATIONCURRENCYID uniqueidentifier,
@CURRENCYROUNDINGTYPECODE tinyint,
@CURRENCYISOCURRENCYCODE nvarchar(3) = null,
@CURRENCYDECIMALDIGITS tinyint = 0,
@CURRENCYSYMBOL nvarchar(5) = null,
@CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint = 0,
@ISUK bit;
--The platform does not pass any parameters when resetting datalist filters but this filter has a dynamic default value.
--To get around this use empty guid to signify that the parameter was not passed and set it to the default.
if @RECOGNITIONFILTERID = '00000000-0000-0000-0000-000000000000'
begin
select
@RECOGNITIONFILTERID = ID
from
dbo.RECOGNITIONFILTER
where
ISINDIVIDUALDEFAULT = 1;
if @RECOGNITIONFILTERID = '00000000-0000-0000-0000-000000000000'
set @RECOGNITIONFILTERID = null;
end
if @TRANSACTIONTYPEOPTIONCODE = -1
set @TRANSACTIONTYPEOPTIONCODE = null;
if @REVENUETYPEOPTIONCODE = -1
set @REVENUETYPEOPTIONCODE = null;
if @STARTDATE is null and @ENDDATE is null
exec [dbo].[USP_RESOLVEDATEFILTER] @DATEFILTER, @STARTDATE output, @ENDDATE output;
else
begin
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
end
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if @CURRENCYCODE = 1
set @CURRENCYID = @ORGANIZATIONCURRENCYID
if @CURRENCYCODE = 3
begin
set @CURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);
if @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
set @CURRENCYCODE = 1
end
select
@CURRENCYISOCURRENCYCODE = CURRENCY.ISO4217,
@CURRENCYDECIMALDIGITS = CURRENCY.DECIMALDIGITS,
@CURRENCYROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE,
@CURRENCYSYMBOL = CURRENCY.CURRENCYSYMBOL,
@CURRENCYSYMBOLDISPLAYSETTINGCODE = CURRENCY.SYMBOLDISPLAYSETTINGCODE
from dbo.CURRENCY
where ID = @CURRENCYID;
set @ISUK = dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D');
declare @HASSITES bit = 0;
declare @CHECKSITES bit = 0;
declare @ISADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
declare @MULTICURRENCYENABLED bit = dbo.UFN_CONDITIONSETTING_EVALUATEEXISTSCONDITION('Multicurrency');
if (select top 1 1 from dbo.Site) = 1
set @HASSITES = 1
if @HASSITES = 1 and @ISADMIN = 0
set @CHECKSITES = 1;
--Only create sites temp tables if needed
if @CHECKSITES = 1
begin
if object_id('tempdb..#TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEONFEATURE') is not null
drop table #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEONFEATURE
create table #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEONFEATURE
(
SITEID uniqueidentifier
)
insert into #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEONFEATURE (SITEID)
select
SITEID
from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID, @SECURITYFEATUREID, @SECURITYFEATURETYPE)
end
if @HASSITES = 1 and @SITEFILTERMODE != 0
begin
if object_id('tempdb..#TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEFILTER') is not null
drop table #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEFILTER
create table #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEFILTER
(
SITEID uniqueidentifier
)
insert into #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEFILTER (SITEID)
select
SITEID
from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED)
end
/* Get RevSplit IDs */
if object_id('tempdb..#TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS') is not null
drop table #TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS;
create table #TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS
(
RECOGNITIONID uniqueidentifier,
SPLITID uniqueidentifier,
REVENUEID uniqueidentifier,
TRANSACTIONTYPECODE tinyint,
AMOUNT money,
REVENUESPLITAMOUNT money,
CURRENCYID uniqueidentifier,
ISRECOGNITIONCREDIT bit
);
declare @SQL nvarchar(max) = '';
declare @RECOGNITIONCREDITS_SQL nvarchar(max) = '';
if @CAMPAIGNFILTERMODE != 0
begin
set @SQL = '
declare @CAMPAIGNFILTERTABLE table (ID uniqueidentifier)
insert into @CAMPAIGNFILTERTABLE
select T.c.value(''(ID)[1]'',''uniqueidentifier'')
from @CAMPAIGNSSELECTED.nodes(''/CAMPAIGNSSELECTED/ITEM'') T(c);' + char(13);
set @RECOGNITIONCREDITS_SQL = replace(@SQL, '@CAMPAIGNFILTERTABLE', '@CAMPAIGNFILTERTABLE_RC');
end
select @SQL = @SQL + '
insert into #TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS(RECOGNITIONID, SPLITID, REVENUEID, TRANSACTIONTYPECODE, AMOUNT, REVENUESPLITAMOUNT, CURRENCYID, ISRECOGNITIONCREDIT)
select distinct
REVENUERECOGNITION.ID as RECOGNITIONID,
FINANCIALTRANSACTIONLINEITEM.ID,
FINANCIALTRANSACTION.ID,
FINANCIALTRANSACTION.TYPECODE,
REVENUERECOGNITION.AMOUNT as AMOUNT,
FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT,
case when @CURRENCYCODE = 0
then REVENUERECOGNITION.BASECURRENCYID
else @CURRENCYID
end CURRENCYID,
0 as ISRECOGNITIONCREDIT
from dbo.REVENUERECOGNITION ' + char(13);
select @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + '
insert into #TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS(RECOGNITIONID, SPLITID, REVENUEID, TRANSACTIONTYPECODE, AMOUNT, REVENUESPLITAMOUNT, CURRENCYID, ISRECOGNITIONCREDIT)
select distinct
RECOGNITIONCREDIT.ID as RECOGNITIONID,
FINANCIALTRANSACTIONLINEITEM.ID,
FINANCIALTRANSACTION.ID,
FINANCIALTRANSACTION.TYPECODE,
RECOGNITIONCREDIT.AMOUNT as AMOUNT,
FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT,
case when @CURRENCYCODE = 0
then RECOGNITIONCREDIT.BASECURRENCYID
else @CURRENCYID
end CURRENCYID,
1 as ISRECOGNITIONCREDIT
from dbo.RECOGNITIONCREDIT ' + char(13);
--BBNT\RyanDow 2012-04-20
--Pulling recognition and revenue filter SQL directly into this dynamic SQL for performance gains
--Bypass UFN_REVENUERECOGNITION_VALIDFILTER(@RECOGNITIONFILTERID)
--If this logic is changed, the other places that use revenue/recognition filters will need to be updated
declare @REVENUEFILTERID uniqueidentifier
declare @REVENUEFILTERFUNCTION nvarchar(250)
declare @PLEDGERECOGNITIONCODE tinyint
if @RECOGNITIONFILTERID is not null
begin
select
@REVENUEFILTERID = RECOGNITIONFILTER.REVENUEFILTERID,
@PLEDGERECOGNITIONCODE = RECOGNITIONFILTER.PLEDGERECOGNITIONCODE,
@REVENUEFILTERFUNCTION = REVENUEFILTER.FUNCTIONNAME
from
dbo.RECOGNITIONFILTER
left join dbo.REVENUEFILTER on REVENUEFILTER.ID = RECOGNITIONFILTER.REVENUEFILTERID
where
RECOGNITIONFILTER.ID = @RECOGNITIONFILTERID
if @REVENUEFILTERID is not null and @REVENUEFILTERFUNCTION is not null and @REVENUEFILTERFUNCTION <> ''
begin
select @SQL = @SQL + '
inner join ' + @REVENUEFILTERFUNCTION + '() FILTERED on FILTERED.ID = REVENUERECOGNITION.REVENUESPLITID ' + CHAR(13);
end
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + '
inner join dbo.UFN_RECOGNITIONCREDIT_VALIDFILTER(@RECOGNITIONFILTERID) FILTERED on RECOGNITIONCREDIT.ID = FILTERED.ID ' + char(13);
end
set @SQL = @SQL + '
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = REVENUERECOGNITION.REVENUESPLITID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID ' + char(13)
--BBNT\RyanDow 2012-04-20
--Pulling recognition and revenue filter SQL directly into this dynamic SQL for performance gains
--Bypass UFN_REVENUERECOGNITION_VALIDFILTER(@RECOGNITIONFILTERID)
--If this logic is changed, the other places that use revenue/recognition filters will need to be updated
if @RECOGNITIONFILTERID is not null
begin
select @SQL = @SQL + '
left join dbo.RECOGNITIONFILTERRECOGNTIONTYPE on RECOGNITIONFILTERRECOGNTIONTYPE.REVENUERECOGNITIONTYPECODEID = REVENUERECOGNITION.REVENUERECOGNITIONTYPECODEID
and RECOGNITIONFILTERRECOGNTIONTYPE.RECOGNITIONFILTERID = @RECOGNITIONFILTERID ' + char(13)
if @PLEDGERECOGNITIONCODE <> 1
begin
select @SQL = @SQL + '
left join dbo.INSTALLMENTSPLITPAYMENT on FINANCIALTRANSACTIONLINEITEM.ID = INSTALLMENTSPLITPAYMENT.PAYMENTID
left join dbo.FINANCIALTRANSACTION as PLEDGE on INSTALLMENTSPLITPAYMENT.PLEDGEID = PLEDGE.ID ' + CHAR(13)
end
end
select @SQL = @SQL + '
where REVENUERECOGNITION.CONSTITUENTID = @CONSTITUENTID
and FINANCIALTRANSACTION.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null ' + char(13);
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + '
left join dbo.DONORCHALLENGEENCUMBERED on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = DONORCHALLENGEENCUMBERED.REVENUESPLITID
left join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
where RECOGNITIONCREDIT.CONSTITUENTID = @CONSTITUENTID
and ((RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 0) or (RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1 and RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID is not null))' + char(13);
if @STARTDATE is not null
begin
set @SQL = @SQL + 'and REVENUERECOGNITION.EFFECTIVEDATE >= @STARTDATE ' + char(13);
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + 'and RECOGNITIONCREDIT.EFFECTIVEDATE >= @STARTDATE ' + char(13);
end
if @ENDDATE is not null
begin
set @SQL = @SQL + 'and REVENUERECOGNITION.EFFECTIVEDATE <= @ENDDATE ' + char(13);
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + 'and RECOGNITIONCREDIT.EFFECTIVEDATE <= @ENDDATE ' + char(13);
end
if @TRANSACTIONTYPEOPTIONCODE is not null
begin
set @SQL = @SQL + 'and FINANCIALTRANSACTION.TYPECODE = @TRANSACTIONTYPEOPTIONCODE ' + char(13);
--We want to show internal sponsor credits under 'Donor challenge claim' even though they are actually tied to payment
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + 'and (FINANCIALTRANSACTION.TYPECODE is null or (FINANCIALTRANSACTION.TYPECODE = 0 and @TRANSACTIONTYPEOPTIONCODE = 8))' + char(13);
end
if @REVENUETYPEOPTIONCODE is not null
begin
set @SQL = @SQL + 'and REVENUESPLIT_EXT.TYPECODE = @REVENUETYPEOPTIONCODE ' + char(13);
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + 'and (REVENUESPLIT_EXT.TYPECODE is null or REVENUESPLIT_EXT.TYPECODE = @REVENUETYPEOPTIONCODE) ' + char(13);
end
if @CAMPAIGNFILTERMODE != 0
begin
set @SQL = @SQL +
'and exists (
select 1
from dbo.REVENUESPLITCAMPAIGN
inner join @CAMPAIGNFILTERTABLE CAMPAIGNFILTER on REVENUESPLITCAMPAIGN.CAMPAIGNID = CAMPAIGNFILTER.ID
where REVENUESPLITCAMPAIGN.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
) ' + char(13);
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL +
'and ((FINANCIALTRANSACTIONLINEITEM.ID is null)
or exists (
select 1
from dbo.REVENUESPLITCAMPAIGN
inner join @CAMPAIGNFILTERTABLE_RC CAMPAIGNFILTER on REVENUESPLITCAMPAIGN.CAMPAIGNID = CAMPAIGNFILTER.ID
where REVENUESPLITCAMPAIGN.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
))' + char(13);
end
--BBNT\RyanDow 2012-04-20
--Pulling recognition and revenue filter SQL directly into this dynamic SQL for performance gains
--Bypass UFN_REVENUERECOGNITION_VALIDFILTER(@RECOGNITIONFILTERID)
--If this logic is changed, the other places that use revenue/recognition filters will need to be updated
if @RECOGNITIONFILTERID is not null
begin
if @PLEDGERECOGNITIONCODE <> 1
begin
select @SQL = @SQL + '
and
(
-- Find commitments or payments other than pledges
(FINANCIALTRANSACTION.TYPECODE <> 0 or REVENUESPLIT_EXT.APPLICATIONCODE <> 2)
or
-- Find payments without pledge recognition
(
(FINANCIALTRANSACTION.TYPECODE = 0 and REVENUESPLIT_EXT.APPLICATIONCODE = 2)
and
(not exists (select top 1 RR.ID from dbo.REVENUERECOGNITION as RR inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on FTLI.ID = RR.REVENUESPLITID where RR.CONSTITUENTID = @CONSTITUENTID and FTLI.FINANCIALTRANSACTIONID = PLEDGE.ID))
)
) ' + char(13)
end
select @SQL = @SQL + '
and
(
RECOGNITIONFILTERRECOGNTIONTYPE.ID is not null
or not exists(select top 1 ID from dbo.RECOGNITIONFILTERRECOGNTIONTYPE RSUB where RSUB.RECOGNITIONFILTERID = @RECOGNITIONFILTERID)
) ' + char(13)
end
--FILTER FOR SECURITY AND SITEFILTER
if @CHECKSITES = 1
begin
if @SITEFILTERMODE = 0
begin
set @SQL = @SQL + '
and exists (select 1 from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(FINANCIALTRANSACTIONLINEITEM.ID) REVSITES
inner join #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEONFEATURE FEATURE on isnull(FEATURE.SITEID, ''00000000-0000-0000-0000-000000000000'') = isnull(REVSITES.SITEID, ''00000000-0000-0000-0000-000000000000'')) '
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + '
and exists (select 1 from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(FINANCIALTRANSACTIONLINEITEM.ID) REVSITES
inner join #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEONFEATURE FEATURE on isnull(FEATURE.SITEID, ''00000000-0000-0000-0000-000000000000'') = isnull(REVSITES.SITEID, ''00000000-0000-0000-0000-000000000000'')) '
end
else
begin
set @SQL = @SQL + '
and exists (select 1 from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(FINANCIALTRANSACTIONLINEITEM.ID) REVSITES
inner join #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEONFEATURE FEATURE on isnull(FEATURE.SITEID, ''00000000-0000-0000-0000-000000000000'') = isnull(REVSITES.SITEID, ''00000000-0000-0000-0000-000000000000'')
inner join #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEFILTER FILTER on isnull(FILTER.SITEID, ''00000000-0000-0000-0000-000000000000'') = isnull(REVSITES.SITEID, ''00000000-0000-0000-0000-000000000000'')) '
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + '
and exists (select 1 from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(FINANCIALTRANSACTIONLINEITEM.ID) REVSITES
inner join #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEONFEATURE FEATURE on isnull(FEATURE.SITEID, ''00000000-0000-0000-0000-000000000000'') = isnull(REVSITES.SITEID, ''00000000-0000-0000-0000-000000000000'')
inner join #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEFILTER FILTER on isnull(FILTER.SITEID, ''00000000-0000-0000-0000-000000000000'') = isnull(REVSITES.SITEID, ''00000000-0000-0000-0000-000000000000'')) '
end
end
if @CHECKSITES = 0 and @HASSITES = 1 and @SITEFILTERMODE != 0
begin
set @SQL = @SQL + '
and exists (select 1 from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(FINANCIALTRANSACTIONLINEITEM.ID) REVSITES
inner join #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEFILTER FILTER on isnull(FILTER.SITEID, ''00000000-0000-0000-0000-000000000000'') = isnull(REVSITES.SITEID, ''00000000-0000-0000-0000-000000000000'')) '
set @RECOGNITIONCREDITS_SQL = @RECOGNITIONCREDITS_SQL + '
and exists (select 1 from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(FINANCIALTRANSACTIONLINEITEM.ID) REVSITES
inner join #TMP_CONSTITUENT_EXPANDED_RECOGNITIONHISTORY_SITEFILTER FILTER on isnull(FILTER.SITEID, ''00000000-0000-0000-0000-000000000000'') = isnull(REVSITES.SITEID, ''00000000-0000-0000-0000-000000000000'')) '
end
exec sp_executesql @SQL
,N'@CONSTITUENTID uniqueidentifier
,@RECOGNITIONFILTERID uniqueidentifier
,@STARTDATE datetime
,@ENDDATE datetime
,@TRANSACTIONTYPEOPTIONCODE int
,@REVENUETYPEOPTIONCODE int
,@CAMPAIGNSSELECTED xml
,@CURRENCYCODE tinyint
,@CURRENCYID uniqueidentifier
,@CURRENTAPPUSERID uniqueidentifier
,@SECURITYFEATUREID uniqueidentifier
,@SECURITYFEATURETYPE tinyint
,@SITEFILTERMODE tinyint
,@SITESSELECTED xml'
,@CONSTITUENTID
,@RECOGNITIONFILTERID
,@STARTDATE
,@ENDDATE
,@TRANSACTIONTYPEOPTIONCODE
,@REVENUETYPEOPTIONCODE
,@CAMPAIGNSSELECTED
,@CURRENCYCODE
,@CURRENCYID
,@CURRENTAPPUSERID
,@SECURITYFEATUREID
,@SECURITYFEATURETYPE
,@SITEFILTERMODE
,@SITESSELECTED;
exec sp_executesql @RECOGNITIONCREDITS_SQL
,N'@CONSTITUENTID uniqueidentifier
,@RECOGNITIONFILTERID uniqueidentifier
,@STARTDATE datetime
,@ENDDATE datetime
,@TRANSACTIONTYPEOPTIONCODE int
,@REVENUETYPEOPTIONCODE int
,@CAMPAIGNSSELECTED xml
,@CURRENCYCODE tinyint
,@CURRENCYID uniqueidentifier
,@CURRENTAPPUSERID uniqueidentifier
,@SECURITYFEATUREID uniqueidentifier
,@SECURITYFEATURETYPE tinyint
,@SITEFILTERMODE tinyint
,@SITESSELECTED xml'
,@CONSTITUENTID
,@RECOGNITIONFILTERID
,@STARTDATE
,@ENDDATE
,@TRANSACTIONTYPEOPTIONCODE
,@REVENUETYPEOPTIONCODE
,@CAMPAIGNSSELECTED
,@CURRENCYCODE
,@CURRENCYID
,@CURRENTAPPUSERID
,@SECURITYFEATUREID
,@SECURITYFEATURETYPE
,@SITEFILTERMODE
,@SITESSELECTED;
--Update the amounts to multicurrency if we aren't using the base currency
if @CURRENCYCODE <> 0
begin
update
RIC
set
RIC.AMOUNT = REVENUERECOGNITIONINCURRENCY.AMOUNTINCURRENCY
from
#TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS RIC
inner join dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(
@CURRENCYID,
@ORGANIZATIONCURRENCYID,
@CURRENCYDECIMALDIGITS,
@CURRENCYROUNDINGTYPECODE
) as REVENUERECOGNITIONINCURRENCY on REVENUERECOGNITIONINCURRENCY.ID = RIC.RECOGNITIONID
where
RIC.ISRECOGNITIONCREDIT = 0;
update
RIC
set
RIC.AMOUNT = RECOGNITIONCREDITINCURRENCY.AMOUNTINCURRENCY
from
#TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS RIC
inner join dbo.UFN_RECOGNITIONCREDIT_GETAMOUNTINCURRENCY_BULK(
@CURRENCYID,
@ORGANIZATIONCURRENCYID,
@CURRENCYDECIMALDIGITS,
@CURRENCYROUNDINGTYPECODE
) as RECOGNITIONCREDITINCURRENCY on RECOGNITIONCREDITINCURRENCY.ID = RIC.RECOGNITIONID
where
RIC.ISRECOGNITIONCREDIT = 1;
update
RIC
set
RIC.REVENUESPLITAMOUNT = REVENUESPLITINCURRENCY.AMOUNTINCURRENCY
from
#TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS RIC
left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(
@CURRENCYID,
@ORGANIZATIONCURRENCYID,
@CURRENCYDECIMALDIGITS,
@CURRENCYROUNDINGTYPECODE
) as REVENUESPLITINCURRENCY on REVENUESPLITINCURRENCY.ID = RIC.SPLITID;
end;
if object_id('tempdb..#TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE') is not null
drop table #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE;
create table #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE(
RECOGNITIONID uniqueidentifier
,SPLITID uniqueidentifier
,REVENUEID uniqueidentifier
,COMMITMENTREVENUEID uniqueidentifier
,AMOUNT money
,GROSSAMOUNT money
,TRANSACTIONTYPECODE tinyint
,[APPLICATION] nvarchar(100) collate database_default
,REVENUETYPE nvarchar(100) collate database_default
,DESIGNATIONID uniqueidentifier
,REVENUESPLITDESCRIPTION nvarchar(700) collate database_default
,REVENUESPLITAMOUNT money
);
insert into #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE
select
RECOGNITIONINCURRENCY.RECOGNITIONID,
RECOGNITIONINCURRENCY.SPLITID,
RECOGNITIONINCURRENCY.REVENUEID,
case
when @GROUPBY = 0 then dbo.UFN_REVENUESPLIT_GETCOMMITMENTID(FINANCIALTRANSACTIONLINEITEM.ID, REVENUESPLIT_EXT.APPLICATIONCODE)
else null
end COMMITMENTREVENUEID,
RECOGNITIONINCURRENCY.AMOUNT,
case
when @ISUK = 0 then null
else(
case
when RECOGNITIONINCURRENCY.REVENUESPLITAMOUNT > 0 then
case RECOGNITIONINCURRENCY.TRANSACTIONTYPECODE
when 0 then
case
when RECOGNITIONINCURRENCY.AMOUNT > RECOGNITIONINCURRENCY.REVENUESPLITAMOUNT
then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_INCURRENCY(RECOGNITIONINCURRENCY.SPLITID, 1, RECOGNITIONINCURRENCY.CURRENCYID) + RECOGNITIONINCURRENCY.AMOUNT
else RECOGNITIONINCURRENCY.AMOUNT/RECOGNITIONINCURRENCY.REVENUESPLITAMOUNT * dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_INCURRENCY(RECOGNITIONINCURRENCY.SPLITID, 1, RECOGNITIONINCURRENCY.CURRENCYID) + RECOGNITIONINCURRENCY.AMOUNT
end
when 1 then
case
when RECOGNITIONINCURRENCY.AMOUNT > RECOGNITIONINCURRENCY.REVENUESPLITAMOUNT
then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGESPLITGROSSAMOUNT_2(RECOGNITIONINCURRENCY.SPLITID, RECOGNITIONINCURRENCY.CURRENCYID) - RECOGNITIONINCURRENCY.REVENUESPLITAMOUNT + RECOGNITIONINCURRENCY.AMOUNT
else RECOGNITIONINCURRENCY.AMOUNT/RECOGNITIONINCURRENCY.REVENUESPLITAMOUNT * (dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGESPLITGROSSAMOUNT_2(RECOGNITIONINCURRENCY.SPLITID, RECOGNITIONINCURRENCY.CURRENCYID) - RECOGNITIONINCURRENCY.REVENUESPLITAMOUNT) + RECOGNITIONINCURRENCY.AMOUNT
end
else RECOGNITIONINCURRENCY.AMOUNT
end
else REVENUESPLITAMOUNT
end
)
end as [GROSSAMOUNT],
RECOGNITIONINCURRENCY.TRANSACTIONTYPECODE,
REVENUESPLIT_EXT.APPLICATION,
REVENUESPLIT_EXT.TYPE REVENUETYPE,
REVENUESPLIT_EXT.DESIGNATIONID,
case
when FINANCIALTRANSACTIONLINEITEM.DELETEDON is null then
cast('(' + REVENUESPLIT_EXT.APPLICATION + ') ' + cast(FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT as nvarchar(20)) + ' ' + coalesce(REVENUEPAYMENTMETHOD.PAYMENTMETHOD, 'None') + ' - ' + ltrim(rtrim(CONSTITUENT.NAME)) as nvarchar(700))
else null end as REVENUESPLITDESCRIPTION,
RECOGNITIONINCURRENCY.REVENUESPLITAMOUNT
from #TMP_DATA_REVENUEHISTORY_RECOGNITIONIDS RECOGNITIONINCURRENCY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = RECOGNITIONINCURRENCY.SPLITID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
left join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = FINANCIALTRANSACTION.ID
left outer join dbo.CONSTITUENT on FINANCIALTRANSACTION.CONSTITUENTID = CONSTITUENT.ID;
create table #DESIGNATIONS (
DESIGNATIONID uniqueidentifier primary key
,DESIGNATIONNAME nvarchar(512) collate database_default
);
create table #CAMPAIGNSBYSPLIT (
REVENUESPLITID uniqueidentifier primary key
,CAMPAIGNNAME nvarchar(MAX) collate database_default
);
create table #CAMPAIGNSBYREV (
REVENUEID uniqueidentifier primary key
,CAMPAIGNNAME nvarchar(MAX) collate database_default
);
insert into #DESIGNATIONS (DESIGNATIONID, DESIGNATIONNAME)
select DESIGNATIONID, DN.NAME
from (select distinct DESIGNATIONID from #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE) V1
inner join dbo.DESIGNATION as DN on V1.DESIGNATIONID = DN.ID
insert into #CAMPAIGNSBYSPLIT (REVENUESPLITID, CAMPAIGNNAME)
select T1.SPLITID, dbo.UDA_BUILDLIST(CAMPAIGN.[NAME])
from #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE T1
inner join dbo.REVENUESPLITCAMPAIGN on REVENUESPLITCAMPAIGN.REVENUESPLITID = T1.SPLITID
inner join dbo.CAMPAIGN on CAMPAIGN.ID = REVENUESPLITCAMPAIGN.CAMPAIGNID
group by T1.SPLITID;
insert into #CAMPAIGNSBYREV (REVENUEID, CAMPAIGNNAME)
select distinct T1.REVENUEID, dbo.UDA_BUILDLIST(CAMPAIGN.[NAME])
from #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE T1
inner join dbo.REVENUESPLITCAMPAIGN on REVENUESPLITCAMPAIGN.REVENUESPLITID = T1.SPLITID
inner join dbo.CAMPAIGN on CAMPAIGN.ID = REVENUESPLITCAMPAIGN.CAMPAIGNID
group by T1.REVENUEID;
if object_id('tempdb..#TMP_DATA_REVENUEHISTORY_SUMMEDREVENUE_CTE') is not null
drop table #TMP_DATA_REVENUEHISTORY_SUMMEDREVENUE_CTE;
create table #TMP_DATA_REVENUEHISTORY_SUMMEDREVENUE_CTE (
RECOGNITIONID uniqueidentifier
,REVENUEID uniqueidentifier
,PARENTID uniqueidentifier
,APPLICATION nvarchar(max) collate database_default
,REVENUETYPE nvarchar(max) collate database_default
,RECOGNITIONCREDITTYPES nvarchar(max) collate database_default
,DESIGNATIONS nvarchar(MAX) collate database_default
,REVENUECATEGORIES nvarchar(MAX) collate database_default
,CAMPAIGNS nvarchar(MAX) collate database_default
,SITES nvarchar(MAX) collate database_default
,AMOUNT money
,GROSSAMOUNT money
,REVENUESPLITAMOUNT money
);
if @GROUPBY = 1
insert into #TMP_DATA_REVENUEHISTORY_SUMMEDREVENUE_CTE
select
null as RECOGNITIONID,
REVENUEID,
null as PARENTID,
dbo.UDA_BUILDLIST(distinct RECOGNITION_CTE.APPLICATION) APPLICATION,
dbo.UDA_BUILDLIST(distinct RECOGNITION_CTE.REVENUETYPE) REVENUETYPE,
null RECOGNITIONCREDITTYPES,
null DESIGNATIONS,
null REVENUECATEGORIES,
null CAMPAIGNS,
null SITES,
sum(coalesce(RECOGNITION_CTE.AMOUNT,0)) AMOUNT,
sum(coalesce(RECOGNITION_CTE.GROSSAMOUNT,0)) GROSSAMOUNT,
sum(coalesce(RECOGNITION_CTE.REVENUESPLITAMOUNT,0)) REVENUESPLITAMOUNT
from #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE RECOGNITION_CTE
group by REVENUEID
having COUNT(*) > 1;
if @GROUPBY = 0
insert into #TMP_DATA_REVENUEHISTORY_SUMMEDREVENUE_CTE
select
null RECOGNITIONID,
RECOGNITION_CTE.REVENUEID,
null as PARENTID,
dbo.UDA_BUILDLIST(distinct RECOGNITION_CTE.APPLICATION) APPLICATION,
dbo.UDA_BUILDLIST(distinct RECOGNITION_CTE.REVENUETYPE) REVENUETYPE,
dbo.UDA_BUILDLIST(distinct REVENUERECOGNITIONTYPECODE.DESCRIPTION) RECOGNITIONCREDITTYPES,
dbo.UDA_BUILDLIST(isnull (#DESIGNATIONS.DESIGNATIONNAME, REVENUESPLITDESCRIPTION)) DESIGNATIONS,
dbo.UDA_BUILDLIST(distinct GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME) REVENUECATEGORIES,
#CAMPAIGNSBYREV.CAMPAIGNNAME CAMPAIGNS,
(
select dbo.UDA_BUILDLIST(SITE.NAME)
from dbo.UFN_SITEID_MAPFROM_REVENUEID(RECOGNITION_CTE.REVENUEID) RSITE
inner join dbo.SITE on SITE.ID = RSITE.SITEID
) SITES,
sum(coalesce(RECOGNITION_CTE.AMOUNT,0)) AMOUNT,
sum(coalesce(RECOGNITION_CTE.GROSSAMOUNT,0)) GROSSAMOUNT,
sum(coalesce(RECOGNITION_CTE.REVENUESPLITAMOUNT,0)) REVENUESPLITAMOUNT
from #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE RECOGNITION_CTE
inner join dbo.REVENUERECOGNITION on RECOGNITION_CTE.RECOGNITIONID = REVENUERECOGNITION.ID
left join dbo.REVENUERECOGNITIONTYPECODE on REVENUERECOGNITION.REVENUERECOGNITIONTYPECODEID = REVENUERECOGNITIONTYPECODE.ID
left join #DESIGNATIONS on RECOGNITION_CTE.DESIGNATIONID = #DESIGNATIONS.DESIGNATIONID
left join #CAMPAIGNSBYREV on RECOGNITION_CTE.REVENUEID = #CAMPAIGNSBYREV.REVENUEID
left join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = RECOGNITION_CTE.SPLITID
left join dbo.GLREVENUECATEGORYMAPPING on GLREVENUECATEGORYMAPPING.ID = REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID
where RECOGNITION_CTE.TRANSACTIONTYPECODE <> 0
group by RECOGNITION_CTE.REVENUEID, #CAMPAIGNSBYREV.CAMPAIGNNAME;
insert into #TMP_DATA_REVENUEHISTORY_SUMMEDREVENUE_CTE
select
RECOGNITION_CTE.RECOGNITIONID,
REVENUEID,
case @GROUPBY
when 0 then COMMITMENTREVENUEID
when 1 then REVENUEID
else null
end as PARENTID,
RECOGNITION_CTE.APPLICATION,
RECOGNITION_CTE.REVENUETYPE,
REVENUERECOGNITIONTYPECODE.DESCRIPTION RECOGNITIONCREDITTYPES,
isnull(#DESIGNATIONS.DESIGNATIONNAME, REVENUESPLITDESCRIPTION) DESIGNATIONS,
GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME REVENUECATEGORIES,
#CAMPAIGNSBYSPLIT.CAMPAIGNNAME CAMPAIGNS,
(
select dbo.UDA_BUILDLIST(SITE.NAME)
from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RECOGNITION_CTE.SPLITID) RSITE
inner join dbo.SITE on SITE.ID = RSITE.SITEID
) SITES,
RECOGNITION_CTE.AMOUNT,
RECOGNITION_CTE.GROSSAMOUNT,
RECOGNITION_CTE.REVENUESPLITAMOUNT
from #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE RECOGNITION_CTE
inner join dbo.REVENUERECOGNITION on RECOGNITION_CTE.RECOGNITIONID = REVENUERECOGNITION.ID
left join dbo.REVENUERECOGNITIONTYPECODE on REVENUERECOGNITION.REVENUERECOGNITIONTYPECODEID = REVENUERECOGNITIONTYPECODE.ID
left join #DESIGNATIONS on RECOGNITION_CTE.DESIGNATIONID = #DESIGNATIONS.DESIGNATIONID
left join #CAMPAIGNSBYSPLIT on RECOGNITION_CTE.SPLITID = #CAMPAIGNSBYSPLIT.REVENUESPLITID
left join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = RECOGNITION_CTE.SPLITID
left join dbo.GLREVENUECATEGORYMAPPING on GLREVENUECATEGORYMAPPING.ID = REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID
where RECOGNITION_CTE.TRANSACTIONTYPECODE = 0
or coalesce(@GROUPBY, -1) <> 0;
insert into #TMP_DATA_REVENUEHISTORY_SUMMEDREVENUE_CTE
select
RECOGNITION_CTE.RECOGNITIONID,
REVENUEID,
case @GROUPBY
when 0 then COMMITMENTREVENUEID
when 1 then REVENUEID
else null
end as PARENTID,
RECOGNITION_CTE.APPLICATION,
RECOGNITION_CTE.REVENUETYPE,
REVENUERECOGNITIONTYPECODE.DESCRIPTION RECOGNITIONCREDITTYPES,
isnull(#DESIGNATIONS.DESIGNATIONNAME, REVENUESPLITDESCRIPTION) DESIGNATIONS,
GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME REVENUECATEGORIES,
#CAMPAIGNSBYSPLIT.CAMPAIGNNAME CAMPAIGNS,
(
select dbo.UDA_BUILDLIST(SITE.NAME)
from dbo.SITE
where SITE.ID = dbo.UFN_SITEID_MAPFROM_DESIGNATIONID(RECOGNITIONCREDIT.DESIGNATIONID)
) SITES,
RECOGNITION_CTE.AMOUNT,
RECOGNITION_CTE.GROSSAMOUNT,
RECOGNITION_CTE.REVENUESPLITAMOUNT
from #TMP_DATA_REVENUEHISTORY_RECOGNITION_CTE RECOGNITION_CTE
inner join dbo.RECOGNITIONCREDIT on RECOGNITION_CTE.RECOGNITIONID = RECOGNITIONCREDIT.ID
left join dbo.DONORCHALLENGEENCUMBERED on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
left join dbo.REVENUERECOGNITIONTYPECODE on RECOGNITIONCREDIT.USERRECOGNITIONTYPECODEID = REVENUERECOGNITIONTYPECODE.ID
left join #DESIGNATIONS on RECOGNITION_CTE.DESIGNATIONID = #DESIGNATIONS.DESIGNATIONID
left join #CAMPAIGNSBYSPLIT on RECOGNITION_CTE.SPLITID = #CAMPAIGNSBYSPLIT.REVENUESPLITID
left join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = RECOGNITION_CTE.SPLITID
left join dbo.GLREVENUECATEGORYMAPPING on GLREVENUECATEGORYMAPPING.ID = REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID
where (RECOGNITION_CTE.TRANSACTIONTYPECODE = 0
or coalesce(@GROUPBY, -1) <> 0)
and ((RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 0) or (RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1 and RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID is not null));
select
case
when REVENUERECOGNITION.REVENUESPLITID is null
then
case
when RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID is null
then SUMMEDREVENUE_CTE.REVENUEID
else (select REVENUESPLITID from dbo.DONORCHALLENGEENCUMBERED where ID = RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID)
end
else REVENUERECOGNITION.REVENUESPLITID
end ID,
case when REVENUERECOGNITION.REVENUESPLITID is null
then (select REVENUESPLITID from dbo.DONORCHALLENGEENCUMBERED where ID = RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID)
else REVENUERECOGNITION.REVENUESPLITID
end as REVENUESPLITID,
case when RECOGNITIONCREDIT.ID is not null
then null --Disable go to payment for internal sponsor payment
else SUMMEDREVENUE_CTE.REVENUEID
end REVENUEID,
SUMMEDREVENUE_CTE.PARENTID,
case
when REVENUE_EXT.GIVENANONYMOUSLY = 1 then 'catalog:Blackbaud.AppFx.Fundraising.Catalog.dll,Blackbaud.AppFx.Fundraising.Catalog.gift_anonymous_16.png'
else ''
end IMAGEKEY,
case
when REVENUERECOGNITION.REVENUESPLITID is null and RECOGNITIONCREDIT.ID is null then 'F989EA79-EA4D-4FC7-B3F8-6EA606125CCA'
else '5DBB948F-BE5E-4E85-B652-CA3AEDE26A4F'
end VIEWFORMID,
case when REVENUERECOGNITION.ID is null then case when RECOGNITIONCREDIT.ID is null then cast(FINANCIALTRANSACTION.DATE as datetime) else RECOGNITIONCREDIT.EFFECTIVEDATE end else REVENUERECOGNITION.EFFECTIVEDATE end EFFECTIVEDATE,
SUMMEDREVENUE_CTE.AMOUNT,
SUMMEDREVENUE_CTE.GROSSAMOUNT,
RECOGNITIONCREDITTYPES as RECOGNITIONCREDITTYPE,
case
when RECOGNITIONCREDIT.ID is not null
then
'Donor challenge claim - Internal sponsor'
else FINANCIALTRANSACTION.TYPE
end as TRANSACTIONTYPE,
SUMMEDREVENUE_CTE.APPLICATION,
SUMMEDREVENUE_CTE.REVENUETYPE,
SUMMEDREVENUE_CTE.DESIGNATIONS,
SUMMEDREVENUE_CTE.REVENUECATEGORIES,
SUMMEDREVENUE_CTE.CAMPAIGNS,
cast(FINANCIALTRANSACTION.DATE as datetime) DATE,
SUMMEDREVENUE_CTE.REVENUESPLITAMOUNT,
case
when @ISUK = 0 then null
else
case @CURRENCYCODE
when 0 then
case
when SUMMEDREVENUE_CTE.RECOGNITIONID is null
then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEGROSSAMOUNT_2(FINANCIALTRANSACTION.ID, 1,0)
else dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATESPLITGROSSAMOUNT_2(REVENUERECOGNITION.REVENUESPLITID, 1,0)
end
when 1 then
case
when SUMMEDREVENUE_CTE.RECOGNITIONID is null
then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEGROSSAMOUNT_2(FINANCIALTRANSACTION.ID, 1,2)
else dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATESPLITGROSSAMOUNT_2(REVENUERECOGNITION.REVENUESPLITID, 1,2)
end
when 3 then
case @CURRENCYID
when case when FINANCIALTRANSACTION.DELETEDON is null then FINANCIALTRANSACTION.TRANSACTIONCURRENCYID else null end then
case
when SUMMEDREVENUE_CTE.RECOGNITIONID is null
then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEGROSSAMOUNT_2(FINANCIALTRANSACTION.ID, 1,1)
else dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATESPLITGROSSAMOUNT_2(REVENUERECOGNITION.REVENUESPLITID,1,1)
end
else
case
when SUMMEDREVENUE_CTE.RECOGNITIONID is null
then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEGROSSAMOUNTINCURRENCY(FINANCIALTRANSACTION.ID, 1,@CURRENCYID)
else dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATESPLITGROSSAMOUNTINCURRENCY(REVENUERECOGNITION.REVENUESPLITID,1,@CURRENCYID)
end
end
end
end REVENUESPLITGROSSAMOUNT,
case
when RECOGNITIONCREDIT.ID is not null
then
(select DONORCHALLENGESPONSORCODE.DESCRIPTION
from dbo.DONORCHALLENGEENCUMBERED
inner join dbo.DONORCHALLENGE on DONORCHALLENGEENCUMBERED.DONORCHALLENGEID = DONORCHALLENGE.ID
inner join dbo.DONORCHALLENGESPONSORCODE on DONORCHALLENGE.INTERNALSPONSORCODEID = DONORCHALLENGESPONSORCODE.ID
where DONORCHALLENGEENCUMBERED.ID = RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID)
else NF.NAME
end,
SUMMEDREVENUE_CTE.SITES,
case @CURRENCYCODE
when 0 then case when FINANCIALTRANSACTION.DELETEDON is null then
case when @MULTICURRENCYENABLED = 1 then isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, (select V.BASECURRENCYID from dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V where V.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID))
else FINANCIALTRANSACTION.TRANSACTIONCURRENCYID end
else null end
when 1 then @ORGANIZATIONCURRENCYID
else @CURRENCYID
end as DISPLAYCURRENCY
from #TMP_DATA_REVENUEHISTORY_SUMMEDREVENUE_CTE SUMMEDREVENUE_CTE
inner join dbo.FINANCIALTRANSACTION on SUMMEDREVENUE_CTE.REVENUEID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
left join dbo.REVENUERECOGNITION on SUMMEDREVENUE_CTE.RECOGNITIONID = REVENUERECOGNITION.ID
left join dbo.RECOGNITIONCREDIT on SUMMEDREVENUE_CTE.RECOGNITIONID = RECOGNITIONCREDIT.ID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FINANCIALTRANSACTION.CONSTITUENTID) NF
order by EFFECTIVEDATE desc, NF.NAME, AMOUNT
end