PDC_REPORT_CreazioneDB/sql/storedCollaudo/C6MartPeriodico_SP_DQ_PosizioniDuplicate.sql
2025-06-09 17:09:11 +02:00

211 lines
7.6 KiB
Transact-SQL

-- =============================================
-- Author: Caruso Fabrizio
-- Create date: 17/09/2014
-- Description:
-- Individuazione dei Clienti che presentano una o più posizioni duplicate
-- nel proprio patrimonio finanziario
-- Impostazione Codice TIPO CONTROLLO per il controllo specifico
-- ( per riferimenti al tipo controllo verificare tabella "tb_tipocontrollo" )
-- =============================================
-- ATTENZIONE !!!
-- La SP che carica la Patrimonio BF effettua un controllo dopo una prima elaborazione e scarta
-- i record "duplicati". Riporto la query di INPUT per poter effetturare il test e lo scarto
CREATE procedure [C6MartPeriodico].[SP_DQ_PosizioniDuplicate]
@idFaseElaborazione int
AS
BEGIN
Declare @idTipoControllo int
set @idTipoControllo=4
-- Selezione in Tabella Temporanea Verifica_CAMPIONE dei record "doppi"
SELECT -- PER DIVERSI DA CC ************************
SPB.RETE AS RETE,
SPB.CODFIS AS COD_FISCALE,
SPB.POSITIONID AS POSITIONID,
SUBSTRING(SPB.POSITIONID,1,57) AS COD_PRODOTTO,
SPB.CODCONF AS ID_CONTRATTO,
CASE WHEN ISDATE(SPB.DTSOTTOS) = 0 THEN NULL
ELSE CAST(CAST(SPB.DTSOTTOS AS VARCHAR(8)) AS DATETIME)
END AS DATA_SOTTOSCRIZIONE,
null AS COD_STATO,
SPB.NUMPOL AS NUM_POLIZZA,
SPB.MAF AS COD_MAF,
SPB.CODINT AS COD_INTERNO,
SPB.SUBPROD AS COD_SOTTOPRODOTTO,
SPB.TIPPROD AS TIPO_PRODOTTO,
CASE
WHEN CON.area = 'Inv' AND CON.tipoProgetto = 0 THEN 'Prodotti non associati a progetti'
ELSE LTRIM(RTRIM(CON.nomeProgetto))
END AS NOME_PROGETTO,
case when isnull(CON.tipoProgetto, '') = '' then 'Default'
when CON.tipoProgetto = 0 then 'Default'
else 'ProgettoInvestimento' end as TIPO_PROGETTO,
CON.area AS ID_AREA,
CASE
WHEN ISDATE(SPB.DTRIFE) = 0 THEN NULL
ELSE CAST(CAST(SPB.DTRIFE AS VARCHAR(8)) AS DATETIME)
END AS DATA_OPERAZIONE,
NULL AS DATA_VALUTA,
NULL AS DATA_REGOLAMENTO,
SPB.QUOTE AS QUANTITA,
NULL AS PREZZO,
SPB.CTV AS CTV,
SPB.VALORE AS CTV_NOMINALE,
CASE
WHEN (SPB.TIPPROD = 'GE'
OR SPB.TIPPROD = 'GES')
AND SPB.DTSOTTOS < 20070101
THEN NULL
WHEN SPB.TIPPROD IN ( 'ASVI','ASU1')
THEN NULL
WHEN SPB.TIPPROD = 'ASUL' AND SPB.CODINT NOT IN ('18','19','35','PR','PX')
THEN NULL
WHEN SPB.CVN = 0
THEN NULL
ELSE SPB.CVN
END AS VERSATO_NETTO,
SPB.PARTVIA AS PARTVIA_DISINV,
CASE WHEN ISDATE(SPB.PARTVIAAL) = 0 THEN NULL
ELSE CAST(CAST(SPB.PARTVIAAL AS VARCHAR(8)) AS DATETIME) END AS DATA_PARTVIA_DISINV,
NULL AS PARTVIA_INV,
CASE
WHEN (SPB.TIPPROD = 'GE'
OR SPB.TIPPROD = 'GES')
AND SPB.DTSOTTOS < 20070101
THEN NULL
WHEN SPB.TIPPROD IN ( 'ASVI','ASU1')
THEN NULL
WHEN SPB.TIPPROD = 'ASUL' AND SPB.CODINT NOT IN ('18','19','35','PR','PX')
THEN NULL
ELSE SPB.RENDINIZ
END AS REND_SOTTOSCRIZIONE,
null AS REND_TRIMESTRE,
CASE
WHEN (SPB.TIPPROD = 'GE'
OR SPB.TIPPROD = 'GES')
AND SPB.DTSOTTOS < 20070101
THEN NULL
WHEN SPB.TIPPROD IN ( 'ASVI','ASU1')
THEN NULL
WHEN SPB.TIPPROD = 'ASUL' AND SPB.CODINT NOT IN ('18','19','35','PR','PX')
THEN NULL
ELSE SPB.RENDANNO
END AS REND_ANNO,
CON.StrType,
CON.Complessita AS COMPLEX,
CON.DescrizioneEmittente AS EMITTENTE,
SPB.ISIN,
CON.chiaveClientePB,
--nuovo
0 AS REND_NON_RAPPR,
CON.ChiaveProgetto AS ORDINAMENTO_PROGETTO,
CASE WHEN CON.orizzonteTemporale = 0 THEN NULL ELSE CON.orizzonteTemporale END AS ORIZZ_TEMP_NUM,
CASE WHEN ISNULL(ORIZZONTETEMPORALE, 0) = 0 THEN NULL ELSE LTRIM(RTRIM(ORIZZONTETEMPORALE)) + ' anni' END AS ORIZZONTETEMPORALE,
CON.CHIAVEPROGETTO AS CHIAVEPROGETTO
-- fine nuovo
--***************************************
INTO #Verifica_CAMPIONE
--***************************************
FROM C6StagingPeriodico.SPB_CONTR_SINTESI SPB
INNER JOIN C6StagingPeriodico.RP_Consulenza CON
ON CON.rete = SPB.RETE
AND CON.cod_fiscale = SPB.CODFIS
AND CON.Position_id = SPB.positionid
LEFT JOIN C6StagingPeriodico.RP_ChiaviMonitoraggio CM
ON CON.chiaveprogetto = CM.chiaveProgetto
AND CM.stato = 1
WHERE SPB.POSITIONID IS NOT NULL
and CON.area <> 'CC' and SPB.TIPPROD <> 'CC'
--***INIZIO INTERVENTI OMNIA***
and SPB.Isin <> 'EURO00000009'
and CON.area <> 'SELF'
--FINE INTERVENTI OMNIA***
UNION ALL
SELECT -- *** PER UGUALI DA CC ************************
SPB.RETE AS RETE,
SPB.CODFIS AS COD_FISCALE,
SPB.POSITIONID AS POSITIONID,
SUBSTRING(SPB.POSITIONID,1,57) AS COD_PRODOTTO,
SPB.CODCONF AS ID_CONTRATTO,
CASE WHEN ISDATE(SPB.DTSOTTOS) = 0 THEN NULL
ELSE CAST(CAST(SPB.DTSOTTOS AS VARCHAR(8)) AS DATETIME)
END AS DATA_SOTTOSCRIZIONE,
NULL AS COD_STATO,
SPB.NUMPOL AS NUM_POLIZZA,
SPB.MAF AS COD_MAF,
SPB.CODINT AS COD_INTERNO,
SPB.SUBPROD AS COD_SOTTOPRODOTTO,
SPB.TIPPROD AS TIPO_PRODOTTO,
CON.NOMEPROGETTO AS NOME_PROGETTO,
case when isnull(CON.tipoProgetto, '') = '' then 'Default'
when CON.tipoProgetto = 0 then 'Default'
else 'ProgettoInvestimento' end as TIPO_PROGETTO,
CON.AREA AS ID_AREA,
CASE WHEN ISDATE(SPB.DTRIFE) = 0 THEN NULL
ELSE CAST(CAST(SPB.DTRIFE AS VARCHAR(8)) AS DATETIME) END AS DATA_OPERAZIONE,
NULL AS DATA_VALUTA, -- 105 PER FORMAT DD/MM/YYYY
NULL AS DATA_REGOLAMENTO,
SPB.QUOTE AS QUANTITA,
NULL AS PREZZO,
SPB.CTV AS CTV,
SPB.VALORE AS CTV_NOMINALE,
CASE
WHEN SPB.CVN = 0
THEN NULL
ELSE SPB.CVN
END AS VERSATO_NETTO,
SPB.PARTVIA AS PARTVIA_DISINV,
CASE WHEN ISDATE(SPB.PARTVIAAL) = 0 THEN NULL
ELSE CAST(CAST(SPB.PARTVIAAL AS VARCHAR(8)) AS DATETIME) END AS DATA_PARTVIA_DISINV,
NULL AS PARTVIA_INV,
SPB.RENDINIZ AS REND_SOTTOSCRIZIONE,
NULL AS REND_TRIMESTRE,
SPB.RENDANNO AS REND_ANNO,
CON.StrType,
CON.Complessita AS COMPLEX,
CON.DescrizioneEmittente as EMITTENTE,
SPB.ISIN,
CON.chiaveClientePB,
--nuovo
0 AS REND_NON_RAPPR,
CON.ChiaveProgetto AS ORDINAMENTO_PROGETTO,
CASE WHEN CON.orizzonteTemporale = 0 THEN NULL ELSE CON.orizzonteTemporale END AS ORIZZ_TEMP_NUM,
CASE WHEN ISNULL(ORIZZONTETEMPORALE, 0) = 0 THEN NULL ELSE LTRIM(RTRIM(ORIZZONTETEMPORALE)) + ' anni' END AS ORIZZONTETEMPORALE,
CON.CHIAVEPROGETTO AS CHIAVEPROGETTO
-- fine nuovo
FROM C6STAGINGPERIODICO.SPB_CONTR_SINTESI SPB
INNER JOIN C6StagingPERIODICO.RP_Consulenza CON
ON CON.rete = SPB.RETE
AND CON.cod_fiscale = SPB.CODFIS
AND CON.Position_id = SPB.positionid
INNER JOIN C6STAGINGPERIODICO.RP_CATALOGOPRODOTTI KAT
ON SUBSTRING(SPB.POSITIONID,1,57)=KAT.CATALOGUEID
LEFT JOIN C6StagingPeriodico.RP_ChiaviMonitoraggio CM
ON CON.chiaveprogetto = CM.chiaveProgetto
AND CM.stato = 1
LEFT OUTER JOIN C6STAGINGPERIODICO.RP_AnEmittente MIT
ON MIT.Emittente =KAT.EMITTENTE
WHERE SPB.TIPPROD = 'CC'
--***INIZIO INTERVENTI OMNIA***
or SPB.Isin = 'EURO00000009'
SELECT RETE, COD_FISCALE, POSITIONID,@idTipoControllo idtipocontrollo
into #TbErrori
FROM #Verifica_CAMPIONE
GROUP BY RETE, COD_FISCALE, POSITIONID
HAVING COUNT(*) > 1
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,rete,COD_FISCALE,DescSegnalazione,@idelab,'',@idFaseElaborazione
from #TbErrori tbErr
inner join c6martperiodico.tb_tipocontrollo Tipo
on tbErr.idtipocontrollo = tipo.idTipoControllo
end