USP_APPEALMAILING_CREATEORUPDATESEGMENT
Creates or updates the underlying segment information for an appeal mailing.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@APPEALMAILINGID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@NAME | nvarchar(100) | IN | |
@IDSETREGISTERID | uniqueidentifier | IN | |
@MKTPACKAGEID | uniqueidentifier | IN | |
@HOUSEHOLDINGTYPECODE | tinyint | IN | |
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD | bit | IN | |
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS | bit | IN | |
@HOUSEHOLDINGONERECORDPERHOUSEHOLD | bit | IN | |
@EXCLUSIONDATETYPECODE | tinyint | IN | |
@EXCLUSIONASOFDATE | datetime | IN | |
@EXCLUDEDECEASED | bit | IN | |
@EXCLUDEINACTIVE | bit | IN | |
@EXCLUSIONS | xml | IN | |
@USEADDRESSPROCESSING | bit | INOUT | |
@ADDRESSPROCESSINGOPTIONID | uniqueidentifier | IN | |
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE | tinyint | IN | |
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@APPEALID | uniqueidentifier | IN | |
@RECORDCOUNTNEEDSUPDATED | bit | INOUT | |
@BASECURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_APPEALMAILING_CREATEORUPDATESEGMENT]
(
/* All parameters are required when creating a new segment. */
/* When updating an existing segment, parameters can be optionally supplied depending on what is being updated. */
@APPEALMAILINGID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@NAME nvarchar(100) = null,
@IDSETREGISTERID uniqueidentifier = null,
@MKTPACKAGEID uniqueidentifier = null,
@HOUSEHOLDINGTYPECODE tinyint = null,
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit = null,
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit = null,
@HOUSEHOLDINGONERECORDPERHOUSEHOLD bit = null,
@EXCLUSIONDATETYPECODE tinyint = null,
@EXCLUSIONASOFDATE datetime = null,
@EXCLUDEDECEASED bit = null,
@EXCLUDEINACTIVE bit = null,
@EXCLUSIONS xml = null,
@USEADDRESSPROCESSING bit = null output,
@ADDRESSPROCESSINGOPTIONID uniqueidentifier = null,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint = 0,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null,
@APPEALID uniqueidentifier = null, /* Only needed when calling from the add form. */
@RECORDCOUNTNEEDSUPDATED bit = null output,
@BASECURRENCYID uniqueidentifier = null
)
as
set nocount on;
declare @UPDATE bit;
declare @MKTSEGMENTID uniqueidentifier;
declare @MKTSEGMENTATIONSEGMENTID uniqueidentifier;
declare @MKTSEGMENTATIONACTIVATEPROCESSID uniqueidentifier;
declare @OLDIDSETREGISTERID uniqueidentifier;
declare @OLDMKTPACKAGEID uniqueidentifier;
declare @OLDHOUSEHOLDINGTYPECODE tinyint;
declare @OLDHOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit;
declare @OLDHOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit;
declare @OLDHOUSEHOLDINGONERECORDPERHOUSEHOLD bit;
declare @OLDUSEADDRESSPROCESSING bit;
declare @OLDADDRESSPROCESSINGOPTIONID uniqueidentifier;
declare @OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint;
declare @OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime;
declare @ADDRESSPROCESSINGOPTIONSCHANGED bit;
declare @OLDMKTSEGMENTATIONPACKAGEID uniqueidentifier;
declare @OLDNAME nvarchar(100);
declare @OLDEXCLUSIONDATETYPECODE tinyint;
declare @OLDEXCLUSIONASOFDATE datetime;
declare @OLDEXCLUDEDECEASED bit;
declare @OLDEXCLUDEINACTIVE bit;
declare @OLDEXCLUSIONS xml;
declare @EXCLUSIONSCHANGED bit;
declare @CURRENTDATE datetime;
declare @APPEALNAME nvarchar(100);
declare @SELECTIONNAME nvarchar(300);
declare @RECORDTYPES table ([ID] uniqueidentifier not null);
declare @RECORDTYPEID uniqueidentifier;
declare @SQL nvarchar(max);
declare @TABLENAME nvarchar(128);
declare @RECORDCOUNT int;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @CURRENCYEXCHANGERATEID uniqueidentifier;
begin try
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
--Grab some info so we know whether to add or update (and what to update)...
select
@UPDATE = (case when [APPEALMAILING].[ID] is null then 0 else 1 end),
@ADDRESSPROCESSINGOPTIONSCHANGED = 0,
@EXCLUSIONSCHANGED = 0,
@RECORDCOUNTNEEDSUPDATED = 0,
@MKTSEGMENTATIONACTIVATEPROCESSID = [MKTSEGMENTATIONACTIVATEPROCESS].[ID],
@MKTSEGMENTID = [MKTSEGMENTATIONSEGMENT].[SEGMENTID],
@MKTSEGMENTATIONSEGMENTID = [APPEALMAILING].[MKTSEGMENTATIONSEGMENTID],
@OLDIDSETREGISTERID = [MKTSEGMENTSELECTION].[SELECTIONID],
@OLDMKTPACKAGEID = [MKTSEGMENTATIONSEGMENT].[PACKAGEID],
@OLDHOUSEHOLDINGTYPECODE = [MKTSEGMENTATION].[HOUSEHOLDINGTYPECODE],
@OLDHOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD = [MKTSEGMENTATION].[HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD],
@OLDHOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS = [MKTSEGMENTATION].[HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS],
@OLDHOUSEHOLDINGONERECORDPERHOUSEHOLD = [MKTSEGMENTATION].[HOUSEHOLDINGONERECORDPERHOUSEHOLD],
@OLDUSEADDRESSPROCESSING = [MKTSEGMENTATION].[USEADDRESSPROCESSING],
@OLDADDRESSPROCESSINGOPTIONID = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONID],
@OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
@OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATE = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
@OLDMKTSEGMENTATIONPACKAGEID = [MKTSEGMENTATIONPACKAGE].[ID],
@OLDNAME = [MKTSEGMENTATION].[NAME],
@OLDEXCLUSIONDATETYPECODE = [BUSINESSPROCESSCOMMPREF].[DATETYPECODE],
@OLDEXCLUSIONASOFDATE = [BUSINESSPROCESSCOMMPREF].[ASOFDATE],
@OLDEXCLUDEDECEASED = [BUSINESSPROCESSCOMMPREF].[EXCLUDEDECEASED],
@OLDEXCLUDEINACTIVE = [BUSINESSPROCESSCOMMPREF].[EXCLUDEINACTIVE],
@OLDEXCLUSIONS = dbo.[UFN_BUSINESSPROCESSCOMMPREF_GETEXCLUSIONS_TOITEMLISTXML]([MKTSEGMENTATIONACTIVATEPROCESS].[ID]),
@NAME = isnull(@NAME, [MKTSEGMENTATION].[NAME]),
@APPEALNAME = (case when [APPEAL].[ID] is null and @APPEALID is not null then dbo.[UFN_APPEAL_GETNAME](@APPEALID) else [APPEAL].[NAME] end),
@SELECTIONNAME = (case when @IDSETREGISTERID is null then [IDSETREGISTER].[NAME] else (select [NAME] from dbo.[IDSETREGISTER] where [ID] = @IDSETREGISTERID) end),
@BASECURRENCYID = coalesce(@BASECURRENCYID, [MKTSEGMENTATION].[BASECURRENCYID], [APPEAL].[BASECURRENCYID])
from dbo.[MKTSEGMENTATION]
inner join dbo.[MKTSEGMENTATIONACTIVATEPROCESS] on [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
left join dbo.[APPEALMAILING] on [APPEALMAILING].[ID] = [MKTSEGMENTATION].[ID]
left join dbo.[BUSINESSPROCESSCOMMPREF] on [BUSINESSPROCESSCOMMPREF].[BUSINESSPROCESSPARAMETERSETID] = [MKTSEGMENTATIONACTIVATEPROCESS].[ID]
left join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [APPEALMAILING].[MKTSEGMENTATIONSEGMENTID]
left join dbo.[MKTSEGMENTSELECTION] on [MKTSEGMENTSELECTION].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
left join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENTSELECTION].[SELECTIONID]
left join dbo.[MKTSEGMENTATIONPACKAGE] on [MKTSEGMENTATIONPACKAGE].[SEGMENTATIONID] = [APPEALMAILING].[ID] and [MKTSEGMENTATIONPACKAGE].[PACKAGEID] = [MKTSEGMENTATIONSEGMENT].[PACKAGEID]
left join dbo.[APPEAL] on [APPEAL].[ID] = [APPEALMAILING].[APPEALID]
where [MKTSEGMENTATION].[ID] = @APPEALMAILINGID;
--Check to make sure all parameters are specified when creating a new segment...
if @UPDATE = 0
begin
--It is possible for @EXCLUSIONS to be null if the user doesn't specify any solicit codes, so don't worry about that parameter.
if @APPEALID is null or
@APPEALMAILINGID is null or
@NAME is null or
@IDSETREGISTERID is null or
@MKTPACKAGEID is null or
@HOUSEHOLDINGTYPECODE is null or
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD is null or
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS is null or
@HOUSEHOLDINGONERECORDPERHOUSEHOLD is null or
@EXCLUSIONDATETYPECODE is null or
(@EXCLUSIONDATETYPECODE = 1 and @EXCLUSIONASOFDATE is null) or
@EXCLUDEDECEASED is null or
@EXCLUDEINACTIVE is null or
@USEADDRESSPROCESSING is null or
(@USEADDRESSPROCESSING = 1 and @ADDRESSPROCESSINGOPTIONID is null) or
(@USEADDRESSPROCESSING = 1 and @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE is null) or
(@USEADDRESSPROCESSING = 1 and @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = 1 and @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE is null)
raiserror('All parameters are required when creating a new segment.', 13, 1);
end
set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();
if (@ORGANIZATIONCURRENCYID <> @BASECURRENCYID)
set @CURRENCYEXCHANGERATEID = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);
/****************************************************************/
/* Create or update the contact rules/communication preferences */
/****************************************************************/
if @UPDATE = 0
begin
set @ADDRESSPROCESSINGOPTIONSCHANGED = 1;
set @EXCLUSIONSCHANGED = 1;
--Save the contact rules/communication preferences for the mailing activation business process...
exec dbo.[USP_BUSINESSPROCESSCOMMPREF_ADD]
@CHANGEAGENTID = @CHANGEAGENTID,
@BUSINESSPROCESSCATALOGID = '22C3D75C-A956-4BFC-A5FD-4B866BAEF509',
@BUSINESSPROCESSPARAMETERSETID = @MKTSEGMENTATIONACTIVATEPROCESSID,
@EXCLUSIONDATETYPECODE = @EXCLUSIONDATETYPECODE,
@EXCLUSIONASOFDATE = @EXCLUSIONASOFDATE,
@EXCLUDEDECEASED = @EXCLUDEDECEASED,
@EXCLUDEINACTIVE = @EXCLUDEINACTIVE,
@EXCLUSIONS = @EXCLUSIONS,
@CURRENTAPPUSERID = @CURRENTAPPUSERID;
end
else
begin
set @ADDRESSPROCESSINGOPTIONSCHANGED = dbo.[UFN_MKTSEGMENTATION_COMPAREADDRESSPROCESSINGOPTIONS](@USEADDRESSPROCESSING, @ADDRESSPROCESSINGOPTIONID, @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE, @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE, @OLDUSEADDRESSPROCESSING, @OLDADDRESSPROCESSINGOPTIONID, @OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE, @OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATE);
set @EXCLUSIONSCHANGED = dbo.[UFN_MKTSEGMENTATION_COMPARECOMMPREFS](@EXCLUSIONDATETYPECODE, @EXCLUSIONASOFDATE, @EXCLUDEDECEASED, @EXCLUDEINACTIVE, @EXCLUSIONS, @OLDEXCLUSIONDATETYPECODE, @OLDEXCLUSIONASOFDATE, @OLDEXCLUDEDECEASED, @OLDEXCLUDEINACTIVE, @OLDEXCLUSIONS);
if @EXCLUSIONSCHANGED = 1
--Update the contact rules/communication preferences for the mailing activation business process...
exec dbo.[USP_BUSINESSPROCESSCOMMPREF_UPDATE]
@CHANGEAGENTID = @CHANGEAGENTID,
@BUSINESSPROCESSCATALOGID = '22C3D75C-A956-4BFC-A5FD-4B866BAEF509',
@BUSINESSPROCESSPARAMETERSETID = @MKTSEGMENTATIONACTIVATEPROCESSID,
@EXCLUSIONDATETYPECODE = @EXCLUSIONDATETYPECODE,
@EXCLUSIONASOFDATE = @EXCLUSIONASOFDATE,
@EXCLUDEDECEASED = @EXCLUDEDECEASED,
@EXCLUDEINACTIVE = @EXCLUDEINACTIVE,
@EXCLUSIONS = @EXCLUSIONS,
@CURRENTAPPUSERID = @CURRENTAPPUSERID;
end
/*************************************/
/* Create or update the base segment */
/*************************************/
declare @MKTSEGMENTNAME nvarchar(100);
declare @MKTSEGMENTDESCRIPTION nvarchar(255);
declare @TEMPSEGMENTNAME nvarchar(100);
declare @COUNTER int;
if upper(right(@SELECTIONNAME, 15)) = upper(' (Ad-hoc Query)')
set @SELECTIONNAME = left(@SELECTIONNAME, len(@SELECTIONNAME) - 15);
set @TEMPSEGMENTNAME = @APPEALNAME + ': ' + @SELECTIONNAME;
set @COUNTER = 0;
--Get a unique name if the user wants to use the same selection for multiple mailings in this appeal...
while exists(select 1 from dbo.[MKTSEGMENT] where [NAME] = @TEMPSEGMENTNAME)
begin
set @COUNTER = @COUNTER + 1;
set @TEMPSEGMENTNAME = left(@TEMPSEGMENTNAME, 100 - len(cast(@COUNTER as nvarchar(10))) - 1) + ' ' + cast(@COUNTER as nvarchar(10));
end
set @MKTSEGMENTNAME = @TEMPSEGMENTNAME;
set @MKTSEGMENTDESCRIPTION = 'Auto generated segment for mailing "' + @NAME + '".';
declare @BBECRECORDSOURCEID uniqueidentifier;
set @BBECRECORDSOURCEID = dbo.[UFN_MKTRECORDSOURCE_GETFIRSTBBECRECORDSOURCEID]();
if @UPDATE = 0 or @OLDIDSETREGISTERID is null
begin
set @MKTSEGMENTID = newid();
insert into dbo.[MKTSEGMENT] (
[ID],
[NAME],
[DESCRIPTION],
[SEGMENTTYPECODE],
[QUERYVIEWCATALOGID],
[ISSYSTEM],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@MKTSEGMENTID,
@MKTSEGMENTNAME,
@MKTSEGMENTDESCRIPTION,
1,
@BBECRECORDSOURCEID,
1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
--Insert a parameter set for the refresh process for this segment...
insert into dbo.[MKTSEGMENTREFRESHPROCESS] (
[ID],
[SEGMENTID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
NewID(),
@MKTSEGMENTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
else if (@NAME is not null and @NAME <> @OLDNAME) or (@IDSETREGISTERID is not null and @IDSETREGISTERID <> @OLDIDSETREGISTERID)
--Update the base segment name and description...
update dbo.[MKTSEGMENT] set
[NAME] = @MKTSEGMENTNAME,
[DESCRIPTION] = @MKTSEGMENTDESCRIPTION,
[ISSYSTEM] = 1,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @MKTSEGMENTID;
/****************************************/
/* Create or update the mailing segment */
/****************************************/
declare @MKTSEGMENTSELECTIONS xml = (select @IDSETREGISTERID as [SELECTIONID] for xml raw('ITEM'),type,elements,root('SELECTIONS'),BINARY BASE64);
if @UPDATE = 0 or @OLDIDSETREGISTERID is null
begin
--Save the segment's selection...
exec dbo.[USP_MKTSEGMENT_GETSELECTIONS_ADDFROMXML] @MKTSEGMENTID, null, @MKTSEGMENTSELECTIONS, @CHANGEAGENTID, @CURRENTDATE;
--Create the mailing segment...
set @MKTSEGMENTATIONSEGMENTID = newid();
insert into dbo.[MKTSEGMENTATIONSEGMENT] (
[ID],
[SEGMENTATIONID],
[SEGMENTID],
[PACKAGEID],
[SEQUENCE],
[BASECURRENCYID],
[CURRENCYEXCHANGERATEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@MKTSEGMENTATIONSEGMENTID,
@APPEALMAILINGID,
@MKTSEGMENTID,
@MKTPACKAGEID,
1,
@BASECURRENCYID,
@CURRENCYEXCHANGERATEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
if @UPDATE = 0 or @OLDIDSETREGISTERID is not null
--Insert the appeal mailing (needs to be done here in order for the segment view to be created properly)...
insert into dbo.[APPEALMAILING] (
[ID],
[APPEALID],
[MKTSEGMENTATIONSEGMENTID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@APPEALMAILINGID,
@APPEALID,
@MKTSEGMENTATIONSEGMENTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
else
--Update the appeal mailing segmentation segment id (this mailing was created using the appeal mailing setup minimal add form)
update dbo.APPEALMAILING set
MKTSEGMENTATIONSEGMENTID = @MKTSEGMENTATIONSEGMENTID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @APPEALMAILINGID;
end
else if @IDSETREGISTERID is not null and @IDSETREGISTERID <> @OLDIDSETREGISTERID
begin
--Update the segment's selection...
exec dbo.[USP_MKTSEGMENT_GETSELECTIONS_UPDATEFROMXML] @MKTSEGMENTID, null, @MKTSEGMENTSELECTIONS, @CHANGEAGENTID, @CURRENTDATE;
end
if @UPDATE = 0 or (@IDSETREGISTERID is not null and @HOUSEHOLDINGTYPECODE is not null and (@IDSETREGISTERID <> @OLDIDSETREGISTERID or @HOUSEHOLDINGTYPECODE <> @OLDHOUSEHOLDINGTYPECODE or @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD <> @OLDHOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD or @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS <> @OLDHOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS or @HOUSEHOLDINGONERECORDPERHOUSEHOLD <> @OLDHOUSEHOLDINGONERECORDPERHOUSEHOLD or @ADDRESSPROCESSINGOPTIONSCHANGED = 1 or @EXCLUSIONSCHANGED = 1 or dbo.[UFN_MKTSEGMENTATIONSEGMENT_ISRECORDCOUNTCACHECURRENT](@MKTSEGMENTATIONSEGMENTID, 1) = 0))
begin
--Update the segment view...
exec dbo.[USP_MKTSEGMENT_CREATEORUPDATEVIEW] @MKTSEGMENTID, @CHANGEAGENTID, 0;
--Mark the segment selection as system-defined...
update dbo.[IDSETREGISTER] set
[ISSYSTEM] = 1,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = (select [IDSETREGISTERID] from dbo.[MKTSEGMENT] where [ID] = @MKTSEGMENTID);
--If householding changed, then we must update the base mailing table before we recreate the segment views, since the views contain the householding logic...
if @UPDATE = 1 and (@HOUSEHOLDINGTYPECODE <> @OLDHOUSEHOLDINGTYPECODE or @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD <> @OLDHOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD or @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS <> @OLDHOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS or @HOUSEHOLDINGONERECORDPERHOUSEHOLD <> @OLDHOUSEHOLDINGONERECORDPERHOUSEHOLD or @ADDRESSPROCESSINGOPTIONSCHANGED = 1)
update dbo.[MKTSEGMENTATION] set
[HOUSEHOLDINGTYPECODE] = @HOUSEHOLDINGTYPECODE,
[HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD] = @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD,
[HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS] = @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS,
[HOUSEHOLDINGONERECORDPERHOUSEHOLD] = @HOUSEHOLDINGONERECORDPERHOUSEHOLD,
[USEADDRESSPROCESSING] = @USEADDRESSPROCESSING,
[ADDRESSPROCESSINGOPTIONID] = @ADDRESSPROCESSINGOPTIONID,
[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE] = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE] = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @APPEALMAILINGID;
set @RECORDCOUNTNEEDSUPDATED = 1;
end
/*************************************************/
/* Update the package on the segment and mailing */
/*************************************************/
if @UPDATE = 1 and @MKTPACKAGEID is not null and @MKTPACKAGEID <> @OLDMKTPACKAGEID
begin
--Update the package on the mailing segment...
update dbo.[MKTSEGMENTATIONSEGMENT] set
[PACKAGEID] = @MKTPACKAGEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @MKTSEGMENTATIONSEGMENTID;
--Remove the old package for the mailing...
exec dbo.[USP_MKTSEGMENTATIONPACKAGE_DELETE] @OLDMKTSEGMENTATIONPACKAGEID, @CHANGEAGENTID;
end
if @UPDATE = 0 or (@MKTPACKAGEID is not null and @MKTPACKAGEID <> @OLDMKTPACKAGEID)
--Add/update the package to the mailing...
exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTATIONPACKAGE] null, @CHANGEAGENTID, @APPEALMAILINGID, @MKTPACKAGEID, @BASECURRENCYID;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;