CREATE procedure [C6StagingPeriodicoImmobiliare].[RP_ST_BonificaClientiDoppi]  
AS  
BEGIN  
 -- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO_IMMOBILIARE  
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_ST_BonificaClientiDoppi',  
  GETDATE(),  
  'Elaborazione Trimestrale Immobiliare'  
 )  
-----------------------------------------------------------------
drop table if exists #doppiCF
drop table if exists #ClientiDoppiInAppoCF
drop table if exists #ClientiNONInAppoCF
drop table if exists #ClientiChiaveClienteGiustaCF
drop table if exists #ClientiChiaveClienteGiustaESbagliataCF
drop table if exists #ClientiChiaveSbagliataCF
drop table if exists #doppiPIVA
drop table if exists #ClientiDoppiInAppoPIVA
drop table if exists #ClientiNONInAppoPIVA
drop table if exists #ClientiChiaveClienteGiustaPIVA
drop table if exists #ClientiChiaveClienteGiustaESbagliataPIVA
drop table if exists #ClientiChiaveSbagliataPIVA
----Individuo i cf doppi
 select rete,codfis,count(*) as numero
 into #doppiCF
 FROM C6StagingPeriodicoImmobiliare.RP_InfoCliente
 where codfis is not null and codfis <> ''
  group by rete,codfis
 having count(*)>1
 --if
 select rete,COD_FISCALE
 into #ClientiDoppiInAppoCF
 from C6StagingPeriodicoImmobiliare.APPO_CONTRATTI a 
 where a.rete+a.COD_FISCALE in (select rete+codfis from #doppiCF)
 select rete,codfis
 into #ClientiNONInAppoCF
 from #doppiCF where rete+codfis not in (select rete+cod_fiscale from #ClientiDoppiInAppoCF)
 delete from C6StagingPeriodicoImmobiliare.RP_InfoCliente where rete+codFis in (select rete+codfis from #ClientiNONInAppoCF)
 --else
 select distinct appo.rete,appo.COD_FISCALE,appo.chiaveclientepb
 into #ClientiChiaveClienteGiustaCF
 from C6StagingPeriodicoImmobiliare.RP_InfoCliente info inner join 
 C6StagingPeriodicoImmobiliare.appo_contratti appo on info.rete = appo.rete and info.codfis=appo.cod_fiscale
where info.rete + info.codfis in (select rete+cod_fiscale from #ClientiDoppiInAppoCF)
select rete,codfis,chiaveClientePB
 into #ClientiChiaveClienteGiustaESbagliataCF
FROM C6StagingPeriodicoImmobiliare.RP_InfoCliente 
where rete+codfis in (select rete+cod_fiscale from #ClientiChiaveClienteGiustaCF)
--select * from #ClientiChiaveClienteGiustaESbagliataCF order by codfis
select rete,codfis,chiaveclientePB
into #ClientiChiaveSbagliataCF
from #ClientiChiaveClienteGiustaESbagliataCF where
rete+codFis  in (select rete+cod_fiscale from #ClientiChiaveClienteGiustaCF)
and chiaveClientePB not in (select chiaveClientePB from #ClientiChiaveClienteGiustaCF)
--create table #ClientiChiaveSbagliataCF(
--rete char(1),
--codfis varchar(16),
--chiaveClientePB int)
--insert into  #ClientiChiaveSbagliataCF 
--   SELECT * FROM #ClientiChiaveClienteGiustaESbagliataCF 
--    EXCEPT
--    SELECT * FROM #ClientiChiaveClienteGiustaCF
--	select * from #ClientiChiaveSbagliataCF
delete from C6StagingPeriodicoImmobiliare.RP_InfoCliente 
where rete+codfis+cast(chiaveClientePB as varchar)  in (select rete+codfis+cast(chiaveClientePB as varchar) from #ClientiChiaveSbagliataCF)
--select * from C6StagingPeriodicoImmobiliare.RP_InfoCliente 
--where rete+codfis+chiaveClientePB  in (select rete+codfis+chiaveClientePB from #ClientiChiaveClienteGiustaCF)
-----------------------------------------------------------------
--Individuo le PIVA doppie
 select rete,piva,count(*) as numero
 into #doppiPIVA
 FROM C6StagingPeriodicoImmobiliare.RP_InfoCliente
 where isnull(codman,'')= ''
 and piva is not null and piva <> ''
  group by rete,piva
 having count(*)>1
-- select * from #doppiPIVA where piva in (
-- 	'02477630582',
--'05267780962')
 --if
 select rete,COD_FISCALE
 into #ClientiDoppiInAppoPIVA
 from C6StagingPeriodicoImmobiliare.APPO_CONTRATTI a 
 where a.rete+a.COD_FISCALE in (select rete+piva from #doppiPIVA)
 select rete,piva
 into #ClientiNONInAppoPIVA
 from #doppiPIVA where rete+piva not in (select rete+COD_FISCALE from #ClientiDoppiInAppoPIVA)
 delete from C6StagingPeriodicoImmobiliare.RP_InfoCliente where rete+pIva in (select rete+piva from #ClientiNONInAppoPIVA)
 --else
 select distinct appo.rete,appo.COD_FISCALE,appo.chiaveclientepb
 into #ClientiChiaveClienteGiustaPIVA
 from C6StagingPeriodicoImmobiliare.RP_InfoCliente info inner join 
 C6StagingPeriodicoImmobiliare.appo_contratti appo on info.rete = appo.rete and info.piva=appo.cod_fiscale
where info.rete + info.piva in (select rete+cod_fiscale from #ClientiDoppiInAppoPIVA)
-- select * from #ClientiChiaveClienteGiustaPIVA where cod_fiscale in (
-- 	'02477630582',
--'05267780962')
select rete,piva,chiaveClientePB
 into #ClientiChiaveClienteGiustaESbagliataPIVA
FROM C6StagingPeriodicoImmobiliare.RP_InfoCliente 
where rete+piva in (select rete+cod_fiscale from #ClientiChiaveClienteGiustaPIVA)
-- select * from #ClientiChiaveClienteGiustaESbagliataPIVA where piva in (
-- 	'02477630582',
--'05267780962')
select rete,piva,chiaveclientePB
into #ClientiChiaveSbagliataPIVA
from #ClientiChiaveClienteGiustaESbagliataPIVA where
rete+piva in (select rete+cod_fiscale from #ClientiChiaveClienteGiustaPIVA)
and chiaveClientePB not in (select chiaveClientePB from #ClientiChiaveClienteGiustaPIVA)
--select * from #ClientiChiaveSbagliataPIVA
delete from C6StagingPeriodicoImmobiliare.RP_InfoCliente 
where rete+piva+cast(chiaveClientePB as varchar) in (select rete+piva+cast(chiaveClientePB as varchar) from #ClientiChiaveSbagliataPIVA)
 -------------------------------------------------- Log esecuzione  
 UPDATE  
  LOG_ESECUZIONE_PERIODICO_IMMOBILIARE  
 SET  
  Fine = GETDATE(),  
  Tipo = 'INSERT',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'RP_ST_BonificaClientiDoppi' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE_PERIODICO  
   WHERE  
    Nome = 'RP_ST_BonificaClientiDoppi'  
  )  
END