UFN_INSTALLMENT_GETOLDINSTALLMENTBALANCE

Returns the unpaid balance for an installment using a variable set of payments instead of the payments stored in the database.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@INSTALLMENTID uniqueidentifier IN
@PAYMENTID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_INSTALLMENT_GETOLDINSTALLMENTBALANCE
            (
                @INSTALLMENTID uniqueidentifier,
                @PAYMENTID uniqueidentifier
            )
            returns money
            with execute as caller
            as begin
                declare @PAYMENTS table
                (
                    PAYMENTID uniqueidentifier,
                    PLEDGEID uniqueidentifier,
                    INSTALLMENTID uniqueidentifier,
                    AMOUNT money 
                );

                declare @PLEDGEID uniqueidentifier;

                if @PAYMENTID is null
                    return dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(@INSTALLMENTID);

                select top 1 @PLEDGEID = REVENUEID
                from dbo.INSTALLMENT
                where ID = @INSTALLMENTID;

                insert into @PAYMENTS
                    select PAYMENTID, PLEDGEID, INSTALLMENTID, AMOUNT
                    from dbo.INSTALLMENTPAYMENT
                    where PLEDGEID = @PLEDGEID and PAYMENTID <> @PAYMENTID;

                declare @BALANCE money;

                select @BALANCE = INSTALLMENT.AMOUNT - coalesce(sum([PAYMENTSTABLE].AMOUNT), 0)
                from dbo.INSTALLMENT 
                left join @PAYMENTS as [PAYMENTSTABLE] on [PAYMENTSTABLE].INSTALLMENTID = INSTALLMENT.ID
                where INSTALLMENT.ID = @INSTALLMENTID
                group by INSTALLMENT.ID, INSTALLMENT.AMOUNT;

                return @BALANCE;
            end