UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY

Returns the amount of a given write-off record in the given currency.

Return

Return Type
money

Parameters

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

Definition

Copy


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

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

        select
            @RECORDBASECURRENCYID = WRITEOFFSPLIT.BASECURRENCYID,
            @RECORDDATE = WRITEOFFSPLIT.DATEADDED
        from
            dbo.WRITEOFFSPLIT
        where
            WRITEOFFSPLIT.ID = @WRITEOFFSPLITID;

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

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

    return @AMOUNT;
end