UFN_DESIGNATION_NEWCOMMITMENTREVENUEBYAPPEAL

Returns the pledge and grant revenue, minus write-offs, for a given designation filtered by appeal information.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@STARTDATE datetime IN
@ENDDATE datetime IN

Definition

Copy


            create function dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUEBYAPPEAL
            (
                @STARTDATE datetime = null,
                @ENDDATE datetime = null
            ) 
            returns @REVENUEINFO table
            (
                APPEALID uniqueidentifier NOT NULL,
                DESID uniqueidentifier NOT NULL,
                DESNAME nvarchar(500) NOT NULL,
                DESTOTALNEWCOMMITMENT money NOT NULL,
                DESNEWCOMMITMENTPAID money NOT NULL,
                DESNEWCOMMITMENTWRITTENOFF money NOT NULL
            )
            as
            begin

                select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
                        @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);

                insert into @REVENUEINFO

                    select 
                        r.APPEALID APPEALID, 
                        d.ID DESID, 
                        d.NAME DESNAME, 
                        coalesce(sum(r.AMOUNT),0) DESTOTALNEWCOMMITMENT, 
                        (
                            select 
                                coalesce(sum(payrevspl.AMOUNT), 0
                            from 
                                dbo.REVENUESPLIT payrevspl 
                                inner join dbo.REVENUE payrev on payrevspl.REVENUEID = payrev.ID
                            where 
                                payrevspl.ID in (
                                                    select ip.PAYMENTID
                                                    from dbo.INSTALLMENTPAYMENT ip
                                                    inner join dbo.REVENUE pledgerev on ip.PLEDGEID = pledgerev.ID
                                                    inner join dbo.REVENUESPLIT pledgerevspl on pledgerev.ID = pledgerevspl.REVENUEID
                                                    where 
                                                        (pledgerev.DATE >= @STARTDATE or @STARTDATE is null) and
                                                        (pledgerev.DATE <= @ENDDATE or @ENDDATE is null) and 
                                                        pledgerev.APPEALID=r.APPEALID and pledgerevspl.DESIGNATIONID=rs.DESIGNATIONID and
                                                        pledgerev.TRANSACTIONTYPECODE in (1,6)
                                                ) 
                                and
                                (payrev.APPEALID=r.APPEALID and payrevspl.DESIGNATIONID=rs.DESIGNATIONID) and 
                                (payrev.DATE >= @STARTDATE or @STARTDATE is null) and
                                (payrev.DATE <= @ENDDATE or @ENDDATE is null)
                        ) DESNEWCOMMITMENTPAID,
                        (
                            select 
                                coalesce(sum(wos.AMOUNT),0
                            from 
                                dbo.WRITEOFFSPLIT wos
                                inner join dbo.WRITEOFF wo on wos.WRITEOFFID = wo.ID
                                inner join dbo.REVENUE worev on wo.REVENUEID = worev.ID
                            where
                                (worev.DATE >= @STARTDATE or @STARTDATE is null) and
                                (worev.DATE <= @ENDDATE or @ENDDATE is null) and
                                (worev.APPEALID=r.APPEALID and wos.DESIGNATIONID=rs.DESIGNATIONID) and
                                worev.TRANSACTIONTYPECODE in (1,6)
                        ) DESNEWCOMMITMENTWRITTENOFF
                        from dbo.REVENUE r
                            inner join dbo.REVENUESPLIT rs on r.ID=rs.REVENUEID
                            inner join dbo.DESIGNATION d on d.ID=rs.DESIGNATIONID
                        where 
                            (r.APPEALID is not null) and 
                            (r.TRANSACTIONTYPECODE in (1,6)) and
                            ((r.DATE >= @STARTDATE) or @STARTDATE is null) and
                            ((r.DATE <= @ENDDATE)or @ENDDATE is null)
                        group by r.APPEALID, d.ID, rs.DESIGNATIONID, d.NAME;

                return;
            end