-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
--[C6MartPeriodico].[PL_S80BisEvoluzioneRischio]'F','02392500605S'
--DROP PROCEDURE [C6MartPeriodico].[PL_S80EvoluzioneControvalore]
CREATE procedure [C6MartPeriodico].[PL_S80BisEvoluzioneRischio_BkUpParall]
	-- 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;
	-- Recupero data congelamento SEI
	DECLARE @MONIT_INIT INT
	DECLARE @DataCongelamento DATETIME
    DECLARE @MONIT_ATTIV INT
	--V VAriabile usata per verificare la presenza di righe nella rischio_aggregato, se non ho righe non
	--faccio uscire la sezione	
	DECLARE @AGGR INT
	SET @DataCongelamento = C6MartPeriodico.getDataCongelamento()
    SET  @MONIT_ATTIV=0
	SET	 @MONIT_INIT = 0
	declare @contaCC as int
	select @contaCC = count(*)
	from c6martperiodico.patrimonio_Bf
	where tipo_prodotto = 'CC' and cod_fiscale = @codiceFiscale and rete = @rete
	declare @contaPOS as int
	select @contaPOS = count(*)
	from c6martperiodico.patrimonio_Bf
	where cod_fiscale = @codiceFiscale and rete = @rete
   -- INSERIMENTO BLOCCO PER MONITORAGGIO CHIUSO O NON ESISTENTE
	SELECT @MONIT_INIT = COUNT(*)
	FROM
	C6MARTPERIODICO.MONITORAGGIO_INIZIALE
	WHERE 
    		RETE = @Rete AND
		    COD_FISCALE = @CodiceFiscale
    SELECT @MONIT_ATTIV=COUNT(*)
    FROM 
    C6MARTPERIODICO.MONITORAGGIO_ATTUALE
    WHERE 
    		RETE = @Rete AND
		    COD_FISCALE = @CodiceFiscale
	SELECT @AGGR=COUNT(*)
    FROM 
    C6MARTPERIODICO.RISCHIO_AGGREGATO
    WHERE
			RETE = @Rete AND
		    COD_FISCALE = @CodiceFiscale
    IF (@MONIT_ATTIV > 0 AND @AGGR > 0 AND @MONIT_INIT > 0)
    BEGIN
	-- Attivazione monitoraggio
-- nuova versione da testare
	SELECT
		1 AS Fase,
		INI.DATA_FOTO AS DataFase,
		INI.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
		--V
		CASE
			WHEN INI.VAR_COMPLESSIVO IS NULL THEN INI.VAR_COMPLESSIVO
			ELSE ROUND(INI.VAR_COMPLESSIVO,2)
		END AS VarComplessivo,
		INI.VAR_COPERTURA AS Copertura,
        INI.RISKCLASS,
        INI.RISKCLASSMAX,
		case 
			when INI.RISKCLASS is null  then 'n.d.'
			when INI.RISKCLASS = 0 then 'n.a.'	
			else null
		end as RiskClassString,
		case 
			when INI.RISKCLASSMAX is null then 'n.d.'
			when INI.RISKCLASSMAX = 0 then 'n.a.'
			else null
		end as RiskClassMaxString
	FROM
		C6MartPeriodico.MONITORAGGIO_INIZIALE INI
        LEFT OUTER  join
        C6MartPeriodico.MONITORAGGIO_REPORT rep
        on 
        REP.RETE=INI.RETE
        AND 
        REP.COD_FISCALE=INI.COD_FISCALE
	WHERE
		INI.RETE = @Rete AND
		INI.COD_FISCALE = @CodiceFiscale
--	SELECT
--		1 AS Fase,
--		INI.DATA_FOTO AS DataFase,
--		INI.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
--		--V
--		CASE
--			WHEN INI.VAR_COMPLESSIVO IS NULL THEN INI.VAR_COMPLESSIVO
--			ELSE ROUND(INI.VAR_COMPLESSIVO,2)
--		END AS VarComplessivo,
--		INI.VAR_COPERTURA AS Copertura
--	FROM
--		C6MartPeriodico.MONITORAGGIO_INIZIALE INI
--
--	WHERE
--		INI.RETE = @Rete AND
--		INI.COD_FISCALE = @CodiceFiscale
	UNION ALL
	-- Precedente invio report
	SELECT
		2 AS Fase,
		rep.DATA_INVIO AS DataFase,
		rep.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
		--V
		CASE
			WHEN rep.VAR_COMPLESSIVO IS NULL THEN rep.VAR_COMPLESSIVO
			ELSE ROUND(rep.VAR_COMPLESSIVO,2)
		END AS VarComplessivo,
		rep.VAR_COPERTURA AS Copertura,
         rep.RISKCLASS,
         rep.RISKCLASSMAX,
		case when rep.RISKCLASS is null then 'n.a.'
			 else null
		end as RiskClassString,
		case when rep.RISKCLASSMAX is null then 'n.a.'
			 else null
		end as RiskClassMaxString
	FROM
		C6MartPeriodico.MONITORAGGIO_INIZIALE INI
        left outer join
        C6MartPeriodico.MONITORAGGIO_REPORT rep
        on 
        REP.RETE=INI.RETE
        AND 
        REP.COD_FISCALE=INI.COD_FISCALE
	WHERE
		rep.RETE = @Rete AND
		rep.COD_FISCALE = @CodiceFiscale
	AND INI.DATA_FOTO < ISNULL(REP.DATA_INVIO,cast('29991231' as datetime))
		and ISNULL(DATA_INVIO,cast('29991231' as datetime))<@datacongelamento
	UNION ALL
	-- Situazione corrente
	SELECT
		3,
		CASE
			WHEN @DataCongelamento IS NULL THEN GETDATE()
			ELSE @DataCongelamento
		END AS DataFase,
		CR.MAX_VAR AS VarMassimoProfiloFinanziario,
		--V
		CASE WHEN RA.VAR_PERC_PTF IS NULL THEN 0.00
			 ELSE ROUND(RA.VAR_PERC_PTF,2)
		END  AS VarComplessivo,
		CASE
			WHEN (@contaPOS - @contaCC = 0 ) THEN 100
			ELSE isnull(RA.COPERTURA,0) 
		END AS Copertura,
-- TRINGALI MODIFICARE
       ra.creditrisk as RISKCLASS,
        mifid.riskclass as RISKCLASSMAX,
		case when ra.creditrisk is null then 'n.a.'
        else null end   as RiskClassString,
		case when  mifid.riskclass is null then 'n.a.'
              else null end as RiskClassMaxString
	FROM
        C6MartPeriodico.vPatrimonioBFAggregato AS BF
	INNER JOIN C6MartPeriodico.MIFID AS MIFID
		ON 	BF.RETE = MIFID.RETE
		AND BF.COD_FISCALE = MIFID.COD_FISCALE
	INNER JOIN C6MartPeriodico.CODIFICA_RISCHIO AS CR
		ON MIFID.PROFILO_ASS = CR.PROFILO
	LEFT OUTER JOIN C6MartPeriodico.RISCHIO_AGGREGATO AS RA
		ON 	RA.RETE = BF.RETE
		AND RA.COD_FISCALE = BF.COD_FISCALE
		AND RA.COD_AGGREG = 'COMPLESSIVO|BF'
	WHERE
		BF.RETE = @Rete AND
		BF.COD_FISCALE = @CodiceFiscale
END 
ELSE
BEGIN
	SELECT
		2 AS Fase,
		DATA_INVIO AS DataFase,
		VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
		--V
		CASE
			WHEN VAR_COMPLESSIVO IS NULL THEN VAR_COMPLESSIVO
			ELSE ROUND(VAR_COMPLESSIVO,2)
		END AS VarComplessivo,
		VAR_COPERTURA AS Copertura
	FROM
		C6MartPeriodico.MONITORAGGIO_REPORT
	WHERE
1=2
END
END