-- Schema: C6MartPeriodico
-- Stored Procedure: RP_DM_CONTRATTOSEI





-----------------------------------------------------------------------------
CREATE procedure [C6MartPeriodico].[RP_DM_CONTRATTOSEI]  
AS  
  
-- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO  
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_DM_CONTRATTOSEI',  
  GETDATE(),  
  'Elaborazione trimestrale'  
 )  
  
  
TRUNCATE TABLE C6MartPERIODICO.CONTRATTOSEI  
INSERT INTO C6MartPERIODICO.CONTRATTOSEI  
SELECT       
 r.[Rete],  
 r.[Cod_Fiscale],  
 r.[PIva_Fiduciaria],  
 r.[DATA_INZIOAVANZATO] as [Data_Sott],  
 r.[CodiceContratto],  
 r.[Cod_Agente],  
 r.[Data_Perf_Base],  
 r.[Data_Perf],  
 null as [Fascia_CPP],  
 null as [Email],  
 r.[Indirizzo],  
 r.[CAP],  
 r.[Citta],  
 r.[Provincia],  
 r.[Nazione],  
 r.[Presso],  
 null as[Data_Inizio],  
 r.[Freq_Diagnosi],  
 r.[FREQ_MONITORAGGIO],  
 null as [Freq_DiagnosiPrec],  
 null as [Freq_MonitorPrec],  
 null as [Data_InizioConsInv],  
 r.[Data_InizioBase],  
 r.[Data_FineBase],  
 r.[DATA_INZIOAVANZATO],  
 r.[Data_FineAvanzato],  
 null as [ProgressivoInvio],  
 'N',  
 'N',  
 null as [DataUltimoInvio],  
 r.[ClienteMigrato],  
 r.[RisorseNA],  
 null as [PartViaDisinv],  
 r.[NumSolleciti],  
 r.[Data_UltimoSollecito],  
 r.[NumRevoche],  
 r.[Data_UltimaRevoca],  
 null as [Note],  
 null as [Data_Invio_Diagnosi_Trimestrale],  
 null as [Data_Invio_Monitoraggio_Trimestrale],  
 r.[ProfiloAttivo],  
 null as [Rol],  
 r.[TIP_CONTRATTO],  
 r.[TIP_RIATTIVAZIONE]  
  
FROM   
    [C6MartPeriodico].[RP_vContrattiPerGenerazioneReport]  r
left join  C6MartPeriodico.ANAG_CLIENTI a
on a.RETE=r.rete and a.COD_FISCALE=r.COD_FISCALE
  
 -- Log esecuzione  
 UPDATE  
  LOG_ESECUZIONE_PERIODICO  
 SET  
  Fine = GETDATE(),  
  Tipo = 'INSERT',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'RP_DM_CONTRATTOSEI' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE_PERIODICO  
   WHERE  
    Nome = 'RP_DM_CONTRATTOSEI'  
  )  
    
    
    
UPDATE c6martperiodico.contrattosei  
 set    
   indirizzo        = a.indirizzo  
  ,cap         = a.cap   
  ,citta         = a.citta  
  ,prov         = a.Provincia  
  ,nazione        = a.Nazione  
  ,presso         = a.Presso  
  ,Cod_Agente        = a.Cod_Agente  
  ,Freq_Diagnosi     = a.Freq_Diagnosi  
     ,FREQ_MONITOR      = a.FREQ_MONITORAGGIO  
from c6mart.vcontratti a  
inner join c6martperiodico.contrattosei b  
on a.codicecontratto = b.codicecontratto  
  
  
UPDATE contr
 set    
   indirizzo        = a.indirizzo  
  ,cap         = a.cap   
  ,citta         = a.citta  
  ,provincia        = a.Prov  
  ,nazione        = a.Nazione  
  ,presso         = a.Presso  
  ,Cod_Agente        = a.Cod_Agente  
  ,Freq_Diagnosi     = a.Freq_Diagnosi  
     ,FREQ_MONITORAGGIO = a.FREQ_MONITOR  
from c6martperiodico.contrattosei a  
inner join [C6StagingPeriodico].[APPO_CONTRATTI] contr on a.codicecontratto = contr.codicecontratto  
left join  [C6StagingPeriodico].[APPO_CONTRATTI_LIMITER] lim on lim.COD_FISCALE = contr.COD_FISCALE and lim.rete = contr.rete
where lim.cod_fiscale is not null or 0 = (select count(*) from  [C6StagingPeriodico].[APPO_CONTRATTI_LIMITER] with (nolock))


  
-- Allineamento Flag Rol su contratto sei  
  
Update C6MartPeriodico.ContrattoSei  
Set Rol = Case D.statorol  
    When 'S' then D.statorol  
    Else 'N'  
    End,  
    EmAil = Case d.alertrol  
    When 'S' then D.Email  
    End        
from  C6MartPeriodico.ContrattoSei C inner join  C6StagingPeriodico.datiRol2 D  
on d.codContratto = c.codiceContratto  
  



