UFN_SMARTQUERY_RECOGNITION_SYBUNT_DONORS

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@THISYEAR_DATERANGE tinyint IN
@THISYEAR_NMONTHS tinyint IN
@THISYEAR_STARTDATE datetime IN
@THISYEAR_ENDDATE datetime IN
@SELECTIONID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@MAXROWS int IN

Definition

Copy


                create function dbo.UFN_SMARTQUERY_RECOGNITION_SYBUNT_DONORS
                (
                    @THISYEAR_DATERANGE tinyint=0, --0=This calendar year , 1=NMonths, 2=Specific range

                    @THISYEAR_NMONTHS tinyint=12,
                    @THISYEAR_STARTDATE datetime=null,
                    @THISYEAR_ENDDATE datetime=null,
                    @SELECTIONID uniqueidentifier=null,
                    @CURRENTAPPUSERID uniqueidentifier=null,
                    @MAXROWS int=500
                )
                returns @T table 
                (
                    ID uniqueidentifier not null
                    LASTRECOGNITIONDATE datetime,
                    NAME nvarchar(154),
                    ADDRESSBLOCK nvarchar(150),
                    CITY nvarchar(50),
                    STATE nvarchar(50),
                    POSTCODE nvarchar(12),
                    LOOKUPID nvarchar(36)
                )

                as

                begin

                    declare @ISADMIN bit;
                    set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);

                    declare @ids table (ID uniqueidentifier PRIMARY KEY);

                    IF @SELECTIONID IS NOT NULL
                    BEGIN
                        insert into @ids
                            select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID);
                    END


                    IF (@THISYEAR_DATERANGE IS NULL) OR (@THISYEAR_DATERANGE NOT IN (0,1,2))
                        SET @THISYEAR_DATERANGE =0;

                    DECLARE @NOW datetime;
                    set @NOW=GETDATE();

                    --Calculate date range

                    IF @THISYEAR_DATERANGE = 0
                    BEGIN

                        SET @THISYEAR_STARTDATE=dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@NOW,0);
                        SET @THISYEAR_ENDDATE=dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@NOW,1);

                    END

                    ELSE IF @THISYEAR_DATERANGE = 1
                    BEGIN

                        SET @THISYEAR_ENDDATE=dbo.UFN_DATE_GETLATESTTIME(@NOW);


                        SET @THISYEAR_STARTDATE=dbo.UFN_DATE_GETEARLIESTTIME(DATEADD(month,-@THISYEAR_NMONTHS, @NOW));

                    END    

                    ELSE IF @THISYEAR_DATERANGE = 2        
                    BEGIN
                        IF @THISYEAR_STARTDATE IS NULL AND @THISYEAR_ENDDATE IS NULL RETURN;

                        IF @THISYEAR_STARTDATE  IS NULL SET @THISYEAR_STARTDATE = '1900-01-01';

                        IF @THISYEAR_ENDDATE  IS NULL SET @THISYEAR_ENDDATE = '2900-01-01';

                        SET @THISYEAR_STARTDATE =dbo.UFN_DATE_GETEARLIESTTIME(@THISYEAR_STARTDATE);

                        SET @THISYEAR_ENDDATE =dbo.UFN_DATE_GETLATESTTIME(@THISYEAR_ENDDATE);

                    END;                    

                    WITH RECOGNITION_CTE as
                    (
                        select 
                            REVENUERECOGNITION.EFFECTIVEDATE,
                            REVENUERECOGNITION.CONSTITUENTID
                        from 
                            dbo.UFN_RECOGNITIONCREDIT_GETRECOGNITIONS(1, null, null) REVENUERECOGNITION
                            cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUERECOGNITION.REVENUESPLITID) REVSITES
                        where
                            (
                                dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or 
                                exists (
                                        select 
                                            1 
                                        from 
                                            dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID, '0104FFD1-A51F-482e-B7D9-ACAECC5DF539', 9
                                        where 
                                            SITEID=REVSITES.SITEID or 
                                            (
                                                SITEID is null and REVSITES.SITEID is null
                                            )
                                        )
                            )
                    )
                    insert into @T                     
                        select top (@MAXROWS
                            C.ID,                             
                            (SELECT MAX([EFFECTIVEDATE]) as LGD from RECOGNITION_CTE AS RR WHERE RR.CONSTITUENTID = C.ID) AS LASTRECOGNITIONDATE,
                            C.NAME,
                            A.ADDRESSBLOCK,
                            A.CITY,
                            STATE.DESCRIPTION,
                            A.POSTCODE,
                            C.LOOKUPID
                        from                         
                            dbo.CONSTITUENT AS C WITH (NOLOCK) 
                            left outer join dbo.ADDRESS AS A WITH (NOLOCK) on A.CONSTITUENTID = C.ID and A.ISPRIMARY = 1
                            left outer join dbo.STATE on STATE.ID = A.STATEID                                                                                                                        
                        WHERE                            
                            --Not this year

                            not exists (
                                select 1 from RECOGNITION_CTE as RR
                                where RR.[EFFECTIVEDATE] between @THISYEAR_STARTDATE and @THISYEAR_ENDDATE
                                and RR.CONSTITUENTID = C.ID
                            )
                            AND            
                            --Some Year

                            C.ID IN             
                            (
                                    select CONSTITUENTID from dbo.UFN_RECOGNITIONCREDIT_GETRECOGNITIONS(1, null, null) as R
                            )                            
                            AND                            
                            (@SELECTIONID IS NULL OR  C.ID IN (SELECT ID FROM @ids))                            
                            AND
                            (@ISADMIN = 1 or 
                                (
                                    (dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTQUERY_FORCONSTIT(@CURRENTAPPUSERID, '0104FFD1-A51F-482e-B7D9-ACAECC5DF539', C.ID) = 1)
                                    and
                                    (dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTQUERY_FORCONSTIT_BYSITE(@CURRENTAPPUSERID, '0104FFD1-A51F-482e-B7D9-ACAECC5DF539', C.ID) = 1)
                                )
                            )                                            
                        ORDER BY 
                            LASTRECOGNITIONDATE DESC
                        OPTION 
                            (OPTIMIZE FOR (@THISYEAR_STARTDATE='20050101',@THISYEAR_ENDDATE='20051231')    );

                    return;
                end;