﻿-- =============================================
-- Author:		Paolo Giovanetti
-- Create date: 11/11/2008
-- Description:	<Description,,>
-- =============================================
-- [C6MartPeriodico].[PL_S57ConfrontoPiramidi] 'S','CCRPTR55A08H501P'
CREATE procedure [C6MartPeriodico].[PL_S57ConfrontoPiramidi_OLD]
	-- Add the parameters for the stored procedure here
	@Rete char(1), 
	@CodiceFiscale varchar(16)
AS
BEGIN
	SELECT 
		PIRAMIDE_MOD.RETE, 
		PIRAMIDE_MOD.COD_FISCALE, 	
		PIRAMIDE_MOD.ID_AREA,
		PIRAMIDE_MOD.PERC_AREA,
		PIRAMIDE_VERT.CTV_AREA AS CONTROVALORE
	INTO #PIRAMIDE_VERT
	FROM 
		C6MartPeriodico.PIRAMIDE_MOD
	LEFT JOIN (
		-- GROUP BY PER ACCORPARE I CTV_AREA SULLE PRE1 E PRE2 IN UNO UNICO CORRISPONDENTE A PRE
	    SELECT 
			RETE, 
			COD_FISCALE, 
			LEFT(ID_AREA,3) AS ID_AREA, 
			SUM(COALESCE(CTV,0)) AS CTV_AREA
		FROM
			C6MARTPERIODICO.PATRIMONIO_BF  PIRAMIDE_VERT
		WHERE 
			PIRAMIDE_VERT.RETE = @Rete
			AND PIRAMIDE_VERT.COD_FISCALE = @CodiceFiscale
            --modificata atringali -- AND   ID_AREA NOT IN ('Cc')
		GROUP BY 
			RETE, COD_FISCALE, LEFT(ID_AREA,3) 
	) PIRAMIDE_VERT 
		ON 
			PIRAMIDE_VERT.ID_AREA = PIRAMIDE_MOD.ID_AREA
	WHERE 
            --modificata atringali --  (PIRAMIDE_MOD.ID_AREA IN ('RIS','EXT','LIQ','PRE','NA')
		(PIRAMIDE_MOD.ID_AREA IN ('RIS','EXT','LIQ','PRE','NA', 'CC')
			OR (PIRAMIDE_MOD.ID_AREA = 'INV' AND PIRAMIDE_MOD.NOME_PROGETTO IS NULL))
		AND PIRAMIDE_MOD.RETE = @Rete
		AND PIRAMIDE_MOD.COD_FISCALE = @CodiceFiscale
	IF(@@ROWCOUNT>0)
	BEGIN
		-- Ordinamento per Area di bisogno
		DECLARE @TOTControvaloreAttuale DECIMAL(20,2)
		SELECT @TOTControvaloreAttuale = SUM(ATTUALE.CONTROVALORE)
		FROM #PIRAMIDE_VERT ATTUALE
		WHERE ATTUALE.RETE = @Rete
			AND ATTUALE.COD_FISCALE = @CodiceFiscale
			--V
			AND ID_AREA not in ('Na', 'Cc')
		--V 
			DECLARE @TOTCC DECIMAL (20,2)
			SELECT @TOTCC = ISNULL(CONTROVALORE,0)
			FROM #PIRAMIDE_VERT ATTUALE
			WHERE ATTUALE.RETE = @Rete
				AND ATTUALE.COD_FISCALE = @CodiceFiscale
				AND ID_AREA = 'Cc'
			--V 
			DECLARE @TOT DECIMAL (20,2)
			SELECT @TOT = SUM(ISNULL(CONTROVALORE,0))
			FROM #PIRAMIDE_VERT ATTUALE
			WHERE ATTUALE.RETE = @Rete
				AND ATTUALE.COD_FISCALE = @CodiceFiscale
		SELECT 
			AREA_BISOGNO.ID_AREA AS NeedArea,
			AREA_BISOGNO.NOME_AREA AS AreaName,
			ISNULL(ATTUALE.PERC_AREA,0) AS PercentualeModello,
			CASE 
				WHEN @TOTControvaloreAttuale = 0 THEN 0 
				ELSE (100 * ISNULL(ATTUALE.CONTROVALORE,0) / ISNULL(@TOTControvaloreAttuale,1)) 
			END AS PercentualeAttuale,
			ROUND(ISNULL(ATTUALE.CONTROVALORE,0),2) AS ControvaloreAttuale,
			ROUND(ISNULL(ATTUALE.PERC_AREA * @TOTControvaloreAttuale / 100 , 0),2) AS ControvaloreModello,
			ATTUALE.PERC_AREA AS Totale_Percentuale,
			ROUND(ISNULL(ATTUALE.CONTROVALORE,0),2) - ROUND(ISNULL(ATTUALE.PERC_AREA * @TOTControvaloreAttuale / 100 , 0),2) AS DifferenzaEuro,
			CASE 
				WHEN @TOTControvaloreAttuale = 0 THEN - ATTUALE.PERC_AREA 
				ELSE ISNULL( (100 * ISNULL(ATTUALE.CONTROVALORE,0) / @TOTControvaloreAttuale - ATTUALE.PERC_AREA) , 0)
			END AS DifferenzaPercentuale,
			ISNULL(RISCHIOAREA.VAR_PERC_PTF,0) AS var_needarea,
			CASE
				WHEN RISCHIOAREA.COPERTURA IS NULL THEN 'n.c.' 
				WHEN RISCHIOAREA.COPERTURA = 0 THEN 'n.c.' 
				ELSE NULL 
			END AS var_needareaString,
			ISNULL(RISCHIOAREA.COPERTURA,0) AS copertura_needarea,
			CASE 
				WHEN RISCHIOAREA.COPERTURA IS NULL THEN 'n.c.' 
				WHEN RISCHIOAREA.COPERTURA = 0 THEN '0,00' 
				ELSE NULL 
			END AS copertura_needareaString,
			0 AS Nota, --TODO: VERIFICARE REGOLA PER LA NOTA
			ISNULL(@TOTControvaloreAttuale,0) AS somma_controvalAttuale,
			ISNULL(@TOTControvaloreAttuale,0) AS somma_controvalModello,
			0.00 AS somma_percentualeAttuale,
			0.00 AS somma_percentualeModello,
			--V
				CASE
					WHEN @TOTCC = @TOT THEN 0
					ELSE RISCHIOTOTALE.VAR_PERC_PTF 
				END AS var_tot,
				CASE 
					--V SOLO CC -> VAR = 0
					WHEN @TOTCC = @TOT THEN NULL
					WHEN RISCHIOTOTALE.COPERTURA IS NULL THEN 'n.c.' 
					WHEN RISCHIOTOTALE.COPERTURA = 0 THEN 'n.c.' 
					ELSE NULL 
				END AS var_totString,
			--V
				CASE 
					WHEN @TOTCC = @TOT THEN 0
					ELSE RISCHIOTOTALE_PIR.VAR_PERC_PTF 
				END as var_tot_pir,
				CASE
					--V SOLO CC -> VAR = 0
					WHEN @TOTCC = @TOT THEN NULL
					WHEN RISCHIOTOTALE_PIR.COPERTURA IS NULL THEN 'n.c.'
					WHEN RISCHIOTOTALE_PIR.COPERTURA = 0 THEN 'n.c.'
					ELSE NULL
				END AS var_tot_pirString,
			--
			ISNULL(RISCHIOTOTALE.COPERTURA,0) AS copertura_tot,
			CASE 
				WHEN RISCHIOTOTALE.COPERTURA IS NULL THEN '0,00' 
				WHEN RISCHIOTOTALE.COPERTURA = 0 THEN '0,00' 
				ELSE NULL 
			END AS copertura_totString,
			--V
			ISNULL(RISCHIOTOTALE_PIR.COPERTURA,0) AS copertura_tot_pir,
			CASE 
				WHEN RISCHIOTOTALE_PIR.COPERTURA IS NULL THEN 'n.c.' 
				WHEN RISCHIOTOTALE_PIR.COPERTURA = 0 THEN 'n.c.' 
				ELSE NULL 
			END AS copertura_tot_pirString,
			--
			--V
			RISCHIORISFIN.VAR_PERC_PTF AS VAR_RISFIN,
			CASE 
				WHEN RISCHIORISFIN.COPERTURA IS NULL THEN 'n.c.' 
				WHEN RISCHIORISFIN.COPERTURA = 0 THEN 'n.c.' 
				ELSE NULL 
			END AS VAR_RISFINSTRING,
			ISNULL(RISCHIORISFIN.COPERTURA,0) AS copertura_risfin,
			CASE 
				WHEN RISCHIORISFIN.COPERTURA IS NULL THEN 'n.c.' 
				WHEN RISCHIORISFIN.COPERTURA = 0 THEN 'n.c.' 
				ELSE NULL 
			END AS copertura_risfinString,
			AREA_BISOGNO.ORDINAMENTO AS ordinamento
		FROM 
			C6MartPeriodico.AREA_BISOGNO
		LEFT JOIN 
			#PIRAMIDE_VERT ATTUALE 
			ON 
				ATTUALE.ID_AREA = AREA_BISOGNO.ID_AREA
		LEFT JOIN 
			C6MartPeriodico.RISCHIO_AGGREGATO RISCHIOAREA 
			ON 
				RISCHIOAREA.RETE = ATTUALE.RETE
				AND RISCHIOAREA.COD_FISCALE = ATTUALE.COD_FISCALE
					AND    
                   RISCHIOAREA.COD_AGGREG = (
                   CASE WHEN ATTUALE.ID_AREA IN ('EXT','INV','PRE','RIS','LIQ')
					THEN  'RISFIN|PIRAMIDE|' + ATTUALE.ID_AREA 
				   WHEN ATTUALE.ID_AREA = 'NA'
					THEN 'RISFIN|NA'
                   WHEN ATTUALE.ID_AREA = 'CC' 
					THEN 'COMPLESSIVO|BF|CC'
                   END
                   ) 
		LEFT JOIN 
			C6MartPeriodico.RISCHIO_AGGREGATO RISCHIOTOTALE
			ON 
				RISCHIOTOTALE.RETE = ATTUALE.RETE
				AND RISCHIOTOTALE.COD_FISCALE = ATTUALE.COD_FISCALE
				AND RISCHIOTOTALE.COD_AGGREG = 'COMPLESSIVO|BF'
		--V
		LEFT JOIN
			C6MartPeriodico.RISCHIO_AGGREGATO RISCHIOTOTALE_PIR 
			ON 
				RISCHIOTOTALE_PIR.RETE = ATTUALE.RETE
				AND RISCHIOTOTALE_PIR.COD_FISCALE = ATTUALE.COD_FISCALE
				AND RISCHIOTOTALE_PIR.COD_AGGREG = 'RISFIN|PIRAMIDE'
		LEFT JOIN 
			C6MartPeriodico.RISCHIO_AGGREGATO RISCHIORISFIN
			ON 
				RISCHIORISFIN.RETE = ATTUALE.RETE
				AND RISCHIORISFIN.COD_FISCALE = ATTUALE.COD_FISCALE
				AND RISCHIORISFIN.COD_AGGREG = 'RISFIN'
		--
		/*WHERE 
			AREA_BISOGNO.ORDINAMENTO < 6*/
		ORDER BY AREA_BISOGNO.ORDINAMENTO
	END
	ELSE
		SELECT 	* 
		FROM #PIRAMIDE_VERT
	DROP TABLE #PIRAMIDE_VERT
END