UFN_DESIGNATIONLEVEL_GETMAXGIFT

Returns the maximum gift amount for a given time period and designation level.

Return

Return Type
money

Parameters

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

Definition

Copy


            create function dbo.UFN_DESIGNATIONLEVEL_GETMAXGIFT
            (
                @DESIGNATIONLEVELID uniqueidentifier,
                @STARTDATE datetime = null,
                @ENDDATE datetime = null
            ) 
            returns money
            with execute as caller
            as begin
                declare @RESULT money;

                select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
                        @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);

                with DESIGNATIONS_CTE as (
                    select ID 
                    from dbo.DESIGNATION D
                    where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
                          D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID or 
                          D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID or
                          D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID or
                          D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID
                    )

                select @RESULT = max(SPLITAMOUNT)
                from (
                    select (RDS.AMOUNT - coalesce(WOS.AMOUNT, 0)) AS SPLITAMOUNT,
                        RDS.DESIGNATIONID AS DESIGNATIONID
                    from dbo.REVENUESPLIT RDS
                        inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
                        left join dbo.WRITEOFF WO on R.ID = WO.REVENUEID
                        left join dbo.WRITEOFFSPLIT WOS on WO.ID = WOS.WRITEOFFID
                    where
                        (RDS.DESIGNATIONID = WOS.DESIGNATIONID OR WOS.DESIGNATIONID IS NULL) AND
                        (R.DATE >= @STARTDATE or @STARTDATE is null) and
                        (R.DATE <= @ENDDATE or @ENDDATE is null) and 
                                    R.TYPECODE <> 2
                    ) as T1
                inner join DESIGNATIONS_CTE on T1.DESIGNATIONID = DESIGNATIONS_CTE.ID

                return @RESULT;
            end