-- =============================================  
-- Author:  Rino Le Boffe  
-- Create date: 16 luglio 2013  
-- Description:   
--Aggiunta GESTIONE EligoTitoli L192 (FCianfa, 26/11/2014)  
-- =============================================  
CREATE procedure [C6MartPeriodico].[RP_DM_MONITORAGGIO_DETTAGLIO_20190314_preMioFoglio]  
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_DETTAGLIO',  
  GETDATE(),  
  'Elaborazione trimestrale'  
 )  
 TRUNCATE TABLE [C6MartPeriodico].[MONITORAGGIO_DETTAGLIO]   
-- begin try  
 INSERT INTO [C6MartPeriodico].[MONITORAGGIO_DETTAGLIO]  
           ([RETE]  
           ,[COD_FISCALE]  
           ,[POSITION_ID]  
           ,[ID_AREA]  
           ,[DATA_ASSOCIAZIONE]  
           ,[VERSATO_NETTO_DA_ASSOC]  
           ,[UTILE_PERDITA_DA_ASSOC]  
           ,[ID_ELAB])  
 SELECT  
   B.RETE,  
   B.CODFIS,  
   B.POSITIONID,  
   A.[ID_AREA],  
   CASE WHEN A.TIPPROD='CC' and data_associazione < '20110211'   
                THEN cast('20110211' AS DATETIME)  
   ELSE DATA_ASSOCIAZIONE END AS DATA_ASSOCIAZIONE,  
   A.CVNNAC AS [VERSATO_NETTO_DA_ASSOC],  
   CASE WHEN A.CVNNAC =0 THEN 0 ELSE (B.CTV - A.CVNNAC) END AS [UTILE_PERDITA_DA_ASSOC],  
   @ID_ELAB AS [ID_ELAB]  
   FROM  
   C6STAGINGPERIODICO.SPB_CONTR_SINTESI B  
   INNER JOIN  
   (  
            SELECT  
            TCP.RETE AS  [RETE],  
   VC.COD_FISCALE AS [COD_FISCALE],  
      TCP.CODPROD,  
      TCP.TIPPROD,   
      TCP.CODINT,   
      TCP.MAF,  
      TCP.ISIN,  
      TCP.SUBPROD,   
      TCP.CODCONF,   
      TCP.NUMPOL,   
      TCP.CONTO,   
      TCP.RUBR,   
      TCP.CUSTGAR,  
      TCP.TERMID,   
      TCP.ANNO,   
      TCP.PROG,  
               TCP.CODPROG,  
   CASE   
            WHEN TCP.CODAREA='EXR' THEN 'EXT' ELSE TCP.CODAREA   
            END AS ID_AREA,  
   CASE WHEN TCP.DTINGRESSO=0 THEN   
     (CASE WHEN TCP.DTININAC=0 THEN NULL ELSE cast(CAST(TCP.DTININAC AS VARCHAR(8)) as datetime)END)  
   ELSE cast(CAST(TCP.DTINGRESSO AS VARCHAR(8)) as datetime)  
            --ELSE CAST(DTININAC AS DATETIME)    
            END AS [DATA_ASSOCIAZIONE],  
   TCP.CVNNAC  
   FROM  
            C6STAGINGPERIODICO.TANAB ANA   
            JOIN   
   C6STAGINGPERIODICO.TCPTAB TCP  
            ON ANA.CODAREA=TCP.CODAREA  
            AND ANA.RETE=TCP.RETE  
            AND ANA.CODPROG=TCP.CODPROG  
            AND ANA.CODFIS=TCP.CODFIS  
            INNER JOIN [C6MartPeriodico].[RP_vContrattiPerGenerazioneReport] VC  
                        ON ANA.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 ANA.RETE = VC.RETE  
--               AND VC.DATA_FINEAVANZATO > getDate()   
            WHERE DTVALORIZ NOT IN (99991231) AND   
                  DTUSCITA=99991231) A  
   ON   
    A.COD_FISCALE=B.CODFIS  
   AND B.RETE=B.RETE  
   AND A.CODPROD=B.CODPROD  
   AND A.CODCONF=B.CODCONF  
   AND A.CODINT=B.CODINT  
   AND A.SUBPROD=B.SUBPROD  
   AND A.NUMPOL=B.NUMPOL  
   AND A.CONTO=B.CONTO  
   AND (case when a.TIPPROD='CC' and (a.rubr is null OR LTRIM(RTRIM(a.rubr)) = '') then '000' else a.rubr end)=B.RUBR  
            AND (  CASE  
     WHEN PCTKEY IS NULL OR PCTKEY = '' OR LTRIM(RTRIM(PARSENAME(REPLACE(PCTKEY, '/', '.'), 1))) = '' THEN 0  
     ELSE CAST(PARSENAME(REPLACE(PCTKEY, '/', '.'), 1) AS decimal(9, 0)) END ) =A.PROG  
   AND (case when a.TIPPROD='cc' and (a.CUSTGAR is null OR LTRIM(RTRIM(a.CUSTGAR)) = '') then '0' else A.CUSTGAR end)=B.CUSTGAR  
--   AND A.MAF=B.MAF  
  --V Modifica skandia di tipo ASU2  
--Intervento OMNIA Last    
--   AND b.isin = case when (a.tipprod = 'ASU2') then a.isin else 'na' end  
--INIZIO INTERVENTO MIGRAZIONE ASU3  
--   AND b.isin = case when (a.tipprod = 'ASU2' or a.subprod in('L191', 'L192'))  then a.isin else 'na' end  
   ----INIZIO INTERVENTO linea protetta - 18/12/2017  
	   --AND b.isin = case when (a.tipprod = 'ASU2' or a.subprod in('L191', 'L192') or a.codint in ('RV','RM', 'RS','RB','RE'))  then a.isin else 'na' end  
	   AND b.isin = case when (a.tipprod = 'ASU2' or a.subprod in('L191', 'L192') or a.codint in ('RV','RM', 'RS','RB','RE','RF'))  then a.isin else 'na' end
   ----fine INTERVENTO linea protetta - 18/12/2017 
--FINE INTERVENTO MIGRAZIONE ASU3     
--Intervento OMNIA Last    
--intervento di Luca per errore mart simulazione 16/12/2015  
      --and B.POSITIONID is not null and a.cod_fiscale <> 'RZLGDU39M28E202J'  
      and B.POSITIONID is not null and a.cod_fiscale not in ('RZLGDU39M28E202J','GRPGLI71R45L407D','MRTGRL59B60H501T','RMNFNC40R14H501K')  
 --intervento di Luca per errore mart simulazione 13/12/2018 
    and a.cod_fiscale not in ('GRNCML62P41G086H','MTRMRS61B68B519E')  
 --intervento di Luca per errore mart 12/01/2019 
	and a.cod_fiscale not in ('SBBMCG70C01F205D')
	 --intervento di Luca per errore mart 12/03/2019 
		and a.cod_fiscale not in ('CRDLMR58M47G388T','CRDBRN61A57I829K','SCPNTN39C24F839H','SLOGLC87T05H223Q')
 --------------------------------------         
 --end try   
 --begin catch  
 --select @@error  
 --end     catch      
 -- Log esecuzione  
 UPDATE  
  LOG_ESECUZIONE_PERIODICO  
 SET  
  Fine = GETDATE(),  
  Tipo = 'INSERT',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'RP_DM_MONITORAGGIO_DETTAGLIO' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE_PERIODICO  
   WHERE  
    Nome = 'RP_DM_MONITORAGGIO_DETTAGLIO'  
  )  
END