--[C6MartPeriodico].[PL_D2_S154PatrimonioFinanziario]  'S','LMNFNC40L14L219U'
CREATE procedure [C6MartPeriodico].[PL_D2_S154PatrimonioFinanziario]  
	@Rete char(1), 
	@CodiceFiscale varchar(16)
AS
BEGIN
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 '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 (
		SELECT 	--PRODOTTI BF ESCLUSI GLI ASUL
			ASSETPERC.ID_ASSETCLASS,
			PATRBF.CTV*ASSETPERC.PERC as Controvalore
		FROM C6MartPeriodico.PATRIMONIO_BF PATRBF
		INNER JOIN C6MartPeriodico.ASSET_PERC ASSETPERC 
			ON PATRBF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO
			AND ASSETPERC.LIVELLO = 1
		WHERE 
			PATRBF.TIPO_PRODOTTO NOT IN ('ASUL') 
			AND PATRBF.ID_AREA  not in ('CC','SELF') 
			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 
--			C6MartPeriodico.PATRIMONIO_BF PATRBF
--		INNER JOIN 
--			C6MartPeriodico.ASSET_PERC ASSETPERC 
--			ON 
--				PATRBF.COD_SOTTOPRODOTTO = ASSETPERC.COD_SOTTOPRODOTTO
--				AND PATRBF.COD_INTERNO = ASSETPERC.COD_INTERNO 
--				AND ASSETPERC.LIVELLO = 1
--		LEFT OUTER JOIN 
--			C6MartPeriodico.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'
--			AND PATRBF.RETE = @Rete
--			AND PATRBF.COD_FISCALE = @CodiceFiscale
--			AND CCNegativo.Cod_Fiscale IS NULL
--		UNION ALL
		--DETTAGLIO ASUL SENZA SKANDIA
		SELECT 
			ASSETPERC.ID_ASSETCLASS,
			ASUL.CTV*ASSETPERC.PERC as Controvalore
		FROM 
			C6MartPeriodico.DETTAGLIO_ASUL ASUL
		INNER JOIN 
			C6MartPeriodico.ASSET_PERC ASSETPERC
			ON 
				ASSETPERC.COD_PRODOTTO = ASUL.COD_PRODOTTO
				---ELIMINO GLI SKANDIA
				AND ASUL.COD_ISIN_SOTT = ''
				AND ASSETPERC.LIVELLO = 1
		WHERE
			ASUL.RETE = @Rete
			AND ASUL.COD_FISCALE = @CodiceFiscale
		UNION ALL
		--CON SKANDIA
		SELECT ASSETPERC.ID_ASSETCLASS,
				ASUL.CTV*ASSETPERC.PERC as Controvalore
		FROM C6MartPeriodico.DETTAGLIO_ASUL ASUL
		INNER JOIN C6MartPeriodico.ASSET_PERC ASSETPERC
			--PRENDO SOLO GLI SKANDIA
			ON ASSETPERC.COD_ISIN = ASUL.COD_ISIN_SOTT
			AND ASSETPERC.COD_MAF = ASUL.COD_MAF_SOTT
			AND ASSETPERC.COD_INTERNO = ASUL.COD_INTERNO
            AND rtrim(ASSETPERC.COD_SOTTOPRODOTTO) = ASUL.COD_SOTTOPRODOTTO
			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 
			C6MartPeriodico.PATRIMONIO_TERZI PATRTERZI
		LEFT OUTER JOIN 
			C6MartPeriodico.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 
			C6MartPeriodico.PATRIMONIO_TERZI PATRTERZI
		LEFT OUTER JOIN 
			C6MartPeriodico.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 
		C6MartPeriodico.ASSETCLASS ASSETCLASS
		ON 
			ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS
) A
ORDER BY A.ORDINAMENTO
END
--USE [C6StampeCentralizzate]
--GO
--/****** Object:  StoredProcedure [C6MartPeriodico].[PL_D2_S154PatrimonioFinanziario]    Script Date: 09/02/2022 11:26:38 ******/
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
----[C6MartPeriodico].[PL_D2_S154PatrimonioFinanziario]  'S','LMNFNC40L14L219U'
--ALTER procedure [C6MartPeriodico].[PL_D2_S154PatrimonioFinanziario]  
--	@Rete char(1), 
--	@CodiceFiscale varchar(16)
--AS
--BEGIN
--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 '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 (
--		SELECT 	--PRODOTTI BF ESCLUSI GLI ASUL
--			ASSETPERC.ID_ASSETCLASS,
--			PATRBF.CTV*ASSETPERC.PERC as Controvalore
--		FROM C6MartPeriodico.PATRIMONIO_BF PATRBF
--		INNER JOIN C6MartPeriodico.ASSET_PERC ASSETPERC 
--			ON PATRBF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO
--			AND ASSETPERC.LIVELLO = 1
--		WHERE 
--			PATRBF.TIPO_PRODOTTO NOT IN ('ASUL') 
--			AND PATRBF.ID_AREA  not in ('CC','SELF') 
--			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 
----			C6MartPeriodico.PATRIMONIO_BF PATRBF
----		INNER JOIN 
----			C6MartPeriodico.ASSET_PERC ASSETPERC 
----			ON 
----				PATRBF.COD_SOTTOPRODOTTO = ASSETPERC.COD_SOTTOPRODOTTO
----				AND PATRBF.COD_INTERNO = ASSETPERC.COD_INTERNO 
----				AND ASSETPERC.LIVELLO = 1
----		LEFT OUTER JOIN 
----			C6MartPeriodico.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'
----			AND PATRBF.RETE = @Rete
----			AND PATRBF.COD_FISCALE = @CodiceFiscale
----			AND CCNegativo.Cod_Fiscale IS NULL
----		UNION ALL
--		--DETTAGLIO ASUL SENZA SKANDIA
--		SELECT 
--			ASSETPERC.ID_ASSETCLASS,
--			ASUL.CTV*ASSETPERC.PERC as Controvalore
--		FROM 
--			C6MartPeriodico.DETTAGLIO_ASUL ASUL
--		INNER JOIN 
--			C6MartPeriodico.ASSET_PERC ASSETPERC
--			ON 
--				ASSETPERC.COD_PRODOTTO = ASUL.COD_PRODOTTO
--				---ELIMINO GLI SKANDIA
--				AND ASUL.COD_ISIN_SOTT = ''
--				AND ASSETPERC.LIVELLO = 1
--		WHERE
--			ASUL.RETE = @Rete
--			AND ASUL.COD_FISCALE = @CodiceFiscale
--		UNION ALL
--		--CON SKANDIA
--		SELECT ASSETPERC.ID_ASSETCLASS,
--				ASUL.CTV*ASSETPERC.PERC as Controvalore
--		FROM C6MartPeriodico.DETTAGLIO_ASUL ASUL
--		INNER JOIN C6MartPeriodico.ASSET_PERC ASSETPERC
--			--PRENDO SOLO GLI SKANDIA
--			ON ASSETPERC.COD_ISIN = ASUL.COD_ISIN_SOTT
--			AND ASSETPERC.COD_MAF = ASUL.COD_MAF_SOTT
--			AND ASSETPERC.COD_INTERNO = ASUL.COD_INTERNO
--            AND rtrim(ASSETPERC.COD_SOTTOPRODOTTO) = ASUL.COD_SOTTOPRODOTTO
--			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 
--			C6MartPeriodico.PATRIMONIO_TERZI PATRTERZI
--		LEFT OUTER JOIN 
--			C6MartPeriodico.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 
--			C6MartPeriodico.PATRIMONIO_TERZI PATRTERZI
--		LEFT OUTER JOIN 
--			C6MartPeriodico.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 
--		C6MartPeriodico.ASSETCLASS ASSETCLASS
--		ON 
--			ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS
--) A
--ORDER BY A.ORDINAMENTO
--END