USP_REPORT_SPONSORSHIPMAILINGSCOMMUNICATIONS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONSEGMENTID | uniqueidentifier | IN | |
@REPORTUSERID | nvarchar(128) | IN | |
@ALTREPORTUSERID | nvarchar(128) | IN |
Definition
Copy
create procedure dbo.[USP_REPORT_SPONSORSHIPMAILINGSCOMMUNICATIONS]
(
@SEGMENTATIONSEGMENTID uniqueidentifier,
@REPORTUSERID nvarchar(128) = null,
@ALTREPORTUSERID nvarchar(128) = null
)
with execute as owner
as
set nocount on;
declare @ISTESTSEGMENT bit;
declare @SEGMENTATIONID uniqueidentifier;
declare @TEMPLATENAME nvarchar(255);
declare @SEGMENTNAME nvarchar(255);
declare @PACKAGENAME nvarchar(255);
declare @CHANNEL nvarchar(255);
declare @DATATABLE nvarchar(128);
declare @SQL nvarchar(max);
declare @ISBBEC bit;
declare @DONORIDSQL nvarchar(128);
begin try
set @ISTESTSEGMENT = (case when exists(select * from dbo.[MKTSEGMENTATIONTESTSEGMENT] where [ID] = @SEGMENTATIONSEGMENTID) then 1 else 0 end);
if @ISTESTSEGMENT = 1
--Grab package and other info from the mailing "test segment"...
select
@SEGMENTATIONID = [MKTSEGMENTATION].[ID],
@TEMPLATENAME = (case when charindex('(', reverse([MKTSEGMENTATION].[NAME])) > 0 then substring([MKTSEGMENTATION].[NAME], 1, len([MKTSEGMENTATION].[NAME]) - charindex('(', reverse([MKTSEGMENTATION].[NAME])) - 1) else [MKTSEGMENTATION].[NAME] end),
@SEGMENTNAME = dbo.[UFN_MKTSEGMENTATIONTESTSEGMENT_GETNAME]([MKTSEGMENTATIONTESTSEGMENT].[ID]),
@PACKAGENAME = [MKTPACKAGE].[NAME],
@CHANNEL = [MKTPACKAGE].[CHANNEL],
@ISBBEC = dbo.[UFN_MKTRECORDSOURCE_VALIDFORBBEC]([MKTSEGMENT].[QUERYVIEWCATALOGID])
from dbo.[MKTSEGMENTATIONTESTSEGMENT]
inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]
where [MKTSEGMENTATIONTESTSEGMENT].[ID] = @SEGMENTATIONSEGMENTID;
else
begin
--Grab package and other info from the mailing "segment"...
select
@SEGMENTATIONID = [MKTSEGMENTATION].[ID],
@TEMPLATENAME = (case when charindex('(', reverse([MKTSEGMENTATION].[NAME])) > 0 then substring([MKTSEGMENTATION].[NAME], 1, len([MKTSEGMENTATION].[NAME]) - charindex('(', reverse([MKTSEGMENTATION].[NAME])) - 1) else [MKTSEGMENTATION].[NAME] end),
@SEGMENTNAME = (case when [MKTSEGMENTATIONSEGMENT].[EXCLUDE] = 1 then 'Exclude: ' else '' end) + [MKTSEGMENT].[NAME],
@PACKAGENAME = isnull([MKTPACKAGE].[NAME], ''),
@CHANNEL = isnull([MKTPACKAGE].[CHANNEL], ''),
@ISBBEC = dbo.[UFN_MKTRECORDSOURCE_VALIDFORBBEC]([MKTSEGMENT].[QUERYVIEWCATALOGID])
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
left join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONSEGMENT].[PACKAGEID]
where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTATIONSEGMENTID;
--If the ID passed in is not a mailing segment or mailing test segment, then assume it is the base segment ID...
if @SEGMENTATIONID is null
select
@SEGMENTATIONID = null,
@TEMPLATENAME = '',
@SEGMENTNAME = [NAME],
@PACKAGENAME = '',
@CHANNEL = '',
@ISBBEC = dbo.[UFN_MKTRECORDSOURCE_VALIDFORBBEC]([QUERYVIEWCATALOGID])
from dbo.[MKTSEGMENT]
where [ID] = @SEGMENTATIONSEGMENTID;
end
if @SEGMENTATIONID is not null
begin
set @DATATABLE = dbo.[UFN_MKTSEGMENTATIONACTIVATE_MAKETABLENAME](@SEGMENTATIONID);
--Make sure table exists...
if not exists(select * from INFORMATION_SCHEMA.TABLES where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @DATATABLE)
exec dbo.[USP_MKTSEGMENTATIONACTIVATE_CREATEDATATABLE] @SEGMENTATIONID;
end
set @SQL = 'declare @CURRENTAPPUSERID uniqueidentifier = dbo.[UFN_APPUSER_GETREPORTAPPUSERID](@REPORTUSERID, @ALTREPORTUSERID);' + char(13) +
'declare @ISADMIN bit = dbo.[UFN_APPUSER_ISSYSADMIN](@CURRENTAPPUSERID);' + char(13) +
'declare @APPUSER_IN_NONRACROLE bit = dbo.[UFN_SECURITY_APPUSER_IN_NONRACROLE](@CURRENTAPPUSERID);' + char(13) +
'declare @APPUSER_IN_NOSECGROUPROLE bit = dbo.[UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE](@CURRENTAPPUSERID);' + char(13) +
'declare @APPUSER_IN_NONSITEROLE bit = dbo.[UFN_SECURITY_APPUSER_IN_NONSITEROLE](@CURRENTAPPUSERID);' + char(13) +
'declare @APPUSER_IN_NOSITEROLE bit = dbo.[UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE](@CURRENTAPPUSERID);' + char(13) +
char(13) +
'select distinct' + char(13) +
' (case when [CONSTITUENT].[ID] is null then ''<Deleted>'' else dbo.[UFN_CONSTITUENT_BUILDNAME]([CONSTITUENT].[ID]) end) as [SPONSOR],' + char(13) +
' (select dbo.[UFN_BUILDFULLADDRESS]([ADDRESS].[ID], [ADDRESS].[ADDRESSBLOCK], [ADDRESS].[CITY], [ADDRESS].[STATEID], [ADDRESS].[POSTCODE], [ADDRESS].[COUNTRYID]) from dbo.[ADDRESS] where [ADDRESS].[CONSTITUENTID] = [CONSTITUENT].[ID] and [ADDRESS].[ISPRIMARY] = 1) as [SPONSORADDRESS],' + char(13) +
' (case when dbo.[UFN_SPONSORSHIPAFFILIATE_GETNAME]([CONSTITUENT].[ID]) is not null then' + char(13) +
' (case when [CONSTITUENT].[ID] is null then ''<Deleted>'' else dbo.[UFN_CONSTITUENT_BUILDNAME]([CONSTITUENT].[ID]) end)' + char(13) +
' else' + char(13) +
' dbo.[UFN_CONSTITUENT_BUILDNAME]([FINANCIALTRANSACTION].[CONSTITUENTID])' + char(13) +
' end) as [DONOR], ' + char(13) +
' (case when dbo.[UFN_SPONSORSHIPAFFILIATE_GETNAME]([CONSTITUENT].[ID]) is not null then' + char(13) +
' (select dbo.[UFN_BUILDFULLADDRESS]([ADDRESS].[ID], [ADDRESS].[ADDRESSBLOCK], [ADDRESS].[CITY], [ADDRESS].[STATEID], [ADDRESS].[POSTCODE], [ADDRESS].[COUNTRYID]) from dbo.[ADDRESS] where [ADDRESS].[CONSTITUENTID] = [CONSTITUENT].[ID] and [ADDRESS].[ISPRIMARY] = 1)' + char(13) +
' else' + char(13) +
' (select dbo.[UFN_BUILDFULLADDRESS]([ADDRESS].[ID], [ADDRESS].[ADDRESSBLOCK], [ADDRESS].[CITY], [ADDRESS].[STATEID], [ADDRESS].[POSTCODE], [ADDRESS].[COUNTRYID]) from dbo.[ADDRESS] where [ADDRESS].[CONSTITUENTID] = [FINANCIALTRANSACTION].[CONSTITUENTID] and [ADDRESS].[ISPRIMARY] = 1)' + char(13) +
' end) as [DONORADDRESS],' + char(13) +
' dbo.[UFN_SPONSORSHIPOPPORTUNITY_TRANSLATIONFUNCTION]([SPONSORSHIPOPPORTUNITY].[ID]) as [SPONSORSHIPOPPORTUNITY],' + char(13) +
' [SPONSORSHIP].[STARTDATE] as [DATE],' + char(13) +
' [SPONSORSHIP].[STATUS],' + char(13) +
' [SPONSORSHIPPROGRAM].[NAME] as [PROGRAM],' + char(13) +
' [LASTTRANSACTION].[ACTION] as [TRANSACTIONTYPE],' + char(13) +
' [SPONSORSHIPREASON].[REASON] as [REASON],' + char(13) +
' @TEMPLATENAME as [TEMPLATENAME],' + char(13) +
' @SEGMENTNAME as [SEGMENTNAME],' + char(13) +
' @PACKAGENAME as [PACKAGENAME],' + char(13) +
' @CHANNEL as [CHANNEL],' + char(13) +
' (case when [CONSTITUENT].[ID] is not null' + char(13) +
' and' + char(13) +
' (@ISADMIN = 1' + char(13) +
' or' + char(13) +
' (' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONRACROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSECGROUPROLE) = 1' + char(13) +
' )' + char(13) +
' and' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONSITEROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSITEROLE) = 1' + char(13) +
' )' + char(13) +
' )' + char(13) +
' )' + char(13) +
' then' + char(13) +
' N''http://www.blackbaud.com/SPONSORCONSTITUENTID?SPONSORCONSTITUENTID='' + convert(nvarchar(36), [CONSTITUENT].[ID])' + char(13) +
' else' + char(13) +
' ''''' + char(13) +
' end) as [SPONSORCONSTITUENTID],' + char(13) +
' (case when (@ISADMIN = 1' + char(13) +
' or' + char(13) +
' (' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONRACROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSECGROUPROLE) = 1' + char(13) +
' )' + char(13) +
' and' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONSITEROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSITEROLE) = 1' + char(13) +
' )' + char(13) +
' )' + char(13) +
' )' + char(13) +
' then' + char(13) +
' N''http://www.blackbaud.com/DONORCONSTITUENTID?DONORCONSTITUENTID='' + convert(nvarchar(36), [FINANCIALTRANSACTION].[CONSTITUENTID])' + char(13) +
' else' + char(13) +
' ''''' + char(13) +
' end) as [DONORCONSTITUENTID],' + char(13) +
' (case when (@ISADMIN = 1' + char(13) +
' or' + char(13) +
' (' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONRACROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSECGROUPROLE) = 1' + char(13) +
' )' + char(13) +
' and' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONSITEROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSITEROLE) = 1' + char(13) +
' )' + char(13) +
' )' + char(13) +
' )' + char(13) +
' then' + char(13) +
' N''http://www.blackbaud.com/SPONSORSHIPOPPORTUNITYID?SPONSORSHIPOPPORTUNITYID='' + convert(nvarchar(36), [SPONSORSHIPOPPORTUNITY].[ID])' + char(13) +
' else' + char(13) +
' ''''' + char(13) +
' end) as [SPONSORSHIPOPPORTUNITYID],' + char(13) +
' (case when (@ISADMIN = 1' + char(13) +
' or' + char(13) +
' (' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONRACROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSECGROUPROLE) = 1' + char(13) +
' )' + char(13) +
' and' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONSITEROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSITEROLE) = 1' + char(13) +
' )' + char(13) +
' )' + char(13) +
' )' + char(13) +
' then' + char(13) +
' N''http://www.blackbaud.com/SPONSORSHIPPROGRAMID?SPONSORSHIPPROGRAMID='' + convert(nvarchar(36), [SPONSORSHIPPROGRAM].[ID])' + char(13) +
' else' + char(13) +
' ''''' + char(13) +
' end) as [SPONSORSHIPPROGRAMID],' + char(13) +
' (case when (@ISADMIN = 1' + char(13) +
' or' + char(13) +
' (' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONRACROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSECGROUPROLE) = 1' + char(13) +
' )' + char(13) +
' and' + char(13) +
' (' + char(13) +
' @APPUSER_IN_NONSITEROLE = 1' + char(13) +
' or' + char(13) +
' dbo.[UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE](@CURRENTAPPUSERID, [CONSTITUENT].[ID], @APPUSER_IN_NOSITEROLE) = 1' + char(13) +
' )' + char(13) +
' )' + char(13) +
' )' + char(13) +
' then' + char(13) +
' N''http://www.blackbaud.com/SPONSORSHIPID?SPONSORSHIPID='' + convert(nvarchar(36), [SPONSORSHIP].[ID])' + char(13) +
' else' + char(13) +
' ''''' + char(13) +
' end) as [SPONSORSHIPID]' + char(13);
if @SEGMENTATIONID is null
begin
--Join to the base segment view because this report is running outside of a mailing...
set @SQL += 'from dbo.[' + dbo.[UFN_MKTSEGMENT_MAKEVIEWNAME](@SEGMENTATIONSEGMENTID) + '] as [DONORS]' + char(13) +
'inner join dbo.[SPONSORSHIP] on [SPONSORSHIP].[ID] = [DONORS].[ID]' + char(13) +
'inner join dbo.[CONSTITUENT] on [CONSTITUENT].[ID] = [SPONSORSHIP].[CONSTITUENTID]' + char(13);
end
else
begin
--Join to the mailing data table...
set @SQL += 'from dbo.[' + @DATATABLE + '] as [DONORS]' + char(13);
--For BBEC only, check to see if we have any merged constituents in this mailing. If so, then we want to show the original constituent.
if @ISBBEC = 1 and exists(select * from dbo.[MKTSEGMENTATIONMERGEDORIGINALCONSTITUENTS] where [SEGMENTATIONID] = @SEGMENTATIONID)
begin
set @SQL += 'left join dbo.[MKTSEGMENTATIONMERGEDORIGINALCONSTITUENTS] on [MKTSEGMENTATIONMERGEDORIGINALCONSTITUENTS].[FINDERNUMBER] = [DONORS].[FINDERNUMBER]' + char(13);
set @DONORIDSQL = 'isnull([MKTSEGMENTATIONMERGEDORIGINALCONSTITUENTS].[ORIGINALCONSTITUENTID], [DONORS].[DONORID])';
end
else
set @DONORIDSQL = '[DONORS].[DONORID]';
set @SQL += 'inner join dbo.[SPONSORSHIP] on [SPONSORSHIP].[ID] = [DONORS].[SPONSORSHIPID]' + char(13) +
'left join dbo.[CONSTITUENT] on [CONSTITUENT].[ID] = ' + @DONORIDSQL + char(13);
end
set @SQL += 'inner join dbo.[SPONSORSHIPPROGRAM] on [SPONSORSHIP].[SPONSORSHIPPROGRAMID] = [SPONSORSHIPPROGRAM].[ID]' + char(13) +
'inner join dbo.[SPONSORSHIPCOMMITMENT] on [SPONSORSHIPCOMMITMENT].[ID] = [SPONSORSHIP].[SPONSORSHIPCOMMITMENTID]' + char(13) +
'inner join dbo.[SPONSORSHIPOPPORTUNITY] on [SPONSORSHIPOPPORTUNITY].[ID] = [SPONSORSHIP].[SPONSORSHIPOPPORTUNITYID]' + char(13) +
'inner join dbo.[SPONSORSHIPTRANSACTION] as [LASTTRANSACTION] on [LASTTRANSACTION].[SPONSORSHIPCOMMITMENTID] = [SPONSORSHIP].[SPONSORSHIPCOMMITMENTID] and [LASTTRANSACTION].[TRANSACTIONSEQUENCE] = (select max([TRANSACTIONSEQUENCE]) from dbo.[SPONSORSHIPTRANSACTION] as [MAXSEQUENCE] where [MAXSEQUENCE].[SPONSORSHIPCOMMITMENTID] = [SPONSORSHIP].[SPONSORSHIPCOMMITMENTID] and [SPONSORSHIP].[ID] in ([MAXSEQUENCE].[CONTEXTSPONSORSHIPID], [MAXSEQUENCE].[TARGETSPONSORSHIPID], [MAXSEQUENCE].[DECLINEDSPONSORSHIPID]))' + char(13) +
'left join dbo.[FINANCIALTRANSACTIONLINEITEM] on [FINANCIALTRANSACTIONLINEITEM].[ID] = [SPONSORSHIP].[REVENUESPLITID]' + char(13) +
'left join dbo.[FINANCIALTRANSACTION] on [FINANCIALTRANSACTION].[ID] = [FINANCIALTRANSACTIONLINEITEM].[FINANCIALTRANSACTIONID] and [FINANCIALTRANSACTION].[DELETEDON] is null' + char(13) +
'left join dbo.[SPONSORSHIPREASON] on [SPONSORSHIPREASON].[ID] = [LASTTRANSACTION].[SPONSORSHIPREASONID]' + char(13);
if @SEGMENTATIONID is not null
begin
if @ISTESTSEGMENT = 0
set @SQL += 'where [DONORS].[SEGMENTID] = @SEGMENTATIONSEGMENTID' + char(13) +
'and [DONORS].[TESTSEGMENTID] is null' + char(13);
else
set @SQL += 'where [DONORS].[TESTSEGMENTID] = @SEGMENTATIONSEGMENTID' + char(13);
end
exec sp_executesql @SQL, N'@TEMPLATENAME nvarchar(255), @SEGMENTNAME nvarchar(255), @PACKAGENAME nvarchar(255), @CHANNEL nvarchar(255), @ALTREPORTUSERID nvarchar(128), @REPORTUSERID nvarchar(128), @SEGMENTATIONSEGMENTID uniqueidentifier',
@TEMPLATENAME = @TEMPLATENAME,
@SEGMENTNAME = @SEGMENTNAME,
@PACKAGENAME = @PACKAGENAME,
@CHANNEL = @CHANNEL,
@REPORTUSERID = @REPORTUSERID,
@ALTREPORTUSERID = @ALTREPORTUSERID,
@SEGMENTATIONSEGMENTID = @SEGMENTATIONSEGMENTID;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;