-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
--[C6MartPeriodico].[TEMP_RP_DM_DETTAGLIO_ASUL_pre_selective]
CREATE procedure [C6MartPeriodico].[RP_DM_DETTAGLIO_ASUL_pre_selective]
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @ID_ELAB INT
	DECLARE @TIPO_ELAB VARCHAR(1)
	SET @ID_ELAB = C6MartPeriodico.GETIDELAB()
	SET @TIPO_ELAB = C6MartPeriodico.GETTIPOELAB()
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'RP_DM_DETTAGLIO_ASUL_pre_selective_1',
		GETDATE(),
		'Elaborazione trimestrale'
	)
    DECLARE @MaxDTTrim AS decimal(9,0)
    SELECT @MaxDTTrim = MAX(DTTRIM) FROM C6STAGINGPERIODICO.WSEIUL
	TRUNCATE TABLE C6MartPeriodico.DETTAGLIO_ASUL
	SELECT --********* ATTENZIONE ALLA GESTIONE DEI PRODOTTI ASSICURATIVI SKANDIA
		   --********* DA AGGIUNGERE
		   --********* SI TROVANO CON CONDIZIONE COD_ISIN_SOTTOSTANTE IS NOT NULL
		   --********* ENTRO SUL CATALOGO CON COD_ISIN_SOTTOSTANTE, COD_MAF_SOTTOSTANTE  
		SPB_CONTR_SINTESI.RETE AS RETE,
		SPB_CONTR_SINTESI.CODFIS AS COD_FISCALE,
		--ISNULL(
		--	C6StagingPeriodico.RP_Info_DaProdottoCSaCatalogo(SPB_CONTR_SINTESI.TIPPROD, SPB_ASS_UNIT.CODINT, SPB_ASS_UNIT.MAF, '', SPB_ASS_UNIT.SUBPROD), 
		--	SUBSTRING(SPB_CONTR_SINTESI.POSITIONID, 1, 57)) AS COD_PRODOTTO,
		CAST('' AS VARCHAR(255)) AS COD_PRODOTTO,
		--ISNULL(SUBSTRING(SPB_CONTR_SINTESI.POSITIONID, 1, 57),
  --          C6StagingPeriodico.RP_Info_DaProdottoCSaCatalogo(SPB_CONTR_SINTESI.TIPPROD, SPB_ASS_UNIT.CODINT, SPB_ASS_UNIT.MAF, '', SPB_ASS_UNIT.SUBPROD)
  --            ) AS COD_PRODOTTO,
		SPB_ASS_UNIT.CODCONF AS ID_CONTRATTO,
		SPB_ASS_UNIT.SUBPROD AS COD_SOTTOPRODOTTO,
		SPB_ASS_UNIT.CODINT AS COD_INTERNO,
		SPB_ASS_UNIT.CTV AS CTV,
        CASE
			WHEN ISDATE(SPB_ASS_UNIT.DTRIFE) = 0 THEN NULL
			ELSE CAST(CAST(SPB_ASS_UNIT.DTRIFE AS VARCHAR(8)) AS DATETIME)
		END AS DATA_RIF,
		SPB_ASS_UNIT.ISINFIT AS COD_ISIN_FITTIZIO,
		SPB_ASS_UNIT.ISIN AS COD_ISIN_SOTT,
		SPB_ASS_UNIT.MAF AS COD_MAF_SOTT,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB,
		SPB_CONTR_SINTESI.POSITIONID AS SPB_POSITIONID
    INTO #TEMP_DETTAGLIO_ASUL		
	FROM 
		C6STAGINGPERIODICO.SPB_CONTR_SINTESI 
	INNER JOIN
		C6STAGINGPERIODICO.WSEIUL SPB_ASS_UNIT 
		ON SPB_CONTR_SINTESI.CODCONF = SPB_ASS_UNIT.CODCONF
	LEFT OUTER JOIN
		C6STAGINGPERIODICO.RP_CatalogoProdotti CATITEMREF 
		ON SPB_ASS_UNIT.CODINT = CATITEMREF.CodInterno
		AND SPB_ASS_UNIT.SUBPROD = CATITEMREF.CodSottoprodotto
        --AND CATITEMREF.Visibilita = 1 
		AND (SPB_ASS_UNIT.ISIN = '' --and CATITEMREF.CodIsin is null --= '$'
              OR (
			SPB_ASS_UNIT.ISIN = CATITEMREF.CodAdeguatezza
			AND 
			SPB_ASS_UNIT.MAF = CATITEMREF.CodMaf)
		)
WHERE SPB_CONTR_SINTESI.tipprod ='ASUL'
		AND SPB_ASS_UNIT.DTTRIM = @MaxDTTrim
	AND CATITEMREF.Visibilita = 1
    and SPB_CONTR_SINTESI.CTV <> 0
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'RP_DM_DETTAGLIO_ASUL_pre_selective_1' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'RP_DM_DETTAGLIO_ASUL_pre_selective_1'
		)
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'RP_DM_DETTAGLIO_ASUL_pre_selective_2',
		GETDATE(),
		'Elaborazione trimestrale'
	)
	declare @visible int 
	set @visible = 1
	while @visible >= 0
		begin
			UPDATE #TEMP_DETTAGLIO_ASUL
			SET COD_PRODOTTO = CAT.CATALOGUEID
			FROM 
				   #TEMP_DETTAGLIO_ASUL
			--********************************************************************************
				   INNER JOIN  
				   (
						select * from c6stagingperiodico.rp_catalogoprodotti where visibilita = 1
				   )CAT
						on  
						--caso 1
						(COD_SOTTOPRODOTTO not in ('LIQUI', 'VAR5', 'VAR10', 'VAR15')
						and isnull(cat.CODINTERNO,'') = isnull(COD_INTERNO,'')
						and isnull(cat.CODSOTTOPRODOTTO,'') = isnull(COD_SOTTOPRODOTTO,''))
						or 
						--else caso 1 
						(COD_SOTTOPRODOTTO in ('LIQUI', 'VAR5', 'VAR10', 'VAR15')
						and isnull(cat.CODINTERNO,'') = isnull(COD_INTERNO,'')
						and isnull(cat.CODSOTTOPRODOTTO,'') = isnull(COD_SOTTOPRODOTTO,'')
						and cat.TIPOPRODOTTO = 'ASUL')
			--***********************************************************************************		
			WHERE COD_PRODOTTO = ''
			set @visible = @visible - 1
		end
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'RP_DM_DETTAGLIO_ASUL_pre_selective_2' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'RP_DM_DETTAGLIO_ASUL_pre_selective_2'
		)
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'RP_DM_DETTAGLIO_ASUL_pre_selective_3',
		GETDATE(),
		'Elaborazione trimestrale'
	)
		UPDATE #TEMP_DETTAGLIO_ASUL
		SET COD_PRODOTTO = SPB_POSITIONID
		WHERE COD_PRODOTTO = ''
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'RP_DM_DETTAGLIO_ASUL_pre_selective_3' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'RP_DM_DETTAGLIO_ASUL_pre_selective_3'
		)
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'RP_DM_DETTAGLIO_ASUL_pre_selective_4',
		GETDATE(),
		'Elaborazione trimestrale'
	)
	INSERT INTO [C6MartPeriodico].[DETTAGLIO_ASUL]
		   ([RETE]
		   ,[COD_FISCALE]
		   ,[COD_PRODOTTO]
		   ,[ID_CONTRATTO]
		   ,[COD_SOTTOPRODOTTO]
		   ,[COD_INTERNO]
		   ,[CTV]
		   ,[DATA_RIF]
		   ,[COD_ISIN_FITTIZIO]
		   ,[COD_ISIN_SOTT]
		   ,[COD_MAF_SOTT]
		   ,[ID_ELAB]
		   ,[TIPO_ELAB])
	SELECT
		   [RETE]
		   ,[COD_FISCALE]
		   ,[COD_PRODOTTO]
		   ,[ID_CONTRATTO]
		   ,[COD_SOTTOPRODOTTO]
		   ,[COD_INTERNO]
		   ,[CTV]
		   ,[DATA_RIF]
		   ,[COD_ISIN_FITTIZIO]
		   ,[COD_ISIN_SOTT]
		   ,[COD_MAF_SOTT]
		   ,[ID_ELAB]
		   ,[TIPO_ELAB]
     FROM #TEMP_DETTAGLIO_ASUL
    DROP TABLE #TEMP_DETTAGLIO_ASUL
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'RP_DM_DETTAGLIO_ASUL_pre_selective_4' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'RP_DM_DETTAGLIO_ASUL_pre_selective_4'
		)
END