--
--select * from c6martperiodico.patrimonio_bf
--where id_area like 'Pre%'
--
-- Stored procedure
-- =============================================
-- Author:		ALESSANDRO TRINGALI
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
--[C6MartPeriodico].[PL_AreeMonitorate] 'S','BLTRNZ48M02F269I'
CREATE procedure [C6MartPeriodico].[PL_AreeMonitorate_PRESBAGLIATA] 
	-- Add the parameters for the stored procedure here
	-- 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.
--marianna controllare date di uscita coerenti tra tcptab e tanab, nel caso forzare la chiusura del monitoraggio nella tanab
	--exec C6MartPeriodico.SRV_LISTA_DISALLINEAMENTI_MONIT
select max(convert(datetime,convert(varchar(8),dtuscita))) as dtfine,rete, codarea,codfis,codprog
into #tcptab_aggr_dt
from c6stagingperiodico.tcptab
where ctvatt>0
group by rete,codfis,codarea,codprog
select a.codfis,a.rete,a.codarea,a.codprog,a.dtfine tanab_dt,b.dtfine tcptab_dt
into #dis_dt
from c6stagingperiodico.tanab a full join
#tcptab_aggr_dt b
on a.rete = b.rete and a.codfis = b.codfis and a.codarea = b.codarea and a.codprog = b.codprog
where  
 (b.dtfine<C6MartPeriodico.getDataCongelamento() or convert(datetime,convert(varchar(8),a.dtfine))< C6martPeriodico.getDataCongelamento())
and a.codfis not in (select cod_fiscale from disallineati2)
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
min(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,
		case when PIRMOD.id_area='Na' then 999999 else PIRMOD.ORDINAMENTO_PROGETTO end 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
		AND PIRMOD.ID_AREA NOT IN ('Pre','Pre1', 'Pre2', 'Cc')
 --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,
      6 AS ORDINE,
      0 as AREAPROGETTOSOTTOMONITORAGGIO 
	  FROM
      C6MARTPERIODICO.PATRIMONIO_BF PATRBF
      WHERE 
      PATRBF.RETE= @Rete
	  AND PATRBF.COD_FISCALE = @CodiceFiscale
	  AND PATRBF.CTV < 0
-- 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,
        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 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,
        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') 
--UNION 
----impostiamo l'area non monitorata se il ctv monitorato monitorato è zero
--         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,
--        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,
--       0 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 monit.ctv_monitorato = 0
--        --AND PATRBF.EXTRANAC=1
--		AND PATRBF.ID_AREA  NOT IN ('Na', 'Cc') 
--
	UNION
	--marianna controllare date di uscita coerenti tra tcptab e tanab, nel caso forzare la chiusura del monitoraggio nella tanab
		SELECT distinct
		b.ID_AREA AS Need_Area,
		AREA.NOME_AREA AS Need_Estesa,
		CASE WHEN b.NOME_PROGETTO is null and b.id_area='Inv' THEN 'Prodotti non associati a progetti'		
			ELSE LTRIM(RTRIM(b.NOME_PROGETTO))
		END AS Nome_Progetto,
		--case when b.id_area='Na' then 999999 else b.ORDINAMENTO_PROGETTO end as ORDINAMENTO_PROGETTO,
	 case when C.ID_AREA in ('Pre','Pre1','Pre2') then 1 else  C.ORDINAMENTO_PROGETTO end  as ORDINAMENTO_PROGETTO,
        CASE C.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,
    0 AS AREAPROGETTOSOTTOMONITORAGGIO 
		from #dis_dt a inner join
			c6martperiodico.piramide_mod b
			on a.rete = b.rete and a.codfis = b.cod_fiscale and a.codarea = case when b.id_area='ext' then 'exr' else b.id_area end and a.codprog = b.ordinamento_progetto
			inner join c6martperiodico.patrimonio_bf c
			on a.rete = c.rete and a.codfis = c.cod_fiscale and a.codarea = case when c.id_area='ext' then 'exr' else c.id_area end and a.codprog = c.ordinamento_progetto
			INNER JOIN C6MartPeriodico.AREA_BISOGNO AS AREA ON
			b.ID_AREA = AREA.ID_AREA
		where b.ctv_progetto>0
		and c.ctv>0 
		AND c.ID_AREA  NOT IN ('Na', 'Cc') 
		and b.RETE= @Rete
		AND b.COD_FISCALE = @CodiceFiscale
) A
GROUP BY
NEED_AREA,
NEED_ESTESA,
NOME_PROGETTO,
ORDINAMENTO_PROGETTO
	ORDER BY
		ORDINE,
		ORDINAMENTO_PROGETTO
END