USP_REPORT_ELEMENTACTIVITY_GETSTARTENDDATES

Gets the start and end dates for a specific period of time for activity reports.

Parameters

Parameter Parameter Type Mode Description
@DATETYPE nvarchar(36) IN
@STARTDATE datetime INOUT
@ENDDATE datetime INOUT

Definition

Copy


CREATE procedure dbo.USP_REPORT_ELEMENTACTIVITY_GETSTARTENDDATES(
  @DATETYPE nvarchar(36) = '6',
  @STARTDATE datetime = null output
  @ENDDATE datetime = null output
)
as
set nocount on;
declare @CURRENTDATE datetime = dbo.UFN_DATE_GETEARLIESTTIME(getdate())
declare @DATETYPECODE tinyint
declare @FISCALYEARID uniqueidentifier

if len(@DATETYPE) > 0
begin
  if len(@DATETYPE) = 1
    set @DATETYPECODE = cast(@DATETYPE as tinyint)
  else
    set @FISCALYEARID = cast(@DATETYPE as uniqueidentifier)
end

if @FISCALYEARID is not null
  select @STARTDATE = MIN(STARTDATE), @ENDDATE = MAX(ENDDATE) from dbo.GLFISCALPERIOD FP
  where FP.GLFISCALYEARID = @FISCALYEARID
if @DATETYPECODE = 0 -- This fiscal year

begin
  set @STARTDATE = null
  set @ENDDATE = null
  select @STARTDATE = MIN(STARTDATE), @ENDDATE = MAX(ENDDATE) from dbo.GLFISCALPERIOD FP
  where FP.GLFISCALYEARID = 
    (select top 1 GLFISCALYEARID from GLFISCALPERIOD P 
    where @CURRENTDATE between P.STARTDATE and P.ENDDATE)
end
if @DATETYPECODE = 1 -- Last fiscal year

begin
  set @STARTDATE = null
  set @ENDDATE = null
  select @STARTDATE = MIN(FP.STARTDATE), @ENDDATE = MAX(FP.ENDDATE) from dbo.GLFISCALYEAR FY
  inner join dbo.GLFISCALPERIOD FP on FP.GLFISCALYEARID = FY.ID
  where (FY.YEARSEQUENCE+1) =
    (select YEARSEQUENCE from GLFISCALYEAR
    where ID = 
      (select GLFISCALYEARID from GLFISCALPERIOD P 
      where @CURRENTDATE between P.STARTDATE and P.ENDDATE)
    )
  group by FP.GLFISCALYEARID
end
if @DATETYPECODE = 2 -- Next fiscal year

begin
  set @STARTDATE = null
  set @ENDDATE = null
  select @STARTDATE = MIN(FP.STARTDATE), @ENDDATE = MAX(FP.ENDDATE) from dbo.GLFISCALYEAR FY
  inner join dbo.GLFISCALPERIOD FP on FP.GLFISCALYEARID = FY.ID
  where (FY.YEARSEQUENCE-1) =
    (select YEARSEQUENCE from GLFISCALYEAR
    where ID = 
      (select GLFISCALYEARID from GLFISCALPERIOD P 
      where @CURRENTDATE between P.STARTDATE and P.ENDDATE)
    )
  group by FP.GLFISCALYEARID
end
if @DATETYPECODE = 3 -- This fiscal period

begin
  set @STARTDATE = null
  set @ENDDATE = null
  select @STARTDATE = STARTDATE, @ENDDATE = ENDDATE from dbo.GLFISCALPERIOD
  where @CURRENTDATE between STARTDATE and ENDDATE
end
if @DATETYPECODE = 4 -- Last fiscal period

begin
  set @STARTDATE = null
  set @ENDDATE = null
  select @STARTDATE = FP.STARTDATE, @ENDDATE = FP.ENDDATE from dbo.GLFISCALPERIOD FP
  where (FP.SEQUENCE+1) = 
    (select top 1 SEQUENCE from dbo.GLFISCALPERIOD P
    where @CURRENTDATE between STARTDATE and ENDDATE 
    and FP.GLFISCALYEARID = P.GLFISCALYEARID
    order by SEQUENCE)
end
if @DATETYPECODE = 5 -- Next fiscal period

begin
  set @STARTDATE = null
  set @ENDDATE = null
  select @STARTDATE = FP.STARTDATE, @ENDDATE = FP.ENDDATE from GLFISCALPERIOD FP
  where (FP.SEQUENCE-1) =
    (select top 1 SEQUENCE from dbo.GLFISCALPERIOD P
    where @CURRENTDATE between STARTDATE and ENDDATE
    and FP.GLFISCALYEARID = P.GLFISCALYEARID
    order by SEQUENCE)
end
if @DATETYPECODE = 6 -- Specific dates

  select @STARTDATE = @STARTDATE, @ENDDATE = @ENDDATE
if @DATETYPECODE = 7 -- Year to date

begin
  set @STARTDATE = dateadd(year, datediff(year, 0, @CURRENTDATE), 0)
  set @ENDDATE = @CURRENTDATE
end

return 0;