USP_REPORT_RECOGNITIONCREDIT
Returns recognition credit and revenue information.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATETYPE | tinyint | IN | |
@DATERANGEDISPLAY | nvarchar(100) | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@REVENUETRANSACTIONQUERY | uniqueidentifier | IN | |
@CONSTITUENTQUERY | uniqueidentifier | IN | |
@APPEALID | uniqueidentifier | IN | |
@DESIGNATIONID | uniqueidentifier | IN | |
@REVENUETRANSACTIONID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@REVENUERECOGNITIONTYPECODEID | uniqueidentifier | IN | |
@REPORTUSERID | nvarchar(128) | IN | |
@CAMPAIGNID | uniqueidentifier | IN | |
@CURRENCYCODE | tinyint | IN | |
@ALTREPORTUSERID | nvarchar(128) | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_RECOGNITIONCREDIT
(
@DATETYPE tinyint = null,
@DATERANGEDISPLAY nvarchar(100) = '',
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@REVENUETRANSACTIONQUERY uniqueidentifier = null,
@CONSTITUENTQUERY uniqueidentifier = null,
@APPEALID uniqueidentifier = null,
@DESIGNATIONID uniqueidentifier = null,
@REVENUETRANSACTIONID uniqueidentifier = null,
@CONSTITUENTID uniqueidentifier = null,
@REVENUERECOGNITIONTYPECODEID uniqueidentifier = null,
@REPORTUSERID nvarchar(128) = null,
@CAMPAIGNID uniqueidentifier = null,
@CURRENCYCODE tinyint = null,
@ALTREPORTUSERID nvarchar(128) = null
)
with execute as owner
as
set nocount on;
declare @CURRENTAPPUSERID uniqueidentifier;
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
declare @SQLTOEXEC nvarchar(max);
declare @REVENUEDBOBJECTNAME nvarchar(128);
declare @REVENUEDBOBJECTTYPE smallint;
declare @CONSTITUENTDBOBJECTNAME nvarchar(128);
declare @CONSTITUENTDBOBJECTTYPE smallint;
if @REVENUETRANSACTIONQUERY is not null begin
if not exists(select ID from dbo.IDSETREGISTER where ID = @REVENUETRANSACTIONQUERY) raiserror('ID set does not exist in the database.', 15, 1);
select @REVENUEDBOBJECTNAME = DBOBJECTNAME, @REVENUEDBOBJECTTYPE = OBJECTTYPE from dbo.IDSETREGISTER where ID = @REVENUETRANSACTIONQUERY;
if @REVENUEDBOBJECTTYPE = 1 set @REVENUEDBOBJECTNAME = @REVENUEDBOBJECTNAME + '()';
else if @REVENUEDBOBJECTTYPE = 2 set @REVENUEDBOBJECTNAME = @REVENUEDBOBJECTNAME + '(''' + convert(nvarchar(36), @REVENUETRANSACTIONQUERY) + ''')';
end
if @CONSTITUENTQUERY is not null begin
if not exists(select ID from dbo.IDSETREGISTER where ID = @CONSTITUENTQUERY) raiserror('ID set does not exist in the database.', 15, 1);
select @CONSTITUENTDBOBJECTNAME = DBOBJECTNAME, @CONSTITUENTDBOBJECTTYPE = OBJECTTYPE from dbo.IDSETREGISTER where ID = @CONSTITUENTQUERY;
if @CONSTITUENTDBOBJECTTYPE = 1 set @CONSTITUENTDBOBJECTNAME = @CONSTITUENTDBOBJECTNAME + '()';
else if @CONSTITUENTDBOBJECTTYPE = 2 set @CONSTITUENTDBOBJECTNAME = @CONSTITUENTDBOBJECTNAME + '(''' + convert(nvarchar(36), @CONSTITUENTQUERY) + ''')';
end
set @SQLTOEXEC =
N'
declare @CAMPAIGNHIERARCHYPATH hierarchyid
select @CAMPAIGNHIERARCHYPATH=HIERARCHYPATH
from CAMPAIGN
where ID=@CAMPAIGNID;
WITH RECOGNITIONS
AS
(
select
RR.ID,
RR.REVENUESPLITID,
RR.EFFECTIVEDATE,
RR.AMOUNT,
RR.ORGANIZATIONAMOUNT,
RR.BASECURRENCYID,
RR.REVENUERECOGNITIONTYPECODEID,
RR.CONSTITUENTID,
REVENUESPLIT_EXT.[DESIGNATIONID],
-1 as RECOGNITIONCREDITTYPECODE,
FINANCIALTRANSACTION.[TYPE] as [TRANSACTIONTYPE],
FINANCIALTRANSACTION.CONSTITUENTID as REVENUECONSTITUENTID,
isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as REVENUEBASECURRENCYID,
convert(datetime, FINANCIALTRANSACTION.DATE) as DATE,
REVENUE_EXT.APPEALID,
FINANCIALTRANSACTION.ID REVENUEID,
FINANCIALTRANSACTION.BASEAMOUNT as REVENUEAMOUNT,
FINANCIALTRANSACTION.ORGAMOUNT as REVENUEORGAMOUNT
from dbo.REVENUERECOGNITION as RR
inner join dbo.FINANCIALTRANSACTIONLINEITEM with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = RR.REVENUESPLITID
inner join dbo.REVENUESPLIT_EXT with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTION with (nolock) on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUE_EXT with (nolock) on REVENUE_EXT.ID = FINANCIALTRANSACTION.ID
left outer join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on FINANCIALTRANSACTION.ID = V.FINANCIALTRANSACTIONID
where (@REVENUERECOGNITIONTYPECODEID is null or RR.REVENUERECOGNITIONTYPECODEID = @REVENUERECOGNITIONTYPECODEID)
and FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0 -- Standard line items only
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is NULL -- Non deleted line items only
and FINANCIALTRANSACTION.DELETEDON is NULL
-- Gift, Pledge, Matching Gift Claim, Planned Gift, Order, Grant award, Pledge Payment, Recurring Gift Payment, Matching Gift Payment, Auction Donation, Auction Payment and Grant Award Payment
and (FINANCIALTRANSACTION.TYPECODE in (1,3,4,5,6,7,8) or (FINANCIALTRANSACTION.TYPECODE = 0 and (REVENUESPLIT_EXT.APPLICATIONCODE in (0,2,3,4,7,8,12,13) or (REVENUESPLIT_EXT.APPLICATIONCODE = 1 and REVENUESPLIT_EXT.TYPECODE in (0,1)))))
union all
select
RECOGNITIONCREDIT.ID,
DONORCHALLENGEENCUMBERED.REVENUESPLITID as REVENUESPLITID, --This should be null but we still store some info on the revenue, REVENUECAMPAIGN for example
RECOGNITIONCREDIT.EFFECTIVEDATE,
RECOGNITIONCREDIT.AMOUNT,
RECOGNITIONCREDIT.ORGANIZATIONAMOUNT,
RECOGNITIONCREDIT.BASECURRENCYID,
RECOGNITIONCREDIT.USERRECOGNITIONTYPECODEID as REVENUERECOGNITIONTYPECODEID,
RECOGNITIONCREDIT.CONSTITUENTID,
RECOGNITIONCREDIT.DESIGNATIONID,
RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE,
''Donor challenge claim - Internal sponsor'' as TRANSACTIONTYPE,
FINANCIALTRANSACTION.CONSTITUENTID as REVENUECONSTITUENTID,
isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as REVENUEBASECURRENCYID,
convert(datetime, FINANCIALTRANSACTION.DATE) as DATE,
REVENUE_EXT.APPEALID,
FINANCIALTRANSACTION.ID REVENUEID,
FINANCIALTRANSACTION.BASEAMOUNT as REVENUEAMOUNT,
FINANCIALTRANSACTION.ORGAMOUNT as REVENUEORGAMOUNT
from dbo.RECOGNITIONCREDIT
inner join dbo.DONORCHALLENGEENCUMBERED with (nolock) on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = DONORCHALLENGEENCUMBERED.REVENUESPLITID
inner join dbo.REVENUESPLIT_EXT with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTION with (nolock) on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUE_EXT with (nolock) on REVENUE_EXT.ID = FINANCIALTRANSACTION.ID
left outer join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on FINANCIALTRANSACTION.ID = V.FINANCIALTRANSACTIONID
where (@REVENUERECOGNITIONTYPECODEID is null or RECOGNITIONCREDIT.USERRECOGNITIONTYPECODEID = @REVENUERECOGNITIONTYPECODEID)
and RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1
and FINANCIALTRANSACTION.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
)
-- Added distinct so that recognitions tied to multiple campaigns
-- aren''t returned multiple times
select distinct
REC_NF.NAME as RECOGNITIONNAME,
REC.KEYNAME as RECOGNITIONKEYNAME,
REC.FIRSTNAME as RECOGNITIONFIRSTNAME,
RRTC.DESCRIPTION as RECOGNITIONTYPE,
RECOGNITIONS.EFFECTIVEDATE,
case @CURRENCYCODE when 0 then RECOGNITIONS.AMOUNT else RECOGNITIONS.ORGANIZATIONAMOUNT end as RECOGNITIONAMOUNT,
RC_NF.NAME as REVENUENAME,
RC.KEYNAME as REVENUEKEYNAME,
RC.FIRSTNAME as REVENUEFIRSTNAME,
RECOGNITIONS.DATE,
RECOGNITIONS.TRANSACTIONTYPE as REVENUETYPE,
case @CURRENCYCODE when 0 then RECOGNITIONS.REVENUEAMOUNT else RECOGNITIONS.REVENUEORGAMOUNT end as REVENUEAMOUNT,
RECOGNITIONS.ID,
RECOGNITIONCURRENCYPROPERTIES.ISO4217 [RECOGNITIONISOCURRENCYCODE],
RECOGNITIONCURRENCYPROPERTIES.CURRENCYSYMBOL [RECOGNITIONCURRENCYSYMBOL],
RECOGNITIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [RECOGNITIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
RECOGNITIONCURRENCYPROPERTIES.DECIMALDIGITS [RECOGNITIONDECIMALDIGITS],
REVENUECURRENCYPROPERTIES.ISO4217 [REVENUEISOCURRENCYCODE],
REVENUECURRENCYPROPERTIES.CURRENCYSYMBOL [REVENUECURRENCYSYMBOL],
REVENUECURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [REVENUECURRENCYSYMBOLDISPLAYSETTINGCODE],
REVENUECURRENCYPROPERTIES.DECIMALDIGITS [REVENUEDECIMALDIGITS]
from RECOGNITIONS
inner join dbo.CONSTITUENT REC with (nolock) on RECOGNITIONS.CONSTITUENTID = REC.ID
inner join dbo.CONSTITUENT RC with (nolock) on RECOGNITIONS.REVENUECONSTITUENTID = RC.ID
left join dbo.REVENUERECOGNITIONTYPECODE RRTC on RECOGNITIONS.REVENUERECOGNITIONTYPECODEID = RRTC.ID
left join REVENUESPLITCAMPAIGN on REVENUESPLITCAMPAIGN.REVENUESPLITID=RECOGNITIONS.REVENUESPLITID
left join CAMPAIGN on CAMPAIGN.ID=REVENUESPLITCAMPAIGN.CAMPAIGNID
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then RECOGNITIONS.BASECURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) RECOGNITIONCURRENCYPROPERTIES
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then RECOGNITIONS.REVENUEBASECURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) REVENUECURRENCYPROPERTIES
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REC.ID) REC_NF
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(RC.ID) RC_NF
' + nchar(13)
if @REVENUETRANSACTIONQUERY is not null
set @SQLTOEXEC = @SQLTOEXEC + N'inner join dbo.' + @REVENUEDBOBJECTNAME + ' as REVSELECTION on RECOGNITIONS.REVENUEID = REVSELECTION.[ID] and RECOGNITIONS.RECOGNITIONCREDITTYPECODE = -1' + nchar(13);
if @CONSTITUENTQUERY is not null
set @SQLTOEXEC = @SQLTOEXEC + N'inner join dbo.' + @CONSTITUENTDBOBJECTNAME + ' as CONSTITSELECTION on RECOGNITIONS.CONSTITUENTID = CONSTITSELECTION.[ID]' + nchar(13);
set @SQLTOEXEC = @SQLTOEXEC +
'where (@STARTDATE is null or RECOGNITIONS.EFFECTIVEDATE >= dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE))
and (@ENDDATE is null or RECOGNITIONS.EFFECTIVEDATE <= dbo.UFN_DATE_GETLATESTTIME(@ENDDATE))
and (@APPEALID is null or RECOGNITIONS.APPEALID = @APPEALID)
and (@DESIGNATIONID is null or RECOGNITIONS.DESIGNATIONID = @DESIGNATIONID)
and (@CONSTITUENTID is null or RECOGNITIONS.CONSTITUENTID = @CONSTITUENTID)
and (@REVENUERECOGNITIONTYPECODEID is null or RRTC.ID = @REVENUERECOGNITIONTYPECODEID)
and (@REVENUETRANSACTIONID is null or (RECOGNITIONS.REVENUEID = @REVENUETRANSACTIONID and RECOGNITIONS.RECOGNITIONCREDITTYPECODE = -1))
and (@ISADMIN = 1 or
@APPUSER_IN_NONRACROLE = 1 or
(dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, RECOGNITIONS.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1
and dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, RECOGNITIONS.REVENUECONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1))
-- Check site security
and (exists (
select HASPERMISSION
from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RECOGNITIONS.REVENUESPLITID) REVSITES
cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, ''2A6F0BA3-334C-4a45-9A9E-34764C94AB47'', REVSITES.SITEID)
) or
exists (
select 1
from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,''2A6F0BA3-334C-4a45-9A9E-34764C94AB47'', 21) -- 21 is the Feature Type value for report parameter
where
SITEID = dbo.UFN_SITEID_MAPFROM_DESIGNATIONID(RECOGNITIONS.DESIGNATIONID) or
(
SITEID is null and
dbo.UFN_SITEID_MAPFROM_DESIGNATIONID(RECOGNITIONS.DESIGNATIONID) is null
)
))
and (@CAMPAIGNID is null or CAMPAIGN.HIERARCHYPATH.IsDescendantOf(@CAMPAIGNHIERARCHYPATH)=1)
' + nchar(13)
set @SQLTOEXEC = @SQLTOEXEC +
N'order by REC.KEYNAME, REC.FIRSTNAME, RECOGNITIONS.EFFECTIVEDATE, RRTC.DESCRIPTION, RECOGNITIONAMOUNT, RC.KEYNAME, RC.FIRSTNAME, RECOGNITIONS.DATE, RECOGNITIONS.TRANSACTIONTYPE, REVENUEAMOUNT'
exec sp_executesql @SQLTOEXEC,
N'@STARTDATE datetime, @ENDDATE datetime, @APPEALID uniqueidentifier, @DESIGNATIONID uniqueidentifier, @REVENUETRANSACTIONID uniqueidentifier,
@REVENUERECOGNITIONTYPECODEID uniqueidentifier, @CONSTITUENTID uniqueidentifier, @ISADMIN bit, @APPUSER_IN_NONRACROLE bit, @APPUSER_IN_NOSECGROUPROLE bit, @CURRENTAPPUSERID uniqueidentifier, @CAMPAIGNID uniqueidentifier, @CURRENCYCODE tinyint',
@STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE, @APPEALID=@APPEALID, @DESIGNATIONID=@DESIGNATIONID, @REVENUETRANSACTIONID=@REVENUETRANSACTIONID,
@REVENUERECOGNITIONTYPECODEID=@REVENUERECOGNITIONTYPECODEID, @CONSTITUENTID=@CONSTITUENTID, @ISADMIN=@ISADMIN, @APPUSER_IN_NONRACROLE=@APPUSER_IN_NONRACROLE,
@APPUSER_IN_NOSECGROUPROLE=@APPUSER_IN_NOSECGROUPROLE, @CURRENTAPPUSERID=@CURRENTAPPUSERID, @CAMPAIGNID=@CAMPAIGNID, @CURRENCYCODE=@CURRENCYCODE;