UFN_SELECTION_CONSTITUENT_ALLDONORS

Returns all CONSTITUENT IDs that have ever given a gift, regardless of Active status.

Return

Return Type
table

Definition

Copy


        CREATE function dbo.UFN_SELECTION_CONSTITUENT_ALLDONORS()
        returns @IDS table (ID uniqueidentifier)
        as 
        begin
            declare @DONORCONSTITUENCYDEFTYPECODE int;
            declare @DONORCONSTITUENCYDEFLASTYEARS int;
            declare @DONORCONSTITUENCYDEFSTARTDATE datetime;
            declare @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION bit;

            select
                @DONORCONSTITUENCYDEFTYPECODE = DONORCONSTITUENCYDEFTYPECODE,
                @DONORCONSTITUENCYDEFLASTYEARS = DONORCONSTITUENCYDEFLASTYEARS,
                @DONORCONSTITUENCYDEFSTARTDATE = DONORCONSTITUENCYDEFSTARTDATE
            from
                dbo.INSTALLATIONINFO;

            select top 1 
                @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION
            from 
                dbo.CONSTITUENCYCRITERIASPOUSE;

            /*
            MAB 11/3/10 Hiding lifecycle functionality
            select top 1
                @DONORCONSTITUENCYDEFTYPECODE = DONORFILTERTYPECODE, 
                @DONORCONSTITUENCYDEFLASTYEARS = DONORPERIOD, 
                @DONORCONSTITUENCYDEFSTARTDATE = DONORASOFDATE, 
                @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = CONSIDERRECOGNITION 
            from 
                dbo.REVENUELIFECYCLECRITERIA 
            */

            declare @CURRENTDATE datetime;
            set @CURRENTDATE = getdate();

            declare @UPPERBOUND datetime;
            declare @LOWERBOUND datetime;
            set @UPPERBOUND = dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATE);

            /*
            MAB 11/3/10 Hiding lifecycle functionality
            if @DONORCONSTITUENCYDEFTYPECODE = 1
            */            
            if @DONORCONSTITUENCYDEFTYPECODE = 0
                set @LOWERBOUND = dateadd(year, 0 - @DONORCONSTITUENCYDEFLASTYEARS, @UPPERBOUND);
            else
                set @LOWERBOUND = dbo.UFN_DATE_GETEARLIESTTIME(@DONORCONSTITUENCYDEFSTARTDATE);

            -- Add lifecycle donors first

            insert into @IDS(ID)
            select
                CONSTITUENTID
            from
                dbo.REVENUELIFECYCLE
                inner join dbo.LIFECYCLETYPE on LIFECYCLETYPE.ID = REVENUELIFECYCLE.LIFECYCLETYPEID
            where   
                CONSTITUENTID is not null and -- Altru allows revenue without donors

                LIFECYCLETYPE.NAME in ('Consecutive years donor', 'First year donor', 'Loyal donor', 'Major donor', 'Mid-level donor', 'Multiple years donor') and
                LIFECYCLETYPE.LIFECYCLEGROUPCODE = 0;

            -- Add any constituents that have not had their lifecycle values calculated yet

            if @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1
            begin
                insert into @IDS (ID)
                select distinct
                    REVENUERECOGNITION.CONSTITUENTID
                from
                    dbo.REVENUE
                    left join REVENUESPLIT on REVENUESPLIT.REVENUEID=REVENUE.ID
                    inner join dbo.REVENUERECOGNITION with (nolock) on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
                where
                    REVENUERECOGNITION.CONSTITUENTID is not null and -- Altru allows revenue without donors

                    (
                        REVENUE.TRANSACTIONTYPECODE = 1 
                        or (REVENUE.TRANSACTIONTYPECODE = 0 and (REVENUESPLIT.APPLICATIONCODE in (0,3) or (REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0)))
                        or (REVENUE.TRANSACTIONTYPECODE = 5 and REVENUESPLIT.TYPECODE = 0)
                    )  --TMV 05/21/2007 CR273655-042407 Only consider gift payment, pledge, or recurring gift payment for donor constituency.

                    and
                    (
                        (DATE between @LOWERBOUND and @UPPERBOUND)
                        or 
                        (@LOWERBOUND is null and DATE < @UPPERBOUND)
                    )
                    and
                    REVENUERECOGNITION.CONSTITUENTID not in (select ID from @IDS)
                union 
                select distinct
                    REVENUE.CONSTITUENTID
                from
                    dbo.REVENUE
                    left join REVENUESPLIT on REVENUESPLIT.REVENUEID=REVENUE.ID
                where
                    REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors

                    (   
                  REVENUE.TRANSACTIONTYPECODE = 1 
                        or (REVENUE.TRANSACTIONTYPECODE = 0 and (REVENUESPLIT.APPLICATIONCODE in (0,3) or (REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0)))
                        or (REVENUE.TRANSACTIONTYPECODE = 5 and REVENUESPLIT.TYPECODE = 0)
                    )  --TMV 05/21/2007 CR273655-042407 Only consider gift payment, pledge, or recurring gift payment for donor constituency.

                    and
                    (
                        (DATE between @LOWERBOUND and @UPPERBOUND)
                        or 
                        (@LOWERBOUND is null and DATE < @UPPERBOUND)
                    )
                    and
                    REVENUE.CONSTITUENTID not in (select ID from @IDS)
            end
            else
            begin
                insert into @IDS (ID)
                select distinct
                    REVENUE.CONSTITUENTID
                from
                    dbo.REVENUE
                    left join REVENUESPLIT on REVENUESPLIT.REVENUEID=REVENUE.ID
                where
                    REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors

                    (
                        REVENUE.TRANSACTIONTYPECODE = 1 or 
                        (REVENUE.TRANSACTIONTYPECODE = 0 and (REVENUESPLIT.APPLICATIONCODE in (0,3) or (REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0))) or 
                        (REVENUE.TRANSACTIONTYPECODE = 5 and REVENUESPLIT.TYPECODE = 0)
                    )  --TMV 05/21/2007 CR273655-042407 Only consider gift payment, pledge, or recurring gift payment for donor constituency.

                    and
                    (
                        (DATE between @LOWERBOUND and @UPPERBOUND)
                        or 
                        (@LOWERBOUND is null and DATE < @UPPERBOUND)
                    )
                    and
                    REVENUE.CONSTITUENTID not in (select ID from @IDS)
            end
            return
        end