USP_COMMUNICATIONS_CREATEORUPDATEMAILING
This procedure processes the segments for a mailing.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@COMMUNICATIONTYPECODE | tinyint | IN | |
@MAILTYPECODE | tinyint | IN | |
@MAILINGNAME | nvarchar(100) | IN | |
@MAILINGDESCRIPTION | nvarchar(255) | IN | |
@MAILINGBUDGET | money | IN | |
@MAILDATE | datetime | IN | |
@SELECTIONS | xml | IN | |
@EXCLUSIONS | xml | IN | |
@CHANNELCODE | tinyint | IN | |
@CHANNELPREFERENCECODE | tinyint | IN | |
@EMAILPACKAGEID | uniqueidentifier | IN | |
@MAILPACKAGEID | uniqueidentifier | IN | |
@ASKLADDERID | uniqueidentifier | IN | |
@ADDRESSPROCESSINGOPTIONID | uniqueidentifier | IN | |
@NAMEFORMATPARAMETERID | uniqueidentifier | IN | |
@HOUSEHOLDINGTYPECODE | tinyint | IN | |
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD | bit | IN | |
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS | bit | IN | |
@HOUSEHOLDINGONERECORDPERHOUSEHOLD | bit | IN | |
@APPEALID | uniqueidentifier | IN | |
@CREATEOUTPUTIDSET | bit | IN | |
@OUTPUTIDSETNAME | nvarchar(100) | IN | |
@OVERWRITEOUTPUTIDSET | bit | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@PACKAGESITEID | uniqueidentifier | IN | |
@EXCLUDESELECTIONS | xml | IN | |
@EXCLUSIONDATETYPECODE | tinyint | IN | |
@EXCLUSIONASOFDATE | datetime | IN | |
@ESTIMATEDRESPONSERATE | decimal(5, 2) | IN | |
@ESTIMATEDAVERAGEGIFTAMOUNT | money | IN |
Definition
Copy
CREATE procedure dbo.USP_COMMUNICATIONS_CREATEORUPDATEMAILING
(
@SEGMENTATIONID uniqueidentifier,
@COMMUNICATIONTYPECODE tinyint = 0,
@MAILTYPECODE tinyint = 0,
@MAILINGNAME nvarchar(100) = '',
@MAILINGDESCRIPTION nvarchar(255) = '',
@MAILINGBUDGET money = 0,
@MAILDATE datetime = null,
@SELECTIONS xml = null,
@EXCLUSIONS xml = null,
@CHANNELCODE tinyint = 0,
@CHANNELPREFERENCECODE tinyint = 0,
@EMAILPACKAGEID uniqueidentifier = null,
@MAILPACKAGEID uniqueidentifier = null,
@ASKLADDERID uniqueidentifier = null,
@ADDRESSPROCESSINGOPTIONID uniqueidentifier = null,
@NAMEFORMATPARAMETERID uniqueidentifier = null,
@HOUSEHOLDINGTYPECODE tinyint = 0,
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit = 0,
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit = 0,
@HOUSEHOLDINGONERECORDPERHOUSEHOLD bit = 0,
@APPEALID uniqueidentifier = null,
@CREATEOUTPUTIDSET bit = 0,
@OUTPUTIDSETNAME nvarchar(100) = '',
@OVERWRITEOUTPUTIDSET bit = 0,
@CURRENTAPPUSERID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@PACKAGESITEID uniqueidentifier = null, -- if set, overrides the appeal's site
@EXCLUDESELECTIONS xml = null,
@EXCLUSIONDATETYPECODE tinyint = 0,
@EXCLUSIONASOFDATE datetime = null,
@ESTIMATEDRESPONSERATE decimal(5, 2) = 0,
@ESTIMATEDAVERAGEGIFTAMOUNT money = 0
)
as
begin
-- @COMMINICATIONTYPECODE - enum from MKTSegmentation table
-- 0 - Direct marketing effort
-- 1 - Appeal mailing
-- 2 - Event invitation
-- @MAILTYPECODE pertains to the MailTypeCode field in dbo.MAILPREFERENCE for constituent communication preferences
-- 0 - Revenue Acknowledgements
-- 1 - Appeals
-- 2 - Events
-- 3 - General Correspondence
-- 4 - Reminders
-- 5 - Receipts
-- 6 - Planned Gift Acknowledgements
-- 7 - Tribute Acknowledgements
-- 8 - Stewardship
-- etc... This code should not need to change as new types are introduced...
-- @CHANNELCODE 0 - Both mail and email, 1 - Email only, 2 - Mail only
-- @CHANNELPREFERENCECODE 0 - Email, 1 - Mail
set nocount on;
declare @CURRENTDATE datetime = getDate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
begin try
declare @ACTIVE bit;
declare @EMAILSEGMENTID uniqueidentifier;
declare @MAILSEGMENTID uniqueidentifier;
declare @SEGMENTATIONACTIVATEPROCESSID uniqueidentifier;
declare @SEGMENTATIONEXPORTPROCESSID uniqueidentifier;
declare @EMAILEXPORTDEFINITIONID uniqueidentifier;
declare @MAILEXPORTDEFINITIONID uniqueidentifier;
declare @SEGMENTNAME nvarchar(100);
declare @OLDMAILDATE datetime;
declare @OLDNAME nvarchar(100);
declare @OLDEXCLUSIONS as xml;
declare @OLDEXCLUSIONDATETYPECODE as tinyint;
declare @OLDEXCLUSIONASOFDATE as datetime;
declare @OLDUSEADDRESSPROCESSING bit;
declare @OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint;
declare @OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime;
declare @OLDADDRESSPROCESSINGOPTIONID uniqueidentifier;
declare @OLDNAMEFORMATPARAMETERID uniqueidentifier;
declare @OLDHOUSEHOLDINGTYPECODE tinyint;
declare @OLDEXCLUDEDECEASED as bit;
declare @OLDEXCLUDEINACTIVE as bit;
declare @OLDMAILPACKAGEID uniqueidentifier;
declare @OLDEMAILPACKAGEID uniqueidentifier;
declare @ADDRESSPROCESSINGOPTIONSCHANGED bit;
declare @EXCLUSIONSCHANGED bit;
declare @APPEALNAME nvarchar(100) = null;
declare @APPEALDESCRIPTION nvarchar(255) = null;
declare @SITEID uniqueidentifier;
select
@ACTIVE = [MKTSEGMENTATION].ACTIVE,
@SEGMENTATIONACTIVATEPROCESSID = [MKTSEGMENTATIONACTIVATEPROCESS].[ID],
@SEGMENTATIONEXPORTPROCESSID = [MKTSEGMENTATIONEXPORTPROCESS].[ID],
@OLDMAILDATE = [MKTSEGMENTATION].[MAILDATE],
@OLDNAME = [MKTSEGMENTATION].[NAME],
@OLDHOUSEHOLDINGTYPECODE = [MKTSEGMENTATION].[HOUSEHOLDINGTYPECODE],
@OLDUSEADDRESSPROCESSING = [MKTSEGMENTATION].[USEADDRESSPROCESSING],
@OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
@OLDADDRESSPROCESSINGOPTIONSEASONALASOFDATE = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
@OLDADDRESSPROCESSINGOPTIONID = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONID],
@OLDNAMEFORMATPARAMETERID = [MKTSEGMENTATION].[NAMEFORMATPARAMETERID],
@OLDEXCLUSIONDATETYPECODE = [BUSINESSPROCESSCOMMPREF].[DATETYPECODE],
@OLDEXCLUSIONASOFDATE = [BUSINESSPROCESSCOMMPREF].[ASOFDATE],
@OLDEXCLUSIONS = dbo.[UFN_BUSINESSPROCESSCOMMPREF_GETEXCLUSIONS_TOITEMLISTXML]([MKTSEGMENTATIONACTIVATEPROCESS].[ID]),
@OLDEXCLUDEDECEASED = [BUSINESSPROCESSCOMMPREF].[EXCLUDEDECEASED],
@OLDEXCLUDEINACTIVE = [BUSINESSPROCESSCOMMPREF].[EXCLUDEINACTIVE]
from dbo.[MKTSEGMENTATION]
inner join dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
on [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
inner join dbo.[MKTSEGMENTATIONEXPORTPROCESS]
on [MKTSEGMENTATIONEXPORTPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
left join dbo.[BUSINESSPROCESSCOMMPREF]
on [BUSINESSPROCESSCOMMPREF].[BUSINESSPROCESSPARAMETERSETID] = [MKTSEGMENTATIONACTIVATEPROCESS].[ID]
where [MKTSEGMENTATION].[ID] = @SEGMENTATIONID;
-- Retrieve the Email and Mail Segment IDs
select
@EMAILSEGMENTID = MKTSEGMENTATIONSEGMENT.SEGMENTID
from dbo.MKTSEGMENTATIONSEGMENT
inner join dbo.MKTPACKAGE
on MKTSEGMENTATIONSEGMENT.PACKAGEID = MKTPACKAGE.ID
and MKTPACKAGE.CHANNELCODE = 1 -- CHANNELCODE 1 - Email
where MKTSEGMENTATIONSEGMENT.SEGMENTATIONID = @SEGMENTATIONID;
select
@MAILSEGMENTID = MKTSEGMENTATIONSEGMENT.SEGMENTID
from dbo.MKTSEGMENTATIONSEGMENT
inner join dbo.MKTPACKAGE
on MKTSEGMENTATIONSEGMENT.PACKAGEID = MKTPACKAGE.ID
and MKTPACKAGE.CHANNELCODE = 0 -- CHANNELCODE 0 - Mail
where MKTSEGMENTATIONSEGMENT.SEGMENTATIONID = @SEGMENTATIONID;
if @PACKAGESITEID is null -- Retrieve the appeal information...
select
@APPEALNAME = [NAME],
@APPEALDESCRIPTION = [DESCRIPTION],
@SITEID = [SITEID]
from
dbo.[APPEAL]
where
[ID] = @APPEALID;
else
set @SITEID = @PACKAGESITEID;
-- Rollback active mailings to be re-activated
if @ACTIVE = 1 or dbo.UFN_MKTSEGMENTATION_HASACTIVESEGMENTS(@SEGMENTATIONID) = 1
begin
declare @DELETEAPPEALINFO bit = case when @APPEALID is null then 0 else 1 end;
exec dbo.USP_MKTSEGMENTATIONACTIVATE_ROLLBACK @SEGMENTATIONID, @CHANGEAGENTID, @DELETEAPPEALINFO, 1;
--exec dbo.[USP_MKTSEGMENTATIONSEGMENTCACHEADDRESSES_CREATETABLE] @SEGMENTATIONID;
end
declare @SEGMENTATIONSEGMENTID uniqueidentifier;
-- Delete segment and segmentation segments for Channels no longer included in the mailing
if @CHANNELCODE = 1 and @MAILSEGMENTID is not null
begin
select
@SEGMENTATIONSEGMENTID = ID
from dbo.MKTSEGMENTATIONSEGMENT
where SEGMENTID = @MAILSEGMENTID;
if @SEGMENTATIONSEGMENTID is not null
exec dbo.USP_MKTSEGMENTATIONSEGMENT_DELETE @SEGMENTATIONSEGMENTID, @CHANGEAGENTID;
update dbo.[MKTSEGMENT] set
[ISSYSTEM] = 0,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @MAILSEGMENTID;
exec dbo.USP_MKTSEGMENT_DELETE @MAILSEGMENTID, @CHANGEAGENTID, @CURRENTAPPUSERID;
set @MAILSEGMENTID = null;
end
if @CHANNELCODE = 2 and @EMAILSEGMENTID is not null
begin
set @SEGMENTATIONSEGMENTID = null;
select
@SEGMENTATIONSEGMENTID = ID
from dbo.MKTSEGMENTATIONSEGMENT
where SEGMENTID = @EMAILSEGMENTID;
if @SEGMENTATIONSEGMENTID is not null
exec dbo.USP_MKTSEGMENTATIONSEGMENT_DELETE @SEGMENTATIONSEGMENTID, @CHANGEAGENTID;
update dbo.[MKTSEGMENT] set
[ISSYSTEM] = 0,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @EMAILSEGMENTID;
exec dbo.USP_MKTSEGMENT_DELETE @EMAILSEGMENTID, @CHANGEAGENTID, @CURRENTAPPUSERID;
set @EMAILSEGMENTID = null;
end
-- Create or update the base mailing
if @COMMUNICATIONTYPECODE = 2
set @MAILINGNAME = dbo.UFN_MKTSEGMENTATION_GETUNIQUENAME(@SEGMENTATIONID, @MAILINGNAME, default);
if not exists (select top 1 1 from dbo.MKTSEGMENTATION where ID = @SEGMENTATIONID)
-- Insert the base mailing...
insert into dbo.[MKTSEGMENTATION]
(
[ID],
[MAILINGTYPECODE],
[COMMUNICATIONTYPECODE],
[NAME],
[DESCRIPTION],
[MAILDATE],
[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
[SITEID],
[HOUSEHOLDINGTYPECODE],
[HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD],
[HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS],
[HOUSEHOLDINGONERECORDPERHOUSEHOLD],
[USEADDRESSPROCESSING],
[ADDRESSPROCESSINGOPTIONID],
[NAMEFORMATPARAMETERID],
[RUNACTIVATEANDEXPORT],
[CREATEOUTPUTIDSET],
[OUTPUTIDSETNAME],
[OVERWRITEOUTPUTIDSET],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@SEGMENTATIONID,
0,
@COMMUNICATIONTYPECODE,
@MAILINGNAME,
@MAILINGDESCRIPTION,
@MAILDATE,
@MAILDATE,
1, -- as of date
@SITEID,
@HOUSEHOLDINGTYPECODE,
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD,
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS,
@HOUSEHOLDINGONERECORDPERHOUSEHOLD,
1,
@ADDRESSPROCESSINGOPTIONID,
@NAMEFORMATPARAMETERID,
1, -- RunActivateAndExport
@CREATEOUTPUTIDSET,
@OUTPUTIDSETNAME,
@OVERWRITEOUTPUTIDSET,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
else
update dbo.[MKTSEGMENTATION] set
[NAME] = @MAILINGNAME,
[DESCRIPTION] = @MAILINGDESCRIPTION,
[MAILDATE] = @MAILDATE,
[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE] = @MAILDATE,
[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE] = 1, -- as of date
[SITEID] = @SITEID,
[HOUSEHOLDINGTYPECODE] = @HOUSEHOLDINGTYPECODE,
[HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD] = @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD,
[HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS] = @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS,
[HOUSEHOLDINGONERECORDPERHOUSEHOLD] = @HOUSEHOLDINGONERECORDPERHOUSEHOLD,
[USEADDRESSPROCESSING] = 1,
[ADDRESSPROCESSINGOPTIONID] = @ADDRESSPROCESSINGOPTIONID,
[NAMEFORMATPARAMETERID] = @NAMEFORMATPARAMETERID,
[CREATEOUTPUTIDSET] = @CREATEOUTPUTIDSET,
[OUTPUTIDSETNAME] = @OUTPUTIDSETNAME,
[OVERWRITEOUTPUTIDSET] = @OVERWRITEOUTPUTIDSET,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where
[ID] = @SEGMENTATIONID;
-- Save the excluded selections
exec dbo.USP_MKTSEGMENTATIONFILTERSELECTION_GETEXCLUDESELECTIONS_UPDATEFROMXML @SEGMENTATIONID, @EXCLUDESELECTIONS, @CHANGEAGENTID, @CURRENTDATE;
-- Create or update budget information...
if not exists(select 1 from dbo.[MKTSEGMENTATIONBUDGET] where [ID] = @SEGMENTATIONID)
insert into dbo.[MKTSEGMENTATIONBUDGET]
([ID],[BUDGETAMOUNT], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
values
(@SEGMENTATIONID, @MAILINGBUDGET, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
else
update dbo.[MKTSEGMENTATIONBUDGET] set
[BUDGETAMOUNT] = @MAILINGBUDGET,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where ID = @SEGMENTATIONID;
-- Add this mailing to the PreActivationProcess table
if not exists(select 1 from dbo.[MKTMAILINGPREACTIVATIONPROCESS] where [SEGMENTATIONID] = @SEGMENTATIONID)
insert into dbo.[MKTMAILINGPREACTIVATIONPROCESS]
(
[ID],
[SEGMENTATIONID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
newid(),
@SEGMENTATIONID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
-- Add the mailing to the SegmentCalculationProcess table
if not exists(select 1 from dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS] where [SEGMENTATIONID] = @SEGMENTATIONID)
exec dbo.[USP_MKTSEGMENTATIONSEGMENTCALCULATEPROCESS_SAVE] @SEGMENTATIONID, @CHANGEAGENTID;
-- Add the mailing to the SegmentRefreshProcess table
-- Appeal Mailings only
if @COMMUNICATIONTYPECODE = 1
if not exists(select 1 from dbo.[MKTSEGMENTATIONSEGMENTREFRESHPROCESS] where [SEGMENTATIONID] = @SEGMENTATIONID)
exec dbo.[USP_MKTSEGMENTATIONSEGMENTREFRESHPROCESS_SAVE] @SEGMENTATIONID, @CHANGEAGENTID;
-- Add the mailing to the ActivationProcess table...
if not exists(select 1 from dbo.[MKTSEGMENTATIONACTIVATEPROCESS] where [SEGMENTATIONID] = @SEGMENTATIONID)
exec dbo.[USP_MKTSEGMENTATIONACTIVATEPROCESS_SAVE] @SEGMENTATIONID, @CHANGEAGENTID;
-- Add the effort to the EffortExclusionsProcess table
exec dbo.[USP_MKTSEGMENTATION_EFFORTEXCLUSIONSPROCESS_SAVE] @SEGMENTATIONID, @CHANGEAGENTID;
-- Retrieve the activation process ID
if @SEGMENTATIONACTIVATEPROCESSID is null
select
@SEGMENTATIONACTIVATEPROCESSID = ID
from dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
where SEGMENTATIONID = @SEGMENTATIONID;
if not exists(select 1 from dbo.[BUSINESSPROCESSCOMMPREF] where [BUSINESSPROCESSPARAMETERSETID] = @SEGMENTATIONACTIVATEPROCESSID)
exec dbo.[USP_BUSINESSPROCESSCOMMPREF_ADD]
null,
@CHANGEAGENTID,
'22C3D75C-A956-4BFC-A5FD-4B866BAEF509',
@SEGMENTATIONACTIVATEPROCESSID,
@EXCLUSIONDATETYPECODE,
@EXCLUSIONASOFDATE,
0, -- Setting Exclude Deceased to False so it will take the invitees that are in the current list
0, -- Setting Exclude Inactive to False so it will take the invitees that are in the current list
@EXCLUSIONS,
@CURRENTAPPUSERID;
else
begin
-- Making sure Exclude Deceased (first zero) is false, Making sure Exclude Inactive is false for update, so it will take in the invitees in the list.
set @EXCLUSIONSCHANGED = dbo.[UFN_MKTSEGMENTATION_COMPARECOMMPREFS](@EXCLUSIONDATETYPECODE, @MAILDATE, 0, 0, @EXCLUSIONS, @OLDEXCLUSIONDATETYPECODE, @OLDMAILDATE, @OLDEXCLUDEDECEASED, @OLDEXCLUDEINACTIVE, @OLDEXCLUSIONS);
if @EXCLUSIONSCHANGED = 1
exec dbo.[USP_BUSINESSPROCESSCOMMPREF_UPDATE]
@CHANGEAGENTID = @CHANGEAGENTID,
@BUSINESSPROCESSCATALOGID = '116332AF-BB79-4608-9709-4203BD2BA318',
@BUSINESSPROCESSPARAMETERSETID = @SEGMENTATIONACTIVATEPROCESSID,
@EXCLUSIONDATETYPECODE = @EXCLUSIONDATETYPECODE,
@EXCLUSIONASOFDATE = @EXCLUSIONASOFDATE,
@EXCLUDEDECEASED = 0,
@EXCLUDEINACTIVE = 0,
@EXCLUSIONS = @EXCLUSIONS,
@CURRENTAPPUSERID = @CURRENTAPPUSERID;
end
-- Create or update the mailing export process...
select
@MAILEXPORTDEFINITIONID = coalesce([LETTERCODE].[EXPORTDEFINITIONID], [MKTPACKAGE].[EXPORTDEFINITIONID])
from dbo.[MKTPACKAGE]
left join dbo.[LETTERCODE] on [LETTERCODE].[ID] = [MKTPACKAGE].[LETTERCODEID]
where [MKTPACKAGE].[ID] = @MAILPACKAGEID;
select
@EMAILEXPORTDEFINITIONID = [MKTPACKAGE].[EXPORTDEFINITIONID]
from dbo.[MKTPACKAGE]
where [MKTPACKAGE].[ID] = @EMAILPACKAGEID;
if @SEGMENTATIONEXPORTPROCESSID is null
begin
set @SEGMENTATIONEXPORTPROCESSID = newid();
insert into dbo.[MKTSEGMENTATIONEXPORTPROCESS] (
[ID],
[SEGMENTATIONID],
[DESCRIPTION],
[MAILEXPORTDEFINITIONID],
[EMAILEXPORTDEFINITIONID],
[PHONEEXPORTDEFINITIONID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@SEGMENTATIONEXPORTPROCESSID,
@SEGMENTATIONID,
'',
@MAILEXPORTDEFINITIONID,
@EMAILEXPORTDEFINITIONID,
null,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
)
end
else
exec dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTSEGMENTATIONEXPORTPROCESS_4]
@SEGMENTATIONEXPORTPROCESSID,
@CHANGEAGENTID,
@SEGMENTATIONID,
'',
@MAILEXPORTDEFINITIONID,
@EMAILEXPORTDEFINITIONID,
null;
exec dbo.[USP_MKTSEGMENTATIONSEGMENTCACHEADDRESSES_CREATETABLE] @SEGMENTATIONID;
-- Save the activation source's information
-- If the appeal fields do not apply to a particular mailing,
-- simply send in null for the Appeal field arguments
exec dbo.[USP_MKTSEGMENTATIONACTIVATE_SAVEFIELD] @SEGMENTATIONID, @CHANGEAGENTID, 'DFB4B8C1-5E9A-4C14-ACE3-01C096B53BA0', null, null, @APPEALID, @APPEALNAME, @APPEALDESCRIPTION;
-- Create or update the segment(s)
declare @EXCLUDECONSTITSBASEDONPREFERENCE bit;
declare @INCLUDECONSTITSWITHOUTPREFERENCE bit;
set @EXCLUDECONSTITSBASEDONPREFERENCE =
case @CHANNELCODE
when 0 then 1
else 0
end;
if @CHANNELCODE <> 1 and @MAILPACKAGEID is not null
begin
set @INCLUDECONSTITSWITHOUTPREFERENCE =
case @CHANNELCODE
when 0 then
case @CHANNELPREFERENCECODE
when 1 then 1
else 0
end
when 2 then 1
else 0
end;
-- Create or update the segment
exec dbo.[USP_COMMUNICATIONS_CREATEORUPDATESEGMENT]
@MAILSEGMENTID output,
@CURRENTAPPUSERID,
@CHANGEAGENTID,
@MAILINGNAME,
@SELECTIONS,
@MAILTYPECODE,
0, -- DeliveryMethodCode 0 - Mail
@EXCLUDECONSTITSBASEDONPREFERENCE,
@INCLUDECONSTITSWITHOUTPREFERENCE,
@SEGMENTATIONID,
@MAILPACKAGEID,
@ASKLADDERID,
@ADDRESSPROCESSINGOPTIONID,
@NAMEFORMATPARAMETERID,
@MAILDATE,
@ESTIMATEDRESPONSERATE,
@ESTIMATEDAVERAGEGIFTAMOUNT;
end
if @CHANNELCODE <> 2 and @EMAILPACKAGEID is not null
begin
set @INCLUDECONSTITSWITHOUTPREFERENCE =
case @CHANNELCODE
when 0 then
case @CHANNELPREFERENCECODE
when 0 then 1
else 0
end
when 1 then 1
else 0
end;
-- Create or update the segment
exec dbo.[USP_COMMUNICATIONS_CREATEORUPDATESEGMENT]
@EMAILSEGMENTID output,
@CURRENTAPPUSERID,
@CHANGEAGENTID,
@MAILINGNAME,
@SELECTIONS,
@MAILTYPECODE,
1, -- DeliveryMethodCode 1 - Email
@EXCLUDECONSTITSBASEDONPREFERENCE,
@INCLUDECONSTITSWITHOUTPREFERENCE,
@SEGMENTATIONID,
@EMAILPACKAGEID,
@ASKLADDERID,
@ADDRESSPROCESSINGOPTIONID,
@NAMEFORMATPARAMETERID,
@MAILDATE,
@ESTIMATEDRESPONSERATE,
@ESTIMATEDAVERAGEGIFTAMOUNT;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end