﻿-- =============================================  
-- Author:  <>  
-- Create date: <>  
-- Description: <caricamento tabella di generazione TB_S10PatrimonioFinanziario>  
-- =============================================  
-- [C6MartPeriodico].[Popola_S10PatrimonioFinanziario] 'F','LRNRMR33D51C166I'  
CREATE      procedure [C6MartPeriodico].[Popola_FD190PatrimonioFinanziario_PTFRibilanciato]  
 -- Add the parameters for the stored procedure here  
 --@Rete char(1),   
 --@CodiceFiscale varchar(16)  
AS  
BEGIN  
truncate table C6MartPeriodico.TB_FD190PatrimonioFinanziario_PTFRibilanciato  
INSERT INTO C6MartPeriodico.TB_FD190PatrimonioFinanziario_PTFRibilanciato  
SELECT --top 1  
 Rete,   
 cod_fiscale as CodiceFiscale,  
 A.BANCA AS Banca,  
 A.ORDINAMENTO AS Ordinamento,  
 A.AssetClassId AS AssetClassId,   
 A.AssetClassName AS AssetClassName, 
 a.ChiavePtfMod,
 A.Controvalore,  
 A.percentuale,  
 ROUND(SUM(A.Controvalore) OVER (PARTITION BY RETE,COD_FISCALE),2)  as Totale,
 isnull(ptf.percentuale,0.00) as Percentuale_Modello,
 A.VAR_PROG
 --cast(A.Controvalore as decimal(19,5)) AS Controvalore,  
 --cast(A.Percentuale  as decimal(19,5)) AS Percentuale,  
 --cast(ROUND(SUM(A.Controvalore) OVER (PARTITION BY 'TOTALE'),2)  as decimal(19,5))  AS Totale  
FROM   
(    
 SELECT DISTINCT  
  CASE Rete  
   WHEN 'S' THEN 'Sanpaolo Invest'  
   WHEN 'F' THEN 'Fideuram'   
   ELSE 'IW Private Investments'
  END AS Banca,  
  rete,  
  cod_fiscale,  
  ASSETCLASS.ORDINAMENTO,  
  VALORIASSET.ID_ASSETCLASS AS AssetClassId,   
  ASSETCLASS.DESCRIZIONE AS AssetClassName,   
  ROUND(SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS,rete,cod_fiscale),2) as Controvalore,  
  (  
   SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS,rete,cod_fiscale) /  
            --16.07.2011 COLAIANNI CONSOLI GESTIONE DIVISIONE PER ZERO  
   CASE WHEN ( SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY 'TOTALE',rete,cod_fiscale) ) = 0   
     THEN 1   
                 ELSE ( SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY 'TOTALE',rete,cod_fiscale) )   
            END    
  ) * 100 AS Percentuale  ,
  ChiavePtfMod,
  VAR_PERC_PTF as VAR_PROG
 FROM (  
  SELECT    
   PATRBF.rete,  
   PATRBF.COD_FISCALE,  
   ASSETPERC.ID_ASSETCLASS,  
   PATRBF.CTV*ASSETPERC.PERC as Controvalore  ,
   PATRBF.ChiavePtfMod,
   RISCHIO_AGGR_PROG.VAR_PERC_PTF
  FROM   
   C6MartPeriodico.PATRIMONIO_BF PATRBF  
  INNER JOIN   
   C6MartPeriodico.ASSET_PERC ASSETPERC   
   ON   
    PATRBF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO  
    AND ASSETPERC.LIVELLO = 1  
--	inner join
--	C6StagingPeriodico.RP_Progetto_Robo robo
--	on robo.chiaveProgetto=patrbf.CHIAVE_PROGETTO
LEFT JOIN C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO_AGGR_PROG
	ON PATRBF.RETE= RISCHIO_AGGR_PROG.RETE
	AND PATRBF.COD_FISCALE= RISCHIO_AGGR_PROG.COD_FISCALE
	AND RISCHIO_AGGR_PROG.COD_AGGREG = 'RISFIN|PIRAMIDE|' + LEFT(PATRBF.ID_AREA,3) + '|' + PATRBF.NOME_PROGETTO + '|'
						 + cast (PatrBF.ordinamento_progetto as varchar)
  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 not in ('CC', 'SELF')  
   and patrbf.NOME_PROGETTO like '%Direct Evo%'
  -- AND PATRBF.RETE = @Rete  
  -- AND PATRBF.COD_FISCALE = @CodiceFiscale  
  UNION ALL  
  SELECT   
   Asul.rete,  
   asul.cod_fiscale,  
   ASSETPERC.ID_ASSETCLASS,  
   ASUL.CTV*ASSETPERC.PERC as Controvalore  ,
   patrbf.chiaveptfmod,
   RISCHIO_AGGR_PROG.VAR_PERC_PTF
  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  
		inner join
		C6MartPeriodico.PATRIMONIO_BF PATRBF  
		on patrbf.chiave_progetto=ASUL.CHIAVEPROGETTO
		LEFT JOIN C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO_AGGR_PROG
	ON PATRBF.RETE= RISCHIO_AGGR_PROG.RETE
	AND PATRBF.COD_FISCALE= RISCHIO_AGGR_PROG.COD_FISCALE
	AND RISCHIO_AGGR_PROG.COD_AGGREG = 'RISFIN|PIRAMIDE|' + LEFT(PATRBF.ID_AREA,3) + '|' + PATRBF.NOME_PROGETTO + '|'
						 + cast (PatrBF.ordinamento_progetto as varchar)
		where patrbf.NOME_PROGETTO like '%Direct Evo%'
	--C6StagingPeriodico.RP_Progetto_Robo robo
	--on robo.chiaveProgetto=ASUL.CHIAVEPROGETTO
 -- WHERE  
 --  ASUL.RETE = @Rete  
 --  AND ASUL.COD_FISCALE = @CodiceFiscale  
  UNION ALL  
  SELECT Asul.rete,  
   asul.cod_fiscale,  
  ASSETPERC.ID_ASSETCLASS,  
    ASUL.CTV*ASSETPERC.PERC as Controvalore  ,
	patrbf.chiaveptfmod,
	RISCHIO_AGGR_PROG.VAR_PERC_PTF
  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  
 --  inner join
	--C6StagingPeriodico.RP_Progetto_Robo robo
	--on robo.chiaveProgetto=ASUL.CHIAVEPROGETTO
		inner join
		C6MartPeriodico.PATRIMONIO_BF PATRBF  
		LEFT JOIN C6MartPeriodico.RISCHIO_AGGREGATO RISCHIO_AGGR_PROG
	ON PATRBF.RETE= RISCHIO_AGGR_PROG.RETE
	AND PATRBF.COD_FISCALE= RISCHIO_AGGR_PROG.COD_FISCALE
	AND RISCHIO_AGGR_PROG.COD_AGGREG = 'RISFIN|PIRAMIDE|' + LEFT(PATRBF.ID_AREA,3) + '|' + PATRBF.NOME_PROGETTO + '|'
						 + cast (PatrBF.ordinamento_progetto as varchar)
		on patrbf.chiave_progetto=ASUL.CHIAVEPROGETTO
		where patrbf.NOME_PROGETTO like '%Direct Evo%'
 -- WHERE  
 --  ASUL.RETE = @Rete  
 --  AND ASUL.COD_FISCALE = @CodiceFiscale  
 ) VALORIASSET  
 INNER JOIN   
  C6MartPeriodico.ASSETCLASS ASSETCLASS  
  ON   
   ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS  
) A  
     left join [c6StagingPeriodico].[RP_DistribuzionePtfModello_Tattici_MacroAssetClass] ptf
on ptf.chiavePtfMod=a.chiaveptfmod and ptf.asset=a.AssetClassID
END  
--USE [C6StampeCentralizzate]
--GO
--/****** Object:  StoredProcedure [C6MartPeriodico].[Popola_S10PatrimonioFinanziario]    Script Date: 10/02/2022 16:40:28 ******/
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
---- =============================================  
---- Author:  <>  
---- Create date: <>  
---- Description: <caricamento tabella di generazione TB_S10PatrimonioFinanziario>  
---- =============================================  
---- [C6MartPeriodico].[Popola_S10PatrimonioFinanziario] 'F','LRNRMR33D51C166I'  
--ALTER procedure [C6MartPeriodico].[Popola_S10PatrimonioFinanziario]  
-- -- Add the parameters for the stored procedure here  
-- --@Rete char(1),   
-- --@CodiceFiscale varchar(16)  
--AS  
--BEGIN  
--truncate table C6MartPeriodico.TB_S10PatrimonioFinanziario  
--INSERT INTO C6MartPeriodico.TB_S10PatrimonioFinanziario  
--SELECT --top 1  
-- Rete,   
-- cod_fiscale as CodiceFiscale,  
-- A.BANCA AS Banca,  
-- A.ORDINAMENTO AS Ordinamento,  
-- A.AssetClassId AS AssetClassId,   
-- A.AssetClassName AS AssetClassName,   
-- A.Controvalore,  
-- A.percentuale,  
-- ROUND(SUM(A.Controvalore) OVER (PARTITION BY RETE,COD_FISCALE),2)  
-- --cast(A.Controvalore as decimal(19,5)) AS Controvalore,  
-- --cast(A.Percentuale  as decimal(19,5)) AS Percentuale,  
-- --cast(ROUND(SUM(A.Controvalore) OVER (PARTITION BY 'TOTALE'),2)  as decimal(19,5))  AS Totale  
--FROM   
--(    
-- SELECT DISTINCT  
--  CASE Rete  
--   WHEN 'S' THEN 'Sanpaolo Invest'  
--   ELSE 'Fideuram'   
--  END AS Banca,  
--  rete,  
--  cod_fiscale,  
--  ASSETCLASS.ORDINAMENTO,  
--  VALORIASSET.ID_ASSETCLASS AS AssetClassId,   
--  ASSETCLASS.DESCRIZIONE AS AssetClassName,   
--  ROUND(SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS,rete,cod_fiscale),2) as Controvalore,  
--  (  
--   SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS,rete,cod_fiscale) /  
--            --16.07.2011 COLAIANNI CONSOLI GESTIONE DIVISIONE PER ZERO  
--   CASE WHEN ( SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY 'TOTALE',rete,cod_fiscale) ) = 0   
--     THEN 1   
--                 ELSE ( SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY 'TOTALE',rete,cod_fiscale) )   
--            END    
--  ) * 100 AS Percentuale  
-- FROM (  
--  SELECT    
--   PATRBF.rete,  
--   PATRBF.COD_FISCALE,  
--   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   
--   --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 not in ('CC', 'SELF')  
--  -- AND PATRBF.RETE = @Rete  
--  -- AND PATRBF.COD_FISCALE = @CodiceFiscale  
--  UNION ALL  
--  SELECT   
--   Asul.rete,  
--   asul.cod_fiscale,  
--   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  
--  SELECT Asul.rete,  
--   asul.cod_fiscale,  
--  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  
-- ) VALORIASSET  
-- INNER JOIN   
--  C6MartPeriodico.ASSETCLASS ASSETCLASS  
--  ON   
--   ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS  
--) A  
--END