USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLEAPPUSERACCOUNTINGELEMENTSECURITY

The save procedure used by the edit dataform template "System Role User Accounting Element Security Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@ACCOUNTINGELEMENTSECURITYMODE tinyint IN Record access
@ACCOUNTINGELEMENTSECURITYGROUPS xml IN Accounting element security groups

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLEAPPUSERACCOUNTINGELEMENTSECURITY (
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier,
    @ACCOUNTINGELEMENTSECURITYMODE tinyint,
    @ACCOUNTINGELEMENTSECURITYGROUPS xml
)
as

    set nocount on;

    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
    if @ACCOUNTINGELEMENTSECURITYMODE <> 0 and @ACCOUNTINGELEMENTSECURITYGROUPS is null
      raiserror('ERR_ACCOUNTINGELEMENTSECURITY_ATLEASTONE',13,1);
    else if @ACCOUNTINGELEMENTSECURITYMODE = 0
      set @ACCOUNTINGELEMENTSECURITYGROUPS = null

      declare @ERRORMESSAGE nvarchar(max);
      declare @DULICATEID uniqueidentifier
      select top 1 @DULICATEID = ACCOUNTINGELEMENTSECURITYGROUPID from dbo.UFN_SYSTEMROLEAPPUSER_GETACCOUNTINGELEMENTSECURITYGROUPS_FROMITEMLISTXML(@ACCOUNTINGELEMENTSECURITYGROUPS) as GROUPS group by ACCOUNTINGELEMENTSECURITYGROUPID having count(ACCOUNTINGELEMENTSECURITYGROUPID) > 1

      if @DULICATEID is not null 
    begin
          select @ERRORMESSAGE = NAME + ' is selected more than once.' from dbo.ACCOUNTINGELEMENTSECURITYGROUP where ID = @DULICATEID;
          raiserror(@ERRORMESSAGE, 13, 1);
      end

    update dbo.SYSTEMROLEAPPUSER
    set ACCOUNTINGELEMENTSECURITYMODECODE = @ACCOUNTINGELEMENTSECURITYMODE
    where ID = @ID

    exec dbo.USP_SYSTEMROLEAPPUSER_GETACCOUNTINGELEMENTSECURITYGROUPS_UPDATEFROMXML @ID, @ACCOUNTINGELEMENTSECURITYGROUPS, @CHANGEAGENTID, @CURRENTDATE;
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;