USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@ORIGINALAMOUNT money IN

Definition

Copy

                    create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @ORIGINALAMOUNT money
                    )
                    as

                        set nocount on;

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

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

                        begin try
                            --Multicurrency - RobertDi 4/15/10 - Convert @ORIGINALAMOUNT (in transaction currency) to base and org currency.                
                            declare @TRANSACTIONCURRENCYID uniqueidentifier;
                            declare @BASECURRENCYID uniqueidentifier;
                            declare @BASEEXCHANGERATEID uniqueidentifier;
                            declare @BASEAMOUNT money;
                            declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                            declare @ORGANIZATIONAMOUNT money;

                            select
                                @TRANSACTIONCURRENCYID = coalesce(MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT.TRANSACTIONCURRENCYID, FINANCIALTRANSACTION.TRANSACTIONCURRENCYID),
                                @BASECURRENCYID = coalesce(MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT.BASECURRENCYID, CURRENCYSET.BASECURRENCYID),
                                @BASEEXCHANGERATEID = coalesce(MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT.BASEEXCHANGERATEID, FINANCIALTRANSACTION.BASEEXCHANGERATEID),
                                @ORGANIZATIONEXCHANGERATEID = coalesce(MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT.ORGANIZATIONEXCHANGERATEID, FINANCIALTRANSACTION.ORGEXCHANGERATEID)
                            from dbo.FINANCIALTRANSACTION
                            inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
                            inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID         
                            left join dbo.MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT on MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT.ID = FINANCIALTRANSACTION.ID
                            where 
                                FINANCIALTRANSACTION.ID = @ID

                            -- This section taken from UFN_CURRENCY_GETCURRENCYVALUES and modified to keep the old
                            -- transaction currency and organization exchange rate the same.
                            -- Note that we don't want these to update to new data;  we're changing an amount
                            -- that lies in the past, not updating an amount from the past to be an amount from the present.
                            -- ***

                            declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                            declare @BASEAMOUNTISVALID bit;

                            set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                            set @BASEAMOUNTISVALID = 1;

                            if @TRANSACTIONCURRENCYID = @BASECURRENCYID
                                set @BASEAMOUNT = @ORIGINALAMOUNT;
                            else if @BASEEXCHANGERATEID is null
                            begin
                                set @BASEAMOUNT = 0;
                                set @BASEAMOUNTISVALID = 0;
                            end
                            else
                                set @BASEAMOUNT = dbo.UFN_CURRENCY_CONVERT(@ORIGINALAMOUNT, @BASEEXCHANGERATEID);

                            if (@BASEAMOUNTISVALID = 0)
                                set @ORGANIZATIONAMOUNT = 0;
                            else
                            begin
                                declare @ORGANIZATIONAMOUNTORIGINCODE tinyint;
                                select top 1
                                    @ORGANIZATIONAMOUNTORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE
                                from
                                    dbo.MULTICURRENCYCONFIGURATION;

                                if (@BASECURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 0)
                                    set @ORGANIZATIONAMOUNT = @BASEAMOUNT;
                                else if (@TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 1)
                                    set @ORGANIZATIONAMOUNT = @ORIGINALAMOUNT;
                                else
                                begin
                                    set @ORGANIZATIONAMOUNT = dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(@BASEAMOUNT, @ORGANIZATIONEXCHANGERATEID, @ORIGINALAMOUNT);
                                end
                            end        

                            -- ***

                            update dbo.MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT set
                                TRANSACTIONAMOUNT = @ORIGINALAMOUNT,
                                ORIGINALAMOUNT = @BASEAMOUNT,
                                ORGANIZATIONAMOUNT = @ORGANIZATIONAMOUNT,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ID

                            if @@ROWCOUNT = 0
                                insert into dbo.MEMBERSHIPINSTALLMENTPLANORIGINALAMOUNT
                                (
                                    ID,
                                    ORIGINALAMOUNT,
                                    TRANSACTIONAMOUNT,
                                    ORGANIZATIONAMOUNT,
                                    BASECURRENCYID,
                                    ORGANIZATIONEXCHANGERATEID,
                                    TRANSACTIONCURRENCYID,
                                    BASEEXCHANGERATEID,
                                    DATEADDED,
                                    DATECHANGED,
                                    ADDEDBYID,
                                    CHANGEDBYID
                                )
                                values
                                (
                                    @ID,
                                    @BASEAMOUNT,
                                    @ORIGINALAMOUNT,
                                    @ORGANIZATIONAMOUNT,
                                    @BASECURRENCYID,
                                    @ORGANIZATIONEXCHANGERATEID,
                                    @TRANSACTIONCURRENCYID,
                                    @BASEEXCHANGERATEID,
                                    @CURRENTDATE,
                                    @CURRENTDATE,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID                                    
                                )
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch

                    return 0;