USP_DATAFORMTEMPLATE_EDIT_MATCHINGGIFTCONDITIONBASECURRENCY

The save procedure used by the edit dataform template "Matching Gift Condition Base Currency 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.
@BASECURRENCYID uniqueidentifier IN Base currency

Definition

Copy


                    create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MATCHINGGIFTCONDITIONBASECURRENCY (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @BASECURRENCYID uniqueidentifier
                    )
                    as

                        set nocount on;

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

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

                        begin try
                            declare @OLDBASECURRENCYID uniqueidentifier;
                            select 
                                @OLDBASECURRENCYID = BASECURRENCYID
                            from 
                                dbo.MATCHINGGIFTCONDITION
                            where
                                ID = @ID

                            --If the user saves without changing the base currency, don't update anything.

                            if @OLDBASECURRENCYID <> @BASECURRENCYID
                            begin

                                declare @ORGCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()

                                --If the new base currency is the org currency, org amount equals amount, so don't bother getting

                                --    an exchange rate or doing a conversion.

                                if @BASECURRENCYID = @ORGCURRENCYID
                                begin

                                    update dbo.MATCHINGGIFTCONDITION set
                                        BASECURRENCYID = @BASECURRENCYID,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE,
                                        ORGANIZATIONMINMATCHPERGIFT = MINMATCHPERGIFT,
                                        ORGANIZATIONMAXMATCHPERGIFT = MAXMATCHPERGIFT,
                                        ORGANIZATIONMAXMATCHANNUAL = MAXMATCHANNUAL,
                                        ORGANIZATIONMAXMATCHTOTAL = MAXMATCHTOTAL,
                                        ORGANIZATIONEXCHANGERATEID = null
                                    where ID = @ID

                                end
                                else --Base currency has changed and isn't the org currency

                                begin

                                    declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID,@ORGCURRENCYID,@CURRENTDATE,0,null);

                                    update dbo.MATCHINGGIFTCONDITION set
                                        BASECURRENCYID = @BASECURRENCYID,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE,
                                        ORGANIZATIONMINMATCHPERGIFT = dbo.UFN_CURRENCY_CONVERT(MINMATCHPERGIFT,@ORGANIZATIONEXCHANGERATEID),
                                        ORGANIZATIONMAXMATCHPERGIFT = dbo.UFN_CURRENCY_CONVERT(MAXMATCHPERGIFT,@ORGANIZATIONEXCHANGERATEID),
                                        ORGANIZATIONMAXMATCHANNUAL = dbo.UFN_CURRENCY_CONVERT(MAXMATCHANNUAL,@ORGANIZATIONEXCHANGERATEID),
                                        ORGANIZATIONMAXMATCHTOTAL = dbo.UFN_CURRENCY_CONVERT(MAXMATCHTOTAL,@ORGANIZATIONEXCHANGERATEID),
                                        ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID
                                    where ID = @ID

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

                        return 0;