USP_REVENUEBATCH_VALIDATEMARKETINGDATA
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@FINDERNUMBER | bigint | IN | |
@SOURCECODE | nvarchar(50) | IN | |
@MAILINGID | uniqueidentifier | IN | |
@APPEALID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@BATCHID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_REVENUEBATCH_VALIDATEMARKETINGDATA]
(
@FINDERNUMBER bigint = 0,
@SOURCECODE nvarchar(50) = '',
@MAILINGID uniqueidentifier = null,
@APPEALID uniqueidentifier = null,
@CONSTITUENTID uniqueidentifier = null,
@BATCHID uniqueidentifier = null
)
as
set nocount on;
if @FINDERNUMBER is null
set @FINDERNUMBER = 0;
if @SOURCECODE is null
set @SOURCECODE = '';
declare @MAILINGIDLOOKUP uniqueidentifier;
begin try
if @FINDERNUMBER <> 0
begin
/* Validate the finder number and dependent fields */
declare @FN_CONSTITUENTID uniqueidentifier;
declare @FN_APPEALID uniqueidentifier;
declare @FN_SOURCECODE nvarchar(50);
declare @FN_MAILINGID uniqueidentifier;
if @FINDERNUMBER > 0
begin
--First look in the constituent segment table for a match (don't bother looking in the constituent appeal table since it can be modified by the user)...
select top 1
@FN_CONSTITUENTID = [CONSTITUENTSEGMENT].[CONSTITUENTID],
@FN_APPEALID = nullif([MKTSEGMENTATIONACTIVATE].[APPEALSYSTEMID], ''),
@FN_SOURCECODE = [MKTSOURCECODEMAP].[SOURCECODE],
@FN_MAILINGID = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
from dbo.[CONSTITUENTSEGMENT]
inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [CONSTITUENTSEGMENT].[SEGMENTID]
left join dbo.[MKTSEGMENTATIONACTIVATE] on [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] and [MKTSEGMENTATIONACTIVATE].[RECORDSOURCEID] = 'DFB4B8C1-5E9A-4C14-ACE3-01C096B53BA0'
left join dbo.[MKTSOURCECODEMAP] on [MKTSOURCECODEMAP].[ID] = [CONSTITUENTSEGMENT].[SOURCECODEMAPID]
where [CONSTITUENTSEGMENT].[FINDERNUMBER] = @FINDERNUMBER
option (recompile);
if @FN_CONSTITUENTID is null --not a constituent yet
select top 1
@FN_CONSTITUENTID = [CONSTITUENTID],
@FN_APPEALID = [APPEALID],
@FN_SOURCECODE = [SOURCECODE],
@FN_MAILINGID = [MKTSEGMENTATIONID]
from dbo.[BATCHREVENUECONSTITUENTAPPEAL]
where [FINDERNUMBER] = @FINDERNUMBER;
if @FN_CONSTITUENTID is null and @BATCHID is not null
begin
--it is possible they are now a constituent but were in a list for this finder number
--so there is no entry in CONSTITUENTSEGMENT or BATCHREVENUECONSTITUENTAPPEAL
--so look in BATCHREVENUE
select top 1
@FN_CONSTITUENTID = [CONSTITUENTID],
@FN_APPEALID = [APPEALID],
@FN_SOURCECODE = [SOURCECODE],
@FN_MAILINGID = [MAILINGID]
from
dbo.[BATCHREVENUE]
where
[FINDERNUMBER] = @FINDERNUMBER
and [BATCHID] = @BATCHID;
--check to make sure the finder number actually belongs on the effort
set @MAILINGIDLOOKUP = dbo.[UFN_MKTSEGMENTATIONFINDERNUMBER_GETSEGMENTATION](@FINDERNUMBER);
if @MAILINGIDLOOKUP is null or @MAILINGIDLOOKUP <> @FN_MAILINGID
set @FN_CONSTITUENTID = null;
end
end
if @FN_CONSTITUENTID is null
raiserror('BBERR_FINDERNUMBERINVALID', 13, 1);
else if @CONSTITUENTID is not null and (@FN_CONSTITUENTID is null or @CONSTITUENTID <> @FN_CONSTITUENTID)
raiserror('BBERR_FINDERNUMBERCONSTITUENTMISMATCH', 13, 1);
else if @APPEALID is not null and (@FN_APPEALID is null or @APPEALID <> @FN_APPEALID)
raiserror('BBERR_FINDERNUMBERAPPEALMISMATCH', 13, 1);
else if @MAILINGID is not null and (@FN_MAILINGID is null or @MAILINGID <> @FN_MAILINGID)
raiserror('BBERR_FINDERNUMBERMAILINGMISMATCH', 13, 1);
else if len(@SOURCECODE) > 0 and upper(@SOURCECODE) <> upper(isnull(@FN_SOURCECODE, ''))
raiserror('BBERR_FINDERNUMBERSOURCECODEMISMATCH', 13, 1);
end
else if len(@SOURCECODE) > 0 and (select count(*) from dbo.[MKTSOURCECODEMAP] inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSOURCECODEMAP].[SEGMENTATIONID] where [MKTSEGMENTATION].[ACTIVE] = 1 and [MKTSOURCECODEMAP].[SOURCECODE] = @SOURCECODE) = 1
begin
/* Validate source code and dependent fields, only if the source code is unique across all marketing efforts */
declare @SC_APPEALID uniqueidentifier;
declare @SC_MAILINGID uniqueidentifier;
select
@SC_APPEALID = nullif([MKTSEGMENTATIONACTIVATE].[APPEALSYSTEMID], ''),
@SC_MAILINGID = [MKTSOURCECODEMAP].[SEGMENTATIONID]
from dbo.[MKTSOURCECODEMAP]
inner join dbo.[MKTSEGMENTATIONACTIVATE] on [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID] = [MKTSOURCECODEMAP].[SEGMENTATIONID] and [MKTSEGMENTATIONACTIVATE].[RECORDSOURCEID] = 'DFB4B8C1-5E9A-4C14-ACE3-01C096B53BA0'
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSOURCECODEMAP].[SEGMENTATIONID]
where [MKTSEGMENTATION].[ACTIVE] = 1
and [MKTSOURCECODEMAP].[SOURCECODE] = @SOURCECODE;
if @MAILINGID is not null and (@SC_MAILINGID is null or @MAILINGID <> @SC_MAILINGID)
raiserror('BBERR_SOURCECODEMAILINGMISMATCH', 13, 1);
else if @APPEALID is not null and (@SC_APPEALID is null or @APPEALID <> @SC_APPEALID)
raiserror('BBERR_SOURCECODEAPPEALMISMATCH', 13, 1);
end
else if @MAILINGID is not null
begin
/* Validate mailing and dependent fields */
declare @ME_APPEALID uniqueidentifier;
select
@ME_APPEALID = nullif([MKTSEGMENTATIONACTIVATE].[APPEALSYSTEMID], '')
from dbo.[MKTSEGMENTATIONACTIVATE]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID]
where [MKTSEGMENTATION].[ACTIVE] = 1
and [MKTSEGMENTATIONACTIVATE].[RECORDSOURCEID] = 'DFB4B8C1-5E9A-4C14-ACE3-01C096B53BA0'
and [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID] = @MAILINGID;
if @APPEALID is not null and (@ME_APPEALID is null or @APPEALID <> @ME_APPEALID)
raiserror('BBERR_MAILINGAPPEALMISMATCH', 13, 1);
if len(@SOURCECODE) > 0
begin
/* Validate that the source code is used by the mailing or not. There could be */
/* duplicate source codes even within one mailing, but we don't care at this point. */
declare @ME_SOURCECODE nvarchar(50);
select top 1
@ME_SOURCECODE = [MKTSOURCECODEMAP].[SOURCECODE]
from dbo.[MKTSOURCECODEMAP]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSOURCECODEMAP].[SEGMENTATIONID]
where [MKTSEGMENTATION].[ACTIVE] = 1
and [MKTSOURCECODEMAP].[SEGMENTATIONID] = @MAILINGID
and [MKTSOURCECODEMAP].[SOURCECODE] = @SOURCECODE;
if upper(@SOURCECODE) <> upper(isnull(@ME_SOURCECODE, ''))
raiserror('BBERR_MAILINGSOURCECODEMISMATCH', 13, 1);
end
end
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;