UFN_REVENUESPLITBUSINESSUNIT_GETAMOUNTINCURRENCY

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

Return

Return Type
money

Parameters

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

Definition

Copy


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

    if (@CURRENCYID is null) or (@CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY())
    begin
        select
            @AMOUNT = REVENUESPLITBUSINESSUNIT.ORGANIZATIONAMOUNT
        from
            dbo.REVENUESPLITBUSINESSUNIT
        where
            REVENUESPLITBUSINESSUNIT.ID = @REVENUESPLITBUSINESSUNITID;
    end
    else
    begin
        declare @RECORDBASECURRENCYID uniqueidentifier;
        declare @RECORDDATE datetime;

        select
            @RECORDBASECURRENCYID = REVENUESPLITBUSINESSUNIT.BASECURRENCYID,
            @RECORDDATE = REVENUESPLITBUSINESSUNIT.DATEADDED
        from
            dbo.REVENUESPLITBUSINESSUNIT
        where
            REVENUESPLITBUSINESSUNIT.ID = @REVENUESPLITBUSINESSUNITID;

        if @CURRENCYID = @RECORDBASECURRENCYID
        begin
            select
                @AMOUNT = REVENUESPLITBUSINESSUNIT.AMOUNT
            from
                dbo.REVENUESPLITBUSINESSUNIT
            where
                REVENUESPLITBUSINESSUNIT.ID = @REVENUESPLITBUSINESSUNITID;
        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(REVENUESPLITBUSINESSUNIT.ORGANIZATIONAMOUNT, @CURRENCYEXCHANGERATEID)
                from
                    dbo.REVENUESPLITBUSINESSUNIT
                where
                    REVENUESPLITBUSINESSUNIT.ID = @REVENUESPLITBUSINESSUNITID;
            end
            else
            begin
                set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @RECORDDATE, 1, null);

                select
                    @AMOUNT = dbo.UFN_CURRENCY_CONVERTINVERSE(REVENUESPLITBUSINESSUNIT.ORGANIZATIONAMOUNT, @CURRENCYEXCHANGERATEID)
                from
                    dbo.REVENUESPLITBUSINESSUNIT
                where
                    REVENUESPLITBUSINESSUNIT.ID = @REVENUESPLITBUSINESSUNITID;
            end
        end
    end    

    return @AMOUNT;
end