UFN_DESIGNATIONLEVEL_GETDONORS

Returns the donors for a given designation level.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@DESIGNATIONLEVELID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            CREATE function [dbo].[UFN_DESIGNATIONLEVEL_GETDONORS]
            (
                @DESIGNATIONLEVELID uniqueidentifier,
                @STARTDATE datetime,
                @ENDDATE datetime,
                @CURRENTAPPUSERID uniqueidentifier = null
            )            
            returns @DONORS table
                (
                    CONSTITUENTID uniqueidentifier NOT NULL,
                    CONSTITUENTNAME nvarchar(154) NOT NULL,
                    CONSTITUENTKEYNAME nvarchar(100) NOT NULL,
                    REVENUEID uniqueidentifier NOT NULL,
                    DATE datetime NOT NULL,
                    AMOUNT money NOT NULL
                )
            as
            begin
                select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
                        @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);

                insert @DONORS
                select  REVENUE.CONSTITUENTID,
                        NF.NAME NAME,
                        C.KEYNAME,
                        REVENUE.ID,
                        REVENUE.DATE,
                        REVENUE.BASEAMOUNT AMOUNT
                from dbo.DESIGNATIONLEVEL DL
                inner join dbo.DESIGNATION D on (D.DESIGNATIONLEVEL1ID = DL.ID or
                             D.DESIGNATIONLEVEL2ID = DL.ID or
                             D.DESIGNATIONLEVEL3ID = DL.ID or             
                             D.DESIGNATIONLEVEL4ID = DL.ID or
                             D.DESIGNATIONLEVEL5ID = DL.ID)
                inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.DESIGNATIONID = D.ID
                inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
                inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
                inner join dbo.CONSTITUENT C on REVENUE.CONSTITUENTID = C.ID
                outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
                where 
                (DL.ID = @DESIGNATIONLEVELID) and
                REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9
                and REVENUESPLIT.DELETEDON is null 
                and REVENUESPLIT.TYPECODE != 1
                and REVENUE.DELETEDON is null
                and
                        (REVENUE.DATE >= @STARTDATE or @STARTDATE is null) and
                        (REVENUE.DATE <= @ENDDATE or @ENDDATE is null) and
                        (REVENUE.TYPECODE in (1,3,7))
                  and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 
                                or dbo.UFN_DESIGNATION_USERHASSITEACCESS(D.ID, @CURRENTAPPUSERID) = 1
                                or @CURRENTAPPUSERID is null)
                --RDB 11/8/2010 - refactored or statement into union to gain some performance on big DBs

                union all
                select  REVENUE.CONSTITUENTID,
                        NF.NAME NAME,
                        C.KEYNAME,
                        REVENUE.ID,
                        REVENUE.DATE,
                        REVENUE.BASEAMOUNT AMOUNT                 
                from dbo.DESIGNATIONLEVEL DL
                inner join dbo.DESIGNATION D on (D.DESIGNATIONLEVEL1ID = DL.ID or
                             D.DESIGNATIONLEVEL2ID = DL.ID or
                             D.DESIGNATIONLEVEL3ID = DL.ID or
                             D.DESIGNATIONLEVEL4ID = DL.ID or
                             D.DESIGNATIONLEVEL5ID = DL.ID)
                inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.DESIGNATIONID = D.ID
                inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
                inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
                inner join dbo.CONSTITUENT C on REVENUE.CONSTITUENTID = C.ID
                outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
                where (DL.ID = @DESIGNATIONLEVELID) and
                REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9
                and REVENUESPLIT.DELETEDON is null 
                and REVENUESPLIT.TYPECODE != 1
                and REVENUE.DELETEDON is null
                and 
                        (REVENUE.DATE >= @STARTDATE or @STARTDATE is null) and
                        (REVENUE.DATE <= @ENDDATE or @ENDDATE is null) and
                        (REVENUE.TYPECODE = 0 and (REVENUESPLIT_EXT.APPLICATIONCODE in (0,3) or (REVENUESPLIT_EXT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0)))
                  and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 
                                or dbo.UFN_DESIGNATION_USERHASSITEACCESS(D.ID, @CURRENTAPPUSERID) = 1
                                or @CURRENTAPPUSERID is null)
                order by C.KEYNAME;

               return;
            end