USP_DATAFORMTEMPLATE_EDIT_NAMINGOPPORTUNITYRECOGNITION

The save procedure used by the edit dataform template "Naming Opportunity Recognition Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CONSTITUENTID uniqueidentifier IN Constituent
@CONSTITUENTNAMEFORMATID uniqueidentifier IN Name format
@CUSTOMNAMEFORMAT nvarchar(100) IN Custom name format
@STARTDATE UDT_FUZZYDATE IN Recognition date
@ENDDATE UDT_FUZZYDATE IN Recognition ends
@AMOUNT money IN Recognition amount
@QUANTITY int IN Quantity
@INSCRIPTION nvarchar(max) IN Inscription
@SPECIALREQUEST nvarchar(max) IN Special request
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_NAMINGOPPORTUNITYRECOGNITION
                    (
                        @ID uniqueidentifier,
                        @CONSTITUENTID uniqueidentifier,
                        @CONSTITUENTNAMEFORMATID uniqueidentifier,
                        @CUSTOMNAMEFORMAT nvarchar(100),
                        @STARTDATE dbo.UDT_FUZZYDATE,
                        @ENDDATE dbo.UDT_FUZZYDATE,
                        @AMOUNT money,
                        @QUANTITY integer,
                        @INSCRIPTION nvarchar(max),
                        @SPECIALREQUEST nvarchar(max),
                        @CHANGEAGENTID uniqueidentifier
                    )
                    as
                    set nocount on;

                    begin try
                        declare @CHANGEDATE datetime;
                        set @CHANGEDATE = getdate();

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

                        if @CUSTOMNAMEFORMAT is null
                            set @CUSTOMNAMEFORMAT = '';
                        if not @CONSTITUENTNAMEFORMATID is null
                            set @CUSTOMNAMEFORMAT = '';
                        if @STARTDATE is null
                            set @STARTDATE = '00000000';
                        if @ENDDATE is null
                            set @ENDDATE = '00000000';

                        declare @EXISTINGRECOGNITIONS int;
                        declare @MAXRECOGNITIONS int;
                        declare @NAMINGOPPORTUNITYID uniqueidentifier;

                        select @NAMINGOPPORTUNITYID = NAMINGOPPORTUNITYID from dbo.NAMINGOPPORTUNITYRECOGNITION where ID = @ID;
                        select @MAXRECOGNITIONS = coalesce(QUANTITY, 0) from dbo.NAMINGOPPORTUNITY where ID = @NAMINGOPPORTUNITYID;
                        select @EXISTINGRECOGNITIONS = coalesce(sum(QUANTITY), 0) from dbo.NAMINGOPPORTUNITYRECOGNITION where NAMINGOPPORTUNITYID = @NAMINGOPPORTUNITYID and not ID = @ID;

                        declare @BASECURRENCYID uniqueidentifier;
                        declare @DATEADDED datetime;
                        declare @CURRENCYEXCHANGERATEID uniqueidentifier;
                        declare @ORGANIZATIONAMOUNT money;
                        declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                        set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                        select
                            @BASECURRENCYID = NAMINGOPPORTUNITYRECOGNITION.BASECURRENCYID,
                            @DATEADDED = NAMINGOPPORTUNITYRECOGNITION.DATEADDED,
                            @CURRENCYEXCHANGERATEID = NAMINGOPPORTUNITYRECOGNITION.ORGANIZATIONEXCHANGERATEID
                        from
                            dbo.NAMINGOPPORTUNITYRECOGNITION
                        where
                            NAMINGOPPORTUNITYRECOGNITION.ID = @ID;

                        if (@ORGANIZATIONCURRENCYID = @BASECURRENCYID)
                        begin
                            set @ORGANIZATIONAMOUNT = @AMOUNT;
                        end
                        else
                        begin
                            if @CURRENCYEXCHANGERATEID is null
                                set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @DATEADDED, 0, null);

                            set @ORGANIZATIONAMOUNT = dbo.UFN_CURRENCY_CONVERT(@AMOUNT, @CURRENCYEXCHANGERATEID);
                        end

                        if @EXISTINGRECOGNITIONS + @QUANTITY > @MAXRECOGNITIONS
                            raiserror('ERR_TOOMANYRECOGNITIONS', 13, 1);
                        else
                            update dbo.NAMINGOPPORTUNITYRECOGNITION
                                set CONSTITUENTID = @CONSTITUENTID,
                                    CONSTITUENTNAMEFORMATID = @CONSTITUENTNAMEFORMATID,
                                    CUSTOMNAMEFORMAT = @CUSTOMNAMEFORMAT,
                                    STARTDATE = @STARTDATE,
                                    ENDDATE = @ENDDATE,
                                    AMOUNT = @AMOUNT,
                                    QUANTITY = @QUANTITY,
                                    INSCRIPTION = @INSCRIPTION,
                                    SPECIALREQUEST = @SPECIALREQUEST,
                                    ORGANIZATIONAMOUNT = @ORGANIZATIONAMOUNT,
                                    ORGANIZATIONEXCHANGERATEID = @CURRENCYEXCHANGERATEID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CHANGEDATE
                            where ID = @ID;

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

                    return 0;