-- =============================================
-- Author:		<Alessandro Tringali>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE procedure [C6Mart].[DM_PATRIMONIO_EMITTENTI]
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;   
	SET NOCOUNT ON;
	DECLARE @ID_ELAB INT
	DECLARE @TIPO_ELAB VARCHAR(1)
	SET @ID_ELAB = C6MART.GETIDELAB()
	SET @TIPO_ELAB = C6MART.GETTIPOELAB()
	-- Log esecuzione
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'DM_PATRIMONIO_EMITTENTI',
		GETDATE(),
		'Elaborazione giornaliera'
	)
	TRUNCATE TABLE C6MART.PATRIMONIO_EMITTENTI
INSERT INTO
[C6MART].[PATRIMONIO_EMITTENTI]             
(
COD_FISCALE,
RETE,
POSITION_ID,
COD_PRODOTTO,
COD_ADEGUATEZZA,
INTERMEDIARIO,
CTV_INTERMEDIARIO,
CTV_INTER_NOCC_NEG,
EMITTENTE,
COMPLESSITA,
CTV_EMITTENTE,
CTV_PRODOTTO,
FLG_AZ_OB,
CREDITRISKCLASS,
CTV_AZIONARIO,
CTV_OBBLIGAZIONARIO,
CTV_AZ_OB_EMIT,
CTV_AZ_OB_EMIT_INTER,
CTV_COMPLESSIVO,
CTV_COMPL_NOCC_NEG,
CONC_EMITTENTE,
CONC_EMIT_INTERM,
COPERTURA
)
         SELECT  H.COD_FISCALE,
                H.RETE,
                H.POSITION_ID,
                H.COD_PRODOTTO AS CATALOGUENAME,
                '' AS COD_ADEGUATEZZA,
                'BF'   AS INTERMEDIARIO,
                 sum(h.ctv) over (partition by h.cod_fiscale, h.rete) AS PATRIMONIO_INTERMEDIARIO,
			     sum(case when h.tipo_prodotto='CC' and h.ctv < 0 then 0 else h.ctv END ) over (partition by h.cod_fiscale, h.rete) AS PATRIMONIO_INTER_nocc_neg,
                H.EMITTENTE,
                H.COMPLEX AS COMPLESSITA,
                 sum(h.ctv) over (partition by h.cod_fiscale, H.rete, H.EMITTENTE)  AS PATRIMONIO_EMITTENTE,
                h.ctv as CONTROVALORE_PRODOTTO,
                CASE WHEN H.STRTYPE IN ('AZ', 'OB') THEN H.STRTYPE ELSE NULL END AS AZ_OB,
                K.classe AS CREDITRISKCLASS,
                SUM( case when   STRTYPE = 'AZ' then  h.ctv else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE,EMITTENTE, H.POSITION_ID) AS CTV_AZIONARIO,
                SUM(case when   STRTYPE = 'OB' then  h.ctv  else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE,EMITTENTE, H.POSITION_ID) AS CTV_OBBLIGAZIONARIO,
                SUM( case when   STRTYPE IN ( 'AZ','OB') then  h.ctv else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE,EMITTENTE) PATRIMONIO_AZ_OB_EMIT,
                SUM( case when   STRTYPE IN ( 'AZ','OB') then  h.ctv else 0 end ) OVER( PARTITION BY H.COd_FISCALE,H.RETE,EMITTENTE)  PATRIM_AZ_OB_EMIT_INTER,
                sum(case when h.tipo_prodotto='CC' and h.ctv < 0 then 0 else h.ctv END) over (partition by h.cod_fiscale, h.rete) as PATRIMONIO_COMPLESSIVO,
                sum(case when h.tipo_prodotto='CC' and h.ctv < 0 then 0 else h.ctv END) over (partition by h.cod_fiscale, h.rete) as PATRIMONIO_COMPL_nocc_neg,
				0 as concentrazione_emittente,
                0 AS  concentraz_emit_interm,
                r.copertura
      FROM C6MART.PATRIMONIO_BF H
      LEFT OUTER join 
       C6MART.RISCHIO_AGGREGATO    R  
       on
	    H.COD_FISCALE=R.COD_FISCALE
	   AND H.RETE=R.RETE  
	   AND r.COD_AGGREG = 
				CASE 
				WHEN (h.NOME_PROGETTO IS NOT NULL)
					THEN 'RISFIN|PIRAMIDE|' + LEFT(h.ID_AREA,3) + '|' + h.NOME_PROGETTO+ '|'
				when LEFT(h.ID_AREA,3)='Na' then 'RISFIN|NA|'
				ELSE 'RISFIN|PIRAMIDE|' + LEFT(h.ID_AREA,3) + '|' 
			END
			+ ltrim(rtrim(h.POSITION_ID))
       left outer join 
--       
--select * from c6mart.rischioEmittenti 
--select * from c6mart.rischio_aggregato
C6Mart.RISCHIOEMITTENTI K
       on 
       R.CREDITRISKEMIT=ORDINE
---- PATRIMONIO TERZI
UNION all
SELECT DISTINCT h.COD_FISCALE,
                h.RETE,
                '' AS POSITION_ID,
                H.COD_PRODOTTO AS CATALOGUENAME,
                '' as COD_ADEGUATEZZA,
                CASE
                  WHEN h.INTERMEDIARIO = 'BF' THEN
                   NULL
                  ELSE
                   h.INTERMEDIARIO
                END AS INTERMEDIARIO,
                sum(ROUND(h.CTV,2)) over (partition by h.cod_fiscale, h.rete)  as PATRIMONIO_INTERMEDIARIO,
                sum(case when h.tipo_prodotto='CC' and ROUND(h.CTV,2) < 0 then 0 else ROUND(h.CTV,2) END ) over (partition by h.cod_fiscale, h.rete) AS PATRIMONIO_INTER_nocc_neg,
                h.EMITTENTE,
                h.complex as COMPLESSITA,
                0 AS PATRIMONIO_EMITTENTE,
                ROUND(h.CTV,2) as CONTROVALORE_PRODOTTO,
                CASE WHEN H.STRTYPE IN ('AZ', 'OB') THEN H.STRTYPE ELSE NULL END AS AZ_OB,
                K.classe AS CREDITRISKCLASS,
                SUM( case when   STRTYPE = 'AZ' then  ROUND(h.CTV,2) else 0 end ) OVER( PARTITION BY H.COd_FISCALE,H.RETE, H.EMITTENTE, H.intermediario, H.COD_PRODOTTO_TERZI) AS CTV_AZIONARIO, --aggiunto il cod_prodotto_terzi per identificare il singolo prodotto
                SUM(case when   STRTYPE = 'OB' then  h.ctv  else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE, H.EMITTENTE, H.intermediario, H.COD_PRODOTTO_TERZI ) AS CTV_OBBLIGAZIONARIO, --aggiunto il cod_prodotto_terzi per identificare il singolo prodotto
                SUM( case when   STRTYPE IN ( 'AZ','OB') then  ROUND(h.CTV,2) else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE,EMITTENTE) PATRIMONIO_AZ_OB_EMIT,
                SUM( case when   STRTYPE IN ( 'AZ','OB') then  ROUND(h.CTV,2) else 0 end ) OVER( PARTITION BY H.COd_FISCALE,H.RETE,EMITTENTE, h.intermediario )  PATRIM_AZ_OB_EMIT_INTER,
                sum(case when h.tipo_prodotto='CC' and ROUND(h.CTV,2) < 0 then 0 else h.ctv END) over (partition by h.cod_fiscale, h.rete) as PATRIMONIO_COMPLESSIVO,
				sum(case when h.tipo_prodotto='CC' and ROUND(h.CTV,2) < 0 then 0 else h.ctv END) over (partition by h.cod_fiscale, h.rete, h.intermediario) as PATRIMONIO_COMPL_nocc_neg,
                0   as concentrazione_emittente,
                0   as concentraz_emit_interm,
                r.copertura
 FROM  
       C6MART.PATRIMONIO_TERZI H
       LEFT OUTER JOIN
       C6MART.RISCHIO_AGGREGATO    R  
       ON
        H.COD_FISCALE=R.COD_FISCALE
       AND H.RETE=R.RETE
       AND r.COD_AGGREG ='COMPLESSIVO|TERZI|' + RTRIM(H.INTERMEDIARIO) + '|' + RTRIM(H.chiave_thr)       
       LEFT OUTER join
	   C6Mart.RISCHIOEMITTENTI K
        on 
       R.CREDITRISKEMIT=ORDINE
 WHERE 
   1=1 
   AND H.INTERMEDIARIO <> 'BF'
   --AND V.POSITIONID=H.COD_PRODOTTO
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'DM_PATRIMONIO_EMITTENTI' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'DM_PATRIMONIO_EMITTENTI'
		)
END