USP_DATAFORMTEMPLATE_EDIT_ASSIGNLETTERCODESPROCESS_3

The save procedure used by the edit dataform template "Assign Letters Process Edit Form 2".

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.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@IDSETREGISTERID uniqueidentifier IN Selection
@LETTERCODES xml IN
@CREATEOUTPUTIDSET bit IN Create selection from results
@OUTPUTIDSETNAME nvarchar(100) IN Selection name
@OVERWRITEOUTPUTIDSET bit IN Overwrite existing Selection
@ASSIGNALLLETTERCODES bit IN Assign all letters
@USEDATEFILTER bit IN Only consider revenue or recognition credit added since last run
@OUTPUTIDSETRECORDTYPEID uniqueidentifier IN Selection type
@INCLUDEDONORASACKNOWLEDGEE bit IN Include donor
@INCLUDERECOGNITIONRECIPIENTSASACKNOWLEDGEE bit IN Include recognition recipients
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SITEID uniqueidentifier IN Site

Definition

Copy


          CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_ASSIGNLETTERCODESPROCESS_3
          (
            @ID uniqueidentifier,
            @CHANGEAGENTID uniqueidentifier = null,
            @NAME nvarchar(100), 
            @DESCRIPTION nvarchar(255),
            @IDSETREGISTERID uniqueidentifier,
            @LETTERCODES xml,
            @CREATEOUTPUTIDSET bit,
            @OUTPUTIDSETNAME nvarchar(100), 
            @OVERWRITEOUTPUTIDSET bit,
            @ASSIGNALLLETTERCODES bit,
            @USEDATEFILTER bit,
            @OUTPUTIDSETRECORDTYPEID uniqueidentifier,
            @INCLUDEDONORASACKNOWLEDGEE bit,
            @INCLUDERECOGNITIONRECIPIENTSASACKNOWLEDGEE bit,
            @CURRENTAPPUSERID uniqueidentifier,
            @SITEID uniqueidentifier
          )
          as
            set nocount on;

            declare @CURRENTDATE datetime;
            set @CURRENTDATE = getdate();

            if coalesce(@INCLUDEDONORASACKNOWLEDGEE, 0) = 0 and 
              coalesce(@INCLUDERECOGNITIONRECIPIENTSASACKNOWLEDGEE, 0) = 0
            begin
              raiserror('MUST_INCLUDE_ACKNOWLEDGEES', 13, 1)
              return 1
            end

            declare @BUSINESSPROCESSCATALOGID uniqueidentifier = 'a3a2d937-b5ff-4b2e-8a1b-640f895c2183';

            begin try
              if @ID is null
                set @ID = NewID();

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

              if @ASSIGNALLLETTERCODES = 0
                if (select count(*) from dbo.UFN_ASSIGNLETTERCODESPROCESS_GETLETTERCODES_FROMITEMLISTXML(@LETTERCODES)) = 0
                  raiserror('Please enter at least one letter.', 13, 1);

              if exists(select 1 from dbo.[BUSINESSPROCESSSTATUS] where [STATUSCODE] = 4 and [BUSINESSPROCESSPARAMETERSETID] = @ID)
                raiserror('ERR_ENQUEUED', 13, 1);

              update 
                dbo.ASSIGNLETTERCODESPROCESS
              set
                NAME = @NAME,
                DESCRIPTION = @DESCRIPTION,
                IDSETREGISTERID = @IDSETREGISTERID,
                CREATEOUTPUTIDSET = @CREATEOUTPUTIDSET,
                OUTPUTIDSETNAME = @OUTPUTIDSETNAME
                OVERWRITEOUTPUTIDSET = @OVERWRITEOUTPUTIDSET,
                ASSIGNALLLETTERCODES = @ASSIGNALLLETTERCODES,
                USEDATEFILTER = @USEDATEFILTER,
                OUTPUTIDSETRECORDTYPEID = @OUTPUTIDSETRECORDTYPEID,
                INCLUDEDONORASACKNOWLEDGEE = @INCLUDEDONORASACKNOWLEDGEE,
                INCLUDERECOGNITIONRECIPIENTSASACKNOWLEDGEE = @INCLUDERECOGNITIONRECIPIENTSASACKNOWLEDGEE,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
              where
                ID = @ID;    

              if exists(select ID from dbo.BUSINESSPROCESSINSTANCE where BUSINESSPROCESSINSTANCE.BUSINESSPROCESSPARAMETERSETID = @ID and BUSINESSPROCESSINSTANCE.BUSINESSPROCESSCATALOGID = @BUSINESSPROCESSCATALOGID)
              begin
                update dbo.BUSINESSPROCESSINSTANCE 
                  set SITEID = @SITEID,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE
                where BUSINESSPROCESSINSTANCE.BUSINESSPROCESSPARAMETERSETID = @ID
                  and BUSINESSPROCESSINSTANCE.BUSINESSPROCESSCATALOGID = @BUSINESSPROCESSCATALOGID
                  and (BUSINESSPROCESSINSTANCE.SITEID <> @SITEID 
                    or BUSINESSPROCESSINSTANCE.SITEID is null and @SITEID is not null 
                    or BUSINESSPROCESSINSTANCE.SITEID is not null and @SITEID is null);
              end
              else
              begin
                exec dbo.USP_BUSINESSPROCESSINSTANCE_ADD @CHANGEAGENTID = @CHANGEAGENTID
                                  @BUSINESSPROCESSCATALOGID = @BUSINESSPROCESSCATALOGID
                                  @BUSINESSPROCESSPARAMETERSETID = @ID
                                  @OWNERID = @CURRENTAPPUSERID, @SITEID = @SITEID;
              end

              if @ASSIGNALLLETTERCODES = 0
                exec dbo.USP_ASSIGNLETTERCODESPROCESS_GETLETTERCODES_UPDATEFROMXML @ID, @LETTERCODES, @CHANGEAGENTID, @CURRENTDATE;

            end try

            begin catch
              exec dbo.USP_RAISE_ERROR;
              return 1;
            end catch

            return 0;