USP_DATAFORMTEMPLATE_EDITLOAD_MKTSEGMENTATIONSEGMENT_MULTIPLE_4
The load procedure used by the edit dataform template "Marketing Effort Multiple Segment Edit Form 4"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | nvarchar(max) | IN | The input ID parameter used to load the fields defined on the form. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@SEGMENTATIONID | uniqueidentifier | INOUT | Marketing effort |
@ASKLADDER | xml | INOUT | Ask ladder |
@ASKLADDERLOADED | bit | INOUT | Ask ladder loaded |
@ASKLADDERLOCKED | bit | INOUT | Ask ladder locked |
@TESTSEGMENTCODE | nvarchar(10) | INOUT | Test segment |
@TESTSEGMENTCODELOADED | bit | INOUT | Test segment code loaded |
@PACKAGEID | uniqueidentifier | INOUT | Package |
@PACKAGECODE | nvarchar(10) | INOUT | Package code |
@PACKAGELOADED | bit | INOUT | Package loaded |
@RESPONSERATE | decimal(5, 2) | INOUT | Response rate |
@RESPONSERATELOADED | bit | INOUT | Response rate loaded |
@GIFTAMOUNT | money | INOUT | Gift amount |
@GIFTAMOUNTLOADED | bit | INOUT | Gift amount loaded |
@SAMPLESIZE | int | INOUT | Sample size |
@SAMPLESIZETYPECODE | tinyint | INOUT | Sample size type |
@SAMPLESIZEMETHODCODE | tinyint | INOUT | Sample size method |
@SAMPLESIZEEXCLUDEREMAINDER | bit | INOUT | Exclude remaining records from the marketing effort |
@SAMPLESIZELOADED | bit | INOUT | Sample size loaded |
@SAMPLESIZELOCKED | bit | INOUT | Sample size locked |
@SOURCECODEID | uniqueidentifier | INOUT | Source code ID |
@SEGMENTATIONSITEID | uniqueidentifier | INOUT | Marketing effort site ID |
@TSLONG | bigint | INOUT | Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record. |
@MAILINGTYPECODE | tinyint | INOUT | Marketing effort type code |
@ISTESTMAILING | bit | INOUT | Is test marketing effort |
@PACKAGECHANNELCODE | tinyint | INOUT | Package channel code |
@USEADDRESSPROCESSING | bit | INOUT | Use address processing? |
@ADDRESSPROCESSINGOPTIONID | uniqueidentifier | INOUT | Address processing option ID |
@ISBBEC | bit | INOUT | Is BBEC? |
@ADDRESSPROCESSINGOPTIONSLOADED | bit | INOUT | Address processing options loaded |
@OVERRIDEADDRESSPROCESSING | bit | INOUT | Override address processing / name format rules |
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE | tinyint | INOUT | Consider seasonal addresses as of |
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE | datetime | INOUT | Consider seasonal addresses as of |
@NAMEFORMATPARAMETERID | uniqueidentifier | INOUT | Name format options |
@SEGMENTTYPECODE | tinyint | INOUT | Segment type code |
@TESTSEGMENTCODEVALUEID | uniqueidentifier | INOUT | Test segment code value ID |
@PACKAGECODEVALUEID | uniqueidentifier | INOUT | Package code value ID |
@ITEMLIST | xml | INOUT | Items |
@CHANNELSOURCECODE | nvarchar(10) | INOUT | Channel source code |
@CHANNELSOURCECODEVALUEID | uniqueidentifier | INOUT | Channel code value ID |
@USERDEFINEDLOADEDSOURCECODES | xml | INOUT | Items |
@OVERRIDEBUSINESSUNITSLOADED | bit | INOUT | Override business units loaded |
@OVERRIDEBUSINESSUNITS | bit | INOUT | Override business units |
@BUSINESSUNITS | xml | INOUT | Business units |
@BASECURRENCYID | uniqueidentifier | INOUT | Base currency ID |
@PACKAGEADDDATAFORMCONTEXT | nvarchar(128) | INOUT | Package add data form context |
@EXCLUDE | bit | INOUT | Exclude from effort but show counts |
@EXCLUDELOADED | bit | INOUT | Segment |
@EXCLUDELOCKED | bit | INOUT | Exclude locked |
@ISBBAC | bit | INOUT | |
@ISHISTORICAL | bit | INOUT | |
@CHANNELCODE | tinyint | INOUT | |
@ALLOWEFFORTBUSINESSUNITSOVERRIDE | bit | INOUT | |
@ALLOWEFFORTADDRESSPROCESSINGOVERRIDE | bit | INOUT |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDITLOAD_MKTSEGMENTATIONSEGMENT_MULTIPLE_4]
(
@ID nvarchar(max),
@CURRENTAPPUSERID uniqueidentifier,
@DATALOADED bit = 0 output,
@SEGMENTATIONID uniqueidentifier = null output,
@ASKLADDER xml = null output,
@ASKLADDERLOADED bit = null output,
@ASKLADDERLOCKED bit = null output,
@TESTSEGMENTCODE nvarchar(10) = null output,
@TESTSEGMENTCODELOADED bit = null output,
@PACKAGEID uniqueidentifier = null output,
@PACKAGECODE nvarchar(10) = null output,
@PACKAGELOADED bit = null output,
@RESPONSERATE decimal(5,2) = null output,
@RESPONSERATELOADED bit = null output,
@GIFTAMOUNT money = null output,
@GIFTAMOUNTLOADED bit = null output,
@SAMPLESIZE int = null output,
@SAMPLESIZETYPECODE tinyint = null output,
@SAMPLESIZEMETHODCODE tinyint = null output,
@SAMPLESIZEEXCLUDEREMAINDER bit = null output,
@SAMPLESIZELOADED bit = null output,
@SAMPLESIZELOCKED bit = null output,
@SOURCECODEID uniqueidentifier = null output,
@SEGMENTATIONSITEID uniqueidentifier = null output,
@TSLONG bigint = 0 output,
@MAILINGTYPECODE tinyint = null output,
@ISTESTMAILING bit = null output,
@PACKAGECHANNELCODE tinyint = null output,
@USEADDRESSPROCESSING bit = null output,
@ADDRESSPROCESSINGOPTIONID uniqueidentifier = null output,
@ISBBEC bit = null output,
@ADDRESSPROCESSINGOPTIONSLOADED bit = null output,
@OVERRIDEADDRESSPROCESSING bit = null output,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint = null output,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime = null output,
@NAMEFORMATPARAMETERID uniqueidentifier = null output,
@SEGMENTTYPECODE tinyint = null output,
@TESTSEGMENTCODEVALUEID uniqueidentifier = null output,
@PACKAGECODEVALUEID uniqueidentifier = null output,
@ITEMLIST xml = null output,
@CHANNELSOURCECODE nvarchar(10) = null output,
@CHANNELSOURCECODEVALUEID uniqueidentifier = null output,
@USERDEFINEDLOADEDSOURCECODES xml = null output,
@OVERRIDEBUSINESSUNITSLOADED bit = null output,
@OVERRIDEBUSINESSUNITS bit = null output,
@BUSINESSUNITS xml = null output,
@BASECURRENCYID uniqueidentifier = null output,
@PACKAGEADDDATAFORMCONTEXT nvarchar(128) = null output,
@EXCLUDE bit = null output,
@EXCLUDELOADED bit = null output,
@EXCLUDELOCKED bit = null output,
@ISBBAC bit = null output,
@ISHISTORICAL bit = null output,
@CHANNELCODE tinyint = null output,
@ALLOWEFFORTBUSINESSUNITSOVERRIDE bit = null output,
@ALLOWEFFORTADDRESSPROCESSINGOVERRIDE bit = null output
)
as
set nocount on;
set @DATALOADED = 0;
set @TSLONG = 0;
declare @CURRENTDATE datetime;
declare @SEGMENTATIONSEGMENTS table([ID] uniqueidentifier primary key, [SEGMENTTYPECODE] tinyint);
declare @START integer;
declare @POS integer;
declare @SEGMENTATIONSEGMENTIDS xml;
set @ISBBEC = (case when dbo.[UFN_INSTALLEDPRODUCTS_PRODUCTIS]('BB9873D7-F1ED-430A-8AB4-F09F47056538') = 0 then 1 else 0 end);
set @ISBBAC = dbo.[UFN_MKTCOMMON_PRODUCTISALTRU]();
set @CURRENTDATE = getdate();
/* parse out the multiple segment IDs */
set @START = 0;
select @POS = charindex(',', @ID, @START);
while (@POS <> 0)
begin
insert into @SEGMENTATIONSEGMENTS
select substring(@ID, @START, @POS - @START), 0;
set @START = @POS + 1;
select @POS = charindex(',', @ID, @START);
end;
if len(@ID) > 0
insert into @SEGMENTATIONSEGMENTS
select substring(@ID, @START, 37), 0;
update @SEGMENTATIONSEGMENTS
set [SEGMENTTYPECODE] = [MKTSEGMENT].[SEGMENTTYPECODE]
from @SEGMENTATIONSEGMENTS as [S]
inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [S].[ID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID];
-- when used with a standard mailing, this form can be used to edit both constituent and list segments at the same time
-- if this occurs, we want the segment type to register as constituent (1), not list (2), so that address processing options show up
-- the address processing options will not apply to list segments
select
@SEGMENTTYPECODE = min([SEGMENTTYPECODE])
from @SEGMENTATIONSEGMENTS;
set @SEGMENTATIONSEGMENTIDS = (select [ID] from @SEGMENTATIONSEGMENTS for xml raw('ITEM'), type, elements, root('ITEMLIST'), binary base64);
if not exists (select top 1 1 from dbo.[MKTSEGMENTATIONSEGMENT] right outer join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] where [MKTSEGMENTATIONSEGMENT].[ID] is null)
set @DATALOADED = 1;
select top 1
@SEGMENTATIONID = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID],
@SOURCECODEID = [MKTSEGMENTATION].[SOURCECODEID],
@SEGMENTATIONSITEID = [MKTSEGMENTATION].[SITEID],
@MAILINGTYPECODE = [MKTSEGMENTATION].[MAILINGTYPECODE],
@ISTESTMAILING = (case when [MKTSEGMENTATION].[PARENTSEGMENTATIONID] is not null then 1 else 0 end),
@BASECURRENCYID = [MKTSEGMENTATION].[BASECURRENCYID],
@PACKAGEADDDATAFORMCONTEXT = '0|' + convert(nvarchar(36), [MKTSEGMENTATIONSEGMENT].[BASECURRENCYID]),
@ISHISTORICAL = [MKTSEGMENT].[ISHISTORICAL],
@ALLOWEFFORTBUSINESSUNITSOVERRIDE = isnull([MKTCOMMUNICATIONTEMPLATE].[ALLOWEFFORTBUSINESSUNITSOVERRIDE], 1),
@CHANNELCODE = isnull([MKTSEGMENTATION].[CHANNELCODE], 255),
@ALLOWEFFORTADDRESSPROCESSINGOVERRIDE = isnull([MKTCOMMUNICATIONTEMPLATE].[ALLOWEFFORTADDRESSPROCESSINGOVERRIDE], 1)
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
left outer join dbo.[MKTCOMMUNICATIONTEMPLATE] on [MKTCOMMUNICATIONTEMPLATE].[MKTSEGMENTATIONID] = [MKTSEGMENTATION].[ID];
/* Check if the mailing is currently being activated */
declare @R int;
exec @R = dbo.[USP_MKTSEGMENTATION_CHECKACTIVATION] @SEGMENTATIONID;
if @R <> 0
return 1;
/* common exclude */
if (select count(distinct([MKTSEGMENTATIONSEGMENT].[EXCLUDE])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1
select top 1
@EXCLUDE = [EXCLUDE],
@EXCLUDELOADED = 1,
@EXCLUDELOCKED = 0
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID];
else
begin
set @EXCLUDE = 0;
set @EXCLUDELOADED = 0;
end
if exists (select top 1 1 from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID] where [MKTSEGMENT].[SEGMENTTYPECODE] not in (1, 3, 5))
-- if any of the segments are list segments (or not house file / consolidated segments), EXCLUDE cannot be changed
set @EXCLUDELOCKED = 1;
else
set @EXCLUDELOCKED = 0;
/* common record source and common ask ladder */
if (select count(distinct([MKTSEGMENT].[QUERYVIEWCATALOGID])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]) = 1
begin
if (select count(distinct(isnull([MKTSEGMENTATIONSEGMENT].[ASKLADDERID], '00000000-0000-0000-0000-000000000000'))) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1
select top 1
@ASKLADDER = (select
[QUERYVIEWCATALOG].[ID] as [RECORDSOURCEID],
[QUERYVIEWCATALOG].[DISPLAYNAME] as [RECORDSOURCENAME],
(select top 1 [T1].[ASKLADDERID] from dbo.[MKTSEGMENTATIONSEGMENT] as [T1] inner join @SEGMENTATIONSEGMENTS as [T2] on [T2].[ID] = [T1].[ID]) as [ASKLADDERID]
from dbo.[MKTRECORDSOURCE]
inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [MKTRECORDSOURCE].[ID]
where [QUERYVIEWCATALOG].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
for xml raw('ITEM'), type, elements, root('ASKLADDER'), binary base64),
@ASKLADDERLOADED = 1,
@ASKLADDERLOCKED = 0
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID];
else
select top 1
@ASKLADDER = (select
[QUERYVIEWCATALOG].[ID] as [RECORDSOURCEID],
[QUERYVIEWCATALOG].[DISPLAYNAME] as [RECORDSOURCENAME]
from dbo.[MKTRECORDSOURCE]
inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [MKTRECORDSOURCE].[ID]
where [QUERYVIEWCATALOG].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
for xml raw('ITEM'), type, elements, root('ASKLADDER'), binary base64),
@ASKLADDERLOADED = 0,
@ASKLADDERLOCKED = 0
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID];
end
else
begin
set @ASKLADDERLOADED = 0;
set @ASKLADDERLOCKED = 1;
end
/* common test segment code */
if (select COUNT(distinct([TESTSEGMENTCODE])) from dbo.MKTSEGMENTATIONSEGMENT inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1
select top 1
@TESTSEGMENTCODE = [MKTSEGMENTATIONSEGMENT].[TESTSEGMENTCODE],
@TESTSEGMENTCODEVALUEID = [MKTSEGMENTATIONSEGMENT].[TESTPARTDEFINITIONVALUESID],
@TESTSEGMENTCODELOADED = 1
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
else
begin
set @TESTSEGMENTCODELOADED = 0;
set @TESTSEGMENTCODEVALUEID = null;
set @TESTSEGMENTCODE = '';
end
/* common package */
if @MAILINGTYPECODE <> 1 and (select count(distinct([PACKAGEID])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1
select top 1
@PACKAGEID = [MKTSEGMENTATIONSEGMENT].[PACKAGEID],
@PACKAGECHANNELCODE = [MKTPACKAGE].[CHANNELCODE],
@PACKAGECODE = [MKTPACKAGE].[CODE],
@PACKAGECODEVALUEID = [MKTPACKAGE].[PARTDEFINITIONVALUESID],
@CHANNELSOURCECODE = [MKTPACKAGE].[CHANNELSOURCECODE],
@CHANNELSOURCECODEVALUEID = [MKTPACKAGE].[CHANNELPARTDEFINITIONVALUESID],
@PACKAGELOADED = 1
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join [MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONSEGMENT].[PACKAGEID];
else
begin
set @PACKAGELOADED = 0;
set @PACKAGECHANNELCODE = 255;
set @PACKAGECODEVALUEID = null;
set @PACKAGECODE = '';
set @CHANNELSOURCECODEVALUEID = null;
set @CHANNELSOURCECODE = '';
end
/* common response rate */
if (select count(distinct([RESPONSERATE])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1
select top 1
@RESPONSERATE = [RESPONSERATE],
@RESPONSERATELOADED = 1
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID];
else
begin
set @RESPONSERATE = 5;
set @RESPONSERATELOADED = 0;
end
/* common gift amount */
if (select count(distinct([GIFTAMOUNT])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1
select top 1
@GIFTAMOUNT = [GIFTAMOUNT],
@GIFTAMOUNTLOADED = 1
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID];
else
set @GIFTAMOUNTLOADED = 0;
/* common sample size */
if (@MAILINGTYPECODE = 1 and @ISTESTMAILING = 0) or exists(select 1 from @SEGMENTATIONSEGMENTS as [S] where dbo.[UFN_MKTSEGMENTATIONSEGMENT_ISVENDORMANAGEDLIST]([S].[ID]) = 1)
begin
set @SAMPLESIZE = 100;
set @SAMPLESIZETYPECODE = 0;
set @SAMPLESIZEMETHODCODE = 0;
set @SAMPLESIZEEXCLUDEREMAINDER = 1;
set @SAMPLESIZELOADED = 0;
set @SAMPLESIZELOCKED = 1;
set @EXCLUDELOCKED = 1;
end
else
begin
if (select count(distinct([SAMPLESIZETYPECODE])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1 and
(select count(distinct([SAMPLESIZE])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1 and
(select count(distinct([SAMPLESIZEMETHODCODE])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1 and
(select count(distinct([SAMPLESIZEEXCLUDEREMAINDER])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1
select top 1
@SAMPLESIZE = [SAMPLESIZE],
@SAMPLESIZETYPECODE = [SAMPLESIZETYPECODE],
@SAMPLESIZEMETHODCODE = [SAMPLESIZEMETHODCODE],
@SAMPLESIZEEXCLUDEREMAINDER = [SAMPLESIZEEXCLUDEREMAINDER],
@SAMPLESIZELOADED = 1
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID];
else
begin
set @SAMPLESIZE = 100;
set @SAMPLESIZETYPECODE = 0;
set @SAMPLESIZEMETHODCODE = 0;
set @SAMPLESIZEEXCLUDEREMAINDER = 1;
set @SAMPLESIZELOADED = 0;
end
set @SAMPLESIZELOCKED = 0;
end
/* common address processing options */
if (select count(distinct([OVERRIDEADDRESSPROCESSING])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] where [S].[SEGMENTTYPECODE] <> 2) = 1 and
(select count(distinct([USEADDRESSPROCESSING])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] where [S].[SEGMENTTYPECODE] <> 2) = 1 and
(select count(distinct(isnull([ADDRESSPROCESSINGOPTIONID], '00000000-0000-0000-0000-000000000000'))) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] where [S].[SEGMENTTYPECODE] <> 2) = 1 and
(select count(distinct([ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE])) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] where [S].[SEGMENTTYPECODE] <> 2) = 1 and
(select count(distinct(isnull([ADDRESSPROCESSINGOPTIONSEASONALASOFDATE], @CURRENTDATE))) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] where [S].[SEGMENTTYPECODE] <> 2) = 1 and
(select count(distinct(isnull([NAMEFORMATPARAMETERID], '00000000-0000-0000-0000-000000000000'))) from dbo.[MKTSEGMENTATIONSEGMENT] inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID] where [S].[SEGMENTTYPECODE] <> 2) = 1
select top 1
@OVERRIDEADDRESSPROCESSING = [OVERRIDEADDRESSPROCESSING],
@USEADDRESSPROCESSING = [USEADDRESSPROCESSING],
@ADDRESSPROCESSINGOPTIONID = [ADDRESSPROCESSINGOPTIONID],
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = [ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = [ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
@NAMEFORMATPARAMETERID = [NAMEFORMATPARAMETERID],
@ADDRESSPROCESSINGOPTIONSLOADED = 1
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
where [S].[SEGMENTTYPECODE] <> 2;
else
begin
set @OVERRIDEADDRESSPROCESSING = 0;
set @USEADDRESSPROCESSING = 0;
set @ADDRESSPROCESSINGOPTIONID = null;
set @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = 0;
set @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = null;
set @NAMEFORMATPARAMETERID = null;
set @ADDRESSPROCESSINGOPTIONSLOADED = 0;
end
-- this is for cosmetic purposes, so that the drop-downs displaying these fields show the defaults instead of blanks in
-- situations where they're not enabled
if @ADDRESSPROCESSINGOPTIONID is null
select top 1 @ADDRESSPROCESSINGOPTIONID = [ID] from dbo.[ADDRESSPROCESSINGOPTION] where [ISDEFAULT] = 1 and dbo.[UFN_SITEALLOWEDFORUSER](@CURRENTAPPUSERID, [SITEID]) = 1;
if @NAMEFORMATPARAMETERID is null
select top 1 @NAMEFORMATPARAMETERID = [ID] from dbo.[NAMEFORMATPARAMETER] where [ISDEFAULT] = 1 and dbo.[UFN_SITEALLOWEDFORUSER](@CURRENTAPPUSERID, [SITEID]) = 1;
/* common user defined source codes for the selected segments */
exec dbo.[USP_MKTSOURCECODEPART_SEGMENTATIONSEGMENTS_GETITEMLIST] @SEGMENTATIONSEGMENTIDS, @ITEMLIST output;
select @TSLONG = max([TSLONG])
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID];
/* common business units */
if @SEGMENTTYPECODE in (1, 2)
begin
declare @TEMPSEGMENTID uniqueidentifier;
select top 1
@TEMPSEGMENTID = [SS].[ID]
from dbo.[MKTSEGMENTATIONSEGMENT] as [SS]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [SS].[ID];
declare @BUSINESSUNITSTABLE table([ID] uniqueidentifier, [PERCENTVALUE] float)
insert into @BUSINESSUNITSTABLE ([ID], [PERCENTVALUE])
select
[BUSINESSUNITCODEID],
[PERCENTVALUE]
from dbo.[MKTSEGMENTATIONSEGMENTBUSINESSUNIT] as [SSBU]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [SSBU].[MKTSEGMENTATIONSEGMENTID]
where [SSBU].[MKTSEGMENTATIONSEGMENTID] = @TEMPSEGMENTID;
if (select count(distinct([OVERRIDEBUSINESSUNITS]))
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]) = 1
and (select count(*)
from dbo.[MKTSEGMENTATIONSEGMENTBUSINESSUNIT] as [SSBU]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [SSBU].[MKTSEGMENTATIONSEGMENTID]
inner join @BUSINESSUNITSTABLE as [BU] on [BU].[ID] = [SSBU].[BUSINESSUNITCODEID]
where [SSBU].[PERCENTVALUE] = [BU].[PERCENTVALUE])
= ((select count(*) from @BUSINESSUNITSTABLE) * (select count(*) from @SEGMENTATIONSEGMENTS))
select top 1
@OVERRIDEBUSINESSUNITSLOADED = 1,
@OVERRIDEBUSINESSUNITS = [MKTSEGMENTATIONSEGMENT].[OVERRIDEBUSINESSUNITS],
@BUSINESSUNITS = dbo.[UFN_MKTSEGMENTATIONSEGMENTBUSINESSUNIT_GETBUSINESSUNITS_TOITEMLISTXML]([MKTSEGMENTATIONSEGMENT].[ID])
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join @SEGMENTATIONSEGMENTS as [S] on [S].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
else
begin
set @OVERRIDEBUSINESSUNITSLOADED = 0;
set @OVERRIDEBUSINESSUNITS = 0;
end
end
else
begin
set @OVERRIDEBUSINESSUNITSLOADED = 0;
set @OVERRIDEBUSINESSUNITS = 0;
end
-- this is obsolete in WebUI; leaving in so WebUI can be compared to WinForms
exec dbo.[USP_MKTSEGMENTATIONSEGMENT_GETCOMMONUSERDEFINEDCODES] @SEGMENTATIONSEGMENTIDS, @SOURCECODEID, @USERDEFINEDLOADEDSOURCECODES output;
return 0;