-- Stored procedure
-- =============================================
-- Author:		Luca De Lisio
-- Create date: 
-- Description:	
-- =============================================
--[C6Mart].[PL_DT_S154PatrimonioFinanziario] 'F','LNTNNE59L06F205C'
CREATE procedure [C6Mart].[PL_D_S154PatrimonioFinanziario] 
	-- 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,
		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
--		LEFT OUTER 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'
--			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 
			C6MART.DETTAGLIO_ASUL ASUL
		INNER JOIN 
			C6MART.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 C6MART.DETTAGLIO_ASUL ASUL
		INNER JOIN C6MART.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 
			C6MART.PATRIMONIO_TERZI PATRTERZI
		LEFT OUTER 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 OUTER 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_D_S154PatrimonioFinanziario]    Script Date: 08/02/2022 17:20:52 ******/
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
---- Stored procedure
---- =============================================
---- Author:		Luca De Lisio
---- Create date: 
---- Description:	
---- =============================================
----[C6Mart].[PL_DT_S154PatrimonioFinanziario] 'F','LNTNNE59L06F205C'
--ALTER procedure [C6Mart].[PL_D_S154PatrimonioFinanziario] 
--	-- 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
----		LEFT OUTER 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'
----			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 
--			C6MART.DETTAGLIO_ASUL ASUL
--		INNER JOIN 
--			C6MART.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 C6MART.DETTAGLIO_ASUL ASUL
--		INNER JOIN C6MART.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 
--			C6MART.PATRIMONIO_TERZI PATRTERZI
--		LEFT OUTER 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 OUTER 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