﻿-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
-- [C6Mart].[PL_S75GradoCopertura] 'F','SMPSMN76C26L157Y'
CREATE procedure [C6Mart].[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 Banca Fideuram'
			WHEN 'S' THEN 'Patrimonio Sanpaolo 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 C6Mart.vPatrimoniobfAggregato patrBF
	LEFT OUTER JOIN C6Mart.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
		--AND patrBF.PatrimonioSenzaCC > 0
	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 C6Mart.PATRIMONIO_TERZI patrTerzi
		LEFT OUTER JOIN C6Mart.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 OUTER JOIN C6Mart.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 COPERTURA WHEN 0 THEN 'n.c.' ELSE NULL END AS varString,
--				CASE COPERTURA WHEN 0 THEN 'n.c.' ELSE NULL END AS coperturaString
				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 @coperturaCompl WHEN 0 THEN 'n.c.' ELSE NULL END AS varString,
--				CASE @coperturaCompl WHEN 0 THEN 'n.c.' ELSE NULL END AS coperturaString
				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 COPERTURA WHEN 0 THEN 'n.c.' ELSE NULL END AS varString,
--				CASE COPERTURA WHEN 0 THEN 'n.c.' ELSE NULL END AS coperturaString
				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 [C6Mart].[PL_S75GradoCopertura]    Script Date: 08/02/2022 16:57:49 ******/
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
---- =============================================
---- Author:		<Author,,Name>
---- Create date: <Create Date,,>
---- Description:	<Description,,>
---- =============================================
---- [C6Mart].[PL_S75GradoCopertura] 'F','SMPSMN76C26L157Y'
--ALTER procedure [C6Mart].[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 Banca Fideuram'
--			ELSE 'Patrimonio Sanpaolo 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 C6Mart.vPatrimoniobfAggregato patrBF
--	LEFT OUTER JOIN C6Mart.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
--		--AND patrBF.PatrimonioSenzaCC > 0
--	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 C6Mart.PATRIMONIO_TERZI patrTerzi
--		LEFT OUTER JOIN C6Mart.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 OUTER JOIN C6Mart.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 COPERTURA WHEN 0 THEN 'n.c.' ELSE NULL END AS varString,
----				CASE COPERTURA WHEN 0 THEN 'n.c.' ELSE NULL END AS coperturaString
--				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 @coperturaCompl WHEN 0 THEN 'n.c.' ELSE NULL END AS varString,
----				CASE @coperturaCompl WHEN 0 THEN 'n.c.' ELSE NULL END AS coperturaString
--				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 COPERTURA WHEN 0 THEN 'n.c.' ELSE NULL END AS varString,
----				CASE COPERTURA WHEN 0 THEN 'n.c.' ELSE NULL END AS coperturaString
--				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