USP_KPI_DESIGNATIONLEVEL_REVENUETOTAL_INTERNAL

Template used to generate an SP for use with KPIs.

Parameters

Parameter Parameter Type Mode Description
@ASOFDATE datetime IN
@TOTAL money INOUT
@DESIGNATIONLEVELID uniqueidentifier IN
@APPEALID uniqueidentifier IN
@BUSINESSUNITCODEID uniqueidentifier IN
@APPEALREPORTCODE1ID uniqueidentifier IN
@STARTDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_KPI_DESIGNATIONLEVEL_REVENUETOTAL_INTERNAL

            @ASOFDATE datetime,
            @TOTAL money = 0 output,
            @DESIGNATIONLEVELID uniqueidentifier,
            @APPEALID uniqueidentifier = null,
            @BUSINESSUNITCODEID uniqueidentifier = null,
            @APPEALREPORTCODE1ID uniqueidentifier = null,
            @STARTDATE datetime = null

            as    

            set nocount on;

            declare @RECEIVED money;
            declare @PLEDGEBALANCE money;

            with DESIGNATIONS_CTE as (
                select ID 
                from dbo.DESIGNATION D
                where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
                      (D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID) or 
                      (D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID) or 
                      (D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID) or 
                      (D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID
                )

                select @RECEIVED = 
                    coalesce(sum(RDS.AMOUNT), 0)
                    from dbo.REVENUESPLIT RDS
                    inner join DESIGNATIONS_CTE D on RDS.DESIGNATIONID = D.ID
                    inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
                    left join dbo.APPEAL A on R.APPEALID = A.ID
                    where
                        (R.DATE >= @STARTDATE or @STARTDATE is null) and
                        (R.DATE <= @ASOFDATE or @ASOFDATE is null) and
                        (A.ID = @APPEALID or @APPEALID is null) and
                        (A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
                        (A.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
                        R.TRANSACTIONTYPECODE = 0;                

                with DESIGNATIONS_CTE as (
                    select ID 
                    from dbo.DESIGNATION D
                    where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
                          (D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID) or 
                          (D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID) or 
                          (D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID) or 
                          (D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID
                    )

                select @PLEDGEBALANCE =
                    coalesce(sum(RDS.AMOUNT), 0)
                    -
                    (
                    coalesce(( --Subtract payments of the above pledges

                        select coalesce(sum(PAYSPLIT.AMOUNT), 0)
                        from dbo.REVENUESPLIT PAYSPLIT
                        inner join DESIGNATIONS_CTE PAYD on PAYSPLIT.DESIGNATIONID = PAYD.ID
                        inner join dbo.REVENUE PAY on PAY.ID = PAYSPLIT.REVENUEID
                        left join dbo.APPEAL PAYAPP on PAY.APPEALID = PAYAPP.ID                        
                        where
                            PAY.ID IN
                                (SELECT IP.PAYMENTID
                                    FROM dbo.INSTALLMENTPAYMENT IP
                                    inner join dbo.REVENUE R on IP.PLEDGEID = R.ID
                                    left join dbo.APPEAL A on R.APPEALID = A.ID
                                    inner join dbo.REVENUESPLIT RS on R.ID = RS.REVENUEID
                                    inner join DESIGNATIONS_CTE RD on RS.DESIGNATIONID = RD.ID
                                    WHERE (R.DATE >= @STARTDATE or @STARTDATE is null) and
                                    (R.DATE <= @ASOFDATE or @ASOFDATE is null) and
                                    (A.ID = @APPEALID or @APPEALID is null) and
                                    (A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and 
                                    (A.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)) and
                            (PAY.DATE >= @STARTDATE or @STARTDATE is null) and
                            (PAY.DATE <= @ASOFDATE or @ASOFDATE is null) and
                            (PAYAPP.ID = @APPEALID or @APPEALID is null) and
                            (PAYAPP.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and 
                            (PAYAPP.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
                    ), 0)
                    +
                    coalesce(( --Subtract Writeoffs of the above pledges

                        select sum(WOS.AMOUNT)
                        from dbo.WRITEOFFSPLIT WOS
                        inner join DESIGNATIONS_CTE WOSD on WOS.DESIGNATIONID = WOSD.ID
                        inner join dbo.WRITEOFF WO on WOS.WRITEOFFID = WO.ID
                        inner join dbo.REVENUE R on WO.REVENUEID = R.ID
                        left join dbo.APPEAL A on R.APPEALID = A.ID        

                        where 
                            (R.DATE >= @STARTDATE or @STARTDATE is null) and
                            (R.DATE <= @ASOFDATE or @ASOFDATE is null) and
                            (A.ID = @APPEALID or @APPEALID is null) and
                            (A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and 
                            (A.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
                            R.TRANSACTIONTYPECODE in (1,3)
                    ), 0)) 

                from dbo.REVENUESPLIT RDS
                inner join DESIGNATIONS_CTE D on RDS.DESIGNATIONID = D.ID
                inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
                left join dbo.APPEAL A on R.APPEALID = A.ID
                where
                    (R.DATE >= @STARTDATE or @STARTDATE is null) and
                    (R.DATE <= @ASOFDATE or @ASOFDATE is null) and
                    (A.ID = @APPEALID or @APPEALID is null) and
                    (A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and 
                    (A.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
                    R.TRANSACTIONTYPECODE in (1,3);

                set @TOTAL = @RECEIVED + @PLEDGEBALANCE;