UFN_REVENUE_GETNEXTTRANSACTIONDATE

Returns the Next transaction date for a frequency and date.

Return

Return Type
datetime

Parameters

Parameter Parameter Type Mode Description
@FREQUENCY int IN
@NEXTSCHEDULEDDATE datetime IN

Definition

Copy


            CREATE function [dbo].[UFN_REVENUE_GETNEXTTRANSACTIONDATE] (
                    @FREQUENCY INT
                    @NEXTSCHEDULEDDATE datetime
                returns datetime

            begin
                declare @RETVAL datetime
                declare @DAY int

                set @RETVAL = @NEXTSCHEDULEDDATE

                while @RETVAL <= @NEXTSCHEDULEDDATE
                begin
                    if @FREQUENCY = 0 --ANNUALLY

                        set @RETVAL = dateadd(yyyy, 1, @RETVAL)
                    if @FREQUENCY = 1 --SEMI-ANNUALLY

                           set @RETVAL = dateadd(m, 6, @RETVAL)
                    if @FREQUENCY = 2 --QUARTYERLY

                           set @RETVAL = dateadd(m, 3, @RETVAL)
                    if @FREQUENCY = 3 --MONTHLY

                           set @RETVAL = dateadd(m, 1, @RETVAL)
                    if @FREQUENCY = 6 --BIMONTHLY

                           set @RETVAL = dateadd(m, 2, @RETVAL)
                    if @FREQUENCY = 7 --SEMI-MONTHLY

                        begin
                            set @DAY = Day(@RETVAL)
                            if @DAY < 15 
                                set @RETVAL = dateadd(d, 15 - @DAY, @RETVAL)
                            else
                                begin
                                    set @RETVAL = dateadd(m, 1, @RETVAL)
                                    set @DAY = Day(@RETVAL)
                                    set @RETVAL = dateadd(d, (-1 * @DAY) + 1, @RETVAL)    
                                end
                        end

                    if @FREQUENCY = 8 --BIWEEKLY

                           set @RETVAL = dateadd(d, 14, @RETVAL)
                    if @FREQUENCY = 9 --WEEKLY

                           set @RETVAL = dateadd(d, 7, @RETVAL)
                end

                return @RETVAL

            end