﻿create     procedure [C6Mart].[GETDATATHREADS_LETTERE_GB] (@volThreads int = 9999)
AS
BEGIN
	SET NOCOUNT ON;
	declare @sogliaRfa as decimal (18,0); 
	declare @sogliaRfaDB as decimal (18,0); 
	declare @data_perf as datetime;
	declare @nomeRep as varchar(32) = (select Reportistica from [C6Mart].[TB_Selettore_GetDataThreads]);
	set @sogliaRfa = (select valore from [CONSUNI].[ConsulenzaUnica].[dbo].[param] where parametro = 'sogliaRFA');
	set @data_perf = '20200401';
	set @sogliaRfaDB=0;
	declare @NotAllocatedResources TABLE (COD_FISCALE varchar(32), RETE varchar(1), CTV decimal);
	INSERT INTO @NotAllocatedResources(COD_FISCALE, RETE, CTV)
	SELECT PIRAMIDE_MOD.COD_FISCALE, PIRAMIDE_MOD.RETE, SUM(ISNULL(CTV,0)) as CTV
		FROM C6MART.PIRAMIDE_MOD PIRAMIDE_MOD
		INNER JOIN C6MART.PATRIMONIO_BF PIRAMIDE_VERT ON PIRAMIDE_VERT.COD_FISCALE = PIRAMIDE_MOD.COD_FISCALE AND PIRAMIDE_VERT.RETE = PIRAMIDE_MOD.RETE
		AND CASE WHEN PIRAMIDE_VERT.ID_AREA = 'SELF' THEN LEFT(PIRAMIDE_VERT.ID_AREA,4) ELSE LEFT(PIRAMIDE_VERT.ID_AREA,3) END  = PIRAMIDE_MOD.ID_AREA
	WHERE PIRAMIDE_MOD.ID_AREA = 'Na' AND ISNULL(CTV,0) > 0
	GROUP BY PIRAMIDE_MOD.COD_FISCALE, PIRAMIDE_MOD.RETE
	if (@nomeRep='SEI')
	BEGIN
		 SELECT distinct top (@volThreads)
		 contratti.Rete
		,CASE WHEN UPPER(contratti.Rete) = 'F' THEN 'Fideuram' WHEN UPPER(contratti.Rete) = 'S' THEN 'Sanpaolo Invest' ELSE 'IW Private Investments' END NomeRete
		,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
		,contratti.Cod_Fiscale CodiceFiscale
		,clienti.Cognome CognomeCliente
		,clienti.nome NomeCliente
		,CASE WHEN isnull( MIFID.Profilo_Ass,0) = 0 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
		,contratti.CodiceContratto CodiceContratto
		,contratti.tip_contratto
		,case when contratti.tip_contratto=3 then 6 else 5 end as idModelloDiagnosi --5 as idModelloDiagnosi aggiunta per Fideuram Direct / Direct Banker
		,1 as idReportDiagnosi
		,'Diagnosi' as descrizioneDiagnosi
		,-1 as idReportMonitoraggio
		,719 as idModellotMonitoraggio
		,'Monitoraggio' as descrizioneMonitoraggio
		,contratti.AdesioneSuccessivaAvanzato 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,
		0 As NoMonitoraggio,
		CASE 
		  WHEN (SELECT count(*) FROM c6mart.GESTIONE_PDF_FTP WHERE codicefiscale = contratti.cod_fiscale AND rete = contratti.Rete ) > 0 THEN 1 ELSE 0 
		END AS ContrattoOld,
		0 AS IdReportPDFDiagnosi, 		  
		0	AS IdReportPDFMonitoraggio ,
		CASE 
		  WHEN (SELECT count(*) FROM c6mart.GESTIONE_PDF_FTP WHERE codicefiscale = contratti.cod_fiscale AND rete = contratti.Rete ) > 0 THEN 1 ELSE 0 
		END AS ContrattoOld,
		0 AS IdReportPDFDiagnosi, 		  
		0	AS IdReportPDFMonitoraggio,
		0 as flagnqp,
		0 as flagprlrde,
		0 as flagpg,
		case contratti.TipoConsulenza
			when 'P' then 'S'
			when 'D' then 'N'
			else 'N'
		end as Flgprof
	from C6Mart.RP_vContrattiPerGenerazioneReport contratti
	left join C6Mart.ANAG_PROMOTORI promotori
		on contratti.Rete = promotori.Rete
		and contratti.Cod_Agente = promotori.Id_Promotore
	left join  @NotAllocatedResources as nar	--pk
		on contratti.Rete = nar.Rete				--pk
		and contratti.Cod_Fiscale = nar.Cod_Fiscale	--pk
	left join C6Mart.ANAG_CLIENTI clienti
		on contratti.Rete = clienti.Rete
		and contratti.Cod_Fiscale = clienti.Cod_Fiscale
	INNER join C6Mart.vPatrimoniobfAggregato_SenzaNobPrez 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 C6Mart.vPatrimonioImmobAggregato patrimonioImmobiliare
		on contratti.Rete = patrimonioImmobiliare.Rete
		and contratti.Cod_Fiscale = patrimonioImmobiliare.Cod_Fiscale 
	left outer join C6Mart.vPatrimonioTerziAggregato patrimonioTerzi
		on contratti.Rete = patrimonioTerzi.Rete
		and contratti.Cod_Fiscale = patrimonioTerzi.Cod_Fiscale 
	left outer join C6Mart.MIFID MIFID
		on contratti.Rete = MIFID.Rete
		and contratti.Cod_Fiscale = MIFID.Cod_Fiscale
	left outer join C6Mart.vPatrimonioNonRappresentabileAsset PatrNonRapprAsset
		on contratti.Rete = PatrNonRapprAsset.Rete
		and contratti.Cod_Fiscale = PatrNonRapprAsset.Cod_Fiscale
	left outer join C6Mart.vNumeroIntermediari numIntermediari
		on contratti.Rete = numIntermediari.Rete 
		and contratti.Cod_Fiscale = numIntermediari.Cod_Fiscale
	left outer join C6Mart.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'		
	left outer join C6Mart.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 C6Mart.PARTITE_VIAGGIANTI PARTITEVIAGGIANTI
		on contratti.Rete = PARTITEVIAGGIANTI.RETE
		and contratti.Cod_Fiscale = PARTITEVIAGGIANTI.COD_FISCALE
    where 1=1
	and nar.rete is null --pk
	and contratti.Cod_Fiscale +  contratti.Rete NOT IN (SELECT COD_FISCALE + RETE FROM C6MART.TEST_QUALITY)
	--and ((patrimonioBF.ctv >= @sogliaRFA) or (patrimonioBF.ctv >= 25000 and contratti.data_inizioavanzato < '20240412')) --rimossa per Fideuram Direct / Direct Banker
	and contratti.tip_contratto <> 3 
	and contratti.Cod_Fiscale not in ('RVIFNC70A52B885O')
	END
	if (@nomeRep='DIRECT')
	BEGIN
		 SELECT distinct top (@volThreads)
		 contratti.Rete
		,CASE WHEN UPPER(contratti.Rete) = 'F' THEN 'Fideuram' WHEN UPPER(contratti.Rete) = 'S' THEN 'Sanpaolo Invest' ELSE 'IW Private Investments' END NomeRete
		,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
		,contratti.Cod_Fiscale CodiceFiscale
		,clienti.Cognome CognomeCliente
		,clienti.nome NomeCliente
		,CASE WHEN isnull( MIFID.Profilo_Ass,0) = 0 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
		,contratti.CodiceContratto CodiceContratto
		,contratti.tip_contratto
		,case when contratti.tip_contratto=3 then 6 else 5 end as idModelloDiagnosi --5 as idModelloDiagnosi aggiunta per Fideuram Direct / Direct Banker
		,1 as idReportDiagnosi
		,'Diagnosi' as descrizioneDiagnosi
		,-1 as idReportMonitoraggio
		,719 as idModellotMonitoraggio
		,'Monitoraggio' as descrizioneMonitoraggio
		,contratti.AdesioneSuccessivaAvanzato 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,
		0 As NoMonitoraggio,
		CASE 
		  WHEN (SELECT count(*) FROM c6mart.GESTIONE_PDF_FTP WHERE codicefiscale = contratti.cod_fiscale AND rete = contratti.Rete ) > 0 THEN 1 ELSE 0 
		END AS ContrattoOld,
		0 AS IdReportPDFDiagnosi, 		  
		0	AS IdReportPDFMonitoraggio,
		CASE 
		  WHEN (SELECT count(*) FROM c6mart.GESTIONE_PDF_FTP WHERE codicefiscale = contratti.cod_fiscale AND rete = contratti.Rete ) > 0 THEN 1 ELSE 0 
		END AS ContrattoOld,
		0 AS IdReportPDFDiagnosi, 		  
		0	AS IdReportPDFMonitoraggio,
		0 as flagnqp,
		0 as flagprlrde,
		0 as flagpg,
		case contratti.TipoConsulenza
			when 'P' then 'S'
			when 'D' then 'N'
			else 'N'
		end as Flgprof
	from C6Mart.RP_vContrattiPerGenerazioneReport contratti
	left join C6Mart.ANAG_PROMOTORI promotori
		on contratti.Rete = promotori.Rete
		and contratti.Cod_Agente = promotori.Id_Promotore
	left join  @NotAllocatedResources as nar	--pk
		on contratti.Rete = nar.Rete				--pk
		and contratti.Cod_Fiscale = nar.Cod_Fiscale	--pk
	left join C6Mart.ANAG_CLIENTI clienti
		on contratti.Rete = clienti.Rete
		and contratti.Cod_Fiscale = clienti.Cod_Fiscale
	INNER join C6Mart.vPatrimoniobfAggregato_SenzaNobPrez 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 C6Mart.vPatrimonioImmobAggregato patrimonioImmobiliare
		on contratti.Rete = patrimonioImmobiliare.Rete
		and contratti.Cod_Fiscale = patrimonioImmobiliare.Cod_Fiscale 
	left outer join C6Mart.vPatrimonioTerziAggregato patrimonioTerzi
		on contratti.Rete = patrimonioTerzi.Rete
		and contratti.Cod_Fiscale = patrimonioTerzi.Cod_Fiscale 
	left outer join C6Mart.MIFID MIFID
		on contratti.Rete = MIFID.Rete
		and contratti.Cod_Fiscale = MIFID.Cod_Fiscale
	left outer join C6Mart.vPatrimonioNonRappresentabileAsset PatrNonRapprAsset
		on contratti.Rete = PatrNonRapprAsset.Rete
		and contratti.Cod_Fiscale = PatrNonRapprAsset.Cod_Fiscale
	left outer join C6Mart.vNumeroIntermediari numIntermediari
		on contratti.Rete = numIntermediari.Rete 
		and contratti.Cod_Fiscale = numIntermediari.Cod_Fiscale
	left outer join C6Mart.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'		
	left outer join C6Mart.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 C6Mart.PARTITE_VIAGGIANTI PARTITEVIAGGIANTI
		on contratti.Rete = PARTITEVIAGGIANTI.RETE
		and contratti.Cod_Fiscale = PARTITEVIAGGIANTI.COD_FISCALE
	left join c6mart.vcontrattic6 vcontr
	on vcontr.codicecontratto  =  contratti.codicecontratto
    where 1=1
	and nar.rete is null --pk
	and contratti.Cod_Fiscale +  contratti.Rete NOT IN (SELECT COD_FISCALE + RETE FROM C6MART.TEST_QUALITY)
    and contratti.tip_contratto = 3
    --and patrimonioBF.ctv >= @sogliaRFADB
	and contratti.Cod_Fiscale in (select CODICE_FISCALE from c6staging.VAR_ADEGUATEZZA_INDICATORI)
	END
END