-- Schema: C6MartPeriodico
-- Stored Procedure: PL_AreeMonitorate_85



-- Stored procedure

-- =============================================
-- Author:		ALESSANDRO TRINGALI
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
--[C6MartPeriodico].[PL_AreeMonitorate]  'F','DNERNZ56P01A757W'
CREATE procedure [C6MartPeriodico].[PL_AreeMonitorate_85] 
	-- 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 convert(datetime,convert(varchar(8),a.dtfine))<>b.dtfine 
and b.dtfine<C6MartPeriodico.getDataCongelamento()
and a.codfis not in (select cod_fiscale from disallineati2)

SELECT 
NEED_AREA,
NEED_ESTESA,
NOME_PROGETTO,
MAX(ORDINAMENTO_PROGETTO) AS ORDINAMENTO_PROGETTO,
MAX(ORDINE) AS ORDINE,
min(AREAPROGETTOSOTTOMONITORAGGIO) AS AREAPROGETTOSOTTOMONITORAGGIO
FROM
(
	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,
        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')
	WHERE
		PIRMOD.RETE= @Rete
		AND PIRMOD.COD_FISCALE = @CodiceFiscale
		AND PIRMOD.CTV_PROGETTO > 0
		AND PIRMOD.ID_AREA NOT IN ('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,
      PATRBF.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 
