-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [C6MartPeriodicoImmobiliare].[RP_DM_PIRAMIDE_MOD]
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_PERIODICO_IMMOBILIARE
		(Nome, Inizio, Nota)
	VALUES (
		'RP_DM_PIRAMIDE_MOD',
		GETDATE(),
		'Mart Immobiliare'
	)
	TRUNCATE TABLE C6MartPeriodicoImmobiliare.PIRAMIDE_MOD
	INSERT INTO [C6MartPeriodicoImmobiliare].[PIRAMIDE_MOD]
		   (
            [RETE]
		   ,[COD_FISCALE]
		   ,[ID_AREA]
		   ,[NOME_PROGETTO]
		   ,[TIPO_PROGETTO]
		   ,[PERC_AREA]
		   ,[CTV_PROGETTO]
		   ,[CTV_AREA]
		   ,[ORIZZ_TEMP_NUM]
		   ,[ORIZZ_TEMP]
		   ,[CTV_TOTALE]
		   ,[STATO_CONSULENZA]
		   ,[DATA_STATO_CONS]
		   ,[DATA_MIGR_CONS]
		   ,[ID_CONTRATTO]
		   ,[ORDINAMENTO_PROGETTO]
		   ,[ID_ELAB]
		   ,[TIPO_ELAB])
	SELECT 
		VCONTRATTI.rete AS RETE,
		ISNULL(VCONTRATTI.COD_FISCALE, '') AS COD_FISCALE,
		rp_pirmod.area AS ID_AREA,
		-- 2016-12-02: nomeProgetto sempre presente e differente da NULL 
		--case when isnull(rp_pirmod.area, '') = 'inv' and isnull(rp_pirmod.tipoprogetto, 0) = 1 then rp_pirmod.nomeProgetto
        --  ELSE NULL END
		-- fine 
		rp_pirmod.nomeProgetto AS NOME_PROGETTO,
		case when isnull(rp_pirmod.area, '') = 'inv' and isnull(rp_pirmod.tipoprogetto, 0) = 1 then 'ProgettoInvestimento' 
		    else 'Default'
		    end AS TIPO_PROGETTO,
		rp_pirmod.percentualeProgetto AS PERC_AREA,
		ISNULL(Progetto.CTVPROGETTO, MigrazProgetto.CTVPROGETTO) AS CTV_PROGETTO,
		NULL AS CTV_AREA,
	    --convert(int,REPLACE(durata,'anni',''))  AS ORIZZ_TEMP_NUM,
        Progetto.orizzonteTemporale  AS ORIZZ_TEMP_NUM,
		CASE WHEN ISNULL(Progetto.orizzonteTemporale, 0) = 0 THEN '' ELSE 
        cast(Progetto.orizzonteTemporale as varchar(2)) + ' anni' END AS ORIZZ_TEMP,
        --rp_pirmod.durata AS ORIZZ_TEMP,
		NULL AS CTV_TOTALE,
		NULL AS STATO_CONSULENZA,
		NULL AS DATA_STATO_CONS, --ISNULL(CONVERT(DATETIME, CONSUL.C_DATAINIZIO_35C15),NULL) AS DATA_STATO_CONS, -- STRINGA IN FORMATO ISO
		NULL AS DATA_MIGR_CONS,
		NULL AS ID_CONTRATTO,
       ISNULL(Progetto.ChiaveProgetto, MigrazProgetto.ChiaveProgetto) AS ORDINAMENTO_PROGETTO,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB
	FROM C6StagingPeriodico.RP_ProgettiPiramideModello AS rp_pirmod 
INNER JOIN
		[C6MartPeriodicoImmobiliare].[RP_vContrattiPerGenerazioneReport] vCONTRATTI
	ON
		rp_pirmod.chiaveClientePB = vCONTRATTI.chiaveClientePB
	LEFT JOIN
		C6StagingPeriodico.RP_Progetto Progetto
	on 	rp_pirmod.chiaveprogettomod = Progetto.chiaveprogettomod
    LEFT JOIN
		C6StagingPeriodico.RP_Migraz_Progetto MigrazProgetto
	on 	rp_pirmod.chiaveprogettomod = MigrazProgetto.chiaveprogettomod
    AND Progetto.chiaveprogettomod is null
	WHERE 1=1
		and rp_pirmod.DtFineValidita > getdate()		
		-- modifica del 30/11/2016 - il tipoProgetto non è più un campo significativo; ecludo le aree light e void
		   --and ((rp_pirmod.area = 'Inv') OR (rp_pirmod.area <> 'Inv' and rp_pirmod.tipoProgetto = 0))
		   and rp_pirmod.area  not in ('LIGHT', 'VOID')
		-- fine -- modifica del 30/11/2016   
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE_PERIODICO_IMMOBILIARE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'RP_DM_PIRAMIDE_MOD' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE_PERIODICO_IMMOBILIARE
			WHERE
				Nome = 'RP_DM_PIRAMIDE_MOD'
		)
-------------------------------------> modifica del 19/1/2017 per inserire il record di aggregazione per l'area 'Pre'
	/* 
				PER OGNI CF MI ESTRAGGO SOLO I RECORD DELL'AREA 'PRE1' E 'PRE2' RINOMINANDOLI COME 'PRE'
				PER POTERLI POI AGGREGARE
	*/
	SELECT 
		VCONTRATTI.rete AS RETE,
		ISNULL(VCONTRATTI.COD_FISCALE, '') AS COD_FISCALE,
		CASE WHEN rp_pirmod.area IN ('Pre','Pre1','Pre2') THEN 'Pre'
			else rp_pirmod.area
			END  AS ID_AREA,
		rp_pirmod.nomeProgetto AS NOME_PROGETTO,
		case when isnull(rp_pirmod.area, '') = 'inv' and isnull(rp_pirmod.tipoprogetto, 0) = 1 then 'ProgettoInvestimento' 
		    else 'Default'
		    end AS TIPO_PROGETTO,
	    rp_pirmod.percentualeProgetto AS PERC_AREA,
		ISNULL(Progetto.CTVPROGETTO, MigrazProgetto.CTVPROGETTO) AS CTV_PROGETTO,
		NULL AS CTV_AREA,
        Progetto.orizzonteTemporale  AS ORIZZ_TEMP_NUM,
		CASE WHEN ISNULL(Progetto.orizzonteTemporale, 0) = 0 THEN '' ELSE 
        cast(Progetto.orizzonteTemporale as varchar(2)) + ' anni' END AS ORIZZ_TEMP,
		NULL AS CTV_TOTALE,
		NULL AS STATO_CONSULENZA,
		NULL AS DATA_STATO_CONS, --ISNULL(CONVERT(DATETIME, CONSUL.C_DATAINIZIO_35C15),NULL) AS DATA_STATO_CONS, -- STRINGA IN FORMATO ISO
		NULL AS DATA_MIGR_CONS,
		NULL AS ID_CONTRATTO,
       ISNULL(Progetto.ChiaveProgetto, MigrazProgetto.ChiaveProgetto) AS ORDINAMENTO_PROGETTO,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB
		into #appo
	FROM C6StagingPeriodico.RP_ProgettiPiramideModello AS rp_pirmod 
    INNER JOIN
		[C6MartPeriodicoImmobiliare].[RP_vContrattiPerGenerazioneReport] vCONTRATTI
	ON
		rp_pirmod.chiaveClientePB = vCONTRATTI.chiaveClientePB
	LEFT JOIN
		C6StagingPeriodico.RP_Progetto Progetto
	on 	rp_pirmod.chiaveprogettomod = Progetto.chiaveprogettomod
    LEFT JOIN
		C6StagingPeriodico.RP_Migraz_Progetto MigrazProgetto
	on 	rp_pirmod.chiaveprogettomod = MigrazProgetto.chiaveprogettomod
    AND Progetto.chiaveprogettomod is null
	WHERE 1=1
		AND rp_pirmod.area   in ('Pre','Pre1','Pre2')
		and rp_pirmod.DtFineValidita > getdate()		
		   and rp_pirmod.area  not in ('LIGHT', 'VOID')
     /* 
			ORA INSERISCO UN SOLO RECORD 'PRE' PER OGNI CF COME AGGREGAZIONE DELL'AREE 'PRE1' E 'PRE2'
			DOPO QUESTA INSERT, PER OGNI CF, HO DI NUOVO 'PRE', 'PRE1', E 'PRE2' 
	 */
		   insert into [C6MartPeriodicoImmobiliare].[PIRAMIDE_MOD]
			(
            [RETE]
		   ,[COD_FISCALE]
		   ,[ID_AREA]
		   ,[NOME_PROGETTO]
		   ,[TIPO_PROGETTO]
		   ,[PERC_AREA]
		   ,[CTV_PROGETTO]
		   ,[CTV_AREA]
		   ,[ORIZZ_TEMP_NUM]
		   ,[ORIZZ_TEMP]
		   ,[CTV_TOTALE]
		   ,[STATO_CONSULENZA]
		   ,[DATA_STATO_CONS]
		   ,[DATA_MIGR_CONS]
		   ,[ID_CONTRATTO]
		   ,[ORDINAMENTO_PROGETTO]
		   ,[ID_ELAB]
		   ,[TIPO_ELAB])
	select 
			rete,
			cod_fiscale,
			id_area,
			nome_progetto,
			tipo_progetto,
			sum(perc_area) as perc_area,
			sum(ctv_progetto) as ctv_progetto,
			sum(ctv_area) as ctv_area,
			orizz_temp_num,
			orizz_temp,
			sum(ctv_totale) as ctv_totale,
			stato_consulenza,
			data_stato_cons,
			data_migr_cons,
			id_contratto,
			max(ordinamento_progetto),
			id_elab,
			tipo_elab
		from #appo
		group by 
		rete,
		cod_fiscale,
		id_area,
		nome_progetto,
		tipo_progetto,
		orizz_temp_num,
		orizz_temp,
		stato_consulenza,
		data_stato_cons,
		data_migr_cons,
		id_contratto,id_elab,
			tipo_elab
---------------------------------------------------------------> FINE MODIFICA DEL 19/1/2017
END
-- select durata, convert(int,REPLACE(durata,'anni','')) FROM C6StagingPeriodico.RP_ProgettiPiramideModello where durata is not null