USP_DATAFORMTEMPLATE_ADD_APPEALMAILING
Adds an appeal mailing.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@APPEALID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@NAME | nvarchar(100) | IN | |
@DESCRIPTION | nvarchar(255) | IN | |
@MAILDATE | datetime | IN | |
@FIXEDCOST | money | IN | |
@MKTPACKAGEID | uniqueidentifier | IN | |
@IDSETREGISTERID | uniqueidentifier | IN | |
@HOUSEHOLDINGTYPECODE | tinyint | IN | |
@EXCLUSIONDATETYPECODE | tinyint | IN | |
@EXCLUSIONASOFDATE | datetime | IN | |
@EXCLUDEDECEASED | bit | IN | |
@EXCLUDEINACTIVE | bit | IN | |
@EXCLUSIONS | xml | IN | |
@LABELFILENAME | nvarchar(255) | IN | |
@LABELFILE | varbinary | IN | |
@CREATEOUTPUTIDSET | bit | IN | |
@OUTPUTIDSETNAME | nvarchar(100) | IN | |
@OVERWRITEOUTPUTIDSET | bit | IN | |
@USEADDRESSPROCESSING | bit | IN | |
@ADDRESSPROCESSINGOPTIONID | uniqueidentifier | IN | |
@NAMEFORMATPARAMETERID | uniqueidentifier | IN | |
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE | tinyint | IN | |
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE | datetime | IN | |
@USEKPISASDEFAULT | bit | IN | |
@ACTIVATIONKPIS | xml | IN | |
@MAILINGBUDGET | money | IN | |
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD | bit | IN | |
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS | bit | IN | |
@HOUSEHOLDINGONERECORDPERHOUSEHOLD | bit | IN | |
@BASECURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_ADD_APPEALMAILING]
(
@ID uniqueidentifier = null output,
@APPEALID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@NAME nvarchar(100),
@DESCRIPTION nvarchar(255) = '',
@MAILDATE datetime = null,
@FIXEDCOST money = 0,
@MKTPACKAGEID uniqueidentifier,
@IDSETREGISTERID uniqueidentifier,
@HOUSEHOLDINGTYPECODE tinyint = 0,
@EXCLUSIONDATETYPECODE tinyint = 0,
@EXCLUSIONASOFDATE datetime = null,
@EXCLUDEDECEASED bit = 1,
@EXCLUDEINACTIVE bit = 1,
@EXCLUSIONS xml = null,
@LABELFILENAME nvarchar(255) = '',
@LABELFILE varbinary(max) = null,
@CREATEOUTPUTIDSET bit = 0,
@OUTPUTIDSETNAME nvarchar(100) = '',
@OVERWRITEOUTPUTIDSET bit = 0,
@USEADDRESSPROCESSING bit = 0,
@ADDRESSPROCESSINGOPTIONID uniqueidentifier = null,
@NAMEFORMATPARAMETERID uniqueidentifier = null,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint = 0,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime = null,
@USEKPISASDEFAULT bit = null,
@ACTIVATIONKPIS xml = null,
@MAILINGBUDGET money = 0,
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit = 0,
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit = 0,
@HOUSEHOLDINGONERECORDPERHOUSEHOLD bit = 0,
@BASECURRENCYID uniqueidentifier = null
)
as
set nocount on;
declare @APPEALNAME nvarchar(100);
declare @APPEALDESCRIPTION nvarchar(255);
declare @SITEID uniqueidentifier;
declare @EXPORTDEFINITIONID uniqueidentifier;
declare @CURRENTDATE datetime;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONFIXEDCOST money;
declare @ORGANIZATIONMAILINGBUDGET money;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
begin try
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
select
@APPEALNAME = [NAME],
@APPEALDESCRIPTION = [DESCRIPTION],
@SITEID = [SITEID]
from dbo.[APPEAL]
where [ID] = @APPEALID;
select
@EXPORTDEFINITIONID = [LETTERCODE].[EXPORTDEFINITIONID]
from dbo.[MKTPACKAGE]
inner join dbo.[LETTERCODE] on [LETTERCODE].[ID] = [MKTPACKAGE].[LETTERCODEID]
where [MKTPACKAGE].[ID] = @MKTPACKAGEID;
if @BASECURRENCYID is null
select @BASECURRENCYID = [BASECURRENCYID] from dbo.[APPEAL] where [ID] = @APPEALID;
--Insert the base mailing...
insert into dbo.[MKTSEGMENTATION] (
[ID],
[NAME],
[DESCRIPTION],
[MAILDATE],
[SITEID],
[HOUSEHOLDINGTYPECODE],
[HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD],
[HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS],
[HOUSEHOLDINGONERECORDPERHOUSEHOLD],
[USEADDRESSPROCESSING],
[ADDRESSPROCESSINGOPTIONID],
[NAMEFORMATPARAMETERID],
[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
[COMMUNICATIONTYPECODE],
[RUNACTIVATEANDEXPORT],
[CREATEOUTPUTIDSET],
[OUTPUTIDSETNAME],
[OVERWRITEOUTPUTIDSET],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[BASECURRENCYID]
) values (
@ID,
@NAME,
@DESCRIPTION,
@MAILDATE,
@SITEID,
@HOUSEHOLDINGTYPECODE,
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD,
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS,
@HOUSEHOLDINGONERECORDPERHOUSEHOLD,
@USEADDRESSPROCESSING,
@ADDRESSPROCESSINGOPTIONID,
@NAMEFORMATPARAMETERID,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
1, --Appeal mailing
1, --Run export
@CREATEOUTPUTIDSET,
@OUTPUTIDSETNAME,
@OVERWRITEOUTPUTIDSET,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
@BASECURRENCYID
);
set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();
if (@ORGANIZATIONCURRENCYID = @BASECURRENCYID)
begin
set @ORGANIZATIONFIXEDCOST = @FIXEDCOST;
set @ORGANIZATIONMAILINGBUDGET = @MAILINGBUDGET;
end
else
begin
set @ORGANIZATIONEXCHANGERATEID = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);
set @ORGANIZATIONFIXEDCOST = dbo.[UFN_CURRENCY_CONVERT](@FIXEDCOST, @ORGANIZATIONEXCHANGERATEID);
set @ORGANIZATIONMAILINGBUDGET = dbo.[UFN_CURRENCY_CONVERT](@MAILINGBUDGET, @ORGANIZATIONEXCHANGERATEID);
end
--Insert the budget information...
insert into dbo.[MKTSEGMENTATIONBUDGET] (
[ID],
[BUDGETAMOUNT],
[FIXEDCOST],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[BASECURRENCYID],
[ORGANIZATIONBUDGETAMOUNT],
[ORGANIZATIONFIXEDCOST],
[ORGANIZATIONCURRENCYEXCHANGERATEID]
) values (
@ID,
@MAILINGBUDGET,
@FIXEDCOST,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
@BASECURRENCYID,
@ORGANIZATIONMAILINGBUDGET,
@ORGANIZATIONFIXEDCOST,
@ORGANIZATIONEXCHANGERATEID
);
-- add the mailing to the SegmentCalculationProcess table
exec dbo.[USP_MKTSEGMENTATIONSEGMENTCALCULATEPROCESS_SAVE] @ID, @CHANGEAGENTID;
-- add the mailing to the ActivationProcess table
exec dbo.[USP_MKTSEGMENTATIONACTIVATEPROCESS_SAVE] @ID, @CHANGEAGENTID;
-- add the mailing activation criteria
exec dbo.[USP_MKTSEGMENTATIONACTIVATE_SAVEFIELD] @ID, @CHANGEAGENTID, 'DFB4B8C1-5E9A-4C14-ACE3-01C096B53BA0', null, null, @APPEALID, @APPEALNAME, @APPEALDESCRIPTION;
-- add the effort to the exclusions process table (if an appeal mailing uses advanced name format processing options, this is necessary for those to
-- work correctly during export)
exec dbo.[USP_MKTSEGMENTATION_EFFORTEXCLUSIONSPROCESS_SAVE] @ID, @CHANGEAGENTID;
-- add the mailing export process
insert into dbo.[MKTSEGMENTATIONEXPORTPROCESS] (
[ID],
[SEGMENTATIONID],
[MAILEXPORTDEFINITIONID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
newid(),
@ID,
@EXPORTDEFINITIONID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
if @USEADDRESSPROCESSING = 1 and @ADDRESSPROCESSINGOPTIONID is not null
exec dbo.[USP_MKTSEGMENTATIONSEGMENTCACHEADDRESSES_CREATETABLE] @ID;
--Create the underlying segment information and grab the new mailing segment ID...
exec dbo.[USP_APPEALMAILING_CREATEORUPDATESEGMENT]
@APPEALMAILINGID = @ID,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@NAME = @NAME,
@IDSETREGISTERID = @IDSETREGISTERID,
@MKTPACKAGEID = @MKTPACKAGEID,
@HOUSEHOLDINGTYPECODE = @HOUSEHOLDINGTYPECODE,
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD = @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD,
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS = @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS,
@HOUSEHOLDINGONERECORDPERHOUSEHOLD = @HOUSEHOLDINGONERECORDPERHOUSEHOLD,
@EXCLUSIONDATETYPECODE = @EXCLUSIONDATETYPECODE,
@EXCLUSIONASOFDATE = @EXCLUSIONASOFDATE,
@EXCLUDEDECEASED = @EXCLUDEDECEASED,
@EXCLUDEINACTIVE = @EXCLUDEINACTIVE,
@EXCLUSIONS = @EXCLUSIONS,
@USEADDRESSPROCESSING = @USEADDRESSPROCESSING,
@ADDRESSPROCESSINGOPTIONID = @ADDRESSPROCESSINGOPTIONID,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
@CHANGEAGENTID = @CHANGEAGENTID,
@APPEALID = @APPEALID,
@BASECURRENCYID = @BASECURRENCYID;
--Because the appeal mailing name uniqueness depends on the appeal, we need to check for name uniqueness after the appeal mailing is created.
if dbo.[UFN_MKTSEGMENTATION_NAMEEXISTS](@NAME, 0, 1) = 1
begin
--Name is not unique, throw error.
raiserror('BBERR_MKTSEGMENTATION_VALIDNAME', 13, 1);
end
--The mailing was created in the SP above, because of ordering issues, so update the rest of the fields here...
update dbo.[APPEALMAILING] set
[LABELFILENAME] = @LABELFILENAME,
[LABELFILE] = @LABELFILE,
[CREATEOUTPUTIDSET] = @CREATEOUTPUTIDSET,
[OUTPUTIDSETNAME] = @OUTPUTIDSETNAME,
[OVERWRITEOUTPUTIDSET] = @OVERWRITEOUTPUTIDSET,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @ID;
--Save KPIs...
exec dbo.[USP_MKTSEGMENTATIONACTIVATEKPI_SAVEFIELD_FROMXML]
@ID,
@ACTIVATIONKPIS,
@USEKPISASDEFAULT,
@CHANGEAGENTID,
@CURRENTAPPUSERID;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;