-- Stored procedure
-- =============================================
-- Author:		Paolo Giovanetti
-- Create date: 15 gennaio 2009
-- Description:	vista ORACLE S82BIS_DATI_SINTET_RIS_E_INV tradotta su SQLSERVER. 
--				Punto di partenza per lo sviluppo futuro.
-- =============================================
-- [C6MartPeriodico].[PL_S82BisDatiSintetici] 'F','DNGMRA56E66D542Z'
CREATE procedure [C6MartPeriodico].[PL_S82BisDatiSintetici]
	-- 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.
	SET NOCOUNT ON;
	/*DECLARE @TOTRischio DECIMAL(20,2)
	SELECT
		@TOTRischio = SUM(ISNULL(RISCHIOAREA.VAR_PERC_PTF,0) * PATRAREA.CTV)
	FROM
		C6MartPeriodico.vPatrimonioBFAggregatoPerArea AS PATRAREA INNER JOIN
		C6MartPeriodico.RISCHIO_AGGREGATO AS RISCHIOAREA ON
			PATRAREA.RETE = RISCHIOAREA.RETE AND
			PATRAREA.COD_FISCALE = RISCHIOAREA.COD_FISCALE
	WHERE
		PATRAREA.ID_AREA IN ('RIS','EXT','LIQ','PRE','INV') AND
		PATRAREA.RETE = @Rete AND
		PATRAREA.COD_FISCALE = @CodiceFiscale*/
	SELECT DISTINCT
		BF.ORDINAMENTO_PROGETTO,
		'Inv' AS need_area,
		ltrim(rtrim(ISNULL(PIRMOD.NOME_PROGETTO,BF.NOME_PROGETTO))) AS NOME_PROGETTO,
		ISNULL(RA.VAR_PERC_PTF,0) AS var_needarea,
		CASE 
			WHEN RA.COPERTURA IS NULL THEN 'n.c.' 
			WHEN RA.COPERTURA = 0 THEN 'n.c.' 
			ELSE NULL 
		END AS var_needareaString,
		ISNULL(RA.COPERTURA,0) AS copertura_needarea,
		CASE 
			WHEN RA.COPERTURA IS NULL THEN 'n.c.' 
			WHEN RA.COPERTURA = 0 THEN 'n.c.' 
			ELSE NULL 
		END AS copertura_needareaString,
		PIRMOD.ORIZZ_TEMP AS orizzonte_Pianificato,
		--C6MartPeriodico.getDescFromDate(DATEDIFF(m,(DATEADD(yy,PIRMOD.ORIZZ_TEMP_NUM,PIRMOD.DATA_PIANIF)) ,GETDATE()) + 1) AS durataResidua,
		--DATEDIFF(m,DATEADD(yy,PIRMOD.ORIZZ_TEMP_NUM, PIRMOD.DATA_PIANIF) ,GETDATE()) + 1 AS durataResidua,
		C6MartPeriodico.getDescFromDate(DATEDIFF(m,C6MartPeriodico.getTrimestre(GETDATE(),0),(DATEADD(yy,PIRMOD.ORIZZ_TEMP_NUM,PIRMOD.DATA_PIANIF)) )) AS durataResidua,
		/*V Calcolato a livello di codice
		CASE
			WHEN BFAggr.CTV = 0 THEN 0
			ELSE SUM(BF.CTV) OVER (PARTITION BY BF.RETE, BF.COD_FISCALE, BF.NOME_PROGETTO) / BFAggr.CTV * 100
		END AS pesoPerc,*/
		SUM(BF.CTV) OVER (PARTITION BY BF.RETE, BF.COD_FISCALE, BF.NOME_PROGETTO, bf.ordinamento_progetto) AS ControvaloreAttuale
		/*V Calcolato a livello di codice
		CASE
			WHEN @TOTRischio = 0 THEN 0
			ELSE ISNULL(RA.VAR_PERC_PTF,0) * SUM(BF.CTV) OVER (PARTITION BY BF.RETE, BF.COD_FISCALE, BF.NOME_PROGETTO) / @TOTRischio * 100
		END AS rischioRelativo*/
	FROM
		C6MartPeriodico.PATRIMONIO_BF AS BF
		LEFT OUTER JOIN C6MartPeriodico.RISCHIO_AGGREGATO AS RA
			ON BF.RETE = RA.RETE
			AND BF.COD_FISCALE = RA.COD_FISCALE
			--V AND RA.COD_AGGREG = 'PIRAMIDE|Inv'
			AND RA.COD_AGGREG = 'RISFIN|PIRAMIDE|Inv|'+ BF.NOME_PROGETTO + '|' + cast(bf.ordinamento_progetto as varchar)
			--
		INNER JOIN C6MartPeriodico.PIRAMIDE_MOD AS PIRMOD
			ON BF.RETE = PIRMOD.RETE
			AND BF.COD_FISCALE = PIRMOD.COD_FISCALE
			--AND BF.NOME_PROGETTO = PIRMOD.NOME_PROGETTO
			AND BF.ORDINAMENTO_PROGETTO = PIRMOD.ORDINAMENTO_PROGETTO
			AND PIRMOD.ID_AREA = 'Inv'
		INNER JOIN C6MartPeriodico.vPatrimonioBFAggregato AS BFAggr
			ON BF.RETE = BFAggr.RETE
			AND BF.COD_FISCALE = BFAggr.COD_FISCALE
		LEFT OUTER JOIN C6MARTPERIODICO.MONITORAGGIO_ATTUALE AS MONIT
			ON BF.RETE = MONIT.RETE
			AND BF.COD_FISCALE = MONIT.COD_FISCALE
			AND BF.ID_AREA = MONIT.ID_AREA
			AND BF.NOME_PROGETTO = MONIT.NOME_PROGETTO
			AND BF.ORDINAMENTO_PROGETTO = MONIT.ORDINAMENTO_PROGETTO
	WHERE 1=1
		AND BF.ID_AREA = 'Inv'
		AND BF.RETE = @Rete
		AND BF.COD_FISCALE = @CodiceFiscale
		--AND BF.ORDINAMENTO_PROGETTO=1521667
END