USP_REPORT_CONSTITUENTRECOGNITIONCREDIT
Returns constituents that have recognition credits.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATETYPE | tinyint | IN | |
@DATERANGEDISPLAY | nvarchar(100) | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@CONSTITUENTQUERY | 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_CONSTITUENTRECOGNITIONCREDIT
(
@DATETYPE tinyint = null,
@DATERANGEDISPLAY nvarchar(100) = '',
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@CONSTITUENTQUERY uniqueidentifier = null,
@CONSTITUENTID uniqueidentifier = null,
@REVENUERECOGNITIONTYPECODEID uniqueidentifier = null,
@REPORTUSERID nvarchar(128) = null,
@CAMPAIGNID uniqueidentifier = null,
@CURRENCYCODE tinyint = null, -- (null, 1) = Organization, 0 = Base
@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 @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
declare @DBOBJECTNAME nvarchar(128);
declare @DBOBJECTTYPE smallint;
declare @SITESGRANTED table(
SITEID uniqueidentifier primary key
)
insert into @SITESGRANTED
select SITEID
from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'8F08BE6D-D8D0-45e4-A629-25DDC268DC73', 21)
where SITEID is not null
create table #CONSTITUENTSGRANTED(
ID uniqueidentifier,
NAME nvarchar(700) collate DATABASE_DEFAULT,
KEYNAME nvarchar(100) collate DATABASE_DEFAULT,
FIRSTNAME nvarchar(54) collate DATABASE_DEFAULT,
ISORGANIZATION bit,
ISGROUP bit,
ISCONSTITUENT bit
)
insert into #CONSTITUENTSGRANTED
select
CONSTITUENT.ID,
DISPLAYNAME.NAME,
CONSTITUENT.KEYNAME,
CONSTITUENT.FIRSTNAME,
CONSTITUENT.ISORGANIZATION,
CONSTITUENT.ISGROUP,
CONSTITUENT.ISCONSTITUENT
from dbo.CONSTITUENT with (nolock)
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) DISPLAYNAME
where @ISADMIN = 1
or @APPUSER_IN_NONRACROLE = 1
or dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1
create index IX_CONSTITUENTSGRANTED_ID on #CONSTITUENTSGRANTED (ID) include (NAME)
create table #CONSTITUENTFILTER(
ID uniqueidentifier,
NAME nvarchar(700) collate DATABASE_DEFAULT,
KEYNAME nvarchar(100) collate DATABASE_DEFAULT,
FIRSTNAME nvarchar(54) collate DATABASE_DEFAULT,
ISORGANIZATION bit,
ISGROUP bit
)
declare @SQLTOEXEC nvarchar(max)='
insert into #CONSTITUENTFILTER
select
CONSTITUENTSGRANTED.ID,
CONSTITUENTSGRANTED.NAME,
CONSTITUENTSGRANTED.KEYNAME,
CONSTITUENTSGRANTED.FIRSTNAME,
CONSTITUENTSGRANTED.ISORGANIZATION,
CONSTITUENTSGRANTED.ISGROUP
from #CONSTITUENTSGRANTED CONSTITUENTSGRANTED
' + nchar(13);
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 @DBOBJECTNAME = DBOBJECTNAME, @DBOBJECTTYPE = OBJECTTYPE from dbo.IDSETREGISTER where ID = @CONSTITUENTQUERY;
if @DBOBJECTTYPE = 1 set @DBOBJECTNAME = @DBOBJECTNAME + '()';
else if @DBOBJECTTYPE = 2 set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @CONSTITUENTQUERY) + ''')';
set @SQLTOEXEC = @SQLTOEXEC + 'inner join dbo.' + @DBOBJECTNAME + ' as SELECTION on CONSTITUENTSGRANTED.ID = SELECTION.[ID]' + nchar(13);
end
set @SQLTOEXEC = @SQLTOEXEC + 'where CONSTITUENTSGRANTED.ISCONSTITUENT = 1' + nchar(13);
if @CONSTITUENTID is not null
begin
set @SQLTOEXEC = @SQLTOEXEC + 'and CONSTITUENTSGRANTED.ID = @CONSTITUENTID' + nchar(13);
end
exec sp_executesql @SQLTOEXEC,
N'@CONSTITUENTID uniqueidentifier',
@CONSTITUENTID=@CONSTITUENTID;
declare @CAMPAIGNHIERARCHYPATH hierarchyid
select @CAMPAIGNHIERARCHYPATH=HIERARCHYPATH
from CAMPAIGN
where ID=@CAMPAIGNID;
with REVENUERECOGNITION_CTE as
(
select
RECOGNITIONS.ID,
REVENUE.CONSTITUENTID as REVENUECONSTITUENTID,
REVENUERECOGNITIONTYPECODE.DESCRIPTION as RECOGNITIONTYPE,
RECOGNITIONS.EFFECTIVEDATE,
case @CURRENCYCODE when 0 then RECOGNITIONS.AMOUNT else RECOGNITIONS.ORGANIZATIONAMOUNT end as AMOUNT,
case @CURRENCYCODE when 0 then RECOGNITIONS.BASECURRENCYID else @ORGANIZATIONCURRENCYID end as CURRENCYID,
RECOGNITIONS.CONSTITUENTID as RECOGNIZEDCONSTITUENTID
from dbo.UFN_RECOGNITIONCREDIT_GETRECOGNITIONS(1, @REVENUERECOGNITIONTYPECODEID, null) RECOGNITIONS
inner join dbo.REVENUESPLIT on RECOGNITIONS.REVENUESPLITID = REVENUESPLIT.ID
inner join dbo.REVENUE with (nolock) on REVENUESPLIT.REVENUEID = REVENUE.ID
left join dbo.REVENUERECOGNITIONTYPECODE on RECOGNITIONS.REVENUERECOGNITIONTYPECODEID = REVENUERECOGNITIONTYPECODE.ID
where (@STARTDATE is null or RECOGNITIONS.EFFECTIVEDATE >= @STARTDATE)
and (@ENDDATE is null or RECOGNITIONS.EFFECTIVEDATE <= @ENDDATE)
and (@REVENUERECOGNITIONTYPECODEID is null or RECOGNITIONS.REVENUERECOGNITIONTYPECODEID = @REVENUERECOGNITIONTYPECODEID)
-- Check site security
and(@ISADMIN = 1
or exists(
select 1
from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID) REVSITES
left join @SITESGRANTED SITESGRANTED on REVSITES.SITEID = SITESGRANTED.SITEID
where SITESGRANTED.SITEID is not null or REVSITES.SITEID is null
)
or
(exists (
select 1
from @SITESGRANTED
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 REVENUESPLIT.ID in (
select REVENUESPLITCAMPAIGN.REVENUESPLITID
from dbo.REVENUESPLITCAMPAIGN
inner join dbo.CAMPAIGN on CAMPAIGN.ID=REVENUESPLITCAMPAIGN.CAMPAIGNID
where CAMPAIGN.HIERARCHYPATH.IsDescendantOf(@CAMPAIGNHIERARCHYPATH)=1
)
)
)
select
'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36), CONSTITUENT.ID) as CONSTITUENTID,
CONSTITUENT.NAME,
CONSTITUENT.KEYNAME,
CONSTITUENT.FIRSTNAME,
case
when CONSTITUENT.ISORGANIZATION = 1 then 'Organization'
when CONSTITUENT.ISGROUP = 1 and GROUPDATA.GROUPTYPECODE = 0 then 'Household'
when CONSTITUENT.ISGROUP = 1 and GROUPDATA.GROUPTYPECODE = 1 then 'Group'
else 'Individual'
end CONSTITUENTTYPE,
coalesce(ADDRESS.FULLADDRESS,'') ADDRESS,
REVENUERECOGNITION_CTE.RECOGNITIONTYPE,
REVENUERECOGNITION_CTE.EFFECTIVEDATE,
REVENUERECOGNITION_CTE.AMOUNT,
DONOR.NAME as DONORNAME,
CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
CURRENCYPROPERTIES.CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
CURRENCYPROPERTIES.DECIMALDIGITS
from #CONSTITUENTFILTER CONSTITUENT
inner join REVENUERECOGNITION_CTE on REVENUERECOGNITION_CTE.RECOGNIZEDCONSTITUENTID = CONSTITUENT.ID
inner join #CONSTITUENTSGRANTED DONOR on DONOR.ID = REVENUERECOGNITION_CTE.REVENUECONSTITUENTID
outer apply(
select dbo.UFN_BUILDFULLADDRESS(ADDRESS.ID, ADDRESS.ADDRESSBLOCK, ADDRESS.CITY, ADDRESS.STATEID, ADDRESS.POSTCODE, ADDRESS.COUNTRYID) [FULLADDRESS]
from dbo.ADDRESS
where ADDRESS.CONSTITUENTID = CONSTITUENT.ID and ADDRESS.ISPRIMARY = 1
) ADDRESS
left join dbo.GROUPDATA on GROUPDATA.ID = CONSTITUENT.ID
cross apply dbo.UFN_CURRENCY_GETPROPERTIES(REVENUERECOGNITION_CTE.CURRENCYID) CURRENCYPROPERTIES
order by
CONSTITUENT.KEYNAME,
CONSTITUENT.FIRSTNAME,
REVENUERECOGNITION_CTE.RECOGNITIONTYPE,
REVENUERECOGNITION_CTE.EFFECTIVEDATE,
REVENUERECOGNITION_CTE.AMOUNT
drop table #CONSTITUENTSGRANTED
drop table #CONSTITUENTFILTER