UFN_STEWARDSHIPPLAN_TOP4PURPOSES_TOITEMLISTXML

Returns the 4 purposes to which the constituent has given the most money.

Return

Return Type
xml

Parameters

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

Definition

Copy


CREATE function dbo.UFN_STEWARDSHIPPLAN_TOP4PURPOSES_TOITEMLISTXML
(
    @CONSTITUENTID uniqueidentifier,
    @CURRENTAPPUSERID uniqueidentifier

returns xml
as begin
    declare @PURPOSES xml;

    declare @TempTbl table (
       [ID] uniqueidentifier,
       [DESIGNATIONLEVEL] nvarchar(100),
       [TOTALGIVEN] money)

    insert into @TempTbl
        select 
            DESIGNATIONLEVEL.ID,            
            DESIGNATIONLEVEL.NAME as DESIGNATIONLEVEL,            
            SUM(REVENUESPLIT.AMOUNT) as TOTALGIVEN
        from dbo.REVENUE
            inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
            inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
            inner join dbo.DESIGNATIONLEVEL
                on (
                    DESIGNATION.DESIGNATIONLEVEL1ID = DESIGNATIONLEVEL.ID or
                    DESIGNATION.DESIGNATIONLEVEL2ID = DESIGNATIONLEVEL.ID or
                    DESIGNATION.DESIGNATIONLEVEL3ID = DESIGNATIONLEVEL.ID or             
                    DESIGNATION.DESIGNATIONLEVEL4ID = DESIGNATIONLEVEL.ID or
                    DESIGNATION.DESIGNATIONLEVEL5ID = DESIGNATIONLEVEL.ID)        
        where REVENUE.CONSTITUENTID = @CONSTITUENTID 
            and
            (
                (REVENUE.TRANSACTIONTYPECODE in (1, 4)) --Pledges, Planned Gifts

                or
                (REVENUE.TRANSACTIONTYPECODE= 0 and 
                    (
                        REVENUESPLIT.APPLICATIONCODE in (0, 1, 3, 4, 5, 7, 8) --Donations, Event registration payment, Recurring gift payment, Other, Membership payment, Matching gift payment, grant payment

                    )
                )
            )

        Group by DESIGNATIONLEVEL.ID, DESIGNATIONLEVEL.NAME, DESIGNATIONLEVEL.USERID

    set @PURPOSES = (
        Select
            top 4(T.ID),
            T.DESIGNATIONLEVEL,
            T.TOTALGIVEN

        from @TempTbl T

        inner join dbo.DESIGNATIONLEVEL DL
            on DL.ID = T.ID

        where dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID,DL.SITEID) = 1

        order by T.TOTALGIVEN desc

        for xml raw('ITEM'), type, elements, root('PURPOSES'), binary base64
    );

    return @PURPOSES;
end