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;