﻿-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date, ,>
-- Description:	<Description, ,>
-- =============================================
--select [C6MartPeriodico].[getTrimestre_20190909](getdate(),0)
--select [C6MartPeriodico].[getTrimestre_20190909](getdate(),1)
CREATE FUNCTION [C6MartPeriodico].[getTrimestre_20190909]
(
	@data datetime,
	@primo bit
)
RETURNS VARCHAR(8)
AS
BEGIN
	-- Declare the return variable here
	DECLARE @retData VARCHAR(8)
	-- Add the T-SQL statements to compute the return value here
	IF @primo = 0 -- Restituisce l'ultimo giorno del trimestre precedente
	SET @retData = CASE
		WHEN @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') THEN CAST(YEAR(@data) - 1 AS VARCHAR) + dbo.getParametro('TrimestreDicembre')
		WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') THEN CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo')
		WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') THEN CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno')
		WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreDicembre') THEN CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre')
	END
	ELSE -- Restituisce il primo giorno del trimestre precedente
	SET @retData = CASE
		WHEN @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') THEN CAST(YEAR(@data) - 1 AS VARCHAR) + SUBSTRING(dbo.getParametro('TrimestreDicembre'),1,2) + '01'
		WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') THEN CAST(YEAR(@data) AS VARCHAR) + SUBSTRING(dbo.getParametro('TrimestreMarzo'),1,2) + '01'
		WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') THEN CAST(YEAR(@data) AS VARCHAR) + SUBSTRING(dbo.getParametro('TrimestreGiugno'),1,2) + '01'
		WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreDicembre') THEN CAST(YEAR(@data) AS VARCHAR) + SUBSTRING(dbo.getParametro('TrimestreSettembre'),1,2) + '01'
	END
--PER SIMULAZIONE (Commentare x Trimestrale)------------
IF @primo = 0
--    -- Impostare Data Congelamento Dati
--	--SET @retData = '20150228'ToDo Fc  : test DQ 
--	--SET @retData = '20151130'
--	--SET @retData = '20160229'
--	--SET @retData = '20160531'
--	--SET @retData = '20160831'
--	--SET @retData = '20161130'
--	--SET @retData = '20170228'
--	--SET @retData = '20170531'
--	--SET @retData = '20170831'
--	--SET @retData = '20171130' 
--	--SET @retData = '20180228'
--	--SET @retData = '20180531' 
--	--SET @retData = '20180831' 
--	--SET @retData = '20181130'
--	--SET @retData = '20190228'
	SET @retData = '20190531'
ELSE
--    -- Impostare Primo giorno del mese di Simulazione
--    --SET @retData = '20150301'ToDo Fc  : test DQ 
--    --SET @retData = '20151201'
--    --SET @retData = '20160301'
--    --SET @retData = '20160601'
--	--SET @retData = '20160901'
--	--SET @retData = '20161201'
--	--SET @retData = '20170301'
--	--SET @retData = '20170601'
--	--SET @retData = '20170901'
--	--SET @retData = '20171201' 
--	--SET @retData = '20180301'
--	--SET @retData = '20180601' 
--	--SET @retData = '20180901'  
--	--SET @retData = '20181201' 
--	--SET @retData = '20190301'
SET @retData = '20190601'
------------------------------------------------------------
-- Return the result of the function
	RETURN @retData
----- TEST -----------------------
--    SET @retData = '20151130'
--    RETURN 	@retData
END