USP_DATAFORMTEMPLATE_ADD_DIRECTMARKETINGEFFORTBATCHROW
The save procedure used by the add dataform template "Direct Marketing Effort Batch Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@BATCHID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@SEQUENCE | int | IN | Sequence |
@SEGMENTATIONID | uniqueidentifier | IN | Marketing effort |
@SEGMENTATIONCODEVALUEID | uniqueidentifier | IN | Marketing effort code description |
@SEGMENTATIONCODE | nvarchar(10) | IN | Marketing effort code |
@SOURCECODE | nvarchar(50) | IN | Source code |
@RECORDSOURCEID | uniqueidentifier | IN | Record source |
@LISTID | uniqueidentifier | IN | List |
@LISTNAME | nvarchar(100) | IN | List name |
@LISTDESCRIPTION | nvarchar(255) | IN | List description |
@LISTCODEVALUEID | uniqueidentifier | IN | List code description |
@LISTCODE | nvarchar(10) | IN | List code |
@LISTCATEGORYCODEID | uniqueidentifier | IN | List category |
@LISTVENDORID | uniqueidentifier | IN | List vendor |
@SEGMENTID | uniqueidentifier | IN | Segment |
@SEGMENTNAME | nvarchar(100) | IN | Segment name |
@SEGMENTDESCRIPTION | nvarchar(255) | IN | Segment description |
@SEGMENTCODEVALUEID | uniqueidentifier | IN | Segment code description |
@SEGMENTCODE | nvarchar(10) | IN | Segment code |
@SEGMENTCATEGORYCODEID | uniqueidentifier | IN | Segment category |
@SEGMENTTYPECODE | tinyint | IN | Segment type |
@SEGMENTEXPECTEDGIFTAMOUNT | money | IN | Segment expected gift amount |
@SEGMENTEXPECTEDRESPONSERATE | decimal(5, 2) | IN | Segment expected response rate |
@SEGMENTRENTALQUANTITY | int | IN | Segment rental quantity |
@SEGMENTEXCHANGEQUANTITY | int | IN | Segment exchange quantity |
@SEGMENTRENTALCOST | money | IN | Segment rental cost |
@SEGMENTRENTALCOSTBASISCODE | tinyint | IN | Segment rental cost basis |
@SEGMENTEXCHANGECOST | money | IN | Segment exchange cost |
@SEGMENTEXCHANGECOSTBASISCODE | tinyint | IN | Segment exchange cost basis |
@SEGMENTUSAGECODE | tinyint | IN | Segment usage |
@TESTSEGMENTID | uniqueidentifier | IN | Test segment |
@TESTSEGMENTNAME | nvarchar(100) | IN | Test segment name |
@TESTSEGMENTDESCRIPTION | nvarchar(255) | IN | Test segment description |
@TESTSEGMENTCODEVALUEID | uniqueidentifier | IN | Test segment code description |
@TESTSEGMENTCODE | nvarchar(10) | IN | Test segment code |
@TESTSEGMENTEXPECTEDGIFTAMOUNT | money | IN | Test segment expected gift amount |
@TESTSEGMENTEXPECTEDRESPONSERATE | decimal(5, 2) | IN | Test segment expected response rate |
@TESTSEGMENTQUANTITY | int | IN | Test segment quantity |
@PACKAGEID | uniqueidentifier | IN | Package |
@PACKAGENAME | nvarchar(100) | IN | Package name |
@PACKAGEDESCRIPTION | nvarchar(255) | IN | Package description |
@PACKAGECODEVALUEID | uniqueidentifier | IN | Package code description |
@PACKAGECODE | nvarchar(10) | IN | Package code |
@PACKAGECHANNELCODEVALUEID | uniqueidentifier | IN | Package channel code description |
@PACKAGECHANNELCODE | nvarchar(10) | IN | Package channel code |
@PACKAGECATEGORYCODEID | uniqueidentifier | IN | Package category |
@PACKAGETYPECODE | tinyint | IN | Package type |
@PACKAGECOST | money | IN | Package cost |
@PACKAGECOSTDISTRIBUTIONMETHODCODE | tinyint | IN | Package cost distribution method |
@BASECURRENCYID | uniqueidentifier | IN | Base currency |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@LISTSITEID | uniqueidentifier | IN | List site |
@PACKAGESITEID | uniqueidentifier | IN | Package site |
@SEGMENTSITEID | uniqueidentifier | IN | Segment site |
@LISTSITEISNULL | bit | IN | List site is null |
@PACKAGESITEISNULL | bit | IN | Package site is null |
@SEGMENTSITEISNULL | bit | IN | Segment site is null |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_ADD_DIRECTMARKETINGEFFORTBATCHROW]
(
@ID uniqueidentifier = null output,
@BATCHID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@SEQUENCE int,
@SEGMENTATIONID uniqueidentifier = null,
@SEGMENTATIONCODEVALUEID uniqueidentifier = null,
@SEGMENTATIONCODE nvarchar(10) = '',
@SOURCECODE nvarchar(50) = '',
@RECORDSOURCEID uniqueidentifier = null,
@LISTID uniqueidentifier = null,
@LISTNAME nvarchar(100) = '',
@LISTDESCRIPTION nvarchar(255) = '',
@LISTCODEVALUEID uniqueidentifier = null,
@LISTCODE nvarchar(10) = '',
@LISTCATEGORYCODEID uniqueidentifier = null,
@LISTVENDORID uniqueidentifier = null,
@SEGMENTID uniqueidentifier = null,
@SEGMENTNAME nvarchar(100) = '',
@SEGMENTDESCRIPTION nvarchar(255) = '',
@SEGMENTCODEVALUEID uniqueidentifier = null,
@SEGMENTCODE nvarchar(10) = '',
@SEGMENTCATEGORYCODEID uniqueidentifier = null,
@SEGMENTTYPECODE tinyint = 1,
@SEGMENTEXPECTEDGIFTAMOUNT money = 0,
@SEGMENTEXPECTEDRESPONSERATE decimal(5,2) = 0.00,
@SEGMENTRENTALQUANTITY int = 0,
@SEGMENTEXCHANGEQUANTITY int = 0,
@SEGMENTRENTALCOST money = 0,
@SEGMENTRENTALCOSTBASISCODE tinyint = 1,
@SEGMENTEXCHANGECOST money = 0,
@SEGMENTEXCHANGECOSTBASISCODE tinyint = 1,
@SEGMENTUSAGECODE tinyint = 1,
@TESTSEGMENTID uniqueidentifier = null,
@TESTSEGMENTNAME nvarchar(100) = '',
@TESTSEGMENTDESCRIPTION nvarchar(255) = '',
@TESTSEGMENTCODEVALUEID uniqueidentifier = null,
@TESTSEGMENTCODE nvarchar(10) = '',
@TESTSEGMENTEXPECTEDGIFTAMOUNT money = 0,
@TESTSEGMENTEXPECTEDRESPONSERATE decimal(5,2) = 0.00,
@TESTSEGMENTQUANTITY int = 0,
@PACKAGEID uniqueidentifier = null,
@PACKAGENAME nvarchar(100) = '',
@PACKAGEDESCRIPTION nvarchar(255) = '',
@PACKAGECODEVALUEID uniqueidentifier = null,
@PACKAGECODE nvarchar(10) = '',
@PACKAGECHANNELCODEVALUEID uniqueidentifier = null,
@PACKAGECHANNELCODE nvarchar(10) = '',
@PACKAGECATEGORYCODEID uniqueidentifier = null,
@PACKAGETYPECODE tinyint = 0,
@PACKAGECOST money = 0,
@PACKAGECOSTDISTRIBUTIONMETHODCODE tinyint = 0,
@BASECURRENCYID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@LISTSITEID uniqueidentifier = null,
@PACKAGESITEID uniqueidentifier = null,
@SEGMENTSITEID uniqueidentifier = null,
@LISTSITEISNULL bit = 0,
@PACKAGESITEISNULL bit = 0,
@SEGMENTSITEISNULL bit = 0
)
as
set nocount on;
declare @CURRENTDATE datetime;
declare @BATCHSEGMENTID uniqueidentifier;
declare @BATCHPACKAGEID uniqueidentifier;
declare @BATCHLISTID uniqueidentifier;
declare @BATCHTESTSEGMENTID uniqueidentifier;
declare @EXISTINGLIST bit = 0;
declare @EXISTINGSEGMENT bit = 0;
declare @EXISTINGTESTSEGMENT bit = 0;
declare @EXISTINGPACKAGE bit = 0;
declare @SAVELISTRECORD bit = 1;
declare @SAVETESTSEGMENTRECORD bit = 1;
declare @SEGMENTATIONSEGMENTID uniqueidentifier;
begin try
--This logic is only here so that we can successfully save exception batches during commit for new records, otherwise we'll hit errors
--because the IDs won't exist. Since the ID fields play double duty in the UI, we need to make sure we reset the fields correctly if
--they are new records. And since we're trying to save an exception batch, we don't know what the original batch number was, so we
--have to check the entire table to see if the primary key exists or not.
if exists(select 1 from dbo.[BATCHDIRECTMARKETINGEFFORTLIST] where [ID] = @LISTID)
set @LISTID = null;
if exists(select 1 from dbo.[BATCHDIRECTMARKETINGEFFORTSEGMENT] where [ID] = @SEGMENTID)
set @SEGMENTID = null;
if exists(select 1 from dbo.[BATCHDIRECTMARKETINGEFFORTTESTSEGMENT] where [ID] = @TESTSEGMENTID)
set @TESTSEGMENTID = null;
if exists(select 1 from dbo.[BATCHDIRECTMARKETINGEFFORTPACKAGE] where [ID] = @PACKAGEID)
set @PACKAGEID = null;
/***************************************/
/* Validate the data before we save it */
/***************************************/
exec dbo.[USP_DIRECTMARKETINGEFFORTBATCH_VALIDATEROW]
@BATCHID = @BATCHID,
@VALIDATEFORCOMMIT = 0,
@BATCHSEGMENTID = @BATCHSEGMENTID output,
@BATCHPACKAGEID = @BATCHPACKAGEID output,
@BATCHLISTID = @BATCHLISTID output,
@BATCHTESTSEGMENTID = @BATCHTESTSEGMENTID output,
@EXISTINGLIST = @EXISTINGLIST output,
@EXISTINGSEGMENT = @EXISTINGSEGMENT output,
@EXISTINGTESTSEGMENT = @EXISTINGTESTSEGMENT output,
@EXISTINGPACKAGE = @EXISTINGPACKAGE output,
@SEGMENTATIONSEGMENTID = @SEGMENTATIONSEGMENTID output,
@SAVELISTRECORD = @SAVELISTRECORD output,
@SAVETESTSEGMENTRECORD = @SAVETESTSEGMENTRECORD output,
@SEGMENTATIONID = @SEGMENTATIONID output,
@SEGMENTATIONCODEVALUEID = @SEGMENTATIONCODEVALUEID output,
@SEGMENTATIONCODE = @SEGMENTATIONCODE output,
@SOURCECODE = @SOURCECODE output,
@RECORDSOURCEID = @RECORDSOURCEID output,
@LISTID = @LISTID output,
@LISTNAME = @LISTNAME output,
@LISTDESCRIPTION = @LISTDESCRIPTION output,
@LISTCODEVALUEID = @LISTCODEVALUEID output,
@LISTCODE = @LISTCODE output,
@LISTCATEGORYCODEID = @LISTCATEGORYCODEID output,
@LISTVENDORID = @LISTVENDORID output,
@SEGMENTID = @SEGMENTID output,
@SEGMENTNAME = @SEGMENTNAME output,
@SEGMENTDESCRIPTION = @SEGMENTDESCRIPTION output,
@SEGMENTCODEVALUEID = @SEGMENTCODEVALUEID output,
@SEGMENTCODE = @SEGMENTCODE output,
@SEGMENTCATEGORYCODEID = @SEGMENTCATEGORYCODEID output,
@SEGMENTTYPECODE = @SEGMENTTYPECODE output,
@SEGMENTEXPECTEDGIFTAMOUNT = @SEGMENTEXPECTEDGIFTAMOUNT output,
@SEGMENTEXPECTEDRESPONSERATE = @SEGMENTEXPECTEDRESPONSERATE output,
@SEGMENTRENTALQUANTITY = @SEGMENTRENTALQUANTITY output,
@SEGMENTEXCHANGEQUANTITY = @SEGMENTEXCHANGEQUANTITY output,
@SEGMENTRENTALCOST = @SEGMENTRENTALCOST output,
@SEGMENTRENTALCOSTBASISCODE = @SEGMENTRENTALCOSTBASISCODE output,
@SEGMENTEXCHANGECOST = @SEGMENTEXCHANGECOST output,
@SEGMENTEXCHANGECOSTBASISCODE = @SEGMENTEXCHANGECOSTBASISCODE output,
@SEGMENTUSAGECODE = @SEGMENTUSAGECODE output,
@TESTSEGMENTID = @TESTSEGMENTID output,
@TESTSEGMENTNAME = @TESTSEGMENTNAME output,
@TESTSEGMENTDESCRIPTION = @TESTSEGMENTDESCRIPTION output,
@TESTSEGMENTCODEVALUEID = @TESTSEGMENTCODEVALUEID output,
@TESTSEGMENTCODE = @TESTSEGMENTCODE output,
@TESTSEGMENTEXPECTEDGIFTAMOUNT = @TESTSEGMENTEXPECTEDGIFTAMOUNT output,
@TESTSEGMENTEXPECTEDRESPONSERATE = @TESTSEGMENTEXPECTEDRESPONSERATE output,
@TESTSEGMENTQUANTITY = @TESTSEGMENTQUANTITY output,
@PACKAGEID = @PACKAGEID output,
@PACKAGENAME = @PACKAGENAME output,
@PACKAGEDESCRIPTION = @PACKAGEDESCRIPTION output,
@PACKAGECODEVALUEID = @PACKAGECODEVALUEID output,
@PACKAGECODE = @PACKAGECODE output,
@PACKAGECHANNELCODEVALUEID = @PACKAGECHANNELCODEVALUEID output,
@PACKAGECHANNELCODE = @PACKAGECHANNELCODE output,
@PACKAGECATEGORYCODEID = @PACKAGECATEGORYCODEID output,
@PACKAGETYPECODE = @PACKAGETYPECODE output,
@PACKAGECOST = @PACKAGECOST output,
@PACKAGECOSTDISTRIBUTIONMETHODCODE = @PACKAGECOSTDISTRIBUTIONMETHODCODE output,
@BASECURRENCYID = @BASECURRENCYID output,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@LISTSITEID = @LISTSITEID output,
@PACKAGESITEID = @PACKAGESITEID output,
@SEGMENTSITEID = @SEGMENTSITEID output;
/**************************************************/
/* Save the batch row into the appropriate tables */
/**************************************************/
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
--Save the list record (only if we need to)...
if @SAVELISTRECORD = 1
begin
if @EXISTINGLIST = 1
--For any values that were not specified pull the values from the existing record...
select
@LISTNAME = (case when @LISTNAME = '' then [NAME] else @LISTNAME end),
@LISTDESCRIPTION = (case when @LISTDESCRIPTION = '' then [DESCRIPTION] else @LISTDESCRIPTION end),
@LISTCODE = (case when @LISTCODE = '' then [CODE] else @LISTCODE end),
@LISTCODEVALUEID = (case when @LISTCODEVALUEID is null then [PARTDEFINITIONVALUESID] else @LISTCODEVALUEID end),
@LISTCATEGORYCODEID = (case when @LISTCATEGORYCODEID is null then [LISTCATEGORYCODEID] else @LISTCATEGORYCODEID end),
@LISTVENDORID = (case when @LISTVENDORID is null then [VENDORID] else @LISTVENDORID end),
@LISTSITEID = (case when @LISTSITEID = [SITEID] or (@LISTSITEISNULL = 0 and @LISTSITEID is null) then [SITEID] else @LISTSITEID end)
from dbo.[MKTLIST]
where [ID] = @LISTID;
if @BATCHLISTID is null
begin
set @BATCHLISTID = newid();
--Insert a new list record for the batch...
insert into dbo.[BATCHDIRECTMARKETINGEFFORTLIST] (
[ID],
[MKTLISTID],
[NAME],
[DESCRIPTION],
[CODE],
[CODEPARTDEFINITIONVALUESID],
[MKTLISTCATEGORYCODEID],
[VENDORID],
[SITEID],
[LISTSITEISNULL],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@BATCHLISTID,
@LISTID,
@LISTNAME,
@LISTDESCRIPTION,
@LISTCODE,
@LISTCODEVALUEID,
@LISTCATEGORYCODEID,
@LISTVENDORID,
@LISTSITEID,
@LISTSITEISNULL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
else
--The list record already exists in this table, so just update the existing row.
--Because of how batch works, the last row to update a list record wins.
update dbo.[BATCHDIRECTMARKETINGEFFORTLIST] set
[MKTLISTID] = @LISTID,
[NAME] = @LISTNAME,
[DESCRIPTION] = @LISTDESCRIPTION,
[CODE] = @LISTCODE,
[CODEPARTDEFINITIONVALUESID] = @LISTCODEVALUEID,
[MKTLISTCATEGORYCODEID] = @LISTCATEGORYCODEID,
[VENDORID] = @LISTVENDORID,
[SITEID] = @LISTSITEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @BATCHLISTID;
end
if @EXISTINGSEGMENT = 1
--For any values that were not specified pull the values from the existing record...
select
@SEGMENTNAME = (case when @SEGMENTNAME = '' then [NAME] else @SEGMENTNAME end),
@SEGMENTDESCRIPTION = (case when @SEGMENTDESCRIPTION = '' then [DESCRIPTION] else @SEGMENTDESCRIPTION end),
@SEGMENTCODE = (case when @SEGMENTCODE = '' then [CODE] else @SEGMENTCODE end),
@SEGMENTCODEVALUEID = (case when @SEGMENTCODEVALUEID is null then [PARTDEFINITIONVALUESID] else @SEGMENTCODEVALUEID end),
@SEGMENTCATEGORYCODEID = (case when @SEGMENTCATEGORYCODEID is null then [SEGMENTCATEGORYCODEID] else @SEGMENTCATEGORYCODEID end),
@SEGMENTSITEID = (case when @SEGMENTSITEID = [SITEID] or (@SEGMENTSITEISNULL = 0 and @SEGMENTSITEID is null) then [SITEID] else @SEGMENTSITEID end)
from dbo.[MKTSEGMENT]
where [ID] = @SEGMENTID;
--Save the segment record...
if @BATCHSEGMENTID is null
begin
set @BATCHSEGMENTID = newid();
--Insert a new segment record for the batch...
insert into dbo.[BATCHDIRECTMARKETINGEFFORTSEGMENT] (
[ID],
[MKTSEGMENTID],
[NAME],
[DESCRIPTION],
[CODE],
[CODEPARTDEFINITIONVALUESID],
[MKTSEGMENTCATEGORYCODEID],
[SEGMENTTYPECODE],
[SITEID],
[SEGMENTSITEISNULL],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@BATCHSEGMENTID,
@SEGMENTID,
@SEGMENTNAME,
@SEGMENTDESCRIPTION,
@SEGMENTCODE,
@SEGMENTCODEVALUEID,
@SEGMENTCATEGORYCODEID,
@SEGMENTTYPECODE,
@SEGMENTSITEID,
@SEGMENTSITEISNULL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
else
--The segment record already exists in this table, so just update the existing row.
--Because of how batch works, the last row to update a segment record wins.
update dbo.[BATCHDIRECTMARKETINGEFFORTSEGMENT] set
[MKTSEGMENTID] = @SEGMENTID,
[NAME] = @SEGMENTNAME,
[DESCRIPTION] = @SEGMENTDESCRIPTION,
[CODE] = @SEGMENTCODE,
[CODEPARTDEFINITIONVALUESID] = @SEGMENTCODEVALUEID,
[MKTSEGMENTCATEGORYCODEID] = @SEGMENTCATEGORYCODEID,
[SEGMENTTYPECODE] = @SEGMENTTYPECODE,
[SITEID] = @SEGMENTSITEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @BATCHSEGMENTID;
--Save the test segment record (only if we need to)...
if @SAVETESTSEGMENTRECORD = 1
begin
if @EXISTINGTESTSEGMENT = 1
--For any values that were not specified pull the values from the existing record...
select
@TESTSEGMENTNAME = (case when @TESTSEGMENTNAME = '' then [NAME] else @TESTSEGMENTNAME end),
@TESTSEGMENTDESCRIPTION = (case when @TESTSEGMENTDESCRIPTION = '' then [DESCRIPTION] else @TESTSEGMENTDESCRIPTION end),
@TESTSEGMENTCODE = (case when @TESTSEGMENTCODE = '' then [TESTSEGMENTCODE] else @TESTSEGMENTCODE end),
@TESTSEGMENTCODEVALUEID = (case when @TESTSEGMENTCODEVALUEID is null then [TESTPARTDEFINITIONVALUESID] else @TESTSEGMENTCODEVALUEID end),
@TESTSEGMENTEXPECTEDGIFTAMOUNT = (case when @TESTSEGMENTEXPECTEDGIFTAMOUNT = 0 then [GIFTAMOUNT] else @TESTSEGMENTEXPECTEDGIFTAMOUNT end),
@TESTSEGMENTEXPECTEDRESPONSERATE = (case when @TESTSEGMENTEXPECTEDRESPONSERATE = 0.00 then [RESPONSERATE] else @TESTSEGMENTEXPECTEDRESPONSERATE end),
@TESTSEGMENTQUANTITY = (case when @TESTSEGMENTQUANTITY = 0 and [SAMPLESIZETYPECODE] = 1 then [SAMPLESIZE] else @TESTSEGMENTQUANTITY end)
from dbo.[MKTSEGMENTATIONTESTSEGMENT]
where [ID] = @TESTSEGMENTID;
--Because you cannot reuse the same test segment on multiple segments, we always insert a new row
--into the batch temp tables here. We do not need an update statement for this reason.
set @BATCHTESTSEGMENTID = newid();
--Insert a new test segment record for the batch...
insert into dbo.[BATCHDIRECTMARKETINGEFFORTTESTSEGMENT] (
[ID],
[MKTSEGMENTATIONTESTSEGMENTID],
[NAME],
[DESCRIPTION],
[CODE],
[CODEPARTDEFINITIONVALUESID],
[EXPECTEDGIFTAMOUNT],
[EXPECTEDRESPONSERATE],
[QUANTITY],
[BASECURRENCYID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@BATCHTESTSEGMENTID,
@TESTSEGMENTID,
@TESTSEGMENTNAME,
@TESTSEGMENTDESCRIPTION,
@TESTSEGMENTCODE,
@TESTSEGMENTCODEVALUEID,
@TESTSEGMENTEXPECTEDGIFTAMOUNT,
@TESTSEGMENTEXPECTEDRESPONSERATE,
@TESTSEGMENTQUANTITY,
@BASECURRENCYID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
if @EXISTINGPACKAGE = 1
--For any values that were not specified pull the values from the existing record...
select
@PACKAGENAME = (case when @PACKAGENAME = '' then [NAME] else @PACKAGENAME end),
@PACKAGEDESCRIPTION = (case when @PACKAGEDESCRIPTION = '' then [DESCRIPTION] else @PACKAGEDESCRIPTION end),
@PACKAGECODE = (case when @PACKAGECODE = '' then [CODE] else @PACKAGECODE end),
@PACKAGECODEVALUEID = (case when @PACKAGECODEVALUEID is null then [PARTDEFINITIONVALUESID] else @PACKAGECODEVALUEID end),
@PACKAGECHANNELCODE = (case when @PACKAGECHANNELCODE = '' then [CHANNELSOURCECODE] else @PACKAGECHANNELCODE end),
@PACKAGECHANNELCODEVALUEID = (case when @PACKAGECHANNELCODEVALUEID is null then [CHANNELPARTDEFINITIONVALUESID] else @PACKAGECHANNELCODEVALUEID end),
@PACKAGECATEGORYCODEID = (case when @PACKAGECATEGORYCODEID is null then [PACKAGECATEGORYCODEID] else @PACKAGECATEGORYCODEID end),
@PACKAGECOST = (case when @PACKAGECOST = 0 then [UNITCOST] else @PACKAGECOST end),
@PACKAGECOSTDISTRIBUTIONMETHODCODE = (case when @PACKAGECOSTDISTRIBUTIONMETHODCODE = 0 then [COSTDISTRIBUTIONMETHODCODE] else @PACKAGECOSTDISTRIBUTIONMETHODCODE end),
@PACKAGESITEID = (case when @PACKAGESITEID = [SITEID] or (@PACKAGESITEISNULL = 0 and @PACKAGESITEID is null) then [SITEID] else @PACKAGESITEID end)
from dbo.[MKTPACKAGE]
where [ID] = @PACKAGEID;
--Save the package record...
if @BATCHPACKAGEID is null
begin
set @BATCHPACKAGEID = newid();
--Insert a new package record for the batch...
insert into dbo.[BATCHDIRECTMARKETINGEFFORTPACKAGE] (
[ID],
[MKTPACKAGEID],
[NAME],
[DESCRIPTION],
[CODE],
[CODEPARTDEFINITIONVALUESID],
[CHANNELCODE],
[CHANNELCODEPARTDEFINITIONVALUESID],
[MKTPACKAGECATEGORYCODEID],
[PACKAGETYPECODE],
[COST],
[COSTDISTRIBUTIONMETHODCODE],
[BASECURRENCYID],
[SITEID],
[PACKAGESITEISNULL],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@BATCHPACKAGEID,
@PACKAGEID,
@PACKAGENAME,
@PACKAGEDESCRIPTION,
@PACKAGECODE,
@PACKAGECODEVALUEID,
@PACKAGECHANNELCODE,
@PACKAGECHANNELCODEVALUEID,
@PACKAGECATEGORYCODEID,
@PACKAGETYPECODE,
@PACKAGECOST,
@PACKAGECOSTDISTRIBUTIONMETHODCODE,
@BASECURRENCYID,
@PACKAGESITEID,
@PACKAGESITEISNULL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
else
--The package record already exists in this table, so just update the existing row.
--Because of how batch works, the last row to update a package record wins.
update dbo.[BATCHDIRECTMARKETINGEFFORTPACKAGE] set
[MKTPACKAGEID] = @PACKAGEID,
[NAME] = @PACKAGENAME,
[DESCRIPTION] = @PACKAGEDESCRIPTION,
[CODE] = @PACKAGECODE,
[CODEPARTDEFINITIONVALUESID] = @PACKAGECODEVALUEID,
[CHANNELCODE] = @PACKAGECHANNELCODE,
[CHANNELCODEPARTDEFINITIONVALUESID] = @PACKAGECHANNELCODEVALUEID,
[MKTPACKAGECATEGORYCODEID] = @PACKAGECATEGORYCODEID,
[PACKAGETYPECODE] = @PACKAGETYPECODE,
[COST] = @PACKAGECOST,
[COSTDISTRIBUTIONMETHODCODE] = @PACKAGECOSTDISTRIBUTIONMETHODCODE,
[BASECURRENCYID] = @BASECURRENCYID,
[SITEID] = @PACKAGESITEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @BATCHPACKAGEID;
if @EXISTINGSEGMENT = 1 and @SEGMENTATIONSEGMENTID is not null
--For any values that were not specified pull the values from the existing record...
select
@TESTSEGMENTCODE = (case when @TESTSEGMENTCODE = '' then [MKTSEGMENTATIONSEGMENT].[TESTSEGMENTCODE] else @TESTSEGMENTCODE end),
@TESTSEGMENTCODEVALUEID = (case when @TESTSEGMENTCODEVALUEID is null then [MKTSEGMENTATIONSEGMENT].[TESTPARTDEFINITIONVALUESID] else @TESTSEGMENTCODEVALUEID end),
@SEGMENTEXPECTEDGIFTAMOUNT = (case when @SEGMENTEXPECTEDGIFTAMOUNT = 0 then [MKTSEGMENTATIONSEGMENT].[GIFTAMOUNT] else @SEGMENTEXPECTEDGIFTAMOUNT end),
@SEGMENTEXPECTEDRESPONSERATE = (case when @SEGMENTEXPECTEDRESPONSERATE = 0.00 then [MKTSEGMENTATIONSEGMENT].[RESPONSERATE] else @SEGMENTEXPECTEDRESPONSERATE end),
@SEGMENTRENTALQUANTITY = (case when [MKTSEGMENTATIONSEGMENTLIST].[ID] is not null and @SEGMENTRENTALQUANTITY = 0 then [MKTSEGMENTATIONSEGMENTLIST].[RENTALQUANTITY] else @SEGMENTRENTALQUANTITY end),
@SEGMENTEXCHANGEQUANTITY = (case when [MKTSEGMENTATIONSEGMENTLIST].[ID] is not null and @SEGMENTEXCHANGEQUANTITY = 0 then [MKTSEGMENTATIONSEGMENTLIST].[EXCHANGEQUANTITY] else @SEGMENTEXCHANGEQUANTITY end),
@SEGMENTRENTALCOST = (case when [MKTSEGMENTATIONSEGMENTLIST].[ID] is not null and @SEGMENTRENTALCOST = 0 then [MKTSEGMENTATIONSEGMENTLIST].[RENTALCOSTADJUSTMENT] else @SEGMENTRENTALCOST end),
@SEGMENTRENTALCOSTBASISCODE = (case when [MKTSEGMENTATIONSEGMENTLIST].[ID] is not null and @SEGMENTRENTALCOSTBASISCODE = 1 then [MKTSEGMENTATIONSEGMENTLIST].[RENTALCOSTADJUSTMENTBASISCODE] else @SEGMENTRENTALCOSTBASISCODE end),
@SEGMENTEXCHANGECOST = (case when [MKTSEGMENTATIONSEGMENTLIST].[ID] is not null and @SEGMENTEXCHANGECOST = 0 then [MKTSEGMENTATIONSEGMENTLIST].[EXCHANGECOSTADJUSTMENT] else @SEGMENTEXCHANGECOST end),
@SEGMENTEXCHANGECOSTBASISCODE = (case when [MKTSEGMENTATIONSEGMENTLIST].[ID] is not null and @SEGMENTEXCHANGECOSTBASISCODE = 1 then [MKTSEGMENTATIONSEGMENTLIST].[EXCHANGECOSTADJUSTMENTBASISCODE] else @SEGMENTEXCHANGECOSTBASISCODE end),
@SEGMENTUSAGECODE = (case when [MKTSEGMENTATIONSEGMENTLIST].[ID] is not null and @SEGMENTUSAGECODE = 1 then [MKTSEGMENTATIONSEGMENT].[USAGECODE] else @SEGMENTUSAGECODE end)
from dbo.[MKTSEGMENTATIONSEGMENT]
left join dbo.[MKTSEGMENTATIONSEGMENTLIST] on [MKTSEGMENTATIONSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTATIONSEGMENTID;
--For any values that were not specified pull the values from the existing record...
select
@SEGMENTATIONCODE = (case when @SEGMENTATIONCODE = '' then [CODE] else @SEGMENTATIONCODE end),
@SEGMENTATIONCODEVALUEID = (case when @SEGMENTATIONCODEVALUEID is null then [PARTDEFINITIONVALUESID] else @SEGMENTATIONCODEVALUEID end)
from dbo.[MKTSEGMENTATION]
where [ID] = @SEGMENTATIONID;
--Save the main batch row...
insert into dbo.[BATCHDIRECTMARKETINGEFFORT] (
[ID],
[BATCHID],
[SEQUENCE],
[SEGMENTATIONID],
[SEGMENTATIONCODE],
[SEGMENTATIONCODEPARTDEFINITIONVALUESID],
[SOURCECODE],
[RECORDSOURCEID],
[BATCHDIRECTMARKETINGEFFORTSEGMENTID],
[BATCHDIRECTMARKETINGEFFORTPACKAGEID],
[BATCHDIRECTMARKETINGEFFORTLISTID],
[BATCHDIRECTMARKETINGEFFORTTESTSEGMENTID],
[SEGMENTTESTCODE],
[SEGMENTTESTCODEPARTDEFINITIONVALUESID],
[SEGMENTEXPECTEDGIFTAMOUNT],
[SEGMENTEXPECTEDRESPONSERATE],
[SEGMENTRENTALQUANTITY],
[SEGMENTEXCHANGEQUANTITY],
[SEGMENTRENTALCOST],
[SEGMENTRENTALCOSTBASISCODE],
[SEGMENTEXCHANGECOST],
[SEGMENTEXCHANGECOSTBASISCODE],
[SEGMENTUSAGECODE],
[BASECURRENCYID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@ID,
@BATCHID,
@SEQUENCE,
@SEGMENTATIONID,
@SEGMENTATIONCODE,
@SEGMENTATIONCODEVALUEID,
@SOURCECODE,
@RECORDSOURCEID,
@BATCHSEGMENTID,
@BATCHPACKAGEID,
@BATCHLISTID,
@BATCHTESTSEGMENTID,
(case when @SAVETESTSEGMENTRECORD = 1 then '' else @TESTSEGMENTCODE end),
(case when @SAVETESTSEGMENTRECORD = 1 then null else @TESTSEGMENTCODEVALUEID end),
@SEGMENTEXPECTEDGIFTAMOUNT,
@SEGMENTEXPECTEDRESPONSERATE,
@SEGMENTRENTALQUANTITY,
@SEGMENTEXCHANGEQUANTITY,
@SEGMENTRENTALCOST,
@SEGMENTRENTALCOSTBASISCODE,
@SEGMENTEXCHANGECOST,
@SEGMENTEXCHANGECOSTBASISCODE,
@SEGMENTUSAGECODE,
@BASECURRENCYID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;