-- Stored procedure
-- =============================================
-- Author:		Rino Le Boffe
-- Create date: 16 luglio 2013
-- Description:	
-- =============================================
CREATE procedure [C6MartPeriodico].[RP_DM_MONITORAGGIO_STORICO_pre_selective]
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @ID_ELAB INT
	SET @ID_ELAB = [C6MartPeriodico].GETIDELAB()
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'RP_DM_MONITORAGGIO_STORICO_pre_selective_1',
		GETDATE(),
		'Elaborazione trimestrale'
	)
	TRUNCATE TABLE [C6MartPeriodico].[MONITORAGGIO_STORICO] 
begin try
	INSERT INTO [C6MartPeriodico].[MONITORAGGIO_STORICO]
           ([RETE]
           ,[COD_FISCALE]
           ,[ID_AREA]
           ,[NOME_PROGETTO]
           ,[DATA_CTV]
           ,[CTV_MONITORATO]
           ,[RISORSE_ASSOCIATE]
           ,[ID_ELAB]
           ,CEDOLE_DIV
			,ordinamento_progetto)
	SELECT
           TANAB.RETE AS RETE,
		   VC.COD_FISCALE,
		   CASE
				WHEN TANAB.CODAREA = 'INV' THEN 'Inv'
				WHEN TANAB.CODAREA = 'RIS' THEN 'Ris'
				WHEN TANAB.CODAREA = 'EXR' THEN 'Ext'
				WHEN TANAB.CODAREA = 'LIQ' THEN 'Liq'
		   END AS ID_AREA,
           ISNULL(CS.nomeProgetto, 'XXX') AS NOME_PROGETTO,
           CASE WHEN ISDATE(WRENAB.DTVALORIZ) = 0 THEN NULL
           ELSE
            CAST(CAST(WRENAB.DTVALORIZ AS VARCHAR(8)) AS DATETIME) END AS DATA_CTV,
           WRENAB.CTV AS CTV_MONITORATO,
           WRENAB.CVN AS RISORSE_ASSOCIATE,
           @ID_ELAB AS ID_ELAB,
           (TANAB.TOT_CED + TANAB.TOT_DIV) AS CEDOLE_DIV,
			CM.ChiaveProgetto -- tanab.codprog
	FROM C6STAGINGPERIODICO.TANAB AS TANAB
	INNER JOIN C6StagingPeriodico.TRENAB AS WRENAB
		ON TANAB.CODPROG = WRENAB.CODPROG
		AND TANAB.DTRIF = WRENAB.DTRIF
    INNER JOIN C6StagingPeriodico.RP_ChiaviMonitoraggio CM
        ON TANAB.CODPROG = CM.idmonitoraggio
--    INNER JOIN C6StagingPeriodico.RP_Consulenza CS
--        ON CM.chiaveprogetto = CS.chiaveProgetto
    INNER JOIN C6StagingPeriodico.RP_Progetto PR
        ON CM.chiaveprogetto = PR.chiaveProgetto
    INNER JOIN C6StagingPeriodico.RP_ProgettiPiramideModello CS
        ON PR.chiaveprogettoMod = CS.chiaveProgettoMod
    INNER JOIN [C6MartPeriodico].[RP_vContrattiPerGenerazioneReport] VC
		ON TANAB.CODFIS = CASE WHEN VC.COD_MANDATO IS NULL OR VC.COD_MANDATO = '' 
                              THEN CASE WHEN VC.PIVA_FIDUCIARIA IS NULL OR VC.PIVA_FIDUCIARIA = '' 
                                    THEN VC.COD_FISCALE 
                             ELSE VC.PIVA_FIDUCIARIA END 
                             ELSE VC.COD_MANDATO
                          END
        AND TANAB.RETE = VC.RETE
--        AND VC.DATA_FINEAVANZATO > getDate() 
	WHERE 1 = 1
	AND TANAB.DTFINE = '99991231'
	AND ISDATE(WRENAB.DTVALORIZ) = 1
	--intervento di Luca per errore mart simulazione 16/12/2015
	and tanab.codfis not in ('GRPGLI71R45L407D','MRTGRL59B60H501T','RMNFNC40R14H501K')
	----------------------------------------------------------------------------------
	end try
	begin catch
		select @@error
	end catch
    UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'RP_DM_MONITORAGGIO_STORICO_pre_selective_1' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'RP_DM_MONITORAGGIO_STORICO_pre_selective_1')
    -- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'RP_DM_MONITORAGGIO_STORICO_pre_selective_2',
		GETDATE(),
		'Elaborazione trimestrale'
	)
    INSERT INTO C6MartPeriodico.Test_Quality
	SELECT
           TANAB.RETE AS RETE,
		   VC.COD_FISCALE,
		   'DTVALORIZZ non valida - Area: ' +  
		   CASE
				WHEN TANAB.CODAREA = 'INV' THEN 'Inv'
				WHEN TANAB.CODAREA = 'RIS' THEN 'Ris'
				WHEN TANAB.CODAREA = 'EXR' THEN 'Ext'
				WHEN TANAB.CODAREA = 'LIQ' THEN 'Liq'
		   END + ' Nome Progetto: ' +
           ISNULL(CS.nomeProgetto, 'XXX') + ' - DTVALORIZZ: ' +
          CAST(WRENAB.DTVALORIZ AS VARCHAR(8)) +  
           ' - CTV_MONITORATO: ' + ltrim(rtrim(cast(WRENAB.CTV AS VARCHAR(20)))) +
           ' - RISORSE_ASSOCIATE: ' + ltrim(rtrim(cast(WRENAB.CVN AS VARCHAR(20)))) +
           ' - CEDOLE_DIV: ' + ltrim(rtrim(cast((TANAB.TOT_CED + TANAB.TOT_DIV) AS VARCHAR(20)))) + 
		   ' - ChiaveProgetto: ' + cast(isnull(CM.ChiaveProgetto, '') as varchar(10))
	FROM C6STAGINGPERIODICO.TANAB AS TANAB
	INNER JOIN C6StagingPeriodico.TRENAB AS WRENAB
		ON TANAB.CODPROG = WRENAB.CODPROG
		AND TANAB.DTRIF = WRENAB.DTRIF
    INNER JOIN C6StagingPeriodico.RP_ChiaviMonitoraggio CM
        ON TANAB.CODPROG = CM.idmonitoraggio
--    INNER JOIN C6StagingPeriodico.RP_Consulenza CS
--        ON CM.chiaveprogetto = CS.chiaveProgetto
    INNER JOIN C6StagingPeriodico.RP_Progetto PR
        ON CM.chiaveprogetto = PR.chiaveProgetto
    INNER JOIN C6StagingPeriodico.RP_ProgettiPiramideModello CS
        ON PR.chiaveprogettoMod = CS.chiaveProgettoMod
    INNER JOIN [C6MartPeriodico].[RP_vContrattiPerGenerazioneReport] VC
		ON TANAB.CODFIS = CASE WHEN VC.COD_MANDATO IS NULL OR VC.COD_MANDATO = '' 
                              THEN CASE WHEN VC.PIVA_FIDUCIARIA IS NULL OR VC.PIVA_FIDUCIARIA = '' 
                                    THEN VC.COD_FISCALE 
                             ELSE VC.PIVA_FIDUCIARIA END 
                             ELSE VC.COD_MANDATO
                          END
        AND TANAB.RETE = VC.RETE
--        AND VC.DATA_FINEAVANZATO > getDate() 
	WHERE 1 = 1
	AND TANAB.DTFINE = '99991231'
	AND ISDATE(WRENAB.DTVALORIZ) = 0
-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'RP_DM_MONITORAGGIO_STORICO_pre_selective_2' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'RP_DM_MONITORAGGIO_STORICO_pre_selective_2'
		)
END