USP_MKTSOURCECODE_COPY
Executes the "Source Code Copy" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | Input parameter indicating the ID of the record being updated. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the update. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.[USP_MKTSOURCECODE_COPY]
(
@ID uniqueidentifier output,
@CHANGEAGENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier
)
as
set nocount on;
declare @ORIGINALSOURCECODEID uniqueidentifier;
declare @TARGETSOURCECODEID uniqueidentifier;
set @ORIGINALSOURCECODEID = @ID;
set @TARGETSOURCECODEID = newID();
declare @RC int;
declare @DATALOADED bit;
declare @NAME nvarchar(100);
declare @SITEID uniqueidentifier;
declare @ISDEFAULT bit;
declare @SITEREQUIRED bit;
declare @DESCRIPTION nvarchar(255);
declare @INUSE bit;
declare @TSLONG bigint;
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
exec @RC = dbo.[USP_DATAFORMTEMPLATE_EDITLOAD_MKTSOURCECODE_2]
@ID = @ORIGINALSOURCECODEID,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@DATALOADED = @DATALOADED output,
@NAME = @NAME output,
@SITEID = @SITEID output,
@ISDEFAULT = 0,
@SITEREQUIRED = @SITEREQUIRED output,
@DESCRIPTION = @DESCRIPTION output,
@INUSE = @INUSE output,
@TSLONG = @TSLONG output;
declare @UNIQUENAME nvarchar(100);
set @UNIQUENAME = dbo.[UFN_MKTSOURCECODE_GETUNIQUENAME](@ORIGINALSOURCECODEID, @NAME, null);
/* Now create the new source code layout */
exec @RC = dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSOURCECODE]
@TARGETSOURCECODEID,
@CHANGEAGENTID,
@UNIQUENAME,
0,
@SITEID,
@DESCRIPTION;
/* Go through each item in the mktsourcecodeitem table and add the parts and valid values to the new layout. */
declare @ORIGINALSOURCECODEITEMID uniqueidentifier;
declare @TARGETSOURCECODEITEMID uniqueidentifier;
declare @MKTSOURCECODEDEFINITIONTYPES xml;
declare @ITEMTYPENAME nvarchar(50);
declare @MKTSOURCECODEPARTDEFINITIONID uniqueidentifier;
declare @MKTSOURCECODEPARTDEFINITIONVALUES xml;
declare @LENGTH tinyint;
declare @SEQUENCE tinyint;
declare @SELECTEDVALIDPARTS xml;
declare ITEMCURSOR cursor local fast_forward for
select
[ID],
[MKTSOURCECODEPARTDEFINITIONID]
from dbo.[MKTSOURCECODEITEM]
where [SOURCECODEID] = @ORIGINALSOURCECODEID
order by [SEQUENCE];
open ITEMCURSOR;
fetch next from ITEMCURSOR into @ORIGINALSOURCECODEITEMID, @MKTSOURCECODEPARTDEFINITIONID;
while (@@FETCH_STATUS = 0)
begin
set @TARGETSOURCECODEITEMID = null;
/* Get the part definition ID and valid values from the current sourcecodeitem */
exec @RC = dbo.[USP_DATAFORMTEMPLATE_EDITLOAD_MKTSOURCECODELAYOUTPART]
@ID = @ORIGINALSOURCECODEITEMID,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@DATALOADED = @DATALOADED output,
@TSLONG = @TSLONG output,
@MKTSOURCECODEDEFINITIONTYPES = @MKTSOURCECODEDEFINITIONTYPES output,
@ITEMTYPENAME = @ITEMTYPENAME output,
@MKTSOURCECODEPARTDEFINITION = @MKTSOURCECODEPARTDEFINITIONID output,
@MKTSOURCECODEPARTDEFINITIONVALUES = @MKTSOURCECODEPARTDEFINITIONVALUES output,
@LENGTH = @LENGTH output,
@SEQUENCE = @SEQUENCE output,
@SELECTEDVALIDPARTS = @SELECTEDVALIDPARTS output;
/* Get the valid source code parts for the current source code item ID */
declare @SELECTEDITEMS table
(
[ID] uniqueidentifier,
[MKTSOURCECODEPARTDEFINITIONVALUESID] uniqueidentifier,
[VALUESELECTED] nvarchar(10)
);
/* Clear selected parts xml and selected parts table. */
set @SELECTEDVALIDPARTS = '';
delete from @SELECTEDITEMS;
insert into @SELECTEDITEMS
select
newID(),
[MKTSOURCECODEPARTDEFINITIONVALUESID],
'True'
from dbo.[MKTSOURCECODEVALIDPARTVALUES]
inner join dbo.[MKTSOURCECODEITEM] on [MKTSOURCECODEITEM].[ID] = [MKTSOURCECODEVALIDPARTVALUES].[MKTSOURCECODEITEMID]
where [MKTSOURCECODEITEM].[ID] = @ORIGINALSOURCECODEITEMID;
set @SELECTEDVALIDPARTS = (
select
[ID],
[MKTSOURCECODEPARTDEFINITIONVALUESID],
[VALUESELECTED]
from @SELECTEDITEMS
for xml raw('ITEM'),type,elements,root('MKTSOURCECODEPARTDEFINITIONVALUES'),BINARY BASE64);
/* Add the part to the new layout with the valid values of the original source code layout */
exec @RC = dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSOURCECODELAYOUTPART]
@TARGETSOURCECODEITEMID,
@TARGETSOURCECODEID,
@MKTSOURCECODEPARTDEFINITIONID,
@SELECTEDVALIDPARTS,
@CHANGEAGENTID,
@LENGTH,
@SEQUENCE;
fetch next from ITEMCURSOR into @ORIGINALSOURCECODEITEMID, @MKTSOURCECODEPARTDEFINITIONID;
end
close ITEMCURSOR;
deallocate ITEMCURSOR;
return 0;