UFN_REVENUESPLIT_GETAMOUNTINCURRENCY

Returns the amount of a given revenue split record in the given currency.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@REVENUESPLITID uniqueidentifier IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY
(
    @REVENUESPLITID uniqueidentifier,
    @CURRENCYID uniqueidentifier
)
returns money
as
begin
    declare @AMOUNT money = 0;

    if (@CURRENCYID is null) or (@CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY())
    begin
        select
            @AMOUNT = REVENUESPLIT.ORGAMOUNT
        from
            dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
        where
            REVENUESPLIT.ID = @REVENUESPLITID;
    end
    else
    begin
        declare @RECORDBASECURRENCYID uniqueidentifier;
        declare @RECORDDATE datetime;

        select
            @RECORDBASECURRENCYID = case when FINANCIALTRANSACTIONLINEITEM.DELETEDON is null then isnull(REX.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) else null end,
            @RECORDDATE = cast(FINANCIALTRANSACTION.DATE as datetime)
        from dbo.FINANCIALTRANSACTION
        inner join dbo.REVENUE_EXT REX on REX.ID = FINANCIALTRANSACTION.ID
        inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
        inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = V.FINANCIALTRANSACTIONID
        where
            FINANCIALTRANSACTIONLINEITEM.ID = @REVENUESPLITID;

        if @CURRENCYID = @RECORDBASECURRENCYID
        begin
            select
                @AMOUNT = REVENUESPLIT.BASEAMOUNT
            from
                dbo.FINANCIALTRANSACTIONLINEITEM [REVENUESPLIT]
            where
                REVENUESPLIT.ID = @REVENUESPLITID;
        end
        else
        begin
            declare @CURRENCYEXCHANGERATEID uniqueidentifier;

            set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @CURRENCYID, @RECORDDATE, 1, null);
            if (@CURRENCYEXCHANGERATEID is not null)
            begin
                select
                    @AMOUNT = dbo.UFN_CURRENCY_CONVERT(REVENUESPLIT.ORGAMOUNT, @CURRENCYEXCHANGERATEID)
                from
                    dbo.FINANCIALTRANSACTIONLINEITEM [REVENUESPLIT]
                where
                    REVENUESPLIT.ID = @REVENUESPLITID;
            end
            else
            begin
                set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @RECORDDATE, 1, null);

                select
                    @AMOUNT = dbo.UFN_CURRENCY_CONVERTINVERSE(REVENUESPLIT.ORGAMOUNT, @CURRENCYEXCHANGERATEID)
                from
                    dbo.FINANCIALTRANSACTIONLINEITEM [REVENUESPLIT]
                where
                    REVENUESPLIT.ID = @REVENUESPLITID;
            end
        end
    end    

    return @AMOUNT;
end