UFN_REVENUE_GETPREVIOUSTRANSACTIONDATE

Returns the previous 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_GETPREVIOUSTRANSACTIONDATE] (
                    @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 > 1 and @DAY <= 15
                                set @RETVAL = dateadd(d, -1 * (@DAY - 1), @RETVAL)
                            else
                            begin
                                if @DAY = 1
                                    set @RETVAL = dateadd(m, -1, @RETVAL)
                                set @DAY = day(@RETVAL)
                                set @RETVAL = dateadd(d, -1 * (@DAY - 15), @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