-- Stored procedure
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE   procedure [C6Mart].[RP_DM_CHECK_RFA_MINUS]
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
		INSERT INTO LOG_ESECUZIONE
		(Nome, Inizio, Nota)
	VALUES (
		'RP_DM_CHECK_RFA_MINUS',
		GETDATE(),
		'Elaborazione giornaliera'
	)
 	DECLARE @ID_ELAB INT
	DECLARE @TIPO_ELAB VARCHAR(1)
	declare @sogliaRfa as decimal (18,0) 
	declare @sogliaRfaDB as decimal (18,0) 
	declare @data_perf as datetime
	SET @ID_ELAB = C6MART.GETIDELAB()
	SET @TIPO_ELAB = C6MART.GETTIPOELAB()
	SET @data_perf = '20200401'
	SET @sogliaRfa = (select valore from [CONSUNI].[ConsulenzaUnica].[dbo].[param] where parametro = 'sogliaRFA')
	SET @sogliaRfaDB=0 --SOGLIA RFA per i Fideuram Direct
	-- Log esecuzione
	 -- update consuni.consulenzaUnica.dbo.dettaglioClientePB 
	 --  set flagRfaMinus = 1 
	 SELECT contratti.rete, vinfo.cod_agente, contratti.Cod_Fiscale, contratti.Piva_Fiduciaria, contratti.CodiceContratto, vinfo.chiaveclientepb,'NSAA' as Decod_Cososp
	 INTO #flagRfaMinusUno
     FROM C6Mart.RP_vTuttiIContratti AS contratti 
  	INNER join C6Mart.vPatrimoniobfAggregato_SenzaNobPrez patrimonioBF
		on contratti.Rete = patrimonioBF.Rete
		and contratti.Cod_Fiscale = patrimonioBF.Cod_Fiscale 
		inner join --consuni.consulenzaUnica.dbo.vinfocliente vinfo
		c6mart.vcontratti vinfo
		on vinfo.cod_Fiscale = contratti.cod_fiscale
		and vinfo.rete = contratti.rete
  inner join consuni.consulenzaUnica.dbo.dettaglioClientePB dett
  on dett.chiaveclientepb = vinfo.chiaveclientePb
  WHERE  (1 = 1)	
        AND (InvioBenvenuto = 'N') 
		--AND (ISNULL(RisorseNa, 'N') = 'N') 
		--AND (ISNULL(NumRevoche, 0) = 0)
		AND ((DATEDIFF(d,vinfo.Data_Perf, GETDATE()) >=  CAST(dbo.getParametro('NUMGIORNIDALPERF_REP') AS INT)) OR vinfo.cod_agente='015312')
		--AND	contratti.Cod_Fiscale IN (SELECT	COD_FISCALE FROM    C6Mart.PIRAMIDE_MOD)
		AND (((case when patrimonioBF.contocorrente<0 then patrimoniobf.patrimoniosenzacc else patrimoniobf.ctv end) < @sogliaRfa and vinfo.data_perf >= @data_perf and vinfo.DATA_INZIOAVANZATO >= '20240412') 
		OR ((case when patrimonioBF.contocorrente<0 then patrimoniobf.patrimoniosenzacc else patrimoniobf.ctv end) < '25000' and vinfo.DATA_INZIOAVANZATO < '20240412')) --modificata il 04012020 la fonte del ctv da patrimoniobf.ctv con la case when per escludere i cc negativi dal conto
		AND vinfo.TIP_CONTRATTO<>3 --per escludere i fideuram direct che hanno una soglia RFA diversa
union all
SELECT contratti.rete, vinfo.cod_agente, contratti.Cod_Fiscale, contratti.Piva_Fiduciaria, contratti.CodiceContratto, vinfo.chiaveclientepb,'NSAA' --NSAA
     FROM C6Mart.RP_vTuttiIContratti AS contratti 
  	INNER join C6Mart.vPatrimoniobfAggregato patrimonioBF
		on contratti.Rete = patrimonioBF.Rete
		and contratti.Cod_Fiscale = patrimonioBF.Cod_Fiscale 
		inner join --consuni.consulenzaUnica.dbo.vinfocliente vinfo
		c6mart.vcontratti vinfo
		on vinfo.cod_Fiscale = contratti.cod_fiscale
		and vinfo.rete = contratti.rete
  inner join consuni.consulenzaUnica.dbo.dettaglioClientePB dett
  on dett.chiaveclientepb = vinfo.chiaveclientePb
  WHERE  (1 = 1)	
        AND (InvioBenvenuto = 'N') 
		--AND (ISNULL(RisorseNa, 'N') = 'N') 
		--AND (ISNULL(NumRevoche, 0) = 0)
		AND ((DATEDIFF(d,vinfo.Data_Perf, GETDATE()) >=  CAST(dbo.getParametro('NUMGIORNIDALPERF_REP') AS INT)) OR vinfo.cod_agente='015312')
		--AND	contratti.Cod_Fiscale IN (SELECT	COD_FISCALE FROM    C6Mart.PIRAMIDE_MOD)
		AND (case when patrimonioBF.contocorrente<0 then patrimoniobf.patrimoniosenzacc else patrimoniobf.ctv end) < @sogliaRfaDB and vinfo.data_perf >= @data_perf --modificata il 04012020 la fonte del ctv da patrimoniobf.ctv con la case when per escludere i cc negativi dal conto
		AND vinfo.TIP_CONTRATTO=3 --per escludere i fideuram direct che hanno una soglia RFA diversa
	union ALL
		--Modifica Per rafforzamento Azione protezione per la clientela
	SELECT contratti.rete, vinfo.cod_agente, contratti.Cod_Fiscale, contratti.Piva_Fiduciaria, contratti.CodiceContratto, vinfo.chiaveclientepb,'NBAM'
 FROM C6Mart.RP_vTuttiIContratti AS contratti 
		inner join c6mart.vcontratti vinfo
		on vinfo.cod_Fiscale = contratti.cod_fiscale
		and vinfo.rete = contratti.rete
  inner join consuni.consulenzaUnica.dbo.dettaglioClientePB dett
  on dett.chiaveclientepb = vinfo.chiaveclientePb
  WHERE  (1 = 1)	
        AND (InvioBenvenuto = 'N') 
		AND Profilo_EC<1
	--	and vinfo.TIP_CONTRATTO<>3 Commentato per Rafforzamento Direct 20240531
		--FINE Modifica Per rafforzamento Azione protezione per la clientela
	  update pb
	   set pb.flagRfaMinus = 1 , pb.decod_cososp =uno.Decod_Cososp
	    from consuni.consulenzaUnica.dbo.dettaglioClientePB pb 
	    inner join #flagRfaMinusUno uno on pb.chiaveclientePB=uno.chiaveClientePB
  --update consuni.consulenzaUnica.dbo.dettaglioClientePB 
  --set flagRfaMinus = 0
  SELECT contratti.rete, vinfo.cod_agente, contratti.Cod_Fiscale, contratti.Piva_Fiduciaria, contratti.CodiceContratto, vinfo.chiaveclientepb
	 INTO #flagRfaMinusZero
 FROM C6Mart.RP_vTuttiIContratti AS contratti 
  	INNER join C6Mart.vPatrimoniobfAggregato_SenzaNobPrez patrimonioBF
		on contratti.Rete = patrimonioBF.Rete
		and contratti.Cod_Fiscale = patrimonioBF.Cod_Fiscale 
		inner join --consuni.consulenzaUnica.dbo.vinfocliente vinfo
		c6mart.vcontratti vinfo
		on vinfo.cod_Fiscale = contratti.cod_fiscale
		and vinfo.rete = contratti.rete
  inner join consuni.consulenzaUnica.dbo.dettaglioClientePB dett
  on dett.chiaveclientepb = vinfo.chiaveclientePb
  WHERE  (1 = 1)	
        AND (InvioBenvenuto = 'N') 
		AND (((case when patrimonioBF.contocorrente<0 then patrimoniobf.patrimoniosenzacc else patrimoniobf.ctv end) >= @sogliaRfa and flagRfaMinus = 1) OR (vinfo.data_perf < @data_perf AND flagRfaMinus = 1)) --modificata il 04012020 la fonte del ctv da patrimoniobf.ctv con la case when per escludere i cc negativi dal conto
		AND vinfo.TIP_CONTRATTO<>3
		UNION ALL
	SELECT contratti.rete, vinfo.cod_agente, contratti.Cod_Fiscale, contratti.Piva_Fiduciaria, contratti.CodiceContratto, vinfo.chiaveclientepb
 FROM C6Mart.RP_vTuttiIContratti AS contratti 
  	INNER join C6Mart.vPatrimoniobfAggregato patrimonioBF
		on contratti.Rete = patrimonioBF.Rete
		and contratti.Cod_Fiscale = patrimonioBF.Cod_Fiscale 
		inner join --consuni.consulenzaUnica.dbo.vinfocliente vinfo
		c6mart.vcontratti vinfo
		on vinfo.cod_Fiscale = contratti.cod_fiscale
		and vinfo.rete = contratti.rete
  inner join consuni.consulenzaUnica.dbo.dettaglioClientePB dett
  on dett.chiaveclientepb = vinfo.chiaveclientePb
  WHERE  (1 = 1)	
        AND (InvioBenvenuto = 'N') 
		--AND (ISNULL(RisorseNa, 'N') = 'N') 
		--AND (ISNULL(NumRevoche, 0) = 0)
		AND ((DATEDIFF(d,vinfo.Data_Perf, GETDATE()) >=  CAST(dbo.getParametro('NUMGIORNIDALPERF_REP') AS INT)) OR vinfo.cod_agente='015312')
		--AND	contratti.Cod_Fiscale IN (SELECT	COD_FISCALE FROM    C6Mart.PIRAMIDE_MOD)
		AND (((case when patrimonioBF.contocorrente<0 then patrimoniobf.patrimoniosenzacc else patrimoniobf.ctv end) >= @sogliaRfaDB and flagRfaMinus = 1) OR (vinfo.data_perf < @data_perf AND flagRfaMinus = 1)) --modificata il 04012020 la fonte del ctv da patrimoniobf.ctv con la case when per escludere i cc negativi dal conto
		AND vinfo.TIP_CONTRATTO=3
		UNION ALL
			SELECT contratti.rete, vinfo.cod_agente, contratti.Cod_Fiscale, contratti.Piva_Fiduciaria, contratti.CodiceContratto, vinfo.chiaveclientepb
 FROM C6Mart.RP_vTuttiIContratti AS contratti 
		inner join c6mart.vcontratti vinfo
		on vinfo.cod_Fiscale = contratti.cod_fiscale
		and vinfo.rete = contratti.rete
  inner join consuni.consulenzaUnica.dbo.dettaglioClientePB dett
  on dett.chiaveclientepb = vinfo.chiaveclientePb
  WHERE  (1 = 1)	
        AND (InvioBenvenuto = 'N') 
		AND Profilo_EC>=1
		--and vinfo.TIP_CONTRATTO<>3 Commentato per Rafforzamento Direct 20240531
		--select * from #flagRfaMinusUno
		--select * from #flagRfaMinusZero
	   update consuni.consulenzaUnica.dbo.dettaglioClientePB 
	   set flagRfaMinus = 0 , decod_cososp =NULL
	   where chiaveclientepb in (select chiaveclientepb from #flagRfaMinusZero)
			insert into  ltmpRfaMin1
 			select GETDATE() as DtModFlag, 1 as Flagval ,*  from #flagRfaMinusUno
			insert into  ltmpRfaMin0
			select GETDATE() as DtModFlag, 0 as Flagval ,*  from #flagRfaMinusZero
	-- Log esecuzione
	UPDATE
		LOG_ESECUZIONE
	SET
		Fine = GETDATE(),
		Tipo = 'INSERT',
		Righe = @@ROWCOUNT
	WHERE
		Nome = 'RP_DM_CHECK_RFA_MINUS' AND
		Inizio = (
			SELECT
				MAX(Inizio)
			FROM
				LOG_ESECUZIONE
			WHERE
				Nome = 'RP_DM_CHECK_RFA_MINUS'
		)
END