-- =============================================
-- Author:		Caruso Fabrizio
-- Create date: 17/09/2014
-- Description:	
-- Individuazione dei Clienti che presentano nella piramide modello una o più 
-- aree/progetti duplicati
-- Impostazione Codice TIPO CONTROLLO per il controllo specifico 
-- ( per riferimenti al tipo controllo verificare tabella "tb_tipocontrollo" )
-- =============================================
CREATE procedure [C6MartPeriodico].[SP_DQ_PiramideAreeDuplicate_pre_selective] 
@idFaseElaborazione int
AS
BEGIN
Declare @idTipoControllo int
set @idTipoControllo=6		
SELECT DISTINCT	 
	 d.rete,	
	case when(isnull(ltrim(rtrim(codman)),'') <> '') then 'FF@'+codman
		 when (isnull(codfis,'') <> '') then codfis 	
		 else c.piva
	end as Codicefiscale,       
	@idTipoControllo idtipocontrollo
    into #TbErrori
	FROM [CONSUNI_PERIODICO].[consulenzaunica].dbo.Contratto a
	JOIN [CONSUNI_PERIODICO].[consulenzaunica].dbo.ClientePB b 
		ON b.chiaveClientePB = a.chiaveClientePB 
		AND a.status in ('SEI','AVANZATOBASE','REVOCASEI')
	JOIN [CONSUNI_PERIODICO].[consulenzaunica].dbo.Cliente c 
		ON b.chiaveCliente = c.chiaveCliente 
	JOIN [CONSUNI_PERIODICO].[consulenzaunica].dbo.PromotoreBancario d 
		ON b.chiavePB = d.chiavePB
	WHERE
		A.chiaveclientepb in ( 
		select distinct chiaveclientepb 
		FROM 
		(
		--SELECT chiaveclientepb,area,tipoprogetto,COUNT(*) as c FROM   
		--[CONSUNI_PERIODICO].[consulenzaunica].dbo.ProgettiPiramideModello
		--where tipoprogetto =0 and area <> 'na' and isnull(dtFineValidita,'99991231')>GETDATE()
		--group by chiaveclientepb,area,tipoprogetto
		--having COUNT(*)<>1 
		 SELECT chiaveclientepb,area,COUNT(*) as c 
			FROM [CONSUNI_PERIODICO].consulenzaunica.dbo.piramidemodello pirmod
			inner join [CONSUNI_PERIODICO].consulenzaunica.dbo.areamodello areamod
			on pirmod.chiavePiramideMod = areamod.chiaveAreaMod
			inner join [CONSUNI_PERIODICO].[consulenzaunica].dbo.ProgettiPiramideModello progmod
			on progmod.chiaveAreaMod = areamod.chiaveAreaMod
			where  area <> 'na' 
			group by chiaveclientepb,area
			having COUNT(*)<>1
		) t
	)  
declare @idElab  int
select @idElab=max(id_elab) from  c6martperiodico.elaborazioni
--select * from c6martperiodico.tb_tipocontrollo
Insert into C6MartPeriodico.TB_SegnalazioniDataQuality
( 
idTipoControllo,
rete,
codiceFiscale,
descSegnalazione,
idElaborazione,
richiesta,
idFaseElaborazione)
select tbErr.idTipoControllo,tbErr.rete,Codicefiscale,DescSegnalazione,@idelab,'',@idFaseElaborazione
from #TbErrori tbErr
inner join c6martperiodico.tb_tipocontrollo Tipo
on tbErr.idtipocontrollo = tipo.idTipoControllo
inner join c6stagingperiodico.appo_contratti Contr
on  tbErr.rete = contr.rete
and tbErr.CodiceFiscale = contr.cod_fiscale
end