USP_DATALIST_INSTALLMENTS

This datalist returns a list of pledge installments.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@PAYMENTSWRITEOFFSONLY bit IN Payments/Write-offs only

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_INSTALLMENTS 
                (
                    @ID uniqueidentifier,
                    @PAYMENTSWRITEOFFSONLY bit = 0
                )
                as 
                begin
                    set nocount on;

                    select * from 
                    (
                        select 
                            INSTALLMENT.ID,
                            INSTALLMENT.SEQUENCE,
                            LISTORDER = 0,
                            ACTIVITY = 'Installment '  + cast(INSTALLMENT.SEQUENCE as nvarchar(3)),
                            INSTALLMENT.DATE as Date,
                            INSTALLMENT.AMOUNT,
                            PAIDBY = null,
                            PAYMETHOD = NULL,
                            BALANCE = coalesce(dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID),0),
                            ISVISIBLE = 
                                case 
                                    when @PAYMENTSWRITEOFFSONLY = 1 then 0
                                    else 1
                                end,
                            REVENUE.ID as RevenueID,
                            RECORDTYPE = 0
                        from
                            dbo.INSTALLMENT
                        inner join 
                            dbo.REVENUE on INSTALLMENT.REVENUEID = REVENUE.ID
                        where 
                            REVENUE.ID = @ID

                        union all

                        select 
                            null,
                            INSTALLMENT.SEQUENCE,
                            LISTORDER = 1,
                            ACTIVITY = space(10) + 'Payment',
                            PAYMENT.DATE as Date,
                            INSTALLMENTPAYMENT.AMOUNT,
                            PAIDBY = CONSTITUENT.NAME,
                            PAYMETHOD = REVENUEPAYMENTMETHOD.PAYMENTMETHOD,
                            BALANCE = null,
                            ISVISIBLE = 1,
                            PAYMENT.ID as RevenueID,
                            RECORDTYPE = 1
                        from 
                            dbo.REVENUE                        
                        inner join
                            dbo.INSTALLMENT on REVENUE.ID = INSTALLMENT.REVENUEID
                        inner join
                            dbo.INSTALLMENTPAYMENT on INSTALLMENT.ID = INSTALLMENTPAYMENT.INSTALLMENTID
                        inner join
                            dbo.REVENUESPLIT PAYMENTSPLIT on INSTALLMENTPAYMENT.PAYMENTID = PAYMENTSPLIT.ID
                        inner join
                            dbo.REVENUE PAYMENT on PAYMENTSPLIT.REVENUEID = PAYMENT.ID
                        inner join 
                            dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = PAYMENT.ID
                        inner join
                            dbo.CONSTITUENT on PAYMENT.CONSTITUENTID = CONSTITUENT.ID
                        where REVENUE.ID = @ID

                        union all

                        select
                            null,
                            INSTALLMENT.SEQUENCE,
                            LISTORDER = 2,
                            ACTIVITY = space(10) + 'Write-off',
                            WRITEOFF.DATE as Date,
                            INSTALLMENTWRITEOFF.AMOUNT,
                            PAIDBY = null,
                            PAYMETHOD = null,
                            BALANCE = null,
                            ISVISIBLE = 1,
                            REVENUEID = null,
                            RECORDTYPE = 2
                        from
                            dbo.REVENUE
                        inner join
                            dbo.INSTALLMENT on REVENUE.ID = INSTALLMENT.REVENUEID
                        inner join
                            dbo.INSTALLMENTWRITEOFF on INSTALLMENT.ID = INSTALLMENTWRITEOFF.INSTALLMENTID
                        inner join
                            dbo.WRITEOFF on INSTALLMENTWRITEOFF.WRITEOFFID = WRITEOFF.ID
                        where 
                            REVENUE.ID = @ID
                    ) as INSTALLMENTDATA
                    where ISVISIBLE = 1
                    order by SEQUENCE, LISTORDER, Date;
                end