CREATE procedure [C6MartPeriodico].[GESTIONE_SELECT_PDF_GETDATATHREADS_CAMPIONE_QRM_NonOptimized]  --10
(@volThreads int = 10000)
AS
BEGIN
		SET NOCOUNT ON;
 declare @dataTrimestre as datetime
 declare @dataTrimestrePRec as datetime
SELECT @dataTrimestre = c6martperiodico.gettrimestre2(getdate(),0),
@dataTrimestrePRec=c6martperiodico.getPreviousTrimestre(getDate(),0)
 Select distinct top (@volThreads) contratti.Cod_Fiscale
 into #ct
 FROM  [C6MartPeriodico].contrattoSEI contratti		 
		left outer join [C6MartPeriodico].ANAG_PROMOTORI promotori
			on contratti.Rete = promotori.Rete
			and contratti.Cod_Agente = promotori.Id_Promotore
		inner join [C6MartPeriodico].ANAG_CLIENTI clienti
			on contratti.Rete = clienti.Rete
			and contratti.Cod_Fiscale = clienti.Cod_Fiscale
		--V non stampo se non ha patrimonio
		inner join [C6MartPeriodico].vPatrimoniobfAggregato patrimonioBF
--left join [C6MartPeriodico].vPatrimoniobfAggregato patrimonioBF
			on contratti.Rete = patrimonioBF.Rete
			and contratti.Cod_Fiscale = patrimonioBF.Cod_Fiscale 
		left outer join [C6Mart].vPatrimonioAltroAggregato patrimonioAltro
			on contratti.Rete = patrimonioAltro.Rete
			and contratti.Cod_Fiscale = patrimonioAltro.Cod_Fiscale 
		left outer join [C6MartPeriodico].vPatrimonioImmobAggregato patrimonioImmobiliare
			on contratti.Rete = patrimonioImmobiliare.Rete
			and contratti.Cod_Fiscale = patrimonioImmobiliare.Cod_Fiscale 
		left outer join [C6MartPeriodico].vPatrimonioTerziAggregato patrimonioTerzi
			on contratti.Rete = patrimonioTerzi.Rete
			and contratti.Cod_Fiscale = patrimonioTerzi.Cod_Fiscale 
		left outer join [C6MartPeriodico].MIFID MIFID
			on contratti.Rete = MIFID.Rete
			and contratti.Cod_Fiscale = MIFID.Cod_Fiscale
		left outer join [C6MartPeriodico].vPatrimonioNonRappresentabileAsset PatrNonRapprAsset
			on contratti.Rete = PatrNonRapprAsset.Rete
			and contratti.Cod_Fiscale = PatrNonRapprAsset.Cod_Fiscale
		left outer join [C6MartPeriodico].vNumeroIntermediari numIntermediari
			on contratti.Rete = numIntermediari.Rete 
			and contratti.Cod_Fiscale = numIntermediari.Cod_Fiscale
		left outer join [C6MartPeriodico].RISCHIO_AGGREGATO RISCHIO_NA
			on contratti.Rete = RISCHIO_NA.Rete 
			and contratti.Cod_Fiscale = RISCHIO_NA.Cod_Fiscale
			and RISCHIO_NA.cod_aggreg = 'COMPLESSIVO|BF|NA'
			--modificata da Valerio 12 marzo 2012
			--left outer join [C6MartPeriodico].RISCHIO_AGGREGATO RISCHIO_RISORSEFINANZIARIE
		inner join [C6MartPeriodico].RISCHIO_AGGREGATO RISCHIO_RISORSEFINANZIARIE
			on contratti.Rete = RISCHIO_RISORSEFINANZIARIE.Rete 
			and contratti.Cod_Fiscale = RISCHIO_RISORSEFINANZIARIE.Cod_Fiscale
			and RISCHIO_RISORSEFINANZIARIE.cod_aggreg = 'COMPLESSIVO|BF'		
		left outer join C6MartPeriodico.PARTITE_VIAGGIANTI PARTITEVIAGGIANTI
			on contratti.Rete = PARTITEVIAGGIANTI.RETE
			and contratti.Cod_Fiscale = PARTITEVIAGGIANTI.COD_FISCALE
		left join c6martperiodico.monitoraggio_attuale monit
			on patrimonioBF.rete = monit.rete
			and patrimonioBF.cod_fiscale = monit.cod_fiscale
		left join c6martperiodico.monitoraggio_iniziale monitInit
			on patrimonioBF.rete = monitInit.rete
			and patrimonioBF.cod_fiscale = monitInit.cod_fiscale
			left join c6martperiodico.monitoraggio_report monitReport
			on patrimonioBF.rete = monitReport.rete
			and patrimonioBF.cod_fiscale = monitReport.cod_fiscale
		inner join  c6martperiodico.TB_Campione Campione
		on contratti.rete= Campione.rete and contratti.cod_fiscale= Campione.cod_fiscale
		and flag_stampa=1
 SELECT  DISTINCT
			--DATI COMUNI
			--RETE
			contratti.Rete
			,CASE WHEN UPPER(contratti.Rete) = 'F' THEN 'Fideuram' ELSE 'Sanpaolo Invest' END NomeRete
			--AGENTE	
			,contratti.Cod_Agente Agente
			,(CASE UPPER(ISNULL(promotori.STATO,'')) WHEN 'ATTIVO' THEN isnull(promotori.Cognome,'') ELSE '' END) CognomeAgente
			,(CASE UPPER(ISNULL(promotori.STATO,'')) WHEN 'ATTIVO' THEN isnull(promotori.Nome,'') ELSE '' END) NomeAgente
			,isnull(promotori.Indirizzo,'') IndirizzoAgente
			,isnull(promotori.Cap,'') CapAgente
			,isnull(promotori.Localita,'') CittaAgente
			,isnull(promotori.TEL_Recapito,'') TelefonoAgente
			--CLIENTE
			,contratti.Cod_Fiscale CodiceFiscale
			,clienti.Cognome CognomeCliente
			,clienti.nome NomeCliente
			--PATRIMONI CLIENTE
			,CASE WHEN isnull( MIFID.SCADUTO,1) = 1 THEN 0 ELSE 1 END ProfiloIsAct
 			,isnull(PatrNonRapprAsset.Controvalore,0) as PatrimonioNonRappresentabile
			,isnull(patrimonioBF.PartiteViaggiantiDisinv,0) as PartiteViaggiantiDisinv
			,isnull(partiteViaggianti.Importo,0) as PartiteViaggiantiInv
			,isnull(patrimonioBF.ContoCorrente,0) as  ContoCorrente
			,isnull(patrimonioBF.PatrimonioSenzaCC,0) as PatrimonioBancaFideuramCtvAlNettoContoCorrente 
			,isnull(patrimonioBF.PatrimonioNonAssociato,0) as  RisorseNonAssociate
			,isnull(patrimonioAltro.Patrimonioaltro,0) as Patrimonioaltroctv
			,isnull(patrimonioImmobiliare.PatrimonioImmob,0) as Patrimonioimmobiliarectv
			,isnull(patrimonioTerzi.ctv,0) as PatrimonioTerzictv
			,isnull(patrimonioTerzi.ControvaloreSenzaCC,0) as PatrimonioTerziCtvAlNettoContoCorrente 
			,isnull(patrimonioTerzi.ControvaloreCC,0) as PatrimonioTerziContoCorrente
			,isnull(patrimonioBF.ctv,0) as Patrimoniobancafideuramctv
			,(isnull(patrimonioBF.ctv,0) + isnull(patrimonioTerzi.ctv,0)) as Patrimoniocomplessivototalectv
			,isnull(numIntermediari.NumeroIntermediari,0) as NumeroIntermediari
			--CONTRATTO
			,contratti.CodiceContratto CodiceContratto
			,contratti.tip_contratto AS tip_contratto 
			,0 AS contrattoold
			--*************************************************
			,CASE WHEN count(monit.id_area) OVER (PARTITION BY monit.rete,monit.cod_fiscale) = 0
				or isnull(monitInit.data_foto,getDate()) >= @dataTrimestrePRec
				or monitReport.cod_fiscale is null 
				THEN 1
				ELSE 0
			END AS NoMonitoraggio
			,'Diagnosi' as descrizioneDiagnosi
--INIZIO
--	PER FORZARE LA STAMPA DEL REPORT DI DIAGNOSI A PRESCINDERE DAL TIPO DI CONTRATTO 
--  E DAL VALORE PRESENTE NEL FLAG DI FREQUENZA DIAGNOSI, E' NECESSARIO
--	ASTERISCARE LE RIGHE SEGUENTI:
			,CASE 
				WHEN contratti.freq_Diagnosi is not null AND contratti.tip_contratto = 0 THEN 5
				ELSE -1
			END AS idModelloDiagnosi
			,CASE 
				WHEN contratti.freq_Diagnosi is not null AND contratti.tip_contratto = 0 THEN 1
				ELSE -1
			END AS idReportDiagnosi
--	E DISASTERISCARE LE RIGHE SEGUENTI:
			--,5 as idModelloDiagnosi
			--,1 as idReportDiagnosi
--FINE			
			,'Monitoraggio' as descrizioneMonitoraggio
			,4 as idReportMonitoraggio--4
--			,13 as idModelloMonitoraggio
			,CASE isnull(tip_contratto,0) 
					WHEN 0 THEN 12--12
					WHEN 1 THEN 12--12
					WHEN 2 THEN 13--13
			END AS idModelloMonitoraggio			 
			--*************************************************
    		,0 AS AdesioneSuccessivaAvanzato
			,CASE 
				WHEN RISCHIO_NA.VAR_PERC_PTF IS NULL THEN -1000
				ELSE RISCHIO_NA.VAR_PERC_PTF 
			END AS VaRRisorseNonAssociate	
			,CASE 
				WHEN RISCHIO_NA.COPERTURA IS NULL THEN -1000
				ELSE RISCHIO_NA.COPERTURA
			END AS CoperturaRisorseNonAssociate
			,CASE 
				WHEN RISCHIO_RISORSEFINANZIARIE.VAR_PERC_PTF IS NULL THEN -1000
				ELSE RISCHIO_RISORSEFINANZIARIE.VAR_PERC_PTF 
			END AS VaRTotaleRisorseFinanziarie
			,CASE 
				WHEN RISCHIO_NA.COPERTURA IS NULL THEN -1000
				ELSE RISCHIO_RISORSEFINANZIARIE.COPERTURA
			END AS CoperturaTotaleRisorseFinanziarie
			,isnull((SELECT max(idReport) FROM c6martperiodico.GESTIONE_PDF_FTP ftp where tipoReport = 'D' 
					AND ftp.codicefiscale = contratti.cod_fiscale AND ftp.rete = contratti.Rete),0)  
			AS IdReportPDFDiagnosi   
			,isnull((SELECT max(idReport) FROM c6martperiodico.GESTIONE_PDF_FTP ftp where tipoReport = 'M' 
					AND ftp.codicefiscale = contratti.cod_fiscale AND ftp.rete = contratti.Rete),0) 
			AS IdReportPDFMonitoraggio 
	 FROM  [C6MartPeriodico].contrattoSEI contratti		 
		left outer join [C6MartPeriodico].ANAG_PROMOTORI promotori
			on contratti.Rete = promotori.Rete
			and contratti.Cod_Agente = promotori.Id_Promotore
		inner join [C6MartPeriodico].ANAG_CLIENTI clienti
			on contratti.Rete = clienti.Rete
			and contratti.Cod_Fiscale = clienti.Cod_Fiscale
		--V non stampo se non ha patrimonio
		inner join [C6MartPeriodico].vPatrimoniobfAggregato patrimonioBF
--left join [C6MartPeriodico].vPatrimoniobfAggregato patrimonioBF
			on contratti.Rete = patrimonioBF.Rete
			and contratti.Cod_Fiscale = patrimonioBF.Cod_Fiscale 
		left outer join [C6Mart].vPatrimonioAltroAggregato patrimonioAltro
			on contratti.Rete = patrimonioAltro.Rete
			and contratti.Cod_Fiscale = patrimonioAltro.Cod_Fiscale 
		left outer join [C6MartPeriodico].vPatrimonioImmobAggregato patrimonioImmobiliare
			on contratti.Rete = patrimonioImmobiliare.Rete
			and contratti.Cod_Fiscale = patrimonioImmobiliare.Cod_Fiscale 
		left outer join [C6MartPeriodico].vPatrimonioTerziAggregato patrimonioTerzi
			on contratti.Rete = patrimonioTerzi.Rete
			and contratti.Cod_Fiscale = patrimonioTerzi.Cod_Fiscale 
		left outer join [C6MartPeriodico].MIFID MIFID
			on contratti.Rete = MIFID.Rete
			and contratti.Cod_Fiscale = MIFID.Cod_Fiscale
		left outer join [C6MartPeriodico].vPatrimonioNonRappresentabileAsset PatrNonRapprAsset
			on contratti.Rete = PatrNonRapprAsset.Rete
			and contratti.Cod_Fiscale = PatrNonRapprAsset.Cod_Fiscale
		left outer join [C6MartPeriodico].vNumeroIntermediari numIntermediari
			on contratti.Rete = numIntermediari.Rete 
			and contratti.Cod_Fiscale = numIntermediari.Cod_Fiscale
		left outer join [C6MartPeriodico].RISCHIO_AGGREGATO RISCHIO_NA
			on contratti.Rete = RISCHIO_NA.Rete 
			and contratti.Cod_Fiscale = RISCHIO_NA.Cod_Fiscale
			and RISCHIO_NA.cod_aggreg = 'COMPLESSIVO|BF|NA'
			--modificata da Valerio 12 marzo 2012
			--left outer join [C6MartPeriodico].RISCHIO_AGGREGATO RISCHIO_RISORSEFINANZIARIE
		inner join [C6MartPeriodico].RISCHIO_AGGREGATO RISCHIO_RISORSEFINANZIARIE
			on contratti.Rete = RISCHIO_RISORSEFINANZIARIE.Rete 
			and contratti.Cod_Fiscale = RISCHIO_RISORSEFINANZIARIE.Cod_Fiscale
			and RISCHIO_RISORSEFINANZIARIE.cod_aggreg = 'COMPLESSIVO|BF'		
		left outer join C6MartPeriodico.PARTITE_VIAGGIANTI PARTITEVIAGGIANTI
			on contratti.Rete = PARTITEVIAGGIANTI.RETE
			and contratti.Cod_Fiscale = PARTITEVIAGGIANTI.COD_FISCALE
		left join c6martperiodico.monitoraggio_attuale monit
			on patrimonioBF.rete = monit.rete
			and patrimonioBF.cod_fiscale = monit.cod_fiscale
		left join c6martperiodico.monitoraggio_iniziale monitInit
			on patrimonioBF.rete = monitInit.rete
			and patrimonioBF.cod_fiscale = monitInit.cod_fiscale
			left join c6martperiodico.monitoraggio_report monitReport
			on patrimonioBF.rete = monitReport.rete
			and patrimonioBF.cod_fiscale = monitReport.cod_fiscale
		inner join  c6martperiodico.TB_Campione Campione
		on contratti.rete= Campione.rete and contratti.cod_fiscale= Campione.cod_fiscale
		and flag_stampa=1
		WHERE 1=1 and contratti.Cod_Fiscale in
		(select Cod_Fiscale from #ct)
		update t set flag_stampa=2
		from  c6martperiodico.TB_Campione t where cod_fiscale in (select Cod_Fiscale from #ct)
-- DA ELIMINARE .... IL CAMPIONE DEVE ESSERE INSERITO E GESTITO NELLA TABELLA c6martperiodico.TB_CAMPIONE
  --and  contratti.rete+contratti.cod_fiscale in 
  --(
  --select rete+cod_fiscale from c6martperiodico.TB_CAMPIONE
  --) 
--and  contratti.rete+contratti.cod_fiscale in
--(
--'FGSPLSN31B26E648J',
--'FVSNPTR31L14B402B',
--'FBRGFBA61P09B639N'
--)
--insert into c6martperiodico.TB_Campione
--values ('F','RZUGTN30M07C351I',1)
END