USP_DATALIST_CONSTITUENTUNMATCHINGGIFTREVENUE

Displays a list of unrealized revenue items for a subsidiary.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_CONSTITUENTUNMATCHINGGIFTREVENUE
                (
                    @CONSTITUENTID uniqueidentifier = null    
                )
                as
                set nocount on;

                select
                    REVENUE.ID, 
                    REVENUE.TYPE TRANSACTIONTYPE,
                    -- Translate typecodes to be consistent with UFN_CONSTITUENTUNREALIZEDREVENUE_BYACCOUNTSYSTEM

                    case REVENUE.TYPECODE 
                        when 6 then 9 
                        when 8 then 10 
                        else REVENUE.TYPECODE 
                    end TRANSACTIONTYPECODE,
                    CONSTITUENT.ID,
                    CONSTITUENT.NAME,
                    dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID),
                    dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(dbo.UFN_REVENUE_GETNEXTINSTALLMENT(REVENUE.ID)),
                    INSTALLMENT.DATE,
                    MATCHINGGIFTCONSTITUENT.NAME,
                    (
                        select
                            dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST 
                        from
                            dbo.FINANCIALTRANSACTIONLINEITEM
                            inner join dbo.REVENUESPLIT_EXT REVENUESPLIT on REVENUESPLIT.ID = FINANCIALTRANSACTIONLINEITEM.ID
                            inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
                        where
                            FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = REVENUE.ID
                    ) as DESIGNATIONLIST,
                    REVENUE.TRANSACTIONCURRENCYID,
                    null,
              null,
              null as MEMBERSHIPPROGRAMNAME,
              null as MEMBERSHIPLEVELNAME
                from 
                    dbo.FINANCIALTRANSACTION REVENUE                
                    inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
                    -- Adding join predicate on REVENUE.ID = INSTALLMENT.REVENUEID even though it isn't necessary to get the correct result

                    -- since without it, a table scan is done on INSTALLMENT.  

                    inner join dbo.INSTALLMENT on (REVENUE.ID = INSTALLMENT.REVENUEID and INSTALLMENT.ID = dbo.UFN_REVENUE_GETNEXTINSTALLMENT(REVENUE.ID))
                    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
                    left outer join REVENUEMATCHINGGIFT on REVENUE.ID = REVENUEMATCHINGGIFT.ID
                    left outer join REVENUE MATCHINGGIFTREVENUE on MATCHINGGIFTREVENUE.ID = REVENUEMATCHINGGIFT.MGSOURCEREVENUEID
                    left outer join CONSTITUENT MATCHINGGIFTCONSTITUENT on MATCHINGGIFTREVENUE.CONSTITUENTID = MATCHINGGIFTCONSTITUENT.ID
                where 
                    CONSTITUENT.ID = @CONSTITUENTID
                    and dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0
                    and REVENUESCHEDULE.ISPENDING = 0    --Isn't Pending

                    and (REVENUEMATCHINGGIFT.ISACTIVE = 1 or REVENUE.TYPECODE <> 3)
                          and REVENUE.TYPECODE <> 15

                union all

                select
                    REVENUE.ID, 
                    REVENUE.TYPE TRANSACTIONTYPE,
                    REVENUE.TYPECODE TRANSACTIONTYPECODE,
                    CONSTITUENT.ID,
                    CONSTITUENT.NAME,
                    dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID),
                    NEXTINSTALLMENT.BALANCE,
                    NEXTINSTALLMENT.DATE,
                    MATCHINGGIFTCONSTITUENT.NAME,
                    (
                        select
                            dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST 
                        from 
                            dbo.FINANCIALTRANSACTIONLINEITEM 
                            inner join dbo.REVENUESPLIT_EXT REVENUESPLIT on REVENUESPLIT.ID = FINANCIALTRANSACTIONLINEITEM.ID
                            inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
                        where
                            FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = REVENUE.ID
                    ) as DESIGNATIONLIST,
                    REVENUE.TRANSACTIONCURRENCYID,
                    SPONSORSHIPINFO.SPONSORSHIPOPPORTUNITY as SPONSORSHIPOPPORTUNITY,
              case 
                        when (
                            select top 1 TYPECODE 
                            from dbo.REVENUESPLIT 
                            where REVENUESPLIT.REVENUEID = REVENUE.ID
                        ) = 17    
                            then 1 
                        else 0 
                        end SPONSORSHIPRGADDITIONALGIFT,
              MEMBERSHIPINFO.PROGRAMNAME as MEMBERSHIPPROGRAMNAME,
              MEMBERSHIPINFO.LEVELNAME as MEMBERSHIPLEVELNAME
                from 
                    dbo.FINANCIALTRANSACTION REVENUE                
                    inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
                    inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
                    left outer join REVENUEMATCHINGGIFT on REVENUE.ID = REVENUEMATCHINGGIFT.ID
                    left outer join FINANCIALTRANSACTION MATCHINGGIFTREVENUE on MATCHINGGIFTREVENUE.ID = REVENUEMATCHINGGIFT.MGSOURCEREVENUEID
                    left outer join CONSTITUENT MATCHINGGIFTCONSTITUENT on MATCHINGGIFTREVENUE.CONSTITUENTID = MATCHINGGIFTCONSTITUENT.ID
                    left outer join(
                        select
                            SP.REVENUEID,
                            coalesce(
                                (
                                    select NAME 
                                    from SPONSORSHIPOPPORTUNITYCHILD 
                                    where ID=S.SPONSORSHIPOPPORTUNITYID
                                ),  
                                (
                                    select NAME 
                                    from SPONSORSHIPOPPORTUNITYPROJECT 
                                    where ID = S.SPONSORSHIPOPPORTUNITYID
                                )
                            ) SPONSORSHIPOPPORTUNITY  
                        from dbo.REVENUESPLIT SP
                            inner join SPONSORSHIP S on S.REVENUESPLITID = SP.ID  
                            inner join SPONSORSHIPOPPORTUNITY SO on SO.ID = S.SPONSORSHIPOPPORTUNITYID  
                        where S.ISMOSTRECENTFORCOMMITMENT = 1  
                    ) SPONSORSHIPINFO on SPONSORSHIPINFO.REVENUEID = REVENUE.ID
          left outer join(
                  select
                      MS.REVENUEID,
                      MP.NAME as [PROGRAMNAME],
                      ML.NAME as [LEVELNAME]
                  from
                      dbo.REVENUESPLIT MS
                      inner join MEMBERSHIPTRANSACTION MT on MT.REVENUESPLITID = MS.ID
                      inner join MEMBERSHIP M on M.ID = MT.MEMBERSHIPID
                      inner join MEMBERSHIPPROGRAM MP on MP.ID = M.MEMBERSHIPPROGRAMID
                      inner join MEMBERSHIPLEVEL ML on ML.ID = M.MEMBERSHIPLEVELID
              ) MEMBERSHIPINFO on MEMBERSHIPINFO.REVENUEID = REVENUE.ID
                outer apply dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTINFO(REVENUE.ID,null) NEXTINSTALLMENT
                where 
                    CONSTITUENT.ID = @CONSTITUENTID
                    and REVENUE.TYPECODE = 2                --Recurring Gift

                    and REVENUESCHEDULE.STATUSCODE in (0,5)        --Active or lapsed

                    and REVENUESCHEDULE.ISPENDING = 0        --Isn't pending

                    and REVENUE.BASEAMOUNT > 0                    --Has Value???


                union all

                select
                    REGISTRANT.ID,
                    'Event Registration',
                    6, --Event Registration,

                    CONSTITUENT.ID,
                    CONSTITUENT.NAME,
                    dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID),
                    dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID),
                    [EVENT].STARTDATE, --JamesWill CR260844-113006 2007/03/15 Use the event start date as the due date

                    [EVENT].NAME,
                    '' as DESIGNATIONLIST,
                    EVENT.BASECURRENCYID as TRANSACTIONCURRENCYID,
             null,
       null,
       null as MEMBERSHIPPROGRAMNAME,
       null as MEMBERSHIPLEVELNAME
                from 
                    dbo.REGISTRANT
                    inner join dbo.CONSTITUENT on CONSTITUENT.ID = REGISTRANT.CONSTITUENTID
                    inner join dbo.[EVENT] on [EVENT].ID = REGISTRANT.EVENTID
                where 
                    CONSTITUENT.ID =  @CONSTITUENTID
                    and dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) > 0

                ; --Obligatory semi-colon