dbo.monitoreos_cendeu_prueba2

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

1
Name Data Type Length Description
@yesterday date 3

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

-- monitoreos_cendeu_prueba2 '2018-02-05'
CREATE OR ALTER PROCEDURE dbo.monitoreos_cendeu_prueba2
@yesterday date = null

AS
BEGIN
    SET NOCOUNT ON;
 
 declare @r_cuit varchar(20)

 declare @yesterday_1 date
 
 declare @carga_cd date
 declare @periodo  char(6)
 declare @dbf_filename varchar(15)

 declare @r_tabla varchar(20),
         @r_id_cendeu int, 
   @r_id_fuente int,
   @r_fec_inf char(6),
         @r_created datetime, 
   @r_modified datetime, 
   @r_situacion varchar(2),
   @r_dbf_filename varchar(15)

      
 declare @mostrar char(1)
 
 if (@yesterday is null) begin set @yesterday = GETDATE() - 1 end 

 set @yesterday_1 = @yesterday
 /*  Cuando se quiere desde una fecha anterior hasta hoy, agregar este set: */
 if (@yesterday = '2018-03-07')
 begin 
 set @yesterday_1 = '2018-02-01'
 end
 /* */ 

 -- Buscamos cuál es el último periodo de deuda cargado
 select top 1 
        @carga_cd = created, 
     @periodo  = replace(CONVERT(char(7),fecha_informacion),'-',''),
     @dbf_filename = observaciones
  from fuentes_procesadas 
 where fuente = 'cendeu'  
   and visible = 1 
      order by fecha_informacion desc

 if (isnull(@dbf_filename,'') = '')
 begin
 set @dbf_filename = 
    (select top 1 dbf_filename
       from cendeu_temp
      where dbf_filename is not null
   and fec_inf = @periodo
      )
 end 
 -- select @carga_cd, @periodo, @dbf_filename 
 
 DECLARE bn CURSOR

  FOR
   select distinct cuit 
     from monitoreos 
    where visible = 1 
      and seccion_mantenimiento = '10' 
      and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >= @yesterday)
  OPEN bn 
  Fetch next from bn INTO  @r_cuit

  WHILE (@@FETCH_STATUS <> -1 )
 
  BEGIN 
  
  if (@carga_cd between @yesterday_1 and @yesterday) --> busca en cendeu y cendeu_temp
  begin
      DECLARE cendeuc CURSOR FOR  
    
    select 'cendeu', id_cendeu,
               fec_inf, 
            id_fuente, 
         CONVERT(date,created), 
         CONVERT(date,modified), 
         CONVERT(int,situacion), 
         dbf_filename 
      from cendeu
     where iden = @r_cuit 
     and vigente = 1
     
     union all
     
    select 'cendeu_temp', id_cendeu,
               fec_inf, 
            id_fuente, 
         created, 
         modified, 
         situacion, 
         dbf_filename 
      from cendeu_temp
     where iden = @r_cuit 
     and vigente = 1
  end 
  else 
  begin 
      DECLARE cendeuc CURSOR FOR  
    
    select 'cendeu', id_cendeu,
               fec_inf, 
            id_fuente, 
         CONVERT(date,created), 
         CONVERT(date,modified), 
         CONVERT(int,situacion), 
         dbf_filename 
      from cendeu
     where iden = @r_cuit 
     and vigente = 1
  end        
     
   OPEN cendeuc 
    FETCH next from cendeuc INTO @r_tabla, @r_id_cendeu, @r_id_fuente, @r_fec_inf, @r_created, @r_modified,  @r_situacion, @r_dbf_filename
   WHILE (@@FETCH_STATUS <> -1 )
    BEGIN 
    
     set @mostrar = 'N'
     
        if (convert(int,@r_situacion) = 1) 
     begin 
      FETCH next from cendeuc INTO @r_tabla, @r_id_cendeu, @r_id_fuente, @r_fec_inf, @r_created, @r_modified,  @r_situacion, @r_dbf_filename
     continue 
     end -- No se muestra en monitoreo Situacion 1

     if (@carga_cd between @yesterday_1 and @yesterday) 
     begin
      -- Se termino de cargar un nuevo cd dentro de los días que buscamos --> busco los registros de ese periodo
      if (@r_fec_inf = @periodo or @r_dbf_filename = @dbf_filename) 
        begin
            -- Es una novedad a mostrar
         set @mostrar = 'S'
        end 

     end 
     
     -- busco los registros modificados por usuarios esos días
     if (@r_id_fuente = 2) -- lo cargaron a mano 
     begin
      if (@r_created is not null and convert(date,@r_created) between @yesterday_1 and @yesterday) 
      begin
            -- Es una novedad a mostrar
         set @mostrar = 'S'
      end 
      if (@r_modified is not null and convert(date,@r_modified) between @yesterday_1 and @yesterday) 
      begin
            -- Es una novedad a mostrar
         set @mostrar = 'S'
      end 
     end 
      

     if (@mostrar = 'S') 
     begin
     /*
       
      insert into monitoreos_resultados 
         (id_tabla,     tabla,    cuit,    seccion_mantenimiento, fecha,      novedad, tipo_novedad)
      values (@r_id_cendeu, @r_tabla, @r_cuit, 10,                    @yesterday, 1,       'Bancos');
     
      update monitoreos 
         set fecha_ultimo_procesamiento = @yesterday,
         fecha_modificacion = @yesterday
       where cuit= @r_cuit 
         and seccion_mantenimiento = 10
         and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >= @yesterday)
         -- and (fecha_desde is null or fecha_desde <= @yesterday)
     
      */

     select @mostrar as mostrar, @r_id_cendeu, @r_tabla
     end 
     
     
      FETCH next from cendeuc INTO @r_tabla, @r_id_cendeu, @r_id_fuente, @r_fec_inf, @r_created, @r_modified,  @r_situacion, @r_dbf_filename

    END
   CLOSE cendeuc
   DEALLOCATE cendeuc 
   
   FETCH next from bn INTO  @r_cuit

  END
  
  CLOSE bn
  DEALLOCATE bn 

END

GO

Used By

No items found