-- Schema: C6Mart
-- Stored Procedure: RP_DM_CHECK_RFA_MINUS_20240412









-- Stored procedure
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE    procedure [C6Mart].[RP_DM_CHECK_RFA_MINUS_20240412]
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
	 INTO #flagRfaMinusUno
     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) < @sogliaRfa or Profilo_EC<=1) 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

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 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

	  update consuni.consulenzaUnica.dbo.dettaglioClienteP
