USP_DATAFORMTEMPLATE_VIEW_INDIVIDUALSUMMARY

Returns summary information for a given individual.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@HOUSEHOLDID uniqueidentifier INOUT Household ID
@TOTALGIVING money INOUT Total giving
@TOTALHOUSEHOLDANDMEMBERGIVING money INOUT Total household giving
@ISREGISTRANT bit INOUT Is registrant
@ISVOLUNTEER bit INOUT Is volunteer
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@MEMBERSHIPREVENUE money INOUT
@EVENTREVENUE money INOUT
@TICKETREVENUE money INOUT
@FACILITYREVENUE money INOUT
@MERCHANDISEREVENUE money INOUT
@CURRENCYID uniqueidentifier INOUT
@SECURITYFEATUREID uniqueidentifier IN
@SECURITYFEATURETYPE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_INDIVIDUALSUMMARY (
        @ID uniqueidentifier,
        @HOUSEHOLDID uniqueidentifier = null output,
        @TOTALGIVING money = null output,
        @TOTALHOUSEHOLDANDMEMBERGIVING money = null output,
        @ISREGISTRANT bit = null output,
        @ISVOLUNTEER bit = null output,
        @DATALOADED bit = 0 output,
        @CURRENTAPPUSERID uniqueidentifier,
        @MEMBERSHIPREVENUE money = null output,
        @EVENTREVENUE money = null output,
        @TICKETREVENUE money = null output,
        @FACILITYREVENUE money = null output,
        @MERCHANDISEREVENUE money = null output,
        @CURRENCYID uniqueidentifier = null output,
        @SECURITYFEATUREID uniqueidentifier = null,
        @SECURITYFEATURETYPE tinyint = null
    ) as begin
        set nocount on;

        declare @MULTICURRENCYENABLED bit;
        set @MULTICURRENCYENABLED = dbo.UFN_CONDITIONSETTING_EVALUATEEXISTSCONDITION('Multicurrency'); 
        if @MULTICURRENCYENABLED = 1 set @CURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);

        declare @REVENUEFILTERID uniqueidentifier;
        select @REVENUEFILTERID = ID from dbo.REVENUEFILTER where ISDEFAULT = 1;

        select
            @ISREGISTRANT = dbo.UFN_CONSTITUENT_ISREGISTRANT(@ID),
            @ISVOLUNTEER = dbo.UFN_CONSTITUENT_ISVOLUNTEER(@ID),
            @DATALOADED = 1
        from
            dbo.CONSTITUENT
        where
            CONSTITUENT.ID = @ID;

        --Now can be passed in, but for backwards compat set to the original defaults if either value is null.

        if (@SECURITYFEATUREID is null or @SECURITYFEATURETYPE is null)
            begin
                set @SECURITYFEATUREID = 'ce461c96-9a71-4279-a842-6f596956d470';
                set @SECURITYFEATURETYPE = 1; -- data form

            end

        select top(1) @HOUSEHOLDID = GM.GROUPID
        from dbo.GROUPMEMBER as GM
        left outer join dbo.GROUPDATA as GD on GD.ID = GM.GROUPID
        where GM.MEMBERID = @ID
        and GD.GROUPTYPECODE = 0
        and dbo.UFN_GROUPMEMBER_ISCURRENTMEMBER(GM.ID) = 1

        exec dbo.USP_CONSTITUENT_REVENUESUMMARYEXPANDED
            @CONSTITUENTID = @ID,
            @ISGROUP = 0,
            @HOUSEHOLDID = @HOUSEHOLDID,
            @REVENUEFILTERID = @REVENUEFILTERID,
            @STARTDATE = null,
            @ENDDATE = null,
            @CURRENTAPPUSERID = @CURRENTAPPUSERID,
            @SITEFILTERMODE = 0,
            @SITESSELECTED = null,
            @SECURITYFEATUREID = @SECURITYFEATUREID,
            @SECURITYFEATURETYPE = @SECURITYFEATURETYPE,
            @CURRENCYCODE = 3, --BASE

            @TOTALNUMBER = null,
            @TOTALAMOUNT = @TOTALGIVING output,
            @TOTALAMOUNT_HOUSEHOLD = @TOTALHOUSEHOLDANDMEMBERGIVING output,
            @TOTALYEARS = null,
            @CONSECUTIVEYEARS = null,
            @GIVENSINCEFISCALYEAR = null,
            @TOTALREVENUEWITHGIFTAID = null,
            @FIRSTID = null,
            @FIRSTRECORDID = null,
            @FIRSTDATE = null,
            @FIRSTTYPECODE = null,
            @FIRSTTYPE = null,
            @FIRSTAMOUNT = null,
            @LATESTID = null,
            @LATESTRECORDID = null,
            @LATESTDATE = null,
            @LATESTTYPECODE = null,
            @LATESTTYPE = null,
            @LATESTAMOUNT = null,
            @CURRENCYISOCURRENCYCODE = null,
            @CURRENCYDECIMALDIGITS = 0,
            @CURRENCYSYMBOL = null,
            @CURRENCYSYMBOLDISPLAYSETTINGCODE = 0,
            @ONLYGETSUMMARY = 1;

        declare @CONSTITREVENUE as table
        (
            REVENUETOTAL money,
            TYPECODE int
        )

        insert into @CONSTITREVENUE
            select
                case @MULTICURRENCYENABLED
                    when 1 then sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(FINANCIALTRANSACTIONLINEITEM.ID,@CURRENCYID)) 
                    -- Don't subtract refunds for multicurrency at this point since they're mutually exclusive

                    else sum(FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT) - coalesce(sum(CREDITSPLIT.CREDITTOTAL), 0)
                end as REVENUETOTAL,
                REVENUESPLIT_EXT.TYPECODE
            from 
                dbo.FINANCIALTRANSACTIONLINEITEM
            inner join dbo.REVENUESPLIT_EXT
                on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID 
            inner join dbo.FINANCIALTRANSACTION
                on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
            left outer join dbo.UFN_CREDIT_GETSPLITCREDITAMOUNT_BULK() CREDITSPLIT
                on CREDITSPLIT.SOURCELINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
            where 
                FINANCIALTRANSACTION.DELETEDON is null
            and
                FINANCIALTRANSACTION.CONSTITUENTID = @ID
            and 
                FINANCIALTRANSACTION.TYPECODE in (0,5)
            and
                REVENUESPLIT_EXT.TYPECODE in (1,2,5,14,16,18)
            and
                -- Don't count order payment splits

                REVENUESPLIT_EXT.APPLICATIONCODE <> 10
            and
                FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
            and
                FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
            and 
                exists (
                    select top 1 
                        RSSUB.ID 
                    from
                        dbo.FINANCIALTRANSACTIONLINEITEM RSSUB
                    inner join
                        dbo.REVENUESPLIT_EXT on RSSUB.ID = REVENUESPLIT_EXT.ID
                    cross apply
                        dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
                    where
                        RSSUB.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                    and RSSUB.DELETEDON is null
                    and RSSUB.TYPECODE <> 1
                    and (
                        dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or 
                        exists (
                            select 1 
                            from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE
                            where SITEID=[REVSITES].[SITEID] or 
                            (SITEID is null and [REVSITES].[SITEID] is null)
                        )
                    )
                )
            group by 
                REVENUESPLIT_EXT.TYPECODE

        select
            @MEMBERSHIPREVENUE = (coalesce((select sum(REVENUETOTAL) from @CONSTITREVENUE where TYPECODE in (2, 18)),0)),
            @EVENTREVENUE = (coalesce((select REVENUETOTAL from @CONSTITREVENUE where TYPECODE = 1),0)),
            @TICKETREVENUE = (coalesce((select REVENUETOTAL from @CONSTITREVENUE where TYPECODE = 5),0)),
            @FACILITYREVENUE = coalesce((select REVENUETOTAL from @CONSTITREVENUE where TYPECODE = 14),0),
            @MERCHANDISEREVENUE = (coalesce((select REVENUETOTAL from @CONSTITREVENUE where TYPECODE = 16),0))

    end