USP_MKTSEGMENT_UPDATECODE
Updates the segment code everywhere that uses the segment.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTID | uniqueidentifier | IN | |
@CODE | nvarchar(10) | IN | |
@CODEVALUEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@FORCEUPDATE | bit | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENT_UPDATECODE]
(
@SEGMENTID uniqueidentifier,
@CODE nvarchar(10),
@CODEVALUEID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@FORCEUPDATE bit = 0,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
declare @OLDCODE nvarchar(10);
declare @OLDCODEVALUEID uniqueidentifier;
declare @SEGMENTTYPECODE tinyint;
declare @CURRENTDATE datetime;
declare @UPDATECODE bit;
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
select
@OLDCODE = isnull([CODE], ''),
@OLDCODEVALUEID = [PARTDEFINITIONVALUESID],
@CODE = isnull(@CODE, ''),
@SEGMENTTYPECODE = [SEGMENTTYPECODE],
@CURRENTDATE = getdate()
from dbo.[MKTSEGMENT]
where [ID] = @SEGMENTID;
set @UPDATECODE = case when @FORCEUPDATE = 1 or (@CODEVALUEID is not null and (@OLDCODEVALUEID is null or not (@OLDCODE = @CODE and @OLDCODEVALUEID = @CODEVALUEID))) then 1 else 0 end;
if @UPDATECODE = 1
set @UPDATECODE = dbo.[UFN_MKTSEGMENT_APPUSER_GRANTED_EDITFORM](@SEGMENTID, @CURRENTAPPUSERID);
/* Update the segment code if the old code value ID is nothing and the segment code value ID is supplied */
if @UPDATECODE = 1
begin
/* Update the base segment code */
update dbo.[MKTSEGMENT] set
[CODE] = @CODE,
[PARTDEFINITIONVALUESID] = @CODEVALUEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @SEGMENTID;
/* Update all the non-activated mailing segments that use the same base segment */
update dbo.[MKTSEGMENTATIONSEGMENT] set
[CODE] = @CODE,
[PARTDEFINITIONVALUESID] = @CODEVALUEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[MKTSEGMENTATIONSEGMENT] as [SS]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [SS].[SEGMENTATIONID]
inner join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTSEGMENTATION].[SOURCECODEID]
inner join dbo.[MKTSOURCECODEITEM] on [MKTSOURCECODEITEM].[SOURCECODEID] = [MKTSOURCECODE].[ID]
inner join dbo.[MKTSOURCECODEPARTDEFINITION] on [MKTSOURCECODEPARTDEFINITION].[ID] = [MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID]
where [SS].[SEGMENTID] = @SEGMENTID
and [MKTSEGMENTATION].[ACTIVE] = 0 --Not activated
and [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE] = 1; --Segment sourcecode part
/* Update all the non-activated mailing test segments that use the same base segment */
update dbo.[MKTSEGMENTATIONTESTSEGMENT] set
[CODE] = @CODE,
[PARTDEFINITIONVALUESID] = @CODEVALUEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[MKTSEGMENTATIONTESTSEGMENT] as [STS]
inner join dbo.[MKTSEGMENTATIONSEGMENT] on [STS].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
inner join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTSEGMENTATION].[SOURCECODEID]
inner join dbo.[MKTSOURCECODEITEM] on [MKTSOURCECODEITEM].[SOURCECODEID] = [MKTSOURCECODE].[ID]
inner join dbo.[MKTSOURCECODEPARTDEFINITION] on [MKTSOURCECODEPARTDEFINITION].[ID] = [MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTID] = @SEGMENTID
and [MKTSEGMENTATION].[ACTIVE] = 0 --Not activated
and [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE] = 1; --Segment sourcecode part
if @SEGMENTTYPECODE = 3
/* Update all the acknowledgment rules that use the same base segment */
update dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] set
[CODE] = @CODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] as [RULE]
inner join dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATE] on [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[ID] = [RULE].[ACKNOWLEDGEMENTMAILINGTEMPLATEID]
inner join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[SOURCECODEID]
inner join dbo.[MKTSOURCECODEITEM] on [MKTSOURCECODEITEM].[SOURCECODEID] = [MKTSOURCECODE].[ID]
inner join dbo.[MKTSOURCECODEPARTDEFINITION] on [MKTSOURCECODEPARTDEFINITION].[ID] = [MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID]
where [RULE].[SEGMENTID] = @SEGMENTID
and [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE] = 1; --Segment sourcecode part
else if @SEGMENTTYPECODE = 4
/* update all the membership template rules that use the same base segment */
update dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] set
[CODE] = @CODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] as [RULE]
inner join dbo.[MKTMEMBERSHIPMAILINGTEMPLATE] on [MKTMEMBERSHIPMAILINGTEMPLATE].[ID] = [RULE].[MEMBERSHIPMAILINGTEMPLATEID]
inner join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTMEMBERSHIPMAILINGTEMPLATE].[SOURCECODEID]
inner join dbo.[MKTSOURCECODEITEM] on [MKTSOURCECODEITEM].[SOURCECODEID] = [MKTSOURCECODE].[ID]
inner join dbo.[MKTSOURCECODEPARTDEFINITION] on [MKTSOURCECODEPARTDEFINITION].[ID] = [MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID]
where [RULE].[SEGMENTID] = @SEGMENTID
and [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE] = 1; --Segment sourcecode part
else if @SEGMENTTYPECODE = 5
/* update all the sponsorship template rules that use the same base segment */
update dbo.[MKTSPONSORSHIPMAILINGTEMPLATERULE] set
[CODE] = @CODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[MKTSPONSORSHIPMAILINGTEMPLATERULE] as [RULE]
inner join dbo.[MKTSPONSORSHIPMAILINGTEMPLATE] on [MKTSPONSORSHIPMAILINGTEMPLATE].[ID] = [RULE].[SPONSORSHIPMAILINGTEMPLATEID]
inner join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTSPONSORSHIPMAILINGTEMPLATE].[SOURCECODEID]
inner join dbo.[MKTSOURCECODEITEM] on [MKTSOURCECODEITEM].[SOURCECODEID] = [MKTSOURCECODE].[ID]
inner join dbo.[MKTSOURCECODEPARTDEFINITION] on [MKTSOURCECODEPARTDEFINITION].[ID] = [MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID]
where [RULE].[SEGMENTID] = @SEGMENTID
and [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE] = 1; --Segment sourcecode part
end
return 0;