-- Stored procedure
-- =============================================
-- Author:		ALESSANDRO TRINGALI
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- Aggiunta GESTIONE EligoTitoli L192 (FCianfa, 26/11/2014)
-- =============================================
--[C6MartPeriodico].[PL_AreeMonitorate] 'S','SCLDNC71P13H224R'
CREATE      procedure [C6MartPeriodico].[PL_AreeMonitorate] --'F','BCCMLS56L57F257O'
	-- Add the parameters for the stored procedure here
	-- Add the parameters for the stored procedure here
	@Rete char(1), 
	@CodiceFiscale varchar(16)
AS
BEGIN
declare @tip_contratto int 
select @tip_contratto=tip_contratto from wh.Maledetti where rete=@Rete and CodiceFiscale=@CodiceFiscale
--set @tip_contratto=3 --forzatura per FD
if(@tip_contratto=3)
begin
SELECT 
NEED_AREA,
NEED_ESTESA,
--NOME_PROGETTO,
 CASE
        WHEN ROW_NUMBER() OVER (PARTITION BY NOME_PROGETTO ORDER BY MAX(ORDINE), ORDINAMENTO_PROGETTO) > 1
        THEN NOME_PROGETTO + ' (' + CAST(ROW_NUMBER() OVER (PARTITION BY NOME_PROGETTO ORDER BY MAX(ORDINE), ORDINAMENTO_PROGETTO) - 1 AS NVARCHAR(10)) + ')'
        ELSE NOME_PROGETTO
    END AS Nome_Progetto,
--CONTROLLO NOME PROGETTO DUPLICATO, TOLTO IL MAX, AGGIUNTO NEL GROUP BY
ORDINAMENTO_PROGETTO,
--MAX(ORDINAMENTO_PROGETTO) AS ORDINAMENTO_PROGETTO,
MAX(ORDINE) AS ORDINE,
--rimettere il min e commentare il ctv=0
max(AREAPROGETTOSOTTOMONITORAGGIO) AS AREAPROGETTOSOTTOMONITORAGGIO
into #temp
FROM
(
	--1.1 liq sotto monit
	SELECT
		'Inv' AS Need_Area,
		'Investimento' AS Need_Estesa,
		CASE WHEN PIRMOD.NOME_PROGETTO is null and pirmod.id_area='Inv' THEN 'Prodotti non associati a progetti'		
			ELSE LTRIM(RTRIM(PIRMOD.NOME_PROGETTO))
		END AS Nome_Progetto,
		PIRMOD.ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
	 CASE PIRMOD.ID_AREA 
		 WHEN 'Liq' THEN 1
		 WHEN 'Ris' THEN 2
		 WHEN 'Pre' THEN 3
		 WHEN 'Inv' THEN 4		 
		 WHEN 'Ext' THEN 5
		 WHEN 'Na' THEN 6
	END AS ORDINE,
    CASE WHEN MONIT.COD_FISCALE IS NULL THEN 0 ELSE 1 END AS AREAPROGETTOSOTTOMONITORAGGIO 
	FROM
		(SELECT 
		RETE,
		COD_FISCALE,
		case when ID_AREA in ('Pre','Pre1','Pre2') then 'Pre' else id_area end as  Id_area,
		NOME_PROGETTO,
		TIPO_PROGETTO,
		PERC_AREA,
		CTV_PROGETTO,
		CTV_AREA,
		ORIZZ_TEMP_NUM,
		ORIZZ_TEMP,
		CTV_TOTALE,
		STATO_CONSULENZA,
		DATA_STATO_CONS,
		DATA_MIGR_CONS,
		DATA_PIANIF,
		ID_CONTRATTO,   ---LEVARE???
        ORDINAMENTO_PROGETTO
	FROM
        C6MartPeriodico.CONS_ATTIVAGGIORNATA
	WHERE 
        COD_FISCALE=@CodiceFiscale
        and rete= @Rete
        ) PIRMOD
		INNER JOIN C6MartPeriodico.AREA_BISOGNO AS AREA ON
			PIRMOD.ID_AREA = AREA.ID_AREA
        LEFT OUTER JOIN C6MARTPERIODICO.MONITORAGGIO_ATTUALE MONIT
        ON MONIT.COD_FISCALE=PIRMOD.COD_FISCALE
        AND MONIT.RETE=PIRMOD.RETE
        AND MONIT.ID_AREA= PIRMOD.ID_AREA 
        AND MONIT.NOME_PROGETTO= ISNULL(PIRMOD.NOME_PROGETTO,'XXX')
		AND MONIT.ORDINAMENTO_PROGETTO=PIRMOD.ORDINAMENTO_PROGETTO
		--inner join C6StagingPeriodico.RP_Progetto_Robo rob ON rob.chiaveProgetto=monit.ORDINAMENTO_PROGETTO
	WHERE
		PIRMOD.RETE= @Rete
		AND PIRMOD.COD_FISCALE = @CodiceFiscale
		AND PIRMOD.CTV_PROGETTO > 0
------------------------    MIFID2 - MAGGIO 2018
		--AND PIRMOD.ID_AREA NOT IN ('Pre1', 'Pre2', 'Cc')
       AND PIRMOD.ID_AREA NOT IN ('Pre1', 'Pre2', 'Cc', 'LIGHT')
	  -- and pirmod.Id_area in ('Inv','Liq') --aggiunta per fideuram Direct
-------------------------  FINE MIFID2 - MAGGIO 2018
) A
GROUP BY
NEED_AREA,
NEED_ESTESA,
NOME_PROGETTO,
ORDINAMENTO_PROGETTO
	ORDER BY
		MAX(ORDINE),
		ORDINAMENTO_PROGETTO
		update #temp
		set ORDINE=4
		where Need_Area='Inv'
		select * from #temp
end
else
begin
SELECT 
NEED_AREA,
NEED_ESTESA,
NOME_PROGETTO,
--CONTROLLO NOME PROGETTO DUPLICATO, TOLTO IL MAX, AGGIUNTO NEL GROUP BY
ORDINAMENTO_PROGETTO,
--MAX(ORDINAMENTO_PROGETTO) AS ORDINAMENTO_PROGETTO,
MAX(ORDINE) AS ORDINE,
--rimettere il min e commentare il ctv=0
max(AREAPROGETTOSOTTOMONITORAGGIO) AS AREAPROGETTOSOTTOMONITORAGGIO
FROM
(
	--1.1 liq sotto monit
	SELECT
		PIRMOD.ID_AREA AS Need_Area,
		AREA.NOME_AREA AS Need_Estesa,
		CASE WHEN PIRMOD.NOME_PROGETTO is null and pirmod.id_area='Inv' THEN 'Prodotti non associati a progetti'		
			ELSE LTRIM(RTRIM(PIRMOD.NOME_PROGETTO))
		END AS Nome_Progetto,
		PIRMOD.ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
	 CASE PIRMOD.ID_AREA 
		 WHEN 'Liq' THEN 1
		 WHEN 'Ris' THEN 2
		 WHEN 'Pre' THEN 3
		 WHEN 'Inv' THEN 4		 
		 WHEN 'Ext' THEN 5
		 WHEN 'Na' THEN 6
	END AS ORDINE,
    CASE WHEN MONIT.COD_FISCALE IS NULL THEN 0 ELSE 1 END AS AREAPROGETTOSOTTOMONITORAGGIO 
	FROM
		(SELECT 
		RETE,
		COD_FISCALE,
		case when ID_AREA in ('Pre','Pre1','Pre2') then 'Pre' else id_area end as  Id_area,
		NOME_PROGETTO,
		TIPO_PROGETTO,
		PERC_AREA,
		CTV_PROGETTO,
		CTV_AREA,
		ORIZZ_TEMP_NUM,
		ORIZZ_TEMP,
		CTV_TOTALE,
		STATO_CONSULENZA,
		DATA_STATO_CONS,
		DATA_MIGR_CONS,
		DATA_PIANIF,
		ID_CONTRATTO,   ---LEVARE???
        ORDINAMENTO_PROGETTO
	FROM
        C6MartPeriodico.CONS_ATTIVAGGIORNATA
	WHERE 
        COD_FISCALE=@CodiceFiscale
        and rete= @Rete
        ) PIRMOD
		INNER JOIN C6MartPeriodico.AREA_BISOGNO AS AREA ON
			PIRMOD.ID_AREA = AREA.ID_AREA
        LEFT OUTER JOIN C6MARTPERIODICO.MONITORAGGIO_ATTUALE MONIT
        ON MONIT.COD_FISCALE=PIRMOD.COD_FISCALE
        AND MONIT.RETE=PIRMOD.RETE
        AND MONIT.ID_AREA= PIRMOD.ID_AREA 
        AND MONIT.NOME_PROGETTO= ISNULL(PIRMOD.NOME_PROGETTO,'XXX')
		AND MONIT.ORDINAMENTO_PROGETTO=PIRMOD.ORDINAMENTO_PROGETTO
	WHERE
		PIRMOD.RETE= @Rete
		AND PIRMOD.COD_FISCALE = @CodiceFiscale
		AND PIRMOD.CTV_PROGETTO > 0
------------------------    MIFID2 - MAGGIO 2018
		--AND PIRMOD.ID_AREA NOT IN ('Pre1', 'Pre2', 'Cc')
       AND PIRMOD.ID_AREA NOT IN ('Pre1', 'Pre2', 'Cc', 'LIGHT')
-------------------------  FINE MIFID2 - MAGGIO 2018
 --V ordine cambiato da 5 a 6 inquanto 5 è lo stesso di ext, na è passato a 7
 --Bido Added for 'SN' Saldo Negativo
	  UNION	
	  SELECT DISTINCT
	  'Cc' AS Need_Area,
	  'Conti correnti a saldo negativo'AS Need_Estesa,
	  NULL AS Nome_Progetto,
	  --999999 as ORDINAMENTO_PROGETTO,
      ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
      6 AS ORDINE,
      0 as AREAPROGETTOSOTTOMONITORAGGIO 
	  FROM
      C6MARTPERIODICO.PATRIMONIO_BF PATRBF
      WHERE 
      PATRBF.RETE= @Rete
	  AND PATRBF.COD_FISCALE = @CodiceFiscale
	  AND PATRBF.CTV < 0 and id_area = 'CC'
-- End Of Bido Added for 'SN' Saldo Negativo
  	  UNION	
	  SELECT DISTINCT
	  'Self' AS Need_Area,
	  -- 20181205 AC
	   --'Liquidità negativa "Linee GP Eligo"' AS Need_Estesa,
	   case
			when cod_interno = 'XY' then 'Liquidità negativa "Linea GP Eligo"'
			when cod_interno = 'FO' then 'Liquidità negativa "Il Mio Foglio"'
	   end AS Need_Estesa,
	  -- /20181205 AC
	  -- 20181205 AC
	  --NULL AS Nome_Progetto,
	  rtrim(cod_interno) AS Nome_Progetto,
	  -- /20181205 AC
	  --999999 as ORDINAMENTO_PROGETTO,
	  -- 20181205 AC
	  ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
	  --'' as ORDINAMENTO_PROGETTO,
	  -- /20181205 AC
      7 AS ORDINE,
      0 as AREAPROGETTOSOTTOMONITORAGGIO 
	  FROM
      C6MARTPERIODICO.PATRIMONIO_BF PATRBF
      WHERE 
      PATRBF.RETE= @Rete
	  AND PATRBF.COD_FISCALE = @CodiceFiscale
	  AND PATRBF.CTV < 0 and id_area = 'SELF'
-- End Of Bido Added for 'SN' Saldo Negativo
    UNION 
    SELECT DISTINCT
		'Na' AS Need_Area,
		'Non allocato'AS Need_Estesa,
		NULL AS Nome_Progetto,
		--999999 as ORDINAMENTO_PROGETTO,
        ORDINAMENTO_PROGETTO as ORDINAMENTO_PROGETTO,
        8 AS ORDINE,
        0 as AREAPROGETTOSOTTOMONITORAGGIO 
	  FROM
      C6MARTPERIODICO.PATRIMONIO_BF PATRBF
      WHERE 
           PATRBF.RETE= @Rete
		AND PATRBF.COD_FISCALE = @CodiceFiscale
		AND PATRBF.CTV > 0
		AND PATRBF.ID_AREA  IN ('Na')
      UNION 
         SELECT DISTINCT
		case when PATRBF.ID_AREA in ('Pre','Pre1','Pre2') then 'Pre' else PATRBF.ID_AREA end  AS Need_Area,
		case when PATRBF.ID_AREA in ('Pre','Pre1','Pre2') then 'Previdenza' else AREA.NOME_AREA end as NEED_ESTESA ,
		CASE WHEN PATRBF.NOME_PROGETTO is null and PATRBF.id_area='Inv' THEN 'Prodotti non associati a progetti'		
		ELSE PATRBF.NOME_PROGETTO end AS Nome_Progetto,
		--case when PATRBF.ID_AREA in ('Pre','Pre1','Pre2') then 1 else  PATRBF.ORDINAMENTO_PROGETTO end  as ORDINAMENTO_PROGETTO,
		PATRBF.ORDINAMENTO_PROGETTO  as ORDINAMENTO_PROGETTO,
        CASE PATRBF.ID_AREA 
		 WHEN 'Liq' THEN 1
		 WHEN 'Ris' THEN 2
		 WHEN 'Pre' THEN 3
         WHEN 'Pre1' THEN 3
         WHEN 'Pre2' THEN 3
		 WHEN 'Inv' THEN 4		 
		 WHEN 'Ext' THEN 5
		 WHEN 'Na' THEN 7
	END AS ORDINE,
       CASE WHEN MONIT.COD_FISCALE IS NULL THEN 0 ELSE 1 END AS AREAPROGETTOSOTTOMONITORAGGIO 
	  FROM
      C6MARTPERIODICO.PATRIMONIO_BF PATRBF 
	  INNER JOIN C6MartPeriodico.AREA_BISOGNO AS AREA ON
	  PATRBF.ID_AREA = AREA.ID_AREA
      LEFT OUTER JOIN C6MARTPERIODICO.MONITORAGGIO_ATTUALE MONIT
        ON MONIT.COD_FISCALE=PATRBF.COD_FISCALE
        AND MONIT.RETE=PATRBF.RETE
        AND MONIT.ID_AREA= PATRBF.ID_AREA 
        AND MONIT.NOME_PROGETTO= ISNULL(PATRBF.NOME_PROGETTO,'XXX')
		AND MONIT.ORDINAMENTO_PROGETTO=PATRBF.ORDINAMENTO_PROGETTO
       WHERE
        1=1 
        AND PATRBF.RETE= @Rete
		AND PATRBF.COD_FISCALE = @CodiceFiscale
		AND PATRBF.CTV > 0
        AND PATRBF.EXTRANAC=1
		AND PATRBF.ID_AREA  NOT IN ('Na', 'Cc') 
) A
GROUP BY
NEED_AREA,
NEED_ESTESA,
NOME_PROGETTO,
ORDINAMENTO_PROGETTO
	ORDER BY
		ORDINE,
		ORDINAMENTO_PROGETTO
		end
END