UFN_PLEDGE_GETREVALUEDORGANIZATIONBALANCEASOF

Returns the unpaid balance, as a revalued organization currency amount, for a given pledge as of a given date.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@PLEDGEID uniqueidentifier IN
@ASOFDATE datetime IN
@USEORIGINALRATE bit IN

Definition

Copy


            CREATE function dbo.UFN_PLEDGE_GETREVALUEDORGANIZATIONBALANCEASOF
            (
                @PLEDGEID uniqueidentifier,
                @ASOFDATE datetime,
                @USEORIGINALRATE bit = 0
            ) 
            returns money
            with execute as caller
            as begin
                declare @RESULT money;
                declare @REVALUATIONID uniqueidentifier;
                declare @BASEEXCHANGERATEID uniqueidentifier;
                declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                declare @BASECURRENCYID uniqueidentifier;
                declare @TRANSACTIONCURRENCYID uniqueidentifier;

                select
                    @BASEEXCHANGERATEID = FINANCIALTRANSACTION.BASEEXCHANGERATEID,
                    @ORGANIZATIONEXCHANGERATEID = FINANCIALTRANSACTION.ORGEXCHANGERATEID,
                    @BASECURRENCYID = CURRENCYSET.BASECURRENCYID,
                    @TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID
                from dbo.FINANCIALTRANSACTION
                inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
                inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID                  
                where FINANCIALTRANSACTION.ID = @PLEDGEID;

                if @USEORIGINALRATE = 0
                begin
                    set @REVALUATIONID = dbo.UFN_REVENUE_GETREVALUATIONASOF(@PLEDGEID, @ASOFDATE);
                end

                -- If we looked for and found a revaluation for the given date, get its rate.

                -- Otherwise, we want to use the original rate, or didn't find a revaluation

                -- for the given date, so we just use the rate off the revenue.

                if @REVALUATIONID is not null
                begin
                    select 
                        @BASEEXCHANGERATEID = BASEEXCHANGERATEID,
                        @ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
                    from dbo.COMMITMENTREVALUATION
                    where ID = @REVALUATIONID;
                end

                declare @TRANSACTIONBALANCE money;
                declare @BASEBALANCE money;

                set @TRANSACTIONBALANCE = dbo.UFN_PLEDGE_GETBALANCEASOF(@PLEDGEID, @ASOFDATE);

                if @TRANSACTIONCURRENCYID = @BASECURRENCYID
                    set @BASEBALANCE = @TRANSACTIONBALANCE;
                else
                    set @BASEBALANCE = dbo.UFN_CURRENCY_CONVERT(@TRANSACTIONBALANCE, @BASEEXCHANGERATEID);


                -- Convert base or transaction to org.

                declare @ORGANIZATIONAMOUNTORIGINCODE tinyint;
                select top 1
                    @ORGANIZATIONAMOUNTORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE
                from
                    dbo.MULTICURRENCYCONFIGURATION;

                declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                if (@BASECURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 0)
                    set @RESULT = @BASEBALANCE;
                else if (@TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 1)
                    set @RESULT = @TRANSACTIONBALANCE;
                else
                begin
                    set @RESULT = dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(@BASEBALANCE, @ORGANIZATIONEXCHANGERATEID, @TRANSACTIONBALANCE);
                end

                return @RESULT;
            end