PDC_REPORT_CreazioneDB/sql/storedProduzione/C6Mart_GETDATATHREADS_LETTERE_GB.sql
2025-06-06 19:02:52 +02:00

268 lines
13 KiB
Transact-SQL

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