-- =============================================  
-- Author:  Rino Le Boffe  
-- Create date: 15 luglio 2013  
-- Description:   
-- =============================================  
CREATE procedure [C6MartPeriodico].[RP_DM_MONITORAGGIO_INIZIALE]  
AS  
BEGIN  
 SET NOCOUNT ON;  
 DECLARE @ID_ELAB INT  
 SET @ID_ELAB = [C6MartPeriodico].GETIDELAB()  
 -- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO  
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_DM_MONITORAGGIO_INIZIALE_1',  
  GETDATE(),  
  'Elaborazione trimestrale'  
 )  
 TRUNCATE TABLE [C6MartPeriodico].[MONITORAGGIO_INIZIALE]   
 INSERT INTO [C6MartPeriodico].[MONITORAGGIO_INIZIALE]  
           ([RETE]  
           ,[COD_FISCALE]  
           ,[DATA_FOTO]  
           ,[CTV_TOTALE]  
           ,[CTV_EXT]  
           ,[CTV_INV]  
           ,[CTV_RIS]  
           ,[CTV_PRE]  
           ,[CTV_LIQ]  
           ,[CTV_CC]  
           ,[CTV_NA]  
           ,[PARTITA_VIAGGIANTE]  
           ,[VAR_COMPLESSIVO]  
           ,[VAR_COPERTURA]  
           ,[PROFILO]  
           ,[VAR_MAX_PROFILO]  
           ,[RISKCLASS]  
           , [RISKCLASSMAX]  
           ,[ID_ELAB]  
   ,ctvself)  
 SELECT  
           V.rete AS RETE,  
           V.COD_FISCALE AS COD_FISCALE,  
           M.dtSalvataggio AS DATA_FOTO,  
      isnull(ctvExt,0) + isnull(ctvInv,0) + isnull(ctvRis,0) + isnull(ctvLiq,0) +   
     isnull(ctvPre,0) + isnull(ctvNa,0) + isnull(ctvCC,0) AS CTV_TOTALE,  
           ctvExt AS CTV_EXT,  
           ctvInv AS CTV_INV,  
           ctvRis AS CTV_RIS,  
           ctvPre AS CTV_PRE,  
           ctvLiq AS CTV_LIQ,  
           ctvCC AS CTV_CC,  
           ctvNa AS CTV_NA,  
           partiteViaggianti AS PARTITA_VIAGGIANTE,  
           [var] AS VAR_COMPLESSIVO,  
           copertura AS VAR_COPERTURA,  
           codiceProfilo AS PROFILO,  
           var_max_profilo AS VAR_MAX_PROFILO,  
--           c6martperiodico.Codifica_CRisk_PhotoData(rischioCredito),  
--           c6martperiodico.Codifica_CRisk_PhotoData(classe_rischio_max),  
           --rischioCredito,  
           --classe_rischio_max,  
           case  when rischioCredito = 5 then 0    
     when rischioCredito = 6 then null    
     else rischioCredito end as rischioCredito,  
   case  when classe_rischio_max = 5 then 0    
      when classe_rischio_max = 6 then null   
      else classe_rischio_max end as classe_rischio_max,    
           @ID_ELAB AS ID_ELAB,  
   ctvself AS CTVSELF  
 FROM [C6MartPeriodico].[RP_vContrattiPerGenerazioneReport] V   
      INNER JOIN C6STAGINGPERIODICO.RP_MonitoraggioStorico M  
    ON V.chiaveClientePB = M.chiaveClientePB  
 WHERE 1 = 1  
  --AND SUBSTRING(TYPE__TYPE_7CAB6, 1, 1) = '1'  
  AND stato = '2'  
    AND M.dtSalvataggio IS NOT NULL  
-- modifica di Luca per errore mart in simulazione 16/12/2015  
-- riabilito 21/7/2017
   --and V.COD_FISCALE not in ('GRPGLI71R45L407D','MRTGRL59B60H501T','RMNFNC40R14H501K')  
----------------------------------------------------------------------------------------     
 -- Log esecuzione  
 UPDATE  
  LOG_ESECUZIONE_PERIODICO  
 SET  
  Fine = GETDATE(),  
  Tipo = 'INSERT',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'RP_DM_MONITORAGGIO_INIZIALE_1' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE_PERIODICO  
   WHERE  
    Nome = 'RP_DM_MONITORAGGIO_INIZIALE_1'  
  )  
    -- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO  
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_DM_MONITORAGGIO_INIZIALE_2',  
  GETDATE(),  
  'Elaborazione trimestrale'  
 )  
 INSERT INTO C6MartPeriodico.Test_Quality   
 SELECT  
           V.rete AS RETE,  
           V.COD_FISCALE AS COD_FISCALE,  
           'dtSalvataggio is null'   
 FROM [C6MartPeriodico].[RP_vContrattiPerGenerazioneReport] V   
      INNER JOIN C6STAGINGPERIODICO.RP_MonitoraggioStorico M  
    ON V.chiaveClientePB = M.chiaveClientePB  
 WHERE 1 = 1  
  --AND SUBSTRING(TYPE__TYPE_7CAB6, 1, 1) = '1'  
  AND stato = '2'  
        AND M.dtSalvataggio IS NULL  
 -- Log esecuzione  
 UPDATE  
  LOG_ESECUZIONE_PERIODICO  
 SET  
  Fine = GETDATE(),  
  Tipo = 'INSERT',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'RP_DM_MONITORAGGIO_INIZIALE_2' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE_PERIODICO  
   WHERE  
    Nome = 'RP_DM_MONITORAGGIO_INIZIALE_2'  
  )  
END