PDC_REPORT_CreazioneDB/sql/Produzione/procedure/C6MartPeriodico_PL_S75GradoCopertura.sql
2025-06-10 15:29:00 +02:00

352 lines
11 KiB
Transact-SQL

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
-- [C6MartPeriodico].[PL_S75GradoCopertura] 'F','GRNNTN55B07I158D'
CREATE procedure [C6MartPeriodico].[PL_S75GradoCopertura]
-- Add the parameters for the stored procedure here
@Rete char(1),
@CodiceFiscale varchar(16)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
DECLARE @varCompl decimal(15,3)
DECLARE @coperturaCompl decimal(15,3)
DECLARE @ctvCompl decimal(15,3)
DECLARE @saldoCC decimal(15,3)
--CALCOLO PATRIMONI E ESTRAZIONE VAR
SELECT
@Rete AS Rete,
@CodiceFiscale as CodiceFiscale,
CASE @Rete
WHEN 'F' THEN 'Patrimonio Fideuram'
WHEN 'S' THEN 'Patrimonio San Paolo Invest'
ELSE ' Patrimonio IW Private Inv.'
END AS NomePatrimonio,
-- MAX(patrBF.CTV - patrBF.ContoCorrente) AS Controvalore,
-- MAX(patrBF.ContoCorrente) AS ControvaloreCC,
-- MAX(RISCHIO.VAR_PERC_PTF) AS VarPatrimonio,
-- MAX(RISCHIO.COPERTURA) AS Copertura,
patrBF.PatrimonioSenzaCC AS Controvalore,
--patrBF.CTV - patrBF.ContoCorrente AS Controvalore,
patrBF.ContoCorrente AS ControvaloreCC,
RISCHIO.VAR_PERC_PTF AS VarPatrimonio,
RISCHIO.COPERTURA AS Copertura,
1 AS ORDINE INTO #TEMP75
FROM
C6MartPeriodico.vPatrimoniobfAggregato patrBF
LEFT JOIN
C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO
ON
RISCHIO.RETE = patrBF.RETE
AND RISCHIO.COD_FISCALE = patrBF.COD_FISCALE
AND RISCHIO.COD_AGGREG = 'COMPLESSIVO|BF'
WHERE
patrBF.Rete = @Rete
AND patrBF.Cod_Fiscale = @CodiceFiscale
UNION ALL
SELECT
A.Rete,
A.CodiceFiscale,
A.NomePatrimonio,
A.Controvalore,
A.ControvaloreCC,
A.VarPatrimonio,
A.Copertura,
A.ORDINE
FROM(
SELECT
@Rete AS Rete,
@CodiceFiscale as CodiceFiscale,
'Patrimonio Altri Istituti' AS NomePatrimonio,
SUM(ROUND(CASE WHEN patrTerzi.TIPO_PRODOTTO = 'Conti correnti' THEN 0 ELSE CTV END,2)) AS Controvalore,
SUM(ROUND(CASE WHEN patrTerzi.TIPO_PRODOTTO = 'Conti correnti' THEN patrTerzi.CTV ELSE 0 END,2)) AS ControvaloreCC,
MAX(RISCHIO.VAR_PERC_PTF) as VarPatrimonio,
MAX(RISCHIO.COPERTURA) as Copertura,
2 AS ORDINE
FROM
C6MartPeriodico.PATRIMONIO_TERZI patrTerzi
LEFT JOIN
C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO
ON
RISCHIO.RETE = patrTerzi.RETE
AND RISCHIO.COD_FISCALE = patrTerzi.COD_FISCALE
AND RISCHIO.COD_AGGREG = 'COMPLESSIVO|TERZI'
WHERE
patrTerzi.Rete = @Rete
and patrTerzi.COD_FISCALE = @CodiceFiscale
) A
WHERE ISNULL(A.CONTROVALORE,0)>0
-- SE IL PATRIMONIO È SOLO 1 NON VA CALCOLATO IL COMPLESSIVO
IF @@ROWCOUNT > 1
BEGIN
--CALCOLO IL PATRIMONIO COMPLESSIVO ED ESTRAGGO IL VAR
SELECT
@ctvCompl=SUM(patr.CONTROVALORE),
@saldoCC=SUM(patr.CONTROVALORECC),
@varCompl=MAX(RISCHIO.VAR_PERC_PTF),
@coperturaCompl=MAX(RISCHIO.COPERTURA)
FROM
#TEMP75 patr
LEFT JOIN
C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO
ON
RISCHIO.RETE = patr.RETE
AND RISCHIO.COD_FISCALE = patr.CodiceFiscale
AND RISCHIO.COD_AGGREG = 'COMPLESSIVO'
--RESTITUISCO I PATRIMONI
SELECT
Ordine,
Nomepatrimonio,
Controvalore,
CASE WHEN @saldoCC > 0 THEN 1 ELSE 0 END AS CCPresente,
(CONTROVALORE/@CTVCompl)*100 AS Percentuale,
VARPATRIMONIO AS VAR,
Copertura,
CASE
WHEN COPERTURA IS NULL THEN 'n.c.'
WHEN COPERTURA = 0 THEN 'n.c.'
ELSE NULL
END AS varString,
CASE
WHEN COPERTURA IS NULL THEN 'n.c.'
WHEN COPERTURA = 0 THEN 'n.c.'
ELSE NULL
END AS coperturaString,
-- aggiunta per valutare la presenza di controcorrente
CASE WHEN @saldoCC <> 0 THEN 1 ELSE 0 END as NotaCCNetto
-- fine aggiunta per valutare la presenza di controcorrente
FROM #TEMP75
WHERE CONTROVALORE IS NOT NULL
UNION ALL
SELECT
3,
'Patrimonio Complessivo',
@CTVCompl,
CASE WHEN @saldoCC > 0 THEN 1 ELSE 0 END as CCPRESENTE,
100.00 as percentuale,
@varCompl,
@coperturaCompl,
CASE
WHEN @coperturaCompl IS NULL THEN 'n.c.'
WHEN @coperturaCompl = 0 THEN 'n.c.'
ELSE NULL
END AS varString,
CASE
WHEN @coperturaCompl IS NULL THEN 'n.c.'
WHEN @coperturaCompl = 0 THEN 'n.c.'
ELSE NULL
END AS coperturaString,
-- aggiunta per valutare la presenza di controcorrente
CASE WHEN @saldoCC <> 0 THEN 1 ELSE 0 END as NotaCCNetto
-- fine aggiunta per valutare la presenza di controcorrente
ORDER BY 1
END
ELSE
BEGIN
--RESTITUISCO L'UNICO PATRIMONIO PRESENTE
SELECT
Nomepatrimonio,
Controvalore,
CASE WHEN CONTROVALORECC > 0 THEN 1 ELSE 0 END as CCPresente,
100.00 as Percentuale,
VARPATRIMONIO AS VAR,
Copertura,
CASE
WHEN COPERTURA IS NULL THEN 'n.c.'
WHEN COPERTURA = 0 THEN 'n.c.'
ELSE NULL
END AS varString,
CASE
WHEN COPERTURA IS NULL THEN 'n.c.'
WHEN COPERTURA = 0 THEN 'n.c.'
ELSE NULL
END AS coperturaString,
-- aggiunta per valutare la presenza di controcorrente
CASE WHEN CONTROVALORECC <> 0 THEN 1 ELSE 0 END as NotaCCNetto
-- fine aggiunta per valutare la presenza di controcorrente
FROM #TEMP75
WHERE CONTROVALORE IS NOT NULL
END
END
--USE [C6StampeCentralizzate]
--GO
--/****** Object: StoredProcedure [C6MartPeriodico].[PL_S75GradoCopertura] Script Date: 10/02/2022 16:00:46 ******/
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
---- =============================================
---- Author: <Author,,Name>
---- Create date: <Create Date,,>
---- Description: <Description,,>
---- =============================================
---- [C6MartPeriodico].[PL_S75GradoCopertura] 'F','GRNNTN55B07I158D'
--ALTER procedure [C6MartPeriodico].[PL_S75GradoCopertura]
-- -- Add the parameters for the stored procedure here
-- @Rete char(1),
-- @CodiceFiscale varchar(16)
--AS
--BEGIN
-- -- SET NOCOUNT ON added to prevent extra result sets from
-- -- interfering with SELECT statements.
-- DECLARE @varCompl decimal(15,3)
-- DECLARE @coperturaCompl decimal(15,3)
-- DECLARE @ctvCompl decimal(15,3)
-- DECLARE @saldoCC decimal(15,3)
-- --CALCOLO PATRIMONI E ESTRAZIONE VAR
-- SELECT
-- @Rete AS Rete,
-- @CodiceFiscale as CodiceFiscale,
-- CASE @Rete
-- WHEN 'F' THEN 'Patrimonio Fideuram'
-- ELSE 'Patrimonio San Paolo Invest'
-- END AS NomePatrimonio,
---- MAX(patrBF.CTV - patrBF.ContoCorrente) AS Controvalore,
---- MAX(patrBF.ContoCorrente) AS ControvaloreCC,
---- MAX(RISCHIO.VAR_PERC_PTF) AS VarPatrimonio,
---- MAX(RISCHIO.COPERTURA) AS Copertura,
-- patrBF.PatrimonioSenzaCC AS Controvalore,
-- --patrBF.CTV - patrBF.ContoCorrente AS Controvalore,
-- patrBF.ContoCorrente AS ControvaloreCC,
-- RISCHIO.VAR_PERC_PTF AS VarPatrimonio,
-- RISCHIO.COPERTURA AS Copertura,
-- 1 AS ORDINE INTO #TEMP75
-- FROM
-- C6MartPeriodico.vPatrimoniobfAggregato patrBF
-- LEFT JOIN
-- C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO
-- ON
-- RISCHIO.RETE = patrBF.RETE
-- AND RISCHIO.COD_FISCALE = patrBF.COD_FISCALE
-- AND RISCHIO.COD_AGGREG = 'COMPLESSIVO|BF'
-- WHERE
-- patrBF.Rete = @Rete
-- AND patrBF.Cod_Fiscale = @CodiceFiscale
-- UNION ALL
-- SELECT
-- A.Rete,
-- A.CodiceFiscale,
-- A.NomePatrimonio,
-- A.Controvalore,
-- A.ControvaloreCC,
-- A.VarPatrimonio,
-- A.Copertura,
-- A.ORDINE
-- FROM(
-- SELECT
-- @Rete AS Rete,
-- @CodiceFiscale as CodiceFiscale,
-- 'Patrimonio Altri Istituti' AS NomePatrimonio,
-- SUM(ROUND(CASE WHEN patrTerzi.TIPO_PRODOTTO = 'Conti correnti' THEN 0 ELSE CTV END,2)) AS Controvalore,
-- SUM(ROUND(CASE WHEN patrTerzi.TIPO_PRODOTTO = 'Conti correnti' THEN patrTerzi.CTV ELSE 0 END,2)) AS ControvaloreCC,
-- MAX(RISCHIO.VAR_PERC_PTF) as VarPatrimonio,
-- MAX(RISCHIO.COPERTURA) as Copertura,
-- 2 AS ORDINE
-- FROM
-- C6MartPeriodico.PATRIMONIO_TERZI patrTerzi
-- LEFT JOIN
-- C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO
-- ON
-- RISCHIO.RETE = patrTerzi.RETE
-- AND RISCHIO.COD_FISCALE = patrTerzi.COD_FISCALE
-- AND RISCHIO.COD_AGGREG = 'COMPLESSIVO|TERZI'
-- WHERE
-- patrTerzi.Rete = @Rete
-- and patrTerzi.COD_FISCALE = @CodiceFiscale
-- ) A
-- WHERE ISNULL(A.CONTROVALORE,0)>0
-- -- SE IL PATRIMONIO È SOLO 1 NON VA CALCOLATO IL COMPLESSIVO
-- IF @@ROWCOUNT > 1
-- BEGIN
-- --CALCOLO IL PATRIMONIO COMPLESSIVO ED ESTRAGGO IL VAR
-- SELECT
-- @ctvCompl=SUM(patr.CONTROVALORE),
-- @saldoCC=SUM(patr.CONTROVALORECC),
-- @varCompl=MAX(RISCHIO.VAR_PERC_PTF),
-- @coperturaCompl=MAX(RISCHIO.COPERTURA)
-- FROM
-- #TEMP75 patr
-- LEFT JOIN
-- C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO
-- ON
-- RISCHIO.RETE = patr.RETE
-- AND RISCHIO.COD_FISCALE = patr.CodiceFiscale
-- AND RISCHIO.COD_AGGREG = 'COMPLESSIVO'
-- --RESTITUISCO I PATRIMONI
-- SELECT
-- Ordine,
-- Nomepatrimonio,
-- Controvalore,
-- CASE WHEN @saldoCC > 0 THEN 1 ELSE 0 END AS CCPresente,
-- (CONTROVALORE/@CTVCompl)*100 AS Percentuale,
-- VARPATRIMONIO AS VAR,
-- Copertura,
-- CASE
-- WHEN COPERTURA IS NULL THEN 'n.c.'
-- WHEN COPERTURA = 0 THEN 'n.c.'
-- ELSE NULL
-- END AS varString,
-- CASE
-- WHEN COPERTURA IS NULL THEN 'n.c.'
-- WHEN COPERTURA = 0 THEN 'n.c.'
-- ELSE NULL
-- END AS coperturaString,
-- -- aggiunta per valutare la presenza di controcorrente
-- CASE WHEN @saldoCC <> 0 THEN 1 ELSE 0 END as NotaCCNetto
-- -- fine aggiunta per valutare la presenza di controcorrente
-- FROM #TEMP75
-- WHERE CONTROVALORE IS NOT NULL
-- UNION ALL
-- SELECT
-- 3,
-- 'Patrimonio Complessivo',
-- @CTVCompl,
-- CASE WHEN @saldoCC > 0 THEN 1 ELSE 0 END as CCPRESENTE,
-- 100.00 as percentuale,
-- @varCompl,
-- @coperturaCompl,
-- CASE
-- WHEN @coperturaCompl IS NULL THEN 'n.c.'
-- WHEN @coperturaCompl = 0 THEN 'n.c.'
-- ELSE NULL
-- END AS varString,
-- CASE
-- WHEN @coperturaCompl IS NULL THEN 'n.c.'
-- WHEN @coperturaCompl = 0 THEN 'n.c.'
-- ELSE NULL
-- END AS coperturaString,
-- -- aggiunta per valutare la presenza di controcorrente
-- CASE WHEN @saldoCC <> 0 THEN 1 ELSE 0 END as NotaCCNetto
-- -- fine aggiunta per valutare la presenza di controcorrente
-- ORDER BY 1
-- END
-- ELSE
-- BEGIN
-- --RESTITUISCO L'UNICO PATRIMONIO PRESENTE
-- SELECT
-- Nomepatrimonio,
-- Controvalore,
-- CASE WHEN CONTROVALORECC > 0 THEN 1 ELSE 0 END as CCPresente,
-- 100.00 as Percentuale,
-- VARPATRIMONIO AS VAR,
-- Copertura,
-- CASE
-- WHEN COPERTURA IS NULL THEN 'n.c.'
-- WHEN COPERTURA = 0 THEN 'n.c.'
-- ELSE NULL
-- END AS varString,
-- CASE
-- WHEN COPERTURA IS NULL THEN 'n.c.'
-- WHEN COPERTURA = 0 THEN 'n.c.'
-- ELSE NULL
-- END AS coperturaString,
-- -- aggiunta per valutare la presenza di controcorrente
-- CASE WHEN CONTROVALORECC <> 0 THEN 1 ELSE 0 END as NotaCCNetto
-- -- fine aggiunta per valutare la presenza di controcorrente
-- FROM #TEMP75
-- WHERE CONTROVALORE IS NOT NULL
-- END
--END