USP_DATAFORMTEMPLATE_EDIT_FUNDINGPLANBASECURRENCY

The save procedure used by the edit dataform template "Funding Plan Base Currency Edit".

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_FUNDINGPLANBASECURRENCY 
                    (
                        @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;
                        declare @DATEADDED datetime;

                        set @CURRENTDATE = getdate();

                        begin try
                            declare @OLDBASECURRENCYID uniqueidentifier;

                            select 
                                @OLDBASECURRENCYID = BASECURRENCYID,
                                @DATEADDED = DATEADDED
                            from 
                                dbo.FUNDINGPLAN
                            where
                                ID = @ID;

                            update dbo.FUNDINGPLAN 
                            set 
                                BASECURRENCYID = @BASECURRENCYID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ID;

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

                            if @BASECURRENCYID <> @OLDBASECURRENCYID  
                            begin
                                declare @ORGCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                                declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;

                                --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.


                                --Handles the funding plan logic

                                if @BASECURRENCYID = @ORGCURRENCYID
                                begin
                                    update dbo.FUNDINGPLAN
                                        set
                                            ORGANIZATIONFUNDINGNEED = FUNDINGNEED,
                                            ORGANIZATIONEXCHANGERATEID = null,
                                            CHANGEDBYID = @CHANGEAGENTID,
                                            DATECHANGED = @CURRENTDATE
                                        where
                                            ID = @ID;    
                                end
                                else
                                    begin
                                        --Lookup exchange rate for the funding plan

                                        set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGCURRENCYID, @DATEADDED, 0, null);

                                        update dbo.FUNDINGPLAN
                                        set
                                            ORGANIZATIONFUNDINGNEED = dbo.UFN_CURRENCY_CONVERT(FUNDINGNEED, @ORGANIZATIONEXCHANGERATEID),
                                            ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID,
                                            CHANGEDBYID = @CHANGEAGENTID,
                                            DATECHANGED = @CURRENTDATE
                                        where
                                            ID = @ID;                            
                                    end

                                    --update the request                                                                                                                                     

                                    update dbo.FUNDINGREQUEST
                                    set 
                                        FUNDINGREQUEST.AMOUNTREQUESTED = REQUEST.BASEAMOUNT, 
                                        FUNDINGREQUEST.ORGANIZATIONAMOUNTREQUESTED = REQUEST.ORGANIZATIONAMOUNT, 
                                        FUNDINGREQUEST.BASEEXCHANGERATEID = REQUEST.BASEEXCHANGERATEID,
                                        FUNDINGREQUEST.ORGANIZATIONEXCHANGERATEID = REQUEST.ORGANIZATIONEXCHANGERATEID,
                                        FUNDINGREQUEST.BASECURRENCYID = @BASECURRENCYID,
                                        FUNDINGREQUEST.CHANGEDBYID = @CHANGEAGENTID,
                                        FUNDINGREQUEST.DATECHANGED = @DATEADDED
                                    from dbo.FUNDINGREQUEST 
                                        cross apply dbo.UFN_CURRENCY_GETCURRENCYVALUES_2(
                                            FUNDINGREQUEST.TRANSACTIONAMOUNTREQUESTED, 
                                            FUNDINGREQUEST.DATEADDED,
                                            @BASECURRENCYID,
                                            dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(FUNDINGREQUEST.TRANSACTIONCURRENCYID, @BASECURRENCYID, FUNDINGREQUEST.DATEADDED, 1, null),
                                            FUNDINGREQUEST.TRANSACTIONCURRENCYID,
                                            default
                                            default
                                            default
                                            default
                                            1
                                        ) REQUEST 
                                    where FUNDINGREQUEST.FUNDINGPLANID = @ID

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

                    return 0;