UFN_CALCFISCALPERIOD
Return
Return Type |
---|
datetime |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@FiscalYearStart | varchar(5) | IN | |
@FiscalYearEnd | varchar(5) | IN | |
@CurrentDate | datetime | IN | |
@PeriodRequired | int | IN |
Definition
Copy
create function [BBDW].[UFN_CALCFISCALPERIOD]
(@FiscalYearStart varchar(5),
@FiscalYearEnd varchar(5) = '',
@CurrentDate datetime,
@PeriodRequired int = 0)
returns datetime
as
begin
-- Arguments @PeriodRequired = 0 Current Fiscal Year Start, 1 Current Fiscal Year End
-- Arguments @PeriodRequired = 2 Next Fiscal Year Start, 3 Next Fiscal Year End
-- Arguments @PeriodRequired = 4 Prev Fiscal Year Start, 5 Prev Fiscal Year End
declare @FiscalMonthStart int
declare @CurrentYear int
declare @CurrentMonth int
declare @CurrentFiscalYear int
declare @FiscalPeriod datetime
declare @YearEndDate datetime
declare @YearEnd varchar(5)
declare @StartDate datetime
declare @EndDate datetime
set @CurrentYear = year(@CurrentDate)
set @CurrentMonth = month(@CurrentDate)
set @FiscalMonthStart = (select case
when len(@FiscalYearStart) = 1 then convert(int,left(@FiscalYearStart,1))
else convert(int,left(@FiscalYearStart,2))
end)
set @CurrentFiscalYear = (select case
when @FiscalMonthStart = 1 then @CurrentYear
+ 1
when @FiscalMonthStart > 1
and @CurrentMonth >= @FiscalMonthStart then @CurrentYear
+ 1
when @CurrentMonth < @FiscalMonthStart then @CurrentYear
end)
set @YearEndDate = (select case
when @FiscalMonthStart = 1 then convert(datetime,@FiscalYearStart
+ '/'
+ convert(varchar(4),@CurrentFiscalYear
- 1))
- 1
else convert(datetime,@FiscalYearStart
+ '/'
+ convert(varchar(4),@CurrentFiscalYear))
- 1
end)
if @FiscalYearEnd = ''
set @YearEnd = convert(varchar(5),@YearEndDate,101)
else
set @YearEnd = @FiscalYearEnd
set @StartDate = convert(datetime,@FiscalYearStart
+ '/'
+ convert(varchar(4),@CurrentFiscalYear
- 1))
set @EndDate = convert(datetime,@YearEnd
+ '/'
+ convert(varchar(4),@CurrentFiscalYear))
if @FiscalMonthStart = 1 -- Adjustment to Year of Month starts in Jan
set @EndDate = dateadd(YY,-1,@EndDate)
if @PeriodRequired = 0 -- Current Fiscal Start Date
set @FiscalPeriod = @StartDate
if @PeriodRequired = 1 -- Current Fiscal Start Date
set @FiscalPeriod = @EndDate
if @PeriodRequired = 2 -- Next Fiscal Start Date
set @FiscalPeriod = dateadd(YY,1,@StartDate)
if @PeriodRequired = 3 -- Next Fiscal End Date
set @FiscalPeriod = dateadd(YY,1,@EndDate)
if @PeriodRequired = 4 -- Previous Fiscal Start Date
set @FiscalPeriod = dateadd(YY,-1,@StartDate)
if @PeriodRequired = 5 -- Previous Fiscal End Date
set @FiscalPeriod = dateadd(YY,-1,@EndDate)
return (@FiscalPeriod)
end;