USP_DATAFORMTEMPLATE_EDIT_MKTSEGMENTATIONPASSIVE
The save procedure used by the edit dataform template "Public Media Marketing Effort Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@NAME | nvarchar(100) | IN | Name |
@DESCRIPTION | nvarchar(255) | IN | Description |
@SITEID | uniqueidentifier | IN | Site |
@MAILDATE | datetime | IN | Date |
@SOURCECODEID | uniqueidentifier | IN | Source code |
@CODEVALUEID | uniqueidentifier | IN | Code value ID |
@CODE | nvarchar(10) | IN | Code |
@ITEMLIST | xml | IN | Items |
@ACTIVATIONKPIS | xml | IN | Activation KPIs |
@USEKPISASDEFAULT | bit | IN | Use the chosen KPIs as the default for future marketing efforts |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTSEGMENTATIONPASSIVE]
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@NAME nvarchar(100),
@DESCRIPTION nvarchar(255),
@SITEID uniqueidentifier,
@MAILDATE datetime,
@SOURCECODEID uniqueidentifier,
@CODEVALUEID uniqueidentifier,
@CODE nvarchar(10),
@ITEMLIST xml,
@ACTIVATIONKPIS xml,
@USEKPISASDEFAULT bit
)
as
set nocount on;
declare @CURRENTDATE datetime;
declare @OLDSOURCECODEID uniqueidentifier;
declare @CURRENTSITEID uniqueidentifier;
declare @ACTIVE bit;
declare @SEGMENTATIONACTIVATEPROCESSID uniqueidentifier;
if exists(select top 1 1 from dbo.[MKTSEGMENTATIONSEGMENT] where [SEGMENTATIONID] = @ID) or
exists(select top 1 1 from dbo.[MKTSEGMENTATIONSEED] where [SEGMENTATIONID] = @ID) or
exists(select top 1 1 from dbo.[MKTSEGMENTATION] where [PARENTSEGMENTATIONID] = @ID)
begin
select @CURRENTSITEID = [SITEID] from dbo.[MKTSEGMENTATION] where [ID] = @ID;
if (@CURRENTSITEID <> @SITEID or (@CURRENTSITEID is null and @SITEID is not null) or (@CURRENTSITEID is not null and @SITEID is null))
begin
raiserror('Site may not be changed on a marketing effort that is in use or has dependencies.', 13, 1);
return 1;
end;
end;
begin try
select
@ACTIVE = [MKTSEGMENTATION].[ACTIVE],
@OLDSOURCECODEID = [MKTSEGMENTATION].[SOURCECODEID],
@CURRENTDATE = getdate()
from dbo.[MKTSEGMENTATION]
where [MKTSEGMENTATION].[ID] = @ID;
if @ACTIVE = 0
-- check if the mailing is currently being activated
exec dbo.[USP_MKTSEGMENTATION_CHECKACTIVATION] @ID;
if @CHANGEAGENTID is null exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
update dbo.[MKTSEGMENTATION] set
[NAME] = @NAME,
[DESCRIPTION] = @DESCRIPTION,
[SITEID] = @SITEID,
[MAILDATE] = @MAILDATE,
[SOURCECODEID] = @SOURCECODEID,
[PARTDEFINITIONVALUESID] = @CODEVALUEID,
[CODE] = @CODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @ID;
-- save the sourcecode parts (only for non-activated mailings)
if @ACTIVE = 0
exec dbo.[USP_MKTSOURCECODEPART_GETITEMLIST_UPDATEFROMXML] @ID, @ITEMLIST, @CHANGEAGENTID, @CURRENTDATE;
-- update any segment codes in this mailing with their base segment codes
if isnull(cast(@OLDSOURCECODEID as varchar(36)), '') <> isnull(cast(@SOURCECODEID as varchar(36)), '')
update dbo.[MKTSEGMENTATIONSEGMENT] set
[CODE] = (case when @SOURCECODEID is null then '' else [MKTSEGMENT].[CODE] end),
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[MKTSEGMENTATIONSEGMENT] as [MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @ID;
-- clear KPI fields
exec dbo.[USP_MKTSEGMENTATIONACTIVATEKPI_CLEARFIELDS] @ID, @USEKPISASDEFAULT, @CHANGEAGENTID;
-- save KPIs
exec dbo.[USP_MKTSEGMENTATIONACTIVATEKPI_SAVEFIELD_FROMXML] @ID, @ACTIVATIONKPIS, @USEKPISASDEFAULT, @CHANGEAGENTID;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;