dbo.monitoreos_batch_formales

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
/*
exec [monitoreos_batch_formales] 
*/

-- select * from productos_secciones where producto = 12
-- seccion 2 = formales - CLAE 
CREATE OR ALTER PROCEDURE dbo.monitoreos_batch_formales
@yesterday date = null

AS
BEGIN
    SET NOCOUNT ON;

 declare @id_clae int, 
         @clae int,
   @descripcion varchar(500), 
   @fecha date, 
   @html varchar(max), 
   @accion varchar(20),
   @fecha_inicio_actividad date
   

 if (@yesterday is null) begin set @yesterday = GETDATE() - 1 end 
 
 declare @cant1 bigint
 declare @cant2 bigint
 
 declare @r_cuit varchar(20),@r_seccion_mantenimiento int = 2
 DECLARE bn CURSOR FOR
  select distinct cuit 
   from monitoreos 
   where visible = 1 
   and isnull(seccion_mantenimiento,2) = @r_seccion_mantenimiento
   and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >= @yesterday)
   and (fecha_desde is null or fecha_desde <= @yesterday) 
 OPEN bn 
 Fetch next from bn INTO  @r_cuit 

 WHILE (@@FETCH_STATUS <> -1 )

  BEGIN

   DECLARE mod_clae CURSOR FOR
    -- dados de alta en el dia, pero no dado de baja un registro igual
    select  id_clae, cod_clae, descripcion, fecha_inicio_actividad,  'alta', convert(date,created)
     from clae a
     where a.cuit = @r_cuit 
     -- el día que estamos monitoreando 
     and (convert(date,a.created) = @yesterday)
     and a.visible = 1
     and not exists (select * from clae b 
                      where b.cuit = a.cuit and convert(int,b.cod_clae) = convert(int,a.cod_clae) 
            and b.visible = 0 
            and (convert(date,b.created) = @yesterday or convert(date,b.modified) = @yesterday))
    union 
    -- dados de baja en el dia, pero no dado de alta un registro igual
    select  id_clae, cod_clae, descripcion, fecha_inicio_actividad, 'baja', convert(date,modified)
     from clae a
     where a.cuit = @r_cuit 
     -- el día que estamos monitoreando 
     and (convert(date,a.modified) = @yesterday and a.modified is not null)
     and a.visible = 0
     and not exists (select * from clae b 
                      where b.cuit = a.cuit and convert(int,b.cod_clae) = convert(int,a.cod_clae)
            and b.visible = 1
            and (convert(date,b.created) = @yesterday or convert(date,b.modified) = @yesterday))
     
   OPEN mod_clae 
   FETCH next from mod_clae INTO @id_clae,@clae,@descripcion,@fecha_inicio_actividad,@accion,@fecha  

   WHILE (@@FETCH_STATUS <> -1 )
    BEGIN
        -- CUIT | clae alta | clae baja 
     if(@accion = 'alta')
      set @html = '<td>'+@r_cuit+'</td>'+ 
         '<td>'+iif(@fecha_inicio_actividad is null,'',format(@fecha_inicio_actividad,'MM/yyyy'))+'</td>'+
         '<td align=left>'+format(@clae,'000000')+' - '+@descripcion+'</td>'+ 
         '<td align=left></td>'
     else 
      set @html = '<td>'+@r_cuit+'</td>'+ 
         '<td>'+iif(@fecha_inicio_actividad is null,'',format(@fecha_inicio_actividad,'MM/yyyy'))+'</td>'+
         '<td align=left></td>' + 
         '<td align=left>'+format(@clae,'000000')+' - '+@descripcion+'</td>'
      
     insert into monitoreos_resultados (id_tabla, tabla,  cuit,    seccion_mantenimiento, fecha,  novedad, tipo_novedad, html)
            values(@id_clae, 'clae', @r_cuit, 2,                     @fecha, 1,       'clae',       @html)
     update monitoreos 
       set fecha_ultimo_procesamiento = @yesterday,
        fecha_modificacion = @yesterday
     where cuit = @r_cuit 
       and isnull(seccion_mantenimiento,@r_seccion_mantenimiento) = @r_seccion_mantenimiento
       and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >= @yesterday)
       and (fecha_desde is null or fecha_desde <= @yesterday)
     
     FETCH next from mod_clae INTO @id_clae,@clae,@descripcion,@fecha_inicio_actividad,@accion,@fecha   
          
    END
   
    CLOSE mod_clae
    DEALLOCATE mod_clae 
  
    FETCH next from bn INTO  @r_cuit 

  END
  CLOSE bn
  DEALLOCATE bn 
END 

GO

Depends On

2

Used By

No items found