UFN_CONSTITUENT_GIVINGHISTORYINORGCURRENCY_BULK

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


create function [dbo].[UFN_CONSTITUENT_GIVINGHISTORYINORGCURRENCY_BULK]
(
    @CONSTITUENTID uniqueidentifier,
    @CURRENTAPPUSERID uniqueidentifier
)
returns table
as
return(
    with CONSTITUENTREVENUE_CTE as
    (
        select
            REVENUE.CONSTITUENTID,
            REVENUE.ID,
            REVENUE.TYPECODE [TRANSACTIONTYPECODE],
            REVENUE.TYPE [TRANSACTIONTYPE],
            REVENUE.ORGAMOUNT AMOUNT,
            REVENUE.CALCULATEDDATE [DATE],
            REVENUE.DATEADDED
        from dbo.FINANCIALTRANSACTION REVENUE
        inner join dbo.REVENUE_EXT on REVENUE.ID = REVENUE_EXT.ID
        where REVENUE.CONSTITUENTID = @CONSTITUENTID 
            and REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15
            and REVENUE.DELETEDON is null
    ), REVHISTORY_CTE as
    (
        select
            R.CONSTITUENTID,
            R.ID REVENUEID,
            R.TRANSACTIONTYPECODE,
            R.TRANSACTIONTYPE,
            R.AMOUNT as REVENUEAMOUNT,
            R.DATE,
            R.DATEADDED,
            LI.ID SPLITID,
            RSE.APPLICATIONCODE,
            RSE.DESIGNATIONID,
            LI.ORGAMOUNT as SPLITAMOUNT,
            dbo.UFN_PLEDGESPLIT_GETNETAMOUNTINCURRENCY(RSE.ID, null) as SPLITNETAMOUNT
        from CONSTITUENTREVENUE_CTE R 
        inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on R.ID = LI.FINANCIALTRANSACTIONID
        inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = LI.ID
        where 
            LI.DELETEDON is null and LI.TYPECODE = 0 and 
            (
                R.TRANSACTIONTYPECODE in (1, 7, 8) or --Pledge, Auction donation, Donor challenge claim

                (R.TRANSACTIONTYPECODE = 4 and 
                    exists(select top 1 1 
                        from dbo.V_PLANNEDGIFTREVENUE_WITHADDITIONS PGR 
                        inner join dbo.PLANNEDGIFT PG on PG.ID = PGR.PLANNEDGIFTID 
                        where PGR.REVENUEID = R.ID and
                        PG.VEHICLECODE in (0,1,2,5,6,7,8,9,11,12,13))) --Planned gifts other than lead trusts and bequests

            )

        union all

        select
            R.CONSTITUENTID,
            R.ID REVENUEID,
            R.TRANSACTIONTYPECODE,
            R.TRANSACTIONTYPE,
            R.AMOUNT as REVENUEAMOUNT,
            R.DATE,
            R.DATEADDED,
            LI.ID SPLITID,
            RSE.APPLICATIONCODE,
            RSE.DESIGNATIONID,
            LI.ORGAMOUNT as SPLITAMOUNT,
            dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RSE.ID, null) as SPLITNETAMOUNT
        from CONSTITUENTREVENUE_CTE R 
        inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on R.ID = LI.FINANCIALTRANSACTIONID
        inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = LI.ID
        left join dbo.INSTALLMENTSPLITPAYMENT ISP on ISP.PAYMENTID = RSE.ID
        left join dbo.V_PLANNEDGIFTREVENUE_WITHADDITIONS PGR on ISP.PLEDGEID = PGR.REVENUEID
        left join dbo.PLANNEDGIFT PG on PG.ID = PGR.PLANNEDGIFTID
        where
            LI.DELETEDON is null and LI.TYPECODE = 0 and 
            (
                (R.TRANSACTIONTYPECODE = 5 and RSE.APPLICATIONCODE = 0) or -- Donations made on orders

                (
                    R.TRANSACTIONTYPECODE = 0 and -- payments made on...

                    (
                        RSE.APPLICATIONCODE in (0, 3, 7, 13, 12) or -- ...donations, recurring gifts, matching gifts, donor challenge, auction purchase...

                        (RSE.APPLICATIONCODE = 1 and RSE.TYPECODE = 0) or -- gift revenue applied to event registration

                        (RSE.APPLICATIONCODE = 6 and 
                            exists(select top 1 1
                                from dbo.INSTALLMENTSPLITPAYMENT ISP
                                inner join dbo.V_PLANNEDGIFTREVENUE_WITHADDITIONS PGR on ISP.PLEDGEID = PGR.REVENUEID
                                inner join dbo.PLANNEDGIFT PG on PG.ID = PGR.PLANNEDGIFTID
                                where ISP.PAYMENTID = RSE.ID and PG.VEHICLECODE in (3,4,10)
                            )  -- ...lead trusts and bequests

                        )
                    )
                )
            )
    )
    select 
        REVENUEID,
        TRANSACTIONTYPECODE,
        TRANSACTIONTYPE,
        REVENUEAMOUNT,
        [DATE],
        DATEADDED,
        SPLITID,
        APPLICATIONCODE,
        DESIGNATIONID,
        SPLITAMOUNT,
        (SPLITAMOUNT - SPLITNETAMOUNT) as WRITEOFFAMOUNT,
        SPLITNETAMOUNT
    from REVHISTORY_CTE RH
)