-- Schema: C6Mart
-- Stored Procedure: DM_PREVIDENZIALE

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE procedure [C6Mart].[DM_PREVIDENZIALE]
AS
BEGIN

	SET NOCOUNT ON;
	
	DECLARE @ID_ELAB INT
	DECLARE @TIPO_ELAB VARCHAR(1)
	
	SET @ID_ELAB = C6MART.GETIDELAB()
	SET @TIPO_ELAB = C6MART.GETTIPOELAB()

	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'DM_PREVIDENZIALE',
		GETDATE(),
		'Elaborazione giornaliera'
	)

	TRUNCATE TABLE C6MART.PREVIDENZIALE
	
	INSERT INTO [C6Mart].[PREVIDENZIALE]
		   ([RETE]
		   ,[COD_FISCALE]
		   ,[ANNO_PENSIONE]
		   ,[ETA_PENSIONE]
		   ,[TOT_CONSUMI_ATTESI]
		   ,[TOT_REDDITO_ANNUO]
		   ,[REDDITO_CONSUMI_ESS]
		   ,[PENSIONE_ATTESA_]
		   ,[RENDITA_PREV_COMPL]
		   ,[RENDITA_ASS]
		   ,[REDDITO_CONSUMI_SEC]
		   ,[RENDITA_ASS_TRAD]
		   ,[RENDITA_ASS_UNIT]
		   ,[RENDITA_IMMOB]
		   ,[ALTRE_RENDITE]
		   ,[DIV_RIFERIMENTO]
		   ,[CAMBIO]
		   ,[ID_ELAB]
		   ,[TIPO_ELAB])
	SELECT 
		SUBSTRING(C6STAGING.ALL_CF_PB.RETE_PB,1,1) AS RETE,
		SUBSTRING(C6STAGING.ALL_CF_PB.CODICE_FISCALE,1,16) AS COD_FISCALE,
		YEAR(DATEADD(YY, QUANTIF.RETIREMENTYEARS, ALL_CF_PB.DATA_NASCITA)) AS ANNO_PENSIONE,
		QUANTIF.RETIREMENTYEARS AS ETA_PENSIONE,
		QUANTIF.EXPNEEDSAMT AS TOT_CONSUMI_ATTESI,
		QUANTIF.GROSSINPRIMAMT + QUANTIF.GROSSINSECAMT AS TOT_REDDITO_ANNUO,
		QUANTIF.GROSSINPRIMAMT AS REDDITO_CONSUMI_ESS,
		QUANTIF.STATEPENSIONAMT AS PENSIONE_ATTESA_,
		QUANTIF.PRIVATEPENSIONAMT AS RENDITA_PREV_COMPL,
		QUANTIF.LIFEINTERESTAMT AS RENDITA_ASS,
		QUANTIF.GROSSINSECAMT AS REDDITO_CONSUMI_SEC,
		QUANTIF.INSINTERESTAMT AS RENDITA_ASS_TRAD,
		QUANTIF.INVINTERESTAMT AS RENDITA_ASS_UNIT,
		QUANTIF.REINTERESTAMT AS RENDITA_IMMOB,
		ESTRAZIONE_OTHINTRST.ALTRE_RENDITE AS ALTRE_RENDITE,
		QUANTIF.EXPNEEDSCUR AS DIV_RIFERIMENTO,
		NULL AS CAMBIO,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB
	FROM C6STAGING.ALL_CF_PB
	INNER JOIN C6STAGING.QUANTIF ON ALL_CF_PB.ID_CLI = QUANTIF.F_OID__ADDRE_81D21
	LEFT JOIN (
		SELECT  F_PQUANTIFIC_76FF6, SUM(INTERESTAMT) AS ALTRE_RENDITE
		FROM C6STAGING.OTHINTRST 
		GROUP BY F_PQUANTIFIC_76FF6
	) ESTRAZIONE_OTHINTRST 
		ON ESTRAZIONE_OTHINTRST.F_PQUANTIFIC_76FF6 = QUANTIF.OID_
		
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'DM_PREVIDENZIALE' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'DM_PREVIDENZIALE'
		)

END