UFN_INSTALLMENTSPLITWRITEOFF_GETAMOUNTINCURRENCY

Returns the installment split amount in given currency.

Return

Return Type
money

Parameters

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

Definition

Copy


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

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

                select
                    @RECORDBASECURRENCYID = INSTALLMENTSPLITWRITEOFF.BASECURRENCYID,
                    @RECORDDATE = REVENUE.DATE
                from
                    dbo.INSTALLMENTSPLITWRITEOFF                 
                    inner join dbo.WRITEOFF on INSTALLMENTSPLITWRITEOFF.WRITEOFFID = WRITEOFF.ID
                    inner join dbo.REVENUE on WRITEOFF.REVENUEID = REVENUE.ID
                where
                    INSTALLMENTSPLITWRITEOFF.ID = @INSTALLMENTSPLITWRITEOFFID;

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

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

            return @AMOUNT;
        end