USP_DATALIST_OPPORTUNITYASSOCIATEDREVENUE

A datalist of revenue associated with an opportunity.

Parameters

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

Definition

Copy


        CREATE procedure dbo.USP_DATALIST_OPPORTUNITYASSOCIATEDREVENUE
        (
          @OPPORTUNITYID uniqueidentifier
        ) as
          set nocount on;

          -- The RECORDASSOCIATION field is meant to tell pages where to go if they want to make a field on this list into a link.

          -- 0: Revenue

          -- 1: Event registration


          -- gifts, pledges, grant awards, planned gifts and matching gift claims

          select distinct
            FINANCIALTRANSACTION.ID,
            case
              when FINANCIALTRANSACTION.TYPECODE = 0 then REVENUESPLIT_EXT.APPLICATION
              else FINANCIALTRANSACTION.TYPE
            end as TYPE,
            cast(FINANCIALTRANSACTION.DATE as date) as DATE,
            sum(FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT) as AMOUNT,
            case 
              when FINANCIALTRANSACTION.TYPECODE in (1,3,4,6) then dbo.UFN_PLEDGE_GETBALANCEINCURRENCY(FINANCIALTRANSACTION.ID, isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID))
              else null
            end as BALANCE,
            NF.NAME,
            REVENUEPAYMENTMETHOD.PAYMENTMETHOD,
            FINANCIALTRANSACTION.ID as TRANSACTIONID,
            null PARENTID,
            FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
            isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as BASECURRENCYID,
            0 as RECORDASSOCIATION
          from dbo.REVENUEOPPORTUNITY
            inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUEOPPORTUNITY.ID = FINANCIALTRANSACTIONLINEITEM.ID
            inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
            inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
            inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
            inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
            left outer join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on FINANCIALTRANSACTION.ID = V.FINANCIALTRANSACTIONID
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FINANCIALTRANSACTION.CONSTITUENTID) NF
          where
            FINANCIALTRANSACTION.DELETEDON is null and
            FINANCIALTRANSACTIONLINEITEM.DELETEDON is null and
            REVENUEOPPORTUNITY.OPPORTUNITYID = @OPPORTUNITYID and
            (
              FINANCIALTRANSACTION.TYPECODE in (1,3,4,6) or
              (
                FINANCIALTRANSACTION.TYPECODE = 0 and
                REVENUESPLIT_EXT.APPLICATIONCODE = 0
              )
            )
          group by
            FINANCIALTRANSACTION.ID, FINANCIALTRANSACTION.TYPECODE, REVENUESPLIT_EXT.APPLICATION,
            FINANCIALTRANSACTION.TYPE, FINANCIALTRANSACTION.DATE, NF.NAME,
            REVENUEPAYMENTMETHOD.PAYMENTMETHOD, FINANCIALTRANSACTION.TRANSACTIONCURRENCYID, REVENUE_EXT.NONPOSTABLEBASECURRENCYID,
            V.BASECURRENCYID

          union all

          -- event registrations

          select distinct
            REGISTRANT.ID,
            'Event registration' as TYPE,
            null as DATE,
            REGISTRANTREGISTRATION.AMOUNT,
            dbo.UFN_EVENTREGISTRANT_GETBALANCEINCURRENCY(REGISTRANT.ID, EVENT.BASECURRENCYID) as BALANCE,
            NF.NAME,
            'None' as PAYMENTMETHOD,
            REGISTRANT.ID as TRANSACTIONID,
            null as PARENTID,
            null as TRANSACTIONCURRENCYID,
            EVENT.BASECURRENCYID,
            1 as RECORDASSOCIATION
          from dbo.EVENTREGISTRATIONOPPORTUNITY
            inner join dbo.REGISTRANTREGISTRATION on EVENTREGISTRATIONOPPORTUNITY.ID = REGISTRANTREGISTRATION.REGISTRANTID
            inner join dbo.REGISTRANT on REGISTRANTREGISTRATION.REGISTRANTID = REGISTRANT.ID
            inner join dbo.EVENT on REGISTRANT.EVENTID = EVENT.ID
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REGISTRANT.CONSTITUENTID) NF
          where EVENTREGISTRATIONOPPORTUNITY.OPPORTUNITYID = @OPPORTUNITYID

          union all

          -- pledge payments

          select distinct
            INSTALLMENTREVENUESPLIT.ID,
            INSTALLMENTREVENUE.TYPE,
            cast(INSTALLMENTREVENUE.DATE as date) as DATE,
            INSTALLMENTREVENUESPLIT.BASEAMOUNT as AMOUNT,
            null as BALANCE,
            NF.NAME,
            (select REVENUEPAYMENTMETHOD.PAYMENTMETHOD from dbo.REVENUEPAYMENTMETHOD where REVENUEPAYMENTMETHOD.REVENUEID = INSTALLMENTREVENUE.ID) [PAYMENTMETHOD],
            INSTALLMENTREVENUE.ID as TRANSACTIONID,
            PLEDGEREVENUE.ID as PARENTID,
            INSTALLMENTREVENUE.TRANSACTIONCURRENCYID,
            isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as BASECURRENCYID,
            0 as RECORDASSOCIATION
          from dbo.INSTALLMENTSPLITPAYMENT
            inner join dbo.FINANCIALTRANSACTIONLINEITEM INSTALLMENTREVENUESPLIT on INSTALLMENTSPLITPAYMENT.PAYMENTID = INSTALLMENTREVENUESPLIT.ID
            inner join dbo.FINANCIALTRANSACTION INSTALLMENTREVENUE on INSTALLMENTREVENUESPLIT.FINANCIALTRANSACTIONID = INSTALLMENTREVENUE.ID
            inner join dbo.FINANCIALTRANSACTION PLEDGEREVENUE on INSTALLMENTSPLITPAYMENT.PLEDGEID = PLEDGEREVENUE.ID
            inner join dbo.FINANCIALTRANSACTIONLINEITEM PLEDGEREVENUESPLIT on PLEDGEREVENUESPLIT.FINANCIALTRANSACTIONID = PLEDGEREVENUE.ID
            inner join dbo.REVENUEOPPORTUNITY on REVENUEOPPORTUNITY.ID = PLEDGEREVENUESPLIT.ID
            inner join dbo.REVENUE_EXT on INSTALLMENTREVENUE.ID = REVENUE_EXT.ID
            inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on INSTALLMENTREVENUESPLIT.FINANCIALTRANSACTIONID = V.FINANCIALTRANSACTIONID
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(INSTALLMENTREVENUE.CONSTITUENTID) NF
          where
            PLEDGEREVENUE.DELETEDON is null and
            REVENUEOPPORTUNITY.OPPORTUNITYID = @OPPORTUNITYID

          union all

          -- event registration payments

          select distinct
            EVENTREGISTRANTPAYMENT.PAYMENTID,
            FINANCIALTRANSACTION.TYPE,
            cast(FINANCIALTRANSACTION.DATE as date) as DATE,
            FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT,
            null as BALANCE,
            NF.NAME,
            (select REVENUEPAYMENTMETHOD.PAYMENTMETHOD from dbo.REVENUEPAYMENTMETHOD where REVENUEPAYMENTMETHOD.REVENUEID = FINANCIALTRANSACTION.ID) [PAYMENTMETHOD],
            FINANCIALTRANSACTION.ID as TRANSACTIONID,
            EVENTREGISTRANTPAYMENT.REGISTRANTID as PARENTID,
            FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
            EVENT.BASECURRENCYID,
            0 as RECORDASSOCIATION
          from dbo.EVENTREGISTRANTPAYMENT
            inner join dbo.FINANCIALTRANSACTIONLINEITEM on EVENTREGISTRANTPAYMENT.PAYMENTID = FINANCIALTRANSACTIONLINEITEM.ID
            inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
            inner join dbo.REGISTRANT on EVENTREGISTRANTPAYMENT.REGISTRANTID = REGISTRANT.ID
            inner join dbo.EVENT on REGISTRANT.EVENTID = EVENT.ID
            inner join dbo.REVENUEOPPORTUNITY on FINANCIALTRANSACTIONLINEITEM.ID = REVENUEOPPORTUNITY.ID
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FINANCIALTRANSACTION.CONSTITUENTID) NF
          where
            FINANCIALTRANSACTION.DELETEDON is null and
            REVENUEOPPORTUNITY.OPPORTUNITYID = @OPPORTUNITYID;