-- =============================================
-- Author:		Luca De Lisio
-- Create date: 
-- Description:	
-- =============================================
--[C6Mart].[PL_S2PatrimonioFinanziario] 'S','LCRGPR67H19Z326U'
CREATE procedure [C6Mart].[PL_S2PatrimonioFinanziario] 
	-- 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.
SELECT 
	A.BANCA,
	A.ORDINAMENTO,
	A.AssetClassId, 
	A.AssetClassName, 
	cast(A.Controvalore as decimal(19,6)) Controvalore,
	A.Percentuale,
	cast(ROUND(SUM(A.Controvalore) OVER (PARTITION BY 'TOTALE'),2) as decimal(19,6)) AS PatrimonioFinanziarioCTV
FROM 
(		
	SELECT DISTINCT
		CASE @Rete
			WHEN 'S' THEN 'Sanpaolo Invest'
			WHEN 'F' THEN 'Banca Fideuram' 
			ELSE 'IW Private Investments'
		END AS Banca,
		ASSETCLASS.ORDINAMENTO AS Ordinamento,
		VALORIASSET.ID_ASSETCLASS AS AssetClassId, 
		ASSETCLASS.DESCRIZIONE AS AssetClassName, 
		SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS) AS Controvalore,
		(
			SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS) /
			SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY 'TOTALE') 
		) * 100 AS Percentuale
	FROM (
		--PRODOTTI BF ESCLUSI GLI ASUL
		SELECT 	
			ASSETPERC.ID_ASSETCLASS,
			PATRBF.CTV*ASSETPERC.PERC as Controvalore
		FROM C6MART.PATRIMONIO_BF PATRBF
		INNER JOIN C6MART.ASSET_PERC ASSETPERC 
			ON PATRBF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO
			AND ASSETPERC.LIVELLO = 1
		WHERE 
			--ELIMINO I CONTRATTI ASUL PERCHE' UTILIZZIAMO IL DETTGALIO CHE PRENDIAMO CON LA SECONDA QUERY
			(PATRBF.TIPO_PRODOTTO NOT IN ('ASUL'))--,'CC'))
			and patrbf.id_area <> 'CC'
			AND PATRBF.RETE = @Rete
			AND PATRBF.COD_FISCALE = @CodiceFiscale
		UNION ALL
--		-- MODIFICA PER AVERE ASSET PERCENTUALI SUI CC
--		SELECT 	
--			ASSETPERC.ID_ASSETCLASS,
--			PATRBF.CTV*ASSETPERC.PERC as Controvalore
--		FROM 
--			C6MART.PATRIMONIO_BF PATRBF
--		INNER JOIN 
--			C6MART.ASSET_PERC ASSETPERC 
--			ON 
--				PATRBF.COD_SOTTOPRODOTTO = ASSETPERC.COD_SOTTOPRODOTTO
--				AND PATRBF.COD_INTERNO = ASSETPERC.COD_INTERNO 
--				AND ASSETPERC.LIVELLO = 1
--
--		--V per i cc negativi vado sull'area della patrimonio bf essendo i pos in liq
--		--LEFT JOIN 
--		--	C6Mart.ClientiConCCNegativo CCNegativo
--		--	ON 
--		--		PATRBF.RETE = CCNegativo.Rete
--		--		AND PATRBF.COD_FISCALE = CCNegativo.Cod_Fiscale
--		WHERE 
--			--ELIMINO I CC CON SALDO NEGATIVO
--			--PATRBF.TIPO_PRODOTTO = 'CC'
--			PATRBF.ID_AREA <> 'CC'
--			AND PATRBF.RETE = @Rete
--			AND PATRBF.COD_FISCALE = @CodiceFiscale
--			--AND CCNegativo.Cod_Fiscale IS NULL
--		UNION ALL
		--DETTAGLIO ASUL
		SELECT 
			ASSETPERC.ID_ASSETCLASS,
			ASUL.CTV*ASSETPERC.PERC as Controvalore
		FROM 
			C6MART.DETTAGLIO_ASUL ASUL
		INNER JOIN 
			C6MART.ASSET_PERC ASSETPERC
			ON 
				ASSETPERC.COD_PRODOTTO = ASUL.COD_PRODOTTO
				AND ASSETPERC.LIVELLO = 1
		WHERE ASUL.RETE = @Rete
			AND ASUL.COD_FISCALE = @CodiceFiscale
		UNION ALL
		--PRODOTTI TERZI A CATALOGO
		SELECT
			ISNULL(ASSETPERC.ID_ASSETCLASS,'AL') ID_ASSETCLASS,
			PATRTERZI.CTV*ISNULL(ASSETPERC.PERC,1) as Controvalore
		FROM 
			C6MART.PATRIMONIO_TERZI PATRTERZI
		LEFT JOIN 
			C6MART.ASSET_PERC ASSETPERC 
			ON 
				PATRTERZI.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO
				AND ASSETPERC.LIVELLO = 1
		WHERE 1 = 1
			AND PATRTERZI.COD_PRODOTTO <> 'PRODOTTO NON IN CATALOGO'
			AND PATRTERZI.RETE = @Rete
			AND PATRTERZI.COD_FISCALE = @CodiceFiscale
		UNION ALL
		--PRODOTTI TERZI NON A CATALOGO
		SELECT 	
			ISNULL(ASSETPERC.ID_ASSETCLASS,'AL') ID_ASSETCLASS,
			PATRTERZI.CTV*ISNULL(ASSETPERC.PERC,1) as Controvalore
		FROM 
			C6MART.PATRIMONIO_TERZI PATRTERZI
		LEFT JOIN 
			C6MART.ASSET_PERC_TERZI ASSETPERC 
			ON 
				PATRTERZI.COD_PRODOTTO_TERZI = ASSETPERC.COD_PRODOTTO_TERZI
				AND ASSETPERC.LIVELLO = 1
		WHERE 1 = 1
			AND PATRTERZI.COD_PRODOTTO = 'PRODOTTO NON IN CATALOGO'
			AND PATRTERZI.RETE = @Rete
			AND PATRTERZI.COD_FISCALE = @CodiceFiscale
	) VALORIASSET
	INNER JOIN 
		C6Mart.ASSETCLASS ASSETCLASS
		ON 
			ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS
) A
ORDER BY A.ORDINAMENTO
END
--USE [C6StampeCentralizzate]
--GO
--/****** Object:  StoredProcedure [C6Mart].[PL_S2PatrimonioFinanziario]    Script Date: 08/02/2022 16:53:30 ******/
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
---- =============================================
---- Author:		Luca De Lisio
---- Create date: 
---- Description:	
---- =============================================
----[C6Mart].[PL_S2PatrimonioFinanziario] 'S','LCRGPR67H19Z326U'
--ALTER procedure [C6Mart].[PL_S2PatrimonioFinanziario] 
--	-- 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.
--SELECT 
--	A.BANCA,
--	A.ORDINAMENTO,
--	A.AssetClassId, 
--	A.AssetClassName, 
--	cast(A.Controvalore as decimal(19,6)) Controvalore,
--	A.Percentuale,
--	cast(ROUND(SUM(A.Controvalore) OVER (PARTITION BY 'TOTALE'),2) as decimal(19,6)) AS PatrimonioFinanziarioCTV
--FROM 
--(		
--	SELECT DISTINCT
--		CASE @Rete
--			WHEN 'S' THEN 'Sanpaolo Invest'
--			ELSE 'Banca Fideuram' 
--		END AS Banca,
--		ASSETCLASS.ORDINAMENTO AS Ordinamento,
--		VALORIASSET.ID_ASSETCLASS AS AssetClassId, 
--		ASSETCLASS.DESCRIZIONE AS AssetClassName, 
--		SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS) AS Controvalore,
--		(
--			SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS) /
--			SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY 'TOTALE') 
--		) * 100 AS Percentuale
--	FROM (
--		--PRODOTTI BF ESCLUSI GLI ASUL
--		SELECT 	
--			ASSETPERC.ID_ASSETCLASS,
--			PATRBF.CTV*ASSETPERC.PERC as Controvalore
--		FROM C6MART.PATRIMONIO_BF PATRBF
--		INNER JOIN C6MART.ASSET_PERC ASSETPERC 
--			ON PATRBF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO
--			AND ASSETPERC.LIVELLO = 1
--		WHERE 
--			--ELIMINO I CONTRATTI ASUL PERCHE' UTILIZZIAMO IL DETTGALIO CHE PRENDIAMO CON LA SECONDA QUERY
--			(PATRBF.TIPO_PRODOTTO NOT IN ('ASUL'))--,'CC'))
--			and patrbf.id_area <> 'CC'
--			AND PATRBF.RETE = @Rete
--			AND PATRBF.COD_FISCALE = @CodiceFiscale
--		UNION ALL
----		-- MODIFICA PER AVERE ASSET PERCENTUALI SUI CC
----		SELECT 	
----			ASSETPERC.ID_ASSETCLASS,
----			PATRBF.CTV*ASSETPERC.PERC as Controvalore
----		FROM 
----			C6MART.PATRIMONIO_BF PATRBF
----		INNER JOIN 
----			C6MART.ASSET_PERC ASSETPERC 
----			ON 
----				PATRBF.COD_SOTTOPRODOTTO = ASSETPERC.COD_SOTTOPRODOTTO
----				AND PATRBF.COD_INTERNO = ASSETPERC.COD_INTERNO 
----				AND ASSETPERC.LIVELLO = 1
----
----		--V per i cc negativi vado sull'area della patrimonio bf essendo i pos in liq
----		--LEFT JOIN 
----		--	C6Mart.ClientiConCCNegativo CCNegativo
----		--	ON 
----		--		PATRBF.RETE = CCNegativo.Rete
----		--		AND PATRBF.COD_FISCALE = CCNegativo.Cod_Fiscale
----		WHERE 
----			--ELIMINO I CC CON SALDO NEGATIVO
----			--PATRBF.TIPO_PRODOTTO = 'CC'
----			PATRBF.ID_AREA <> 'CC'
----			AND PATRBF.RETE = @Rete
----			AND PATRBF.COD_FISCALE = @CodiceFiscale
----			--AND CCNegativo.Cod_Fiscale IS NULL
----		UNION ALL
--		--DETTAGLIO ASUL
--		SELECT 
--			ASSETPERC.ID_ASSETCLASS,
--			ASUL.CTV*ASSETPERC.PERC as Controvalore
--		FROM 
--			C6MART.DETTAGLIO_ASUL ASUL
--		INNER JOIN 
--			C6MART.ASSET_PERC ASSETPERC
--			ON 
--				ASSETPERC.COD_PRODOTTO = ASUL.COD_PRODOTTO
--				AND ASSETPERC.LIVELLO = 1
--		WHERE ASUL.RETE = @Rete
--			AND ASUL.COD_FISCALE = @CodiceFiscale
--		UNION ALL
--		--PRODOTTI TERZI A CATALOGO
--		SELECT
--			ISNULL(ASSETPERC.ID_ASSETCLASS,'AL') ID_ASSETCLASS,
--			PATRTERZI.CTV*ISNULL(ASSETPERC.PERC,1) as Controvalore
--		FROM 
--			C6MART.PATRIMONIO_TERZI PATRTERZI
--		LEFT JOIN 
--			C6MART.ASSET_PERC ASSETPERC 
--			ON 
--				PATRTERZI.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO
--				AND ASSETPERC.LIVELLO = 1
--		WHERE 1 = 1
--			AND PATRTERZI.COD_PRODOTTO <> 'PRODOTTO NON IN CATALOGO'
--			AND PATRTERZI.RETE = @Rete
--			AND PATRTERZI.COD_FISCALE = @CodiceFiscale
--		UNION ALL
--		--PRODOTTI TERZI NON A CATALOGO
--		SELECT 	
--			ISNULL(ASSETPERC.ID_ASSETCLASS,'AL') ID_ASSETCLASS,
--			PATRTERZI.CTV*ISNULL(ASSETPERC.PERC,1) as Controvalore
--		FROM 
--			C6MART.PATRIMONIO_TERZI PATRTERZI
--		LEFT JOIN 
--			C6MART.ASSET_PERC_TERZI ASSETPERC 
--			ON 
--				PATRTERZI.COD_PRODOTTO_TERZI = ASSETPERC.COD_PRODOTTO_TERZI
--				AND ASSETPERC.LIVELLO = 1
--		WHERE 1 = 1
--			AND PATRTERZI.COD_PRODOTTO = 'PRODOTTO NON IN CATALOGO'
--			AND PATRTERZI.RETE = @Rete
--			AND PATRTERZI.COD_FISCALE = @CodiceFiscale
--	) VALORIASSET
--	INNER JOIN 
--		C6Mart.ASSETCLASS ASSETCLASS
--		ON 
--			ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS
--) A
--ORDER BY A.ORDINAMENTO
--END