dbo.monitoreos_batch_comex_2025

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_comex_2025] '2025-01-19'
select * from monitoreos_resultados where tabla = 'comex'  
*/

-- select * from productos_secciones where producto = 12
-- seccion 11 = Comex
CREATE OR ALTER PROCEDURE dbo.monitoreos_batch_comex_2025
@yesterday date = null

AS
BEGIN
    SET NOCOUNT ON;

 declare @importaciones varchar(max),   
   @exportaciones varchar(max), 
   @total money,
   @consumo money,
   @temporal money,
   @deposito money, 
   @zona_franca money,
   @tipo_operacion varchar(50),
   @periodo varchar(7), 
   @html varchar(max),
   @fecha varchar(7),
   @created date 
        
 if (@yesterday is null) begin set @yesterday = GETDATE() - 1 end 
 
 
 declare @r_cuit varchar(20),@r_seccion_mantenimiento int = 11
 DECLARE bn CURSOR FOR

  select --distinct '30500548041' cuit
      distinct rtrim(ltrim(cuit)) cuit
   from monitoreos 
   where visible = 1 
   and isnull(seccion_mantenimiento,11) = @r_seccion_mantenimiento
   and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >= @yesterday)
   and (fecha_desde is null or fecha_desde <= @yesterday)  
   and (
   exists (select * from comercio_exterior where cuit = monitoreos.cuit and convert(date,created) = @yesterday)
   or 
   exists (select * from comex_exportaciones where convert(varchar,cuit) = monitoreos.cuit and convert(date,created) = @yesterday)
   )
   and ISNUMERIC(cuit) = 1
   order by cuit
 OPEN bn 
 Fetch next from bn INTO  @r_cuit 

 WHILE (@@FETCH_STATUS <> -1 )

  BEGIN
      --select @r_cuit
   DECLARE mod_comex CURSOR FOR
   /*
     select 'IMPO' as tipo_operacion, convert(varchar(7),fecha) as periodo, convert(date, created), 
            sum(ROUND (fobusd,0)) as total
       from comex_importaciones 
        where cuit = @r_cuit  
    and (convert(date,created) = @yesterday and created is not null)
    group by convert(varchar(7),fecha),convert(date,created)
    */


    select distinct 'IMPO' as tipo_operacion, convert(varchar(7),periodo) as periodo, convert(date, created), 
      (isnull(consumo,0)+isnull(deposito,0)+isnull(zona_franca,0)+isnull(temporal,0)) as total, 
      consumo,
      temporal,
      deposito, 
      zona_franca
       from comercio_exterior 
      where cuit = @r_cuit  
        and (convert(date,created) = @yesterday and created is not null)

    union all 
    /* Lo cambiamos, porque los registros de la tabla estan super duplicados */
    /*
      select 'EXPO' as tipo_operacion, convert(varchar(7),fecha) as periodo, convert(date, created), 
             sum(ROUND (fobusd,0)) as total,
     null as consumo,
     null as temporal,
     null as deposito, 
     null as zona_franca
        from comex_exportaciones 
       where cuit = @r_cuit  
     and (convert(date,created) = @yesterday and created is not null)
     group by convert(varchar(7),fecha),convert(date,created)
     */

   select 'EXPO' as tipo_operacion, sql2.periodo, sql2.created, 
           sum(ROUND (sql2.fobusd,0)) as total,
     null as consumo,
     null as temporal,
     null as deposito, 
     null as zona_franca
     from (select distinct cuit, procedencia, fobusd, posicion, convert(varchar(7),fecha) as periodo, convert(date, created) as created
       from comex_exportaciones 
       where (convert(date,created) = @yesterday  and created is not null)
       and cuit = @r_cuit) sql2
       group by sql2.periodo, sql2.created


   order by periodo

   declare @periodo_ant varchar(7) = ''
   OPEN mod_comex 
   
   FETCH next from mod_comex INTO  @tipo_operacion, @fecha, @created,  @total, 
                    @consumo,
                    @temporal,
                    @deposito, 
                    @zona_franca

   WHILE (@@FETCH_STATUS <> -1 )
    BEGIN
     
     set @periodo = SUBSTRING(@fecha,6,2) + '/' + SUBSTRING(@fecha,1,4)
     if (@periodo !=  @periodo_ant) 
     begin
      if (@periodo_ant != '') 
      begin
       set @html = '<td>'+@r_cuit+'</td><td>'+@periodo_ant+'</td>'+
          +@importaciones+
          +@exportaciones
       --select @html
    
       insert into monitoreos_resultados (id_tabla,tabla,cuit,seccion_mantenimiento,fecha,novedad,tipo_novedad,html)
                     values(null, 'comex', @r_cuit, 11, @created, 1,'comex', @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)
         
      end 
      set @importaciones = '<td align=right></td>'+
            '<td align=right></td>'+
            '<td align=right></td>'+
            '<td align=right></td>'+
            '<td align=right></td>'
      set @exportaciones = '<td style="border-left: 1px solid #cccccc;" align=right></td>'
     end 
     set @periodo_ant = @periodo
     if(@tipo_operacion = 'IMPO')
     begin
      set @importaciones = '<td align=right>'+format(@consumo,'#,#')+'</td>'+
            '<td align=right>'+format(@temporal,'#,#')+'</td>'+
            '<td align=right>'+format(@deposito,'#,#')+'</td>'+
            '<td align=right>'+format(@zona_franca,'#,#')+'</td>'+
            '<td align=right>'+format(@total,'#,#')+'</td>' 
     end 
     else 
     begin
      set @exportaciones = '<td style="border-left: 1px solid #cccccc;" align=right>'+format(@total,'#,#')+'</td>' 
     end
     FETCH next from mod_comex INTO  @tipo_operacion, @fecha, @created,  @total, 
                    @consumo,
                    @temporal,
                    @deposito, 
                    @zona_franca
          
    END
   
    CLOSE mod_comex
    DEALLOCATE mod_comex 
    
    if (@periodo_ant != '') 
    begin
     set @html = '<td>'+@r_cuit+'</td><td>'+@periodo_ant+'</td>'+
        +@importaciones+
           +@exportaciones
     --select @html
      
     insert into monitoreos_resultados (id_tabla,tabla,cuit,seccion_mantenimiento,fecha,novedad,tipo_novedad,html)
                values(null, 'comex', @r_cuit, 11, @created, 1,'comex', @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) 
      
    end 
  
    FETCH next from bn INTO  @r_cuit 

  END
  CLOSE bn
  DEALLOCATE bn 
END 
GO

Used By

No items found