-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE procedure [C6Mart].[AL_AggiornaPortafoglioCliente]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
-- SET NOCOUNT ON;
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'AL_AggiornaPortafoglioCliente',
		GETDATE(),
		'Elaborazione giornaliera'
	)
	TRUNCATE TABLE C6Mart.PIRAMIDE_VERT
	--RICALCOLO AGGREGATI
	INSERT INTO C6Mart.PIRAMIDE_VERT
	(
		RETE,
		COD_FISCALE,
		ID_AREA,
		CTV_AREA
	)
	SELECT
		PATR.RETE,
		PATR.COD_FISCALE,
		PATR.ID_AREA,
		SUM(CTV)
	FROM C6Mart.PATRIMONIO_BF PATR
	GROUP BY
		PATR.RETE,
		PATR.COD_FISCALE,
		PATR.ID_AREA
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'AL_AggiornaPortafoglioCliente' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'AL_AggiornaPortafoglioCliente'
		)
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'AL_AggiornaPortafoglioCliente',
		GETDATE(),
		'Elaborazione giornaliera'
	)
	--AGGIORNAMENTO TABELLA CONTRATTOSEI
	--FLAG RISORSE NON ASSOCIATE
	--SOLO PER I CLIENTI A CUI ANDREBBE INVIATO IL REPORT
	UPDATE C6Mart.ContrattoSEI
	SET 
		RisorseNA =
			CASE
				WHEN CLIENTIRISNA.percRisorseNA >= CAST(dbo.GETPARAMETRO('PercMaxRisorseNA') AS DECIMAL(5,2)) THEN 'S'
				ELSE 'N'
			END
	--AGGIUNTA perchè mancava, FABRIZIO E VALERIO per Azzeramento numero solleciti email
		,NumSolleciti =
			CASE
				WHEN (C6.ClienteMigrato = 'S') and (CLIENTIRISNA.percRisorseNA < CAST(dbo.GETPARAMETRO('PercMaxRisorseNA') AS DECIMAL(5,2))) THEN 0
				ELSE NumSolleciti
			END
	FROM C6Mart.ContrattoSEI C6
	LEFT JOIN (
		SELECT 
			NA.RETE, 
			NA.COD_FISCALE, 
			CASE
				WHEN TOT.CTVTOTALE = 0 THEN 0
				ELSE 100 * NA.CTVNA / TOT.CTVTOTALE
			END AS percRisorseNA
		FROM (
			SELECT
				ISNULL(SUM(PATRBF.CTV),0) AS CTVNA,
				PATRBF.RETE,
				PATRBF.COD_FISCALE
			FROM C6Mart.PATRIMONIO_BF PATRBF
			INNER JOIN C6Mart.vTuttiIContratti VCONTRATTIPERSEI
				ON PATRBF.RETE = VCONTRATTIPERSEI.RETE
				AND PATRBF.COD_FISCALE = VCONTRATTIPERSEI.COD_FISCALE
			WHERE ID_AREA = 'Na'
			GROUP BY
				PATRBF.RETE,
				PATRBF.COD_FISCALE
		) NA
		INNER JOIN (
			SELECT
				SUM(PATRBF.CTV) AS CTVTOTALE,
				PATRBF.RETE,
				PATRBF.COD_FISCALE
			FROM C6Mart.PATRIMONIO_BF PATRBF
			INNER JOIN C6Mart.vTuttiIContratti VCONTRATTIPERSEI
				ON PATRBF.RETE = VCONTRATTIPERSEI.RETE
				AND PATRBF.COD_FISCALE = VCONTRATTIPERSEI.COD_FISCALE
			WHERE ID_AREA <> 'Cc'
			GROUP BY
				PATRBF.RETE,
				PATRBF.COD_FISCALE
		) TOT 
			ON TOT.RETE = NA.RETE
			AND TOT.COD_FISCALE = NA.COD_FISCALE
	) CLIENTIRISNA
		ON C6.RETE = CLIENTIRISNA.RETE
		AND C6.COD_FISCALE = CLIENTIRISNA.COD_FISCALE
	--V Aggiorna il flag Profilo Attivo per i clienti che non hanno ricevuto il report	
	UPDATE C6MART.CONTRATTOSEI
	SET profiloAttivo = CASE WHEN (ISNULL(MIFID.SCADUTO,1) = 1) THEN 0 ELSE 1 end
	FROM C6MART.CONTRATTOSEI 
	LEFT JOIN C6MART.MIFID
	ON CONTRATTOSEI.RETE = MIFID.RETE 
	AND CONTRATTOSEI.COD_FISCALE = MIFID.COD_FISCALE
	WHERE InvioBenvenuto = 'N' 
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'UPDATE',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'AL_AggiornaPortafoglioCliente' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'AL_AggiornaPortafoglioCliente'
		)
	/*INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'AL_AggiornaPortafoglioCliente',
		GETDATE(),
		'Elaborazione giornaliera'
	)*/
	--FLAG PARTITE VIAGGIANTI DISINVESTIMENTO
	--SOLO PER I CLIENTI A CUI ANDREBBE INVIATO IL REPORT
	--disabilitato, pv vengono estratte dal CTV
	/*UPDATE C6Mart.CONTRATTOSEI
	SET
		PartViaDisinv =
			CASE
				WHEN PARTVIA.PARTVIADISINV > 0 THEN 'S'
				ELSE 'N'
			END
	FROM C6Mart.CONTRATTOSEI C6
	LEFT JOIN (
		SELECT
			ISNULL(SUM(PATRBF.PARTVIA_DISINV),0) AS PARTVIADISINV,
			PATRBF.RETE,
			PATRBF.COD_FISCALE
		FROM C6Mart.PATRIMONIO_BF PATRBF
		INNER JOIN C6Mart.vTuttiIContratti VCONTRATTIPERSEI
			ON PATRBF.RETE = VCONTRATTIPERSEI.RETE
			AND PATRBF.COD_FISCALE = VCONTRATTIPERSEI.COD_FISCALE
		WHERE ID_AREA <> 'Cc'
		GROUP BY
			PATRBF.RETE,
			PATRBF.COD_FISCALE
	) PARTVIA
		ON C6.RETE = PARTVIA.RETE
		AND C6.COD_FISCALE = PARTVIA.COD_FISCALE
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'UPDATE',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'AL_AggiornaPortafoglioCliente' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'AL_AggiornaPortafoglioCliente'
		)*/
END