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

326 lines
16 KiB
Transact-SQL

-- =============================================
-- AUTHOR: ALESSANDRO TRINGALI
-- CREATE DATE: 18 SETTEMBRE 2009
-- DESCRIPTION:
-- =============================================
CREATE procedure [C6MartPeriodico].[DM_ALL_PATRIMONIO]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID_ELAB INT
SET @ID_ELAB = [C6MARTPERIODICO].GETIDELAB()
-- LOG ESECUZIONE
INSERT INTO LOG_ESECUZIONE
(NOME, INIZIO, NOTA)
VALUES (
'DM_ALL_PATRIMONIO',
GETDATE(),
'ELABORAZIONE TRIMESTRALE'
)
TRUNCATE TABLE [C6MartPeriodico].[ALL_PATRIMONIO]
INSERT INTO [C6MARTPERIODICO].[ALL_PATRIMONIO]
(
[CODICE_FISCALE]
,[RETE]
,[POSITIONID]
,[CATALOGUENAME]
,[CATALOGUEID]
,[COD_ADEGUATEZZA]
,[INTERMEDIARIO]
,[PATRIMONIO_INTERMEDIARIO]
,[EMITTENTE]
,[PATRIMONIO_EMITTENTE]
,[COMPLESSITA]
,[TIPO_PRODOTTO]
,[CONTROVALORE_PRODOTTO]
,[AZ_OB]
,[PATRIMONIO_AZ_OB_EMIT]
,[PATRIM_AZ_OB_EMIT_INTER]
,[PATRIMONIO_COMPLESSIVO]
,[CHIAVE_THR]
)
SELECT
CODICE_FISCALE,
RETE,
POSITIONID,
DATI.CATALOGUENAME,
CAT.CATALOGUEID,
CASE
WHEN ADEGUATEZZA IS NULL
THEN CAT.COD_ADEGUATEZZA
ELSE ADEGUATEZZA
END AS COD_ADEGUATEZZA,
INTERMEDIARIO,
SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE,INTERMEDIARIO) AS PATRIMONIO_INTERMEDIARIO,
EMIT.DESCR AS EMITTENTE,
CASE
WHEN EMIT.DESCR IS NULL THEN NULL
ELSE SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE,EMIT.DESCR)
END AS PATRIMONIO_EMITTENTE,
CAT.COMPLEX AS COMPLESSITA,
CAT.TIPOPRODOTTO,
CONTROVALORE AS CONTROVALORE_PRODOTTO,
CASE WHEN CAT.STRTYPE IS NULL
THEN AZ_OB
ELSE CAT.STRTYPE
END AS AZ_OB,
SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE,CASE WHEN CAT.STRTYPE IS NULL THEN AZ_OB ELSE CAT.STRTYPE END,EMIT.DESCR) AS PATRIMONIO_AZ_OB_EMIT,
SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE,INTERMEDIARIO,CASE WHEN CAT.STRTYPE IS NULL THEN AZ_OB ELSE CAT.STRTYPE END,EMIT.DESCR, POSITIONID) AS PATRIM_AZ_OB_EMIT_INTER,
SUM(CONTROVALORE) OVER (PARTITION BY CODICE_FISCALE,RETE) AS PATRIMONIO_COMPLESSIVO,
CHIAVE_THR
FROM (
SELECT NULL AS AGENTE,
C.RETE,
C.CODICE_FISCALE,
C.CATALOGUENAME,
C.CONTROVALORE,
'BF' AS INTERMEDIARIO,
SUBSTRING(C.STRINGONA_POS, 1, 57) AS CATALOGUEID,
C.STRINGONA_POS AS POSITIONID,
NULL AS ADEGUATEZZA,
'BF' AS PROVENIENZA,
NULL AZ_OB,
'' AS CHIAVE_THR
FROM C6STAGINGPERIODICO.ALL_CONSUL_ASUL C
union all
SELECT agente,
substring(agente,1,1) as rete,
codicefiscale as codice_FISCALE,
nome_prodotto as cataloguename,
SUM(controvalore) AS controvalore,
intermediario,
case when codiceisin = '' then '############' else codiceisin + replicate(' ', 12-len(codiceisin)) end
+
case when codicemaf = '' then '###############' else codicemaf + replicate(' ', 15-len(codicemaf)) end
+
case when codiceinterno = '' then '###############' else codiceinterno + replicate(' ', 15-len(codiceinterno)) end
+
case when codicesottoprodotto = '' then '###############' else codicesottoprodotto + replicate(' ', 15-len(codicesottoprodotto)) end
as catalogueid,
null as positionid,
codiceadeguatezza as ADEGUATEZZA ,
'PPT' as provenienza,
--alberatura,
case
when substring( alberatura,1,13)='Amm.Titoli.Ob'
OR substring( alberatura,1,15)='Amm.Strutturati'
then 'OB'
when substring( alberatura,1,17)='Amm.Titoli.Azioni'
OR substring( alberatura,1,18)='Amm.Titoli.Diritti'
OR substring( alberatura,1,20)='Amm.Derivati.Warrant'
OR substring( alberatura,1,19)='Amm.Derivati.CovWar'
then 'AZ'
else null
end as az_ob,
CHIAVE_THR
FROM (SELECT cf_e_pb.agente AS agente,
cf_e_pb.codice_fiscale AS codicefiscale,
nome_istituto AS intermediario,
SUM(paTRIMonio) AS controvalore,
REPLACE(codice_isin, '$', '') AS codiceisin,
REPLACE(codice_adeguatezza, '$', '') AS codiceadeguatezza,
REPLACE(codice_maf, '$', '') AS codicemaf,
REPLACE(codice_interno, '$', '') AS codiceinterno,
REPLACE(codice_sottoprodotto,
'$',
'' ) AS codicesottoprodotto,
CASE
WHEN traduz_alberat.albero_gerarchia_3 =
'Conti correnti' AND
tipo_prodotto =
'Assets.FinancialAssets.CurrentAccount' THEN
'Cc'
ELSE
'xxx'
END AS need_si_o_no_cc,
provenienza,
CASE
WHEN provenienza = 'dati NON in catalogo' THEN
1
ELSE
0
END AS prodotti_non_in_catalogo,
tipo_prodotto,
nome_prodotto,
alberatura,
CHIAVE_THR
FROM (
-- asset per dati NON in catalogo
SELECT aa.paTRIMonio,
aa.chiave_cliente,
aa.nome_istituto,
bb.codice_isin,
bb.codice_adeguatezza,
bb.codice_maf,
NULL AS codice_interno,
NULL AS codice_sottoprodotto,
aa.alberatura,
aa.provenienza,
tipo_prodotto,
nomeprodotto AS nome_prodotto,
CHIAVE_THR
FROM (SELECT patr_tp.paTRIMonio_terzi *
acb.bdpercentage AS paTRIMonio,
patr_tp.chiave_per_cliente AS chiave_cliente,
patr_tp.intermediario AS nome_istituto,
ass.assetclassid,
substring(patr_tp.descrizione_alberatura,
1,
45) AS alberatura,
'dati NON in catalogo' AS provenienza,
patr_tp.descrizione_prodotto AS tipo_prodotto,
patr_tp.nomeprodotto,
CHIAVE_THR
FROM c6stagingperiodico.All_patr_terzi_senza_asset patr_tp,
c6stagingperiodico.acbdenoth acb,
c6stagingperiodico.assetclass ass
WHERE ass.assetclasslev = 2
AND patr_tp.prodotto_in_catalogo IS NULL
AND patr_tp.chiave_fnc IS NOT NULL
AND acb.f_pfinancial_815c0 = patr_tp.chiave_fnc
AND acb.f_oid$_passe_cdf1a = ass.oid$
) aa,
c6stagingperiodico.all_asset_class_per_promet bb
WHERE bb.codice_asset_class_ingresso = aa.assetclassid
UNION ALL
-- asset per dati in catalogo che hanno cod_adeguatezza valorizzato
SELECT patr_tp.paTRIMonio_terzi AS paTRIMonio,
patr_tp.chiave_per_cliente AS chiave_cliente,
patr_tp.intermediario AS nome_istituto,
cat.cod_isin,
cat.cod_adeguatezza,
cat.cod_maf,
cat.cod_interno,
cat.cod_sottoprodotto,
substring(cat.type$_bcatal_fc317, 64, 45) AS alberatura,
'dati in catalogo che hanno cod_adeguatezza valorizzato' AS provenienza,
patr_tp.descrizione_prodotto AS tipo_prodotto,
patr_tp.nomeprodotto,
CHIAVE_THR
FROM c6stagingperiodico.all_patr_terzi_senza_asset patr_tp,
c6stagingperiodico.catitemref cat
WHERE patr_tp.chiave_fnc IS NOT NULL
AND cat.cod_adeguatezza != '$'
AND patr_tp.prodotto_in_catalogo = cat.catalogueid
UNION ALL
SELECT a.paTRIMonio,
a.chiave_cliente,
a.nome_istituto,
b.codice_isin,
b.codice_adeguatezza,
b.codice_maf,
NULL AS codice_interno,
NULL AS codice_sottoprodotto,
a.alberatura,
a.provenienza,
tipo_prodotto,
nomeprodotto AS nome_prodotto,
CHIAVE_THR
FROM (
-- ASSET ESISTENTI PER DATI DEL CATALOGO CON ADEGUATEZZA A NULL
SELECT PATR_TP.PATRIMONIO_TERZI *
ACB.BDPERCENTAGE AS PATRIMONIO,
PATR_TP.CHIAVE_PER_CLIENTE AS CHIAVE_CLIENTE,
PATR_TP.INTERMEDIARIO AS NOME_ISTITUTO,
LTRIM(ASS.ASSETCLASSID) AS ASSETCLASSID,
ASS.ASSETCLASSLEV,
SUBSTRING(CAT.TYPE$_BCATAL_FC317, 64, 45) AS ALBERATURA,
'DATI IN CATALOGO CHE HANNO COD_ADEGUATEZZA A NULL E ASSET VALORIZZATO' AS PROVENIENZA,
PATR_TP.DESCRIZIONE_PRODOTTO AS TIPO_PRODOTTO,
PATR_TP.NOMEPRODOTTO,
patr_tp.CHIAVE_THR
FROM C6STAGINGPERIODICO.ASSETCLASS ASS,
C6STAGINGPERIODICO.ALL_PATR_TERZI_SENZA_ASSET PATR_TP,
C6STAGINGPERIODICO.CATITEMREF CAT,
C6STAGINGPERIODICO.INSTRBDS INS,
C6STAGINGPERIODICO.ACBDENTRY ACB
WHERE CAT.COD_ADEGUATEZZA = '$'
AND ASS.ASSETCLASSLEV = 2
AND PATR_TP.PRODOTTO_IN_CATALOGO = CAT.CATALOGUEID
AND PATR_TP.CHIAVE_FNC IS NOT NULL
AND CAT.OID$ = INS.F_OID$_PCATA_5DDA6
AND INS.OID$ = ACB.F_PINSTRUMEN_FBCDE
AND ACB.F_OID$_PASSE_B8A1E = ASS.OID$
UNION ALL
-- ASSET NON ESISTENTI PER DATI DEL CATALOGO CON ADEGUATEZZA A NULL (SETTATI AD ALTRO PER CONVENZIONE)
SELECT PATR_TP.PATRIMONIO_TERZI AS PATRIMONIO,
PATR_TP.CHIAVE_PER_CLIENTE AS CHIAVE_CLIENTE,
PATR_TP.INTERMEDIARIO AS NOME_ISTITUTO,
'AL1' AS ASSETCLASSID,
2,
SUBSTRING(CAT.TYPE$_BCATAL_FC317, 64, 45) AS ALBERATURA,
'DATI IN CATALOGO CHE HANNO COD_ADEGUATEZZA A NULL E ASSET NON VALORIZZATO',
PATR_TP.DESCRIZIONE_PRODOTTO AS TIPO_PRODOTTO,
PATR_TP.NOMEPRODOTTO,
patr_tp.CHIAVE_THR
FROM C6STAGINGPERIODICO.ALL_PATR_TERZI_SENZA_ASSET PATR_TP,
C6STAGINGPERIODICO.CATITEMREF CAT,
C6STAGINGPERIODICO.INSTRBDS INS
WHERE CAT.COD_ADEGUATEZZA = '$'
AND PATR_TP.CHIAVE_FNC IS NOT NULL
AND PATR_TP.PRODOTTO_IN_CATALOGO = CAT.CATALOGUEID
AND CAT.OID$ = INS.F_OID$_PCATA_5DDA6 --(+)
AND INS.F_OID$_PCATA_5DDA6 IS NULL
) A,
C6STAGINGPERIODICO.ALL_ASSET_CLASS_PER_PROMET B
WHERE B.CODICE_ASSET_CLASS_INGRESSO = A.ASSETCLASSID
) patrimonio_PT,
C6STAGINGPERIODICO.ALL_CF_PB CF_E_PB,
C6STAGINGPERIODICO.S4_S5_S13_TRAD_UNTIL_LIV3 TRADUZ_ALBERAT
WHERE CF_E_PB.OID = patrimonio_PT.CHIAVE_CLIENTE
AND TRADUZ_ALBERAT.DESCRIZIONE_ORIGINALE = patrimonio_PT.ALBERATURA
GROUP BY CF_E_PB.AGENTE,
CF_E_PB.CODICE_FISCALE,
NOME_ISTITUTO,
REPLACE(codice_isin, '$', ''),
REPLACE(codice_adeguatezza,
'$',
''
),
REPLACE(codice_maf, '$', ''),
REPLACE(codice_interno, '$', ''),
REPLACE(codice_sottoprodotto,
'$',
''
),
PROVENIENZA,
TRADUZ_ALBERAT.ALBERO_GERARCHIA_3,
TIPO_PRODOTTO,
NOME_PRODOTTO,
ALBERATURA,
CHIAVE_THR) TUTTO_PPT
GROUP BY AGENTE,
CODICEFISCALE,
INTERMEDIARIO,
NOME_PRODOTTO,
CODICEISIN,
CODICEADEGUATEZZA,
CODICEMAF,
CODICEINTERNO,
CODICESOTTOPRODOTTO,
PRODOTTI_NON_IN_CATALOGO,
ALBERATURA,
CHIAVE_THR
) DATI,
C6STAGINGPERIODICO.CATITEMREF CAT,
C6STAGINGPERIODICO.EMIT
WHERE CAT.CATALOGUEID = DATI.CATALOGUEID
AND CAT.CODEMI = EMIT.CODEMI
-- LOG ESECUZIONE
UPDATE
LOG_ESECUZIONE
SET
FINE = GETDATE(),
TIPO = 'INSERT',
RIGHE = @@ROWCOUNT
WHERE
NOME = 'DM_ALL_PATRIMONIO' AND
INIZIO = (
SELECT
MAX(INIZIO)
FROM
LOG_ESECUZIONE
WHERE
NOME = 'DM_ALL_PATRIMONIO'
)
END