-- =============================================
-- Author:		Paolo Giovanetti --modificata per i cc in liq Marianna / Valerio
-- Create date: 10 marzo 2009
-- Description:	
-- =============================================
CREATE procedure [C6Mart].[DM_PATRIMONIO_BF]
AS
BEGIN
	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_BF',
		GETDATE(),
		'Elaborazione giornaliera'
	)
	TRUNCATE TABLE C6MART.PATRIMONIO_BF
	SELECT 
		SPB_CONTR_SINTESI.RETE AS RETE,
		SPB_CONTR_SINTESI.CODICEFISCALE AS COD_FISCALE,
		SPB_CONTR_SINTESI.POSITIONID AS POSITIONID,
		SUBSTRING(SPB_CONTR_SINTESI.POSITIONID,1,57) AS COD_PRODOTTO, 
		SPB_CONTR_SINTESI.CODICECONTRATTO AS ID_CONTRATTO,
		CASE 
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO IN ('DT', 'FI') AND SPB_CONTR_SINTESI.DATAINIZIORENDIMENTO IS NOT NULL THEN SPB_CONTR_SINTESI.DATAINIZIORENDIMENTO 
			ELSE SPB_CONTR_SINTESI.DATADISOTTOSCRIZIONE 
		END AS DATA_SOTTOSCRIZIONE,
		SPB_CONTR_SINTESI.CODICESTATO AS COD_STATO,
		SPB_CONTR_SINTESI.NUMEROPOLIZZA AS NUM_POLIZZA,
		SPB_CONTR_SINTESI.CODICEMAF AS COD_MAF,
		SPB_CONTR_SINTESI.CODICEINTERNO AS COD_INTERNO,
		SPB_CONTR_SINTESI.CODICESOTTOPRODOTTO AS COD_SOTTOPRODOTTO,
		SPB_CONTR_SINTESI.TIPOPRODOTTO AS TIPO_PRODOTTO,
		CASE
			WHEN CONSAREA.C_NEEDAREA_V_46360 = 'Inv' AND PRCONSUL.C_PROJECTNAM_11D1A IS NULL THEN 'Prodotti non associati a progetti'
			ELSE LTRIM(RTRIM(PRCONSUL.C_PROJECTNAM_11D1A))
		END AS NOME_PROGETTO,
		--POSITION.C_NEEDAREASE_3D485 AS ID_AREA,
		CONSAREA.C_NEEDAREA_V_46360 AS ID_AREA,
		SPB_CONTR_SINTESI.DATADIRIFERIMENTO AS DATA_OPERAZIONE,
		CONVERT(DATETIME, SPB_CONTR_SINTESI.DATAVALNAVAL, 105) AS DATA_VALUTA, -- 105 PER FORMAT DD/MM/YYYY
		NULL AS DATA_REGOLAMENTO,
		SPB_CONTR_SINTESI.QUOTE AS QUANTITA,
		SPB_CONTR_SINTESI.PREZZO AS PREZZO,
		SPB_CONTR_SINTESI.CTV AS CTV,
		SPB_CONTR_SINTESI.VALORE AS CTV_NOMINALE,
		CASE 
			WHEN (SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GE' 
				OR SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GES')
				AND SPB_CONTR_SINTESI.DATADISOTTOSCRIZIONE < cast('2007-01-01' AS DATETIME) 
				THEN NULL 
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO IN ( 'ASVI','ASU1')
				THEN NULL
			--Modifica Luca
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO = 'ASUL' AND SPB_CONTR_SINTESI.CODICEINTERNO NOT IN ('18','19','35','PR','PX')
				THEN NULL
			--
			ELSE SPB_CONTR_SINTESI.CVN 
		END AS VERSATO_NETTO,
		SPB_CONTR_SINTESI.PARTVIA AS PARTVIA_DISINV,
		SPB_CONTR_SINTESI.PARTVIAAL AS DATA_PARTVIA_DISINV,
		--SPB_PARTITE_VIAGG.IMPORTOVERSATO AS PARTVIA_INV,
		NULL AS PARTVIA_INV,
		CASE 
			WHEN (SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GE' 
				OR SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GES')
				AND SPB_CONTR_SINTESI.DATADISOTTOSCRIZIONE < cast('2007-01-01' AS DATETIME) 
				THEN NULL 
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO IN ( 'ASVI','ASU1')
				THEN NULL
			--Modifica Luca
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO = 'ASUL' AND SPB_CONTR_SINTESI.CODICEINTERNO NOT IN ('18','19','35','PR','PX')
				THEN NULL
			--
			ELSE SPB_CONTR_SINTESI.RENDIMENTODASOTTOSCRIZIONE
		END AS REND_SOTTOSCRIZIONE,	
--		SPB_CONTR_SINTESI.RENDIMENTODASOTTOSCRIZIONE AS REND_SOTTOSCRIZIONE,
		CASE 
			WHEN (SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GE' 
				OR SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GES')
				AND SPB_CONTR_SINTESI.DATADISOTTOSCRIZIONE < cast('2007-01-01' AS DATETIME) 
				THEN NULL 
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO IN ( 'ASVI','ASU1')
				THEN NULL
			--Modifica Luca
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO = 'ASUL' AND SPB_CONTR_SINTESI.CODICEINTERNO NOT IN ('18','19','35','PR','PX')
				THEN NULL
			--
			ELSE SPB_CONTR_SINTESI.RENDIMENTODAINIZIOTRIMESTRE
		END AS REND_TRIMESTRE,	
--		SPB_CONTR_SINTESI.RENDIMENTODAINIZIOTRIMESTRE AS REND_TRIMESTRE,
		CASE 
			WHEN (SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GE' 
				OR SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GES')
				AND SPB_CONTR_SINTESI.DATADISOTTOSCRIZIONE < cast('2007-01-01' AS DATETIME) 
				THEN NULL 
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO IN ( 'ASVI','ASU1')
				THEN NULL
			--Modifica Luca
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO = 'ASUL' AND SPB_CONTR_SINTESI.CODICEINTERNO NOT IN ('18','19','35','PR','PX')
				THEN NULL
			--
			ELSE SPB_CONTR_SINTESI.RENDIMENTODAINIZIOANNO
		END AS REND_ANNO,	
--		SPB_CONTR_SINTESI.RENDIMENTODAINIZIOANNO AS REND_ANNO,
		KAT.STRTYPE,
        KAT.COMPLEX,
        MIT.DESCR AS EMITTENTE,
		SPB_CONTR_SINTESI.ISIN,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB
	INTO #PATRIMONIO
	FROM C6STAGING.SPB_CONTR_SINTESI
	INNER JOIN C6STAGING.ALL_CF_STATO 
		ON ALL_CF_STATO.RETE = SPB_CONTR_SINTESI.RETE
		AND ALL_CF_STATO.CF_CLIENTE = SPB_CONTR_SINTESI.CODICEFISCALE
		AND ALL_CF_STATO.FLAG_UTILIZZO_STATO = 1 --Attuale
	INNER JOIN C6STAGING.POSITION 
		ON POSITION.POSITIONID = SPB_CONTR_SINTESI.POSITIONID
	INNER JOIN C6STAGING.CONSUL -- join consarea
		ON CONSUL.OID$ = POSITION.F_PCONSULENZ_56F23
		AND CONSUL.TYPE$_TIPOCO_1EA7C = ALL_CF_STATO.STATO_CONSULENZA --'Attuale'
	INNER JOIN C6STAGING.PRCONSUL 
		ON PRCONSUL.OID$ = POSITION.F_PPROJECT_P_B5629
	INNER JOIN C6STAGING.CONSAREA
		ON CONSAREA.OID$ = PRCONSUL.F_PCONSULENZ_B69E4
    INNER JOIN C6STAGING.CATITEMREF KAT
    ON 
    KAT.oid$ = POSITION.f_oid__posit_00526
    left outer join  
    C6STAGING.EMIT MIT
    ON KAT.CODEMI = MIT.CODEMI
	/*LEFT JOIN C6STAGING.SPB_PARTITE_VIAGG 
		ON SPB_PARTITE_VIAGG.CODICECONFERIMENTO = SPB_CONTR_SINTESI.CODICECONTRATTO*/
	WHERE SPB_CONTR_SINTESI.POSITIONID IS NOT NULL
          and CONSAREA.C_NEEDAREA_V_46360 <> 'CC' and C6STAGING.SPB_CONTR_SINTESI.TIPOPRODOTTO <> 'CC'
	UNION ALL	-- MODIFICA FATTA PER AVERE I CONTI CORRENTI 26 NOVEMBRE (MAURIZIO)
	SELECT 
		SPB_CONTR_SINTESI.RETE AS RETE,
		SPB_CONTR_SINTESI.CODICEFISCALE AS COD_FISCALE,
		SPB_CONTR_SINTESI.POSITIONID AS POSITIONID,
		SUBSTRING(SPB_CONTR_SINTESI.POSITIONID,1,57) AS COD_PRODOTTO, 
		SPB_CONTR_SINTESI.CODICECONTRATTO AS ID_CONTRATTO,
		CASE 
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO = 'DT' /* OR SPB_CONTR_SINTESI.TIPOPRODOTTO = 'FI' */ THEN SPB_CONTR_SINTESI.DATAINIZIORENDIMENTO 
			ELSE SPB_CONTR_SINTESI.DATADISOTTOSCRIZIONE 
		END AS DATA_SOTTOSCRIZIONE,
		SPB_CONTR_SINTESI.CODICESTATO AS COD_STATO,
		SPB_CONTR_SINTESI.NUMEROPOLIZZA AS NUM_POLIZZA,
		SPB_CONTR_SINTESI.CODICEMAF AS COD_MAF,
		SPB_CONTR_SINTESI.CODICEINTERNO AS COD_INTERNO,
		SPB_CONTR_SINTESI.CODICESOTTOPRODOTTO AS COD_SOTTOPRODOTTO,
		SPB_CONTR_SINTESI.TIPOPRODOTTO AS TIPO_PRODOTTO,
		NULL AS NOME_PROGETTO,
		CASE WHEN SPB_CONTR_SINTESI.CTV>0 THEN 'Liq' ELSE 'Cc' END AS ID_AREA, --PRCONSUL.NEEDAREAID AS ID_AREA,--POSITION.C_NEEDAREASE_3D485 AS ID_AREA,
		SPB_CONTR_SINTESI.DATADIRIFERIMENTO AS DATA_OPERAZIONE,
		CONVERT(DATETIME, SPB_CONTR_SINTESI.DATAVALNAVAL, 105) AS DATA_VALUTA, -- 105 PER FORMAT DD/MM/YYYY
		NULL AS DATA_REGOLAMENTO,
		SPB_CONTR_SINTESI.QUOTE AS QUANTITA,
		SPB_CONTR_SINTESI.PREZZO AS PREZZO,
		SPB_CONTR_SINTESI.CTV AS CTV,
		SPB_CONTR_SINTESI.VALORE AS CTV_NOMINALE,
		SPB_CONTR_SINTESI.CVN AS VERSATO_NETTO,
		SPB_CONTR_SINTESI.PARTVIA AS PARTVIA_DISINV,
		SPB_CONTR_SINTESI.PARTVIAAL AS DATA_PARTVIA_DISINV,
		NULL AS PARTVIA_INV, --SPB_PARTITE_VIAGG.IMPORTOVERSATO AS PARTVIA_INV,
		SPB_CONTR_SINTESI.RENDIMENTODASOTTOSCRIZIONE AS REND_SOTTOSCRIZIONE,
		SPB_CONTR_SINTESI.RENDIMENTODAINIZIOTRIMESTRE AS REND_TRIMESTRE,
		SPB_CONTR_SINTESI.RENDIMENTODAINIZIOANNO AS REND_ANNO,
        STRTYPE,
        COMPLEX ,
        mit.descr as EMITTENTE,
		SPB_CONTR_SINTESI.ISIN,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB
	FROM C6STAGING.SPB_CONTR_SINTESI
    INNER JOIN C6STAGING.CATITEMREF KAT
    ON SUBSTRING(C6STAGING.SPB_CONTR_SINTESI .POSITIONID,1,57)=KAT.CATALOGUEID
        LEFT OUTER JOIN C6STAGING.EMIT MIT
        ON  MIT.CODEMI=KAT.CODEMI
	WHERE C6STAGING.SPB_CONTR_SINTESI.TIPOPRODOTTO = 'CC'
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'DM_PATRIMONIO_BF' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'DM_PATRIMONIO_BF'
		)
	INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'DM_PATRIMONIO_BF',
		GETDATE(),
		'Elaborazione giornaliera'
	)
	INSERT INTO [C6Mart].[PATRIMONIO_BF]
		   ([RETE]
		   ,[COD_FISCALE]
		   ,[POSITION_ID]
		   ,[COD_PRODOTTO]
		   ,[ID_CONTRATTO]
		   ,[DATA_SOTTOSCRIZIONE]
		   ,[COD_STATO]
		   ,[NUM_POLIZZA]
		   ,[COD_MAF]
		   ,[COD_INTERNO]
		   ,[COD_SOTTOPRODOTTO]
		   ,[TIPO_PRODOTTO]
		   ,[NOME_PROGETTO]
		   ,[ID_AREA]
		   ,[DATA_OPERAZIONE]
		   ,[DATA_VALUTA]
		   ,[DATA_REGOLAMENTO]
		   ,[QUANTITA]
		   ,[PREZZO]
		   ,[CTV]
		   ,[CTV_NOMINALE]
		   ,[VERSATO_NETTO]
		   ,[PARTVIA_DISINV]
		   ,[DATA_PARTVIA_DISINV]
		   ,[PARTVIA_INV]
		   ,[REND_SOTTOSCRIZIONE]
		   ,[REND_TRIMESTRE]
		   ,[REND_ANNO]
           ,STRTYPE
           ,COMPLEX
        ,EMITTENTE
		,SPB_CONTR_SINTESI.ISIN
		   ,[ID_ELAB]
		   ,[TIPO_ELAB])
	SELECT 
		RETE,
		COD_FISCALE,
		POSITIONID,
		COD_PRODOTTO, 
		ID_CONTRATTO,
		DATA_SOTTOSCRIZIONE,
		COD_STATO,
		NUM_POLIZZA,
		COD_MAF,
		COD_INTERNO,
		COD_SOTTOPRODOTTO,
		TIPO_PRODOTTO,
		NOME_PROGETTO,
		ID_AREA,
		DATA_OPERAZIONE,
		DATA_VALUTA,
		DATA_REGOLAMENTO,
		QUANTITA,
		PREZZO,
		CTV,
	    CTV_NOMINALE,
		VERSATO_NETTO,
		PARTVIA_DISINV,
		DATA_PARTVIA_DISINV,
		PARTVIA_INV,
		REND_SOTTOSCRIZIONE,
		REND_TRIMESTRE,
		REND_ANNO,
        STRTYPE,
        COMPLEX,
        EMITTENTE,
		ISIN,
		ID_ELAB,
		TIPO_ELAB
	FROM #PATRIMONIO
	UNION ALL	-- MODIFICA PER AVERE TUTTI I PRODOTTI NON ALLOCATI
	SELECT 
		SPB_CONTR_SINTESI.RETE AS RETE,
		SPB_CONTR_SINTESI.CODICEFISCALE AS COD_FISCALE,
		SPB_CONTR_SINTESI.POSITIONID AS POSITIONID,
		SUBSTRING(SPB_CONTR_SINTESI.POSITIONID,1,57) AS COD_PRODOTTO, 
		SPB_CONTR_SINTESI.CODICECONTRATTO AS ID_CONTRATTO,
		CASE 
			WHEN SPB_CONTR_SINTESI.TIPOPRODOTTO IN ('DT', 'FI') AND SPB_CONTR_SINTESI.DATAINIZIORENDIMENTO IS NOT NULL THEN SPB_CONTR_SINTESI.DATAINIZIORENDIMENTO 
			ELSE SPB_CONTR_SINTESI.DATADISOTTOSCRIZIONE 
		END AS DATA_SOTTOSCRIZIONE,
		SPB_CONTR_SINTESI.CODICESTATO AS COD_STATO,
		SPB_CONTR_SINTESI.NUMEROPOLIZZA AS NUM_POLIZZA,
		SPB_CONTR_SINTESI.CODICEMAF AS COD_MAF,
		SPB_CONTR_SINTESI.CODICEINTERNO AS COD_INTERNO,
		SPB_CONTR_SINTESI.CODICESOTTOPRODOTTO AS COD_SOTTOPRODOTTO,
		SPB_CONTR_SINTESI.TIPOPRODOTTO AS TIPO_PRODOTTO,
		LTRIM(RTRIM(NEWPOSITION.NOME_PROGETTO)) AS NOME_PROGETTO,
		ISNULL(NEWPOSITION.NEED_BREVE,'Na') AS ID_AREA,
		SPB_CONTR_SINTESI.DATADIRIFERIMENTO AS DATA_OPERAZIONE,
		CONVERT(DATETIME, SPB_CONTR_SINTESI.DATAVALNAVAL, 105) AS DATA_VALUTA, -- 105 PER FORMAT DD/MM/YYYY
		NULL AS DATA_REGOLAMENTO,
		convert(decimal(15,3),SPB_CONTR_SINTESI.QUOTE) AS QUANTITA,
		SPB_CONTR_SINTESI.PREZZO AS PREZZO,
		convert(decimal(15,3),SPB_CONTR_SINTESI.CTV) AS CTV,
		convert(decimal(15,3),SPB_CONTR_SINTESI.VALORE) AS CTV_NOMINALE,
		CASE 
			WHEN (SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GE' 
				OR SPB_CONTR_SINTESI.TIPOPRODOTTO = 'GES')
				AND SPB_CONTR_SINTESI.DATADISOTTOSCRIZIONE < cast('2007-01-01' AS DATETIME) 
			THEN NULL 
			ELSE convert(decimal(15,3),SPB_CONTR_SINTESI.CVN)
		END AS VERSATO_NETTO,
		convert(decimal(15,3),SPB_CONTR_SINTESI.PARTVIA) AS PARTVIA_DISINV,
		SPB_CONTR_SINTESI.PARTVIAAL AS DATA_PARTVIA_DISINV,
		--SPB_PARTITE_VIAGG.IMPORTOVERSATO AS PARTVIA_INV,
		NULL AS PARTVIA_INV,
		convert(decimal(8,5),SPB_CONTR_SINTESI.RENDIMENTODASOTTOSCRIZIONE) AS REND_SOTTOSCRIZIONE,
		convert(decimal(8,5),SPB_CONTR_SINTESI.RENDIMENTODAINIZIOTRIMESTRE) AS REND_TRIMESTRE,
		convert(decimal(8,5),SPB_CONTR_SINTESI.RENDIMENTODAINIZIOANNO) AS REND_ANNO,
        STRTYPE,
        COMPLEX,
        EMITTENTE,
		SPB_CONTR_SINTESI.ISIN,
		@ID_ELAB AS ID_ELAB,
		@TIPO_ELAB AS TIPO_ELAB
	FROM C6STAGING.SPB_CONTR_SINTESI
	LEFT JOIN #PATRIMONIO PATR
		ON	
			SPB_CONTR_SINTESI.RETE = PATR.RETE
			AND SPB_CONTR_SINTESI.CODICEFISCALE = PATR.COD_FISCALE
			AND SPB_CONTR_SINTESI.POSITIONID = PATR.POSITIONID
	/*LEFT JOIN C6STAGING.SPB_PARTITE_VIAGG 
		ON 
			SPB_PARTITE_VIAGG.CODICECONFERIMENTO = SPB_CONTR_SINTESI.CODICECONTRATTO*/
	LEFT JOIN C6STAGING.vNewPositionProposta NEWPOSITION
		ON	
			SPB_CONTR_SINTESI.RETE = NEWPOSITION.RETE
			AND SPB_CONTR_SINTESI.CODICEFISCALE = NEWPOSITION.CODICEFISCALE
			AND SPB_CONTR_SINTESI.POSITIONID = NEWPOSITION.positionIDProposta
	WHERE SPB_CONTR_SINTESI.POSITIONID IS NOT NULL
		AND PATR.POSITIONID IS NULL
	DROP TABLE #PATRIMONIO
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'DM_PATRIMONIO_BF' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'DM_PATRIMONIO_BF'
		)
END