USP_DATAFORMTEMPLATE_EDIT_NAMEFORMATDEFAULTS
The save procedure used by the edit dataform template "Name Format Defaults Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@NAMEFORMATDEFAULTS | xml | IN | Edit default name formats |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_NAMEFORMATDEFAULTS
(
@CHANGEAGENTID uniqueidentifier = null,
@NAMEFORMATDEFAULTS xml
)
as
set nocount on;
declare @CURRENTDATE datetime;
begin try
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = GetDate();
-- build a temporary table containing the values from the XML
declare @TempTbl table (
[ID] uniqueidentifier,
[APPLYTOCODE] tinyint,
[NAMEFORMATTYPECODEID] uniqueidentifier,
[NAMEFORMATFUNCTIONID] uniqueidentifier,
[PRIMARYADDRESSEE] bit,
[PRIMARYSALUTATION] bit)
insert into @TempTbl select
[ID],
[APPLYTOCODE],
[NAMEFORMATTYPECODEID],
[NAMEFORMATFUNCTIONID],
[PRIMARYADDRESSEE],
[PRIMARYSALUTATION]
from dbo.UFN_NAMEFORMATDEFAULT_GETNAMEFORMATDEFAULTS_FROMITEMLISTXML(@NAMEFORMATDEFAULTS)
update @TempTbl set ID = newid() where (ID is null) or (ID = '00000000-0000-0000-0000-000000000000');
declare @contextCache varbinary(128);
declare @e int;
-- cache current context information
set @contextCache = CONTEXT_INFO();
-- set CONTEXT_INFO to @CHANGEAGENTID
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
-- delete any items that no longer exist in the XML table
delete from dbo.[NAMEFORMATDEFAULT] where [NAMEFORMATDEFAULT].ID in
(select ID from dbo.UFN_NAMEFORMATDEFAULT_GETNAMEFORMATDEFAULTS()
EXCEPT select ID from @TempTbl)
-- reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
-- update the items that exist in the XML table and the db
update [NAMEFORMATDEFAULT]
set [NAMEFORMATDEFAULT].[ID]=temp.[ID],
[NAMEFORMATDEFAULT].[APPLYTOCODE]=temp.[APPLYTOCODE],
[NAMEFORMATDEFAULT].[NAMEFORMATTYPECODEID]=temp.[NAMEFORMATTYPECODEID],
[NAMEFORMATDEFAULT].[NAMEFORMATFUNCTIONID]=temp.[NAMEFORMATFUNCTIONID],
[NAMEFORMATDEFAULT].[PRIMARYADDRESSEE]=temp.[PRIMARYADDRESSEE],
[NAMEFORMATDEFAULT].[PRIMARYSALUTATION]=temp.[PRIMARYSALUTATION],
[NAMEFORMATDEFAULT].CHANGEDBYID = @CHANGEAGENTID,
[NAMEFORMATDEFAULT].DATECHANGED = @CURRENTDATE
from dbo.[NAMEFORMATDEFAULT] inner join @TempTbl as [temp] on [NAMEFORMATDEFAULT].ID = [temp].ID
where ([NAMEFORMATDEFAULT].[ID]<>temp.[ID]) or
([NAMEFORMATDEFAULT].[ID] is null and temp.[ID] is not null) or
([NAMEFORMATDEFAULT].[ID] is not null and temp.[ID] is null) or
([NAMEFORMATDEFAULT].[APPLYTOCODE]<>temp.[APPLYTOCODE]) or
([NAMEFORMATDEFAULT].[APPLYTOCODE] is null and temp.[APPLYTOCODE] is not null) or
([NAMEFORMATDEFAULT].[APPLYTOCODE] is not null and temp.[APPLYTOCODE] is null) or
([NAMEFORMATDEFAULT].[NAMEFORMATTYPECODEID]<>temp.[NAMEFORMATTYPECODEID]) or
([NAMEFORMATDEFAULT].[NAMEFORMATTYPECODEID] is null and temp.[NAMEFORMATTYPECODEID] is not null) or
([NAMEFORMATDEFAULT].[NAMEFORMATTYPECODEID] is not null and temp.[NAMEFORMATTYPECODEID] is null) or
([NAMEFORMATDEFAULT].[NAMEFORMATFUNCTIONID]<>temp.[NAMEFORMATFUNCTIONID]) or
([NAMEFORMATDEFAULT].[NAMEFORMATFUNCTIONID] is null and temp.[NAMEFORMATFUNCTIONID] is not null) or
([NAMEFORMATDEFAULT].[NAMEFORMATFUNCTIONID] is not null and temp.[NAMEFORMATFUNCTIONID] is null) or
([NAMEFORMATDEFAULT].[PRIMARYADDRESSEE]<>temp.[PRIMARYADDRESSEE]) or
([NAMEFORMATDEFAULT].[PRIMARYADDRESSEE] is null and temp.[PRIMARYADDRESSEE] is not null) or
([NAMEFORMATDEFAULT].[PRIMARYADDRESSEE] is not null and temp.[PRIMARYADDRESSEE] is null) or
([NAMEFORMATDEFAULT].[PRIMARYSALUTATION]<>temp.[PRIMARYSALUTATION]) or
([NAMEFORMATDEFAULT].[PRIMARYSALUTATION] is null and temp.[PRIMARYSALUTATION] is not null) or
([NAMEFORMATDEFAULT].[PRIMARYSALUTATION] is not null and temp.[PRIMARYSALUTATION] is null)
-- insert new items
insert into [NAMEFORMATDEFAULT]
([ID],
[APPLYTOCODE],
[NAMEFORMATTYPECODEID],
[NAMEFORMATFUNCTIONID],
[PRIMARYADDRESSEE],
[PRIMARYSALUTATION],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select [ID],
[APPLYTOCODE],
[NAMEFORMATTYPECODEID],
[NAMEFORMATFUNCTIONID],
[PRIMARYADDRESSEE],
[PRIMARYSALUTATION],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @TempTbl as [temp]
where not exists (select ID from dbo.[NAMEFORMATDEFAULT] as data where data.ID = [temp].ID)
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;