-- =============================================  
-- Author:  Marianna Coletta  
-- Create date: <Create Date,,>  
-- Description: riconciliazione posizioni disallineati tra pianificazione e monitoraggio  
-- =============================================  
CREATE procedure [C6MartPeriodico].[SRV_Allineamento_Pianificazione_Monitoraggio]  
AS  
BEGIN  
 -- SET NOCOUNT ON added to prevent extra result sets from  
 -- interfering with SELECT statements.  
 SET NOCOUNT ON;  
-- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE  
  (Nome, Inizio, Nota)  
 VALUES (  
  'SRV_Allineamento_Pianificazione_Monitoraggio',  
  GETDATE(),  
  'Elaborazione Trimestrale'  
 )  
--DROP TABLE #TCPTAB  
--drop table #ciao  
--tcptab filtrata per i disallineati e con position_id  
  SELECT  
   tcp.RETE AS TCP_RETE,  
   dis.COD_FISCALE AS TCP_CODFIS,  
   tcp.codprog,  
   case when isnull(dis.id_area,mon_area)='exr' then 'ext' else isnull(dis.id_area,mon_area) end as id_area,  
   C6StagingPeriodico.rp_Info_DaProdottoCSaCatalogo(  
    TCp.TIPPROD,  
    tcp.CODINT,  
    tcp.MAF,  
    tcp.ISIN,  
    tcp.SUBPROD  
   )  
   +  
   dbo.Crea_positionID(  
    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  
   ) AS POS_ID  
--            '' AS POS_ID  
  into #tcptab  
  FROM  
            C6StagingPeriodico.tcptab as TCP  
   INNER JOIN   
   disallineati2 AS DIS   
   ON DIS.RETE = TCP.RETE  
   AND DIS.COD_FISCALE =   
    CASE WHEN(SUBSTRING(DIS.COD_FISCALE,1,3) = 'FF@') THEN 'FF@'+TCP.CODFIS  
      ELSE  TCP.CODFIS  
    END   
   AND DIS.mon_AREA=TCP.CODAREA  
   AND DIS.mon_codprog=TCP.CODPROG  
   WHERE 1=1  
   and ctvatt>0  
   and dtuscita='99991231'  
--exec [C6MartPeriodico].[RP_TCPTAB]  
--tutte le posizioni della patrimonio_bf in esubero sulle aree monitorate vengono spostate in na  
-- UPDATE C6MARTPERIODICO.PATRIMONIO_BF  
--  set  id_area='Na',  
--   nome_progetto=null, tipo_progetto=null,  
--   ordinamento_progetto=null  
-- FROM   
--  C6MARTPERIODICO.PATRIMONIO_BF as PATBF  
-- inner join  
--  disallineati2 as dis  
--  on patbf.rete=dis.rete  
--  and patbf.cod_fiscale=dis.cod_fiscale  
--  and patbf.id_area=case when dis.id_area='exr' then 'ext' else dis.id_area end  
--  and patbf.ordinamento_progetto=dis.bf_ordprorg  
--  left join #TCPTAB as TCP  
--  ON TCP_RETE=PATBF.RETE  
--  AND TCP_CODFIS=PATBF.COD_FISCALE  
--  AND TCP.POS_ID=PATBF.POSITION_ID  
--  AND TCP.CODPROG=isnull(PATBF.ORDINAMENTO_PROGETTO,0)  
--  AND TCP.id_area=PATBF.ID_AREA  
-- where 1=1  
--   and tcp_rete is null    
--seleziono le posizioni monitorate sull'area ma non presenti sulla stessa area nella patrimonio_bf    
 select tcp_rete,  
  tcp_codfis,  
  TCP.CODPROG,  
  TCP.id_area,  
  TCP.POS_ID  
 into #ciao  
 FROM   
  C6MARTPERIODICO.PATRIMONIO_BF as PATBF  
 inner join  
  disallineati2 as dis  
  on patbf.rete=dis.rete  
  and patbf.cod_fiscale=dis.cod_fiscale  
 and patbf.id_area=dis.id_area  
 and patbf.ordinamento_progetto=dis.bf_ordprorg  
 left join C6StagingPeriodico.RP_ChiaviMonitoraggio ch        --dopo rp  
on ch.chiaveprogetto=patbf.ordinamento_progetto and ch.stato=1   --dopo rp  
 RIGHT join #TCPTAB as TCP  
  ON TCP_RETE=PATBF.RETE  
  AND TCP_CODFIS=PATBF.COD_FISCALE  
  AND TCP.POS_ID=PATBF.POSITION_ID  
  --AND TCP.CODPROG=isnull(DIS.BF_ORDPRORG,0)       dopo rp  
  AND TCP.CODPROG=isnull(ch.idmonitoraggio,0)     --dopo rp  
  AND TCP.id_area=DIS.ID_AREA  
  where patbf.rete is null  
 update C6MARTPERIODICO.PATRIMONIO_BF   
  set C6MARTPERIODICO.PATRIMONIO_BF.ordinamento_progetto = mod.ordinamento_progetto,   
  C6MARTPERIODICO.PATRIMONIO_BF.orizz_temp_num=mod.orizz_temp_num,  
  C6MARTPERIODICO.PATRIMONIO_BF.orizz_temp=mod.orizz_temp,  
  C6MARTPERIODICO.PATRIMONIO_BF.tipo_progetto=mod.tipo_progetto,  
  C6MARTPERIODICO.PATRIMONIO_BF.nome_progetto=mod.nome_progetto,  
  C6MARTPERIODICO.PATRIMONIO_BF.id_area=mod.id_area,  
  C6MARTPERIODICO.PATRIMONIO_BF.stato_consulenza='AttivaAggiornata',  
  C6MARTPERIODICO.PATRIMONIO_BF.data_stato_cons=mod.data_stato_cons,  
  C6MARTPERIODICO.PATRIMONIO_BF.data_migr_cons=mod.data_migr_cons,   
  C6MARTPERIODICO.PATRIMONIO_BF.data_pianif=mod.data_pianif,  
  C6MARTPERIODICO.PATRIMONIO_BF.chiave_progetto= mod.ordinamento_progetto --l'ordinamento progetto equivale alla chiaveprogetto della progetto o migraz_progetto  
  from C6MARTPERIODICO.PATRIMONIO_BF bf  
  inner join #ciao c  
  on bf.rete=c.tcp_rete  
  and bf.cod_fiscale=c.tcp_codfis  
  and bf.position_id=c.pos_id  
 --aggiunta------------------  
  left join C6StagingPeriodico.RP_ChiaviMonitoraggio ch        --dopo rp  
  on ch.chiaveprogetto=bf.ordinamento_progetto and ch.stato=1   --dopo rp  
 --condizione aggiunta mv---------  
  or ch.idmonitoraggio=c.codprog and ch.stato=1   --dopo rp  
 ----------------------------  
  inner join c6martperiodico.piramide_mod as mod  
  on mod.rete=tcp_rete  
  and mod.cod_fiscale=tcp_codfis  
 --aggiunta emanuele---------  
  --and mod.ordinamento_progetto=codprog  
 --condizione modificata mv---------    
  --AND c.CODPROG=isnull(ch.idmonitoraggio,0)     --dopo rp  
  AND mod.ordinamento_progetto=isnull(ch.ChiaveProgetto,0)     --dopo rp  
 ----------------------------  
  and mod.id_area=c.id_area  
  where  rend_non_rappr=0  
UPDATE  
  LOG_ESECUZIONE  
 SET  
  Fine = GETDATE(),  
  Tipo = 'UPDATE',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'SRV_Allineamento_Pianificazione_Monitoraggio' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE  
   WHERE  
    Nome = 'SRV_Allineamento_Pianificazione_Monitoraggio'  
  )  
--esecuzione Stored per il Ricarico della tabella Disallineati2 dopo eventuali sistemazioni automatiche  
EXEC C6MartPeriodico.SRV_LISTA_DISALLINEAMENTI_MONIT  
END