dbo.obtener_registro_consumos

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

7
Name Data Type Length Description
@id_cliente1 varchar 20
@user_id1 varchar 20
@fecha_desde1 varchar 20
@fecha_hasta1 varchar 20
@prod int 4
@tipo_consulta char 1
@todos char 1

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [obtener_registro_consumos] '5300349',0,'2025-01-08','2025-01-08', '86','A','T'
exec [obtener_registro_consumos] '1028886332',0,'2024-06-18','2024-06-19', '26','C','T'


exec [obtener_registro_consumos]  2254875,614149624,'2025-01-01','2025-01-08',12,'C'
exec [obtener_registro_consumos]  2254875,614149624,'2025-01-01','2025-01-08',12,'A'


*/


CREATE OR ALTER PROCEDURE dbo.obtener_registro_consumos
@id_cliente1 varchar(20),
@user_id1 varchar(20), 
@fecha_desde1 varchar(20),
@fecha_hasta1 varchar(20),
@prod int, 
@tipo_consulta char(1),  -- C: Todo el cliente, U: Solo el user_id, F: Todos los clientes unificados en la factura -- A: APIs
@todos char(1) = null 
AS

BEGIN
    SET NOCOUNT ON;
 set @id_cliente1  = RTRIM(@id_cliente1)
 set @user_id1     = RTRIM(@user_id1)
 set @fecha_desde1 = RTRIM(@fecha_desde1)
 set @fecha_hasta1 = RTRIM(@fecha_hasta1)
 if (@id_cliente1  = '') begin set @id_cliente1 = null end 
 if (@user_id1  = '') begin set @user_id1 = null end 
 if (@fecha_desde1 = '') begin set @fecha_desde1 = null end 
 if (@fecha_hasta1 = '') begin set @fecha_hasta1 = null end 

 declare @id_cliente int   = convert(int, @id_cliente1)
 declare @user_id int      = convert(int, @user_id1)
 declare @fecha_desde date = convert(date, @fecha_desde1)
 declare @fecha_hasta date = convert(date, @fecha_hasta1)
 /*
     set @fecha_hasta = '2024-03-31'
     set @fecha_desde = '2024-03-01'
  */


/* Enero 2025: PARA PANEL DE APIS */
if (@tipo_consulta = 'A')
begin 

            select /*@id_cliente, @prod, @fecha_desde1,@fecha_hasta1, 'MARITAaaaa' as GGGG, */
   usuarios_consumos.url as endpoint,
            usuarios_consumos.ip as ip, 
            null as nombre_persona,
            cuit_consultado ,
            usuarios_consumos.created2 as fecha_oculta,
            (CONVERT(VARCHAR(10),usuarios_consumos.created2, 103)) as fecha, 
            id_producto,
            upper(productos.nombre_producto) as nombre_producto,
            /*
                        'PERSONAL CREDIT VALIDATION'  as nombre_producto,
                        */

            id_transaccion,
   username
            from usuarios_consumos 
      INNER JOIN dbo.DelimitedSplit8K(@prod, ',') Segmentado on usuarios_consumos.id_producto = Segmentado.Item
            inner join resultados_api on usuarios_consumos.id_transaccion = resultados_api.transaction_id   
            left join productos on productos.producto = usuarios_consumos.id_producto
            --saco estos join porque no muestra datos de esas tablas
            --left join padrones on (padrones.identificacion = cuit_consultado and padrones.habilitado = '1' and identificador in (select identificador from identificadores where identificadores.country_code = 'AR'))
            left join users on users.user_id = usuarios_consumos.user_id
            --left join clientes on cliente = @cliente 
    /*        where id_producto = @id_producto*/
            where convert(date,usuarios_consumos.created) between @fecha_desde1 and @fecha_hasta1 --> lo agregamos para que la consulta sea más rápida por los índices
            and convert(date,usuarios_consumos.created2) between @fecha_desde1 and @fecha_hasta1 --> exacto por segundos
            and usuarios_consumos.user_id in (select distinct user_id from usuarios_productos where cliente = @id_cliente) 
            and (ip not in ('186.189.232.93') or ip like '192%')
        --and resultados_api.codigo_resultado != '306'
    and isnull(resultados_api.codigo_resultado,'0') !='306'
        and ARREGLO_DATOS_POR_FALLAS is null
            order by fecha_oculta
   RETURN
end

if (@prod = 16) -- Si es Monitoreo de Cartera
begin
 if (@tipo_consulta = 'C') 

  begin
   if (@todos = 'T')
   begin
    select 'A', nombre_persona,
    monitoreos.cuit as cuit_consultado,
    fecha_vigencia_mantenimiento as fecha_oculta,
    fecha_vigencia_mantenimiento as fecha, 
    productos.nombre_producto,
    username 
    from monitoreos 
    inner join padrones on padrones.identificacion = monitoreos.cuit and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto =  @prod
     left join users on users.user_id = monitoreos.user_id
     left join clientes on clientes.cliente =  @id_cliente 
    where monitoreos.cliente =  @id_cliente
    and monitoreos.visible = 1
    and exists (select * from clientes_productos where cliente = monitoreos.cliente and id_producto =  @prod)
    and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >  @fecha_desde)
    order by username, fecha_oculta 
   end
   else 
   begin
    select distinct 'A',nombre_persona,
    monitoreos.cuit as cuit_consultado,
    convert(date, monitoreos.fecha_vigencia_mantenimiento) as fecha_oculta,
    (CONVERT(VARCHAR(10),monitoreos.fecha_vigencia_mantenimiento, 103)) as fecha, 
    productos.nombre_producto,
    username 
    from monitoreos 
    inner join padrones on padrones.identificacion = monitoreos.cuit and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto =  @prod
     left join users on users.user_id = monitoreos.user_id
     left join clientes on clientes.cliente =  @id_cliente 
    where monitoreos.cliente =  @id_cliente
    and monitoreos.visible = 1
    and exists (select * from clientes_productos where cliente = monitoreos.cliente and id_producto =  @prod)
    and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >  @fecha_desde)
    order by username, fecha_oculta 
   end 
  end 
 if (@tipo_consulta = 'U') 

  begin
   if (@todos = 'T')
   begin
    select 'B',nombre_persona,
    monitoreos.cuit as cuit_consultado,
    monitoreos.fecha_desde as fecha_oculta,
    monitoreos.fecha_desde as fecha, 
    productos.nombre_producto,
    username
    from monitoreos 
    inner join padrones on padrones.identificacion = monitoreos.cuit
        and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto =  @prod
     left join users on users.user_id = monitoreos.user_id
     left join clientes on clientes.cliente =  @id_cliente 
    where monitoreos.user_id = @user_id
    and monitoreos.visible = 1
    and exists (select * from clientes_productos where cliente = monitoreos.cliente and id_producto =  @prod)
    and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >  @fecha_desde)
    order by username, fecha_oculta 
   end
   else 
   begin
    select distinct 'B',nombre_persona,
    monitoreos.cuit as cuit_consultado,
    convert(date, monitoreos.fecha_desde) as fecha_oculta,
    (CONVERT(VARCHAR(10),monitoreos.fecha_desde, 103)) as fecha, 
    productos.nombre_producto,
    username
    from monitoreos 
    inner join padrones on padrones.identificacion = monitoreos.cuit
        and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto =  @prod
     left join users on users.user_id = monitoreos.user_id
     left join clientes on clientes.cliente =  @id_cliente 
    where monitoreos.user_id = @user_id
    and monitoreos.visible = 1
    and exists (select * from clientes_productos where cliente = monitoreos.cliente and id_producto =  @prod)
    and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >  @fecha_desde)
    order by username, fecha_oculta 

   end

  end 
 if (@tipo_consulta = 'F') 
  begin
   if (@todos = 'T')
   begin
    select 'c',nombre_persona,
    monitoreos.cuit as cuit_consultado,
    monitoreos.fecha_desde as fecha_oculta,
    monitoreos.fecha_desde as fecha, 
    productos.nombre_producto,
    iif(isnull(clientes.cuit,'')!='',clientes.nombre_cliente + ' (' + clientes.cuit + ')',clientes.nombre_cliente)  as username 
    from monitoreos 
    inner join padrones on padrones.identificacion = monitoreos.cuit
        and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto =  @prod
     left join users on users.user_id = monitoreos.user_id
     left join clientes on clientes.cliente =  monitoreos.cliente 
    where monitoreos.cliente in (select distinct clientes_union.cliente 
    from clientes_union 
    inner join clientes_productos on (clientes_productos.cliente = clientes_union.cliente and producto = @prod and activo = 1) 
    where cliente_union = @id_cliente 
    )
    and monitoreos.visible = 1
    and exists (select * from clientes_productos where cliente = monitoreos.cliente and id_producto =  @prod)
    and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >  @fecha_desde) 
    order by username, fecha_oculta 
   end
   else
   begin
    select distinct 'c',nombre_persona,
    monitoreos.cuit as cuit_consultado,
    convert(date, monitoreos.fecha_desde) as fecha_oculta,
    (CONVERT(VARCHAR(10),monitoreos.fecha_desde, 103)) as fecha, 
    productos.nombre_producto,
    iif(isnull(clientes.cuit,'')!='',clientes.nombre_cliente + ' (' + clientes.cuit + ')',clientes.nombre_cliente)  as username 
    from monitoreos 
    inner join padrones on padrones.identificacion = monitoreos.cuit
        and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto =  @prod
     left join users on users.user_id = monitoreos.user_id
     left join clientes on clientes.cliente =  monitoreos.cliente 
    where monitoreos.cliente in (select distinct clientes_union.cliente 
    from clientes_union 
    inner join clientes_productos on (clientes_productos.cliente = clientes_union.cliente and producto = @prod and activo = 1) 
    where cliente_union = @id_cliente 
    )
    and monitoreos.visible = 1
    and exists (select * from clientes_productos where cliente = monitoreos.cliente and id_producto =  @prod)
    and (fecha_vigencia_mantenimiento is null or fecha_vigencia_mantenimiento >  @fecha_desde) 
    order by username, fecha_oculta
   end 

  end 
end
else 
begin


 if (@tipo_consulta = 'C') 
 begin 
  if (@prod = 90) --FIDECHECK ONLINE NECESITA EL ID DE LA TABLA Y REPETIRÍA LOS CONSUMOS EN LOS OTROS CASOS
   begin
    if (@todos = 'T')
    begin
     select nombre_persona,
     cuit_consultado,
     usuarios_consumos.created as fecha_oculta,
     usuarios_consumos.created as fecha, 
     productos.nombre_producto,
     username,usuarios_consumos.id_transaccion AS idpdf
     from usuarios_consumos 
     left join padrones on padrones.identificacion = cuit_consultado 
         and padrones.habilitado = '1'
      left join productos on productos.producto = usuarios_consumos.id_producto
      left join users on users.user_id = usuarios_consumos.user_id
      left join clientes on cliente = @id_cliente 
     where id_producto = @prod
     and usuarios_consumos.user_id in(select distinct user_id from usuarios_productos where cliente = @id_cliente) 
     and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta 
     order by username, fecha_oculta  
    end
    else
    begin
     select distinct nombre_persona,
     cuit_consultado,
     convert(date, usuarios_consumos.created) as fecha_oculta,
     (CONVERT(VARCHAR(10),usuarios_consumos.created, 103)) as fecha, 
     productos.nombre_producto,
     username,usuarios_consumos.id_transaccion AS idpdf
     from usuarios_consumos 
     left join padrones on padrones.identificacion = cuit_consultado 
         and padrones.habilitado = '1'
      left join productos on productos.producto = usuarios_consumos.id_producto
      left join users on users.user_id = usuarios_consumos.user_id
      left join clientes on cliente = @id_cliente 
     where id_producto = @prod
     and usuarios_consumos.user_id in(select distinct user_id from usuarios_productos where cliente = @id_cliente) 
     and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta 
     order by username, fecha_oculta     
    end
   end
   
   if (@prod = 10) -- IV cuenta por gestiones de contrapartes 
   begin
    select nombre_persona,
      identificacion as cuit_consultado,
      ln_gestiones.desde as fecha_oculta,
      ln_gestiones.desde as fecha,
      productos.nombre_producto,
      username,ln_contrapartes.contraparte AS idpdf
     from ln_contrapartes 
     inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte 
     inner join padrones on padrones.id_padron = ln_contrapartes.id_padron 
     left join productos on productos.producto = ln_contrapartes.servicio_contratado
     left join users on users.user_id = ln_contrapartes.created_by
     where ln_contrapartes.cliente = @id_cliente 
     and ln_contrapartes.servicio_contratado = @prod
     and ln_gestiones.desde between @fecha_desde and @fecha_hasta
   end
  
   if (@prod != 90 and @prod != 10)
   begin
    if (@todos = 'T')
    begin
     --select nombre_persona,
     select /*nombre_persona as full_name ,*/
     /*cuit_consultado as tax_id,*/
                    iif(padrones.cuerpo_clave is null, cuit_consultado,cuerpo_clave) as national_id,
/* usuarios_consumos.created as fecha_oculta,*/
     usuarios_consumos.created2 as transaction_date,
     productos.nombre_producto as api_name,
   
     username, usuarios_consumos.id_transaccion as transaction_id 
     from usuarios_consumos 
     left join padrones on (padrones.identificacion = cuit_consultado  and padrones.habilitado = '1')
         --and padrones.identificador = 'CUIT' 
     /*left join padrones on (padrones.identificacion = cuit_consultado or 
      (LEN(cuit_consultado) <= 8 and LEN(cuit_consultado) >=4 
      and (padrones.cuerpo_clave = cuit_consultado or
       padrones.cuerpo_clave = right('00000000'+cuit_consultado,8)))
       and padrones.habilitado = '1')*/

      left join productos on productos.producto = usuarios_consumos.id_producto
      left join users on users.user_id = usuarios_consumos.user_id
      left join clientes on cliente = @id_cliente 
     where id_producto = @prod
     and usuarios_consumos.user_id in(select distinct user_id from usuarios_productos where cliente = @id_cliente) 
     and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta 
     order by username, transaction_date   
    end
    else
    begin
     --select nombre_persona,
   
              select distinct 'gd' as GGGG ,nombre_persona,
     cuit_consultado,
     convert(date, usuarios_consumos.created) as fecha_oculta,
     (CONVERT(VARCHAR(10),usuarios_consumos.created, 103)) as fecha, 
     productos.nombre_producto,
   
     username
     from usuarios_consumos 
     left join padrones on padrones.identificacion = cuit_consultado 
         and padrones.habilitado = '1'
         --and padrones.identificador = 'CUIT' 
     /*left join padrones on (padrones.identificacion = cuit_consultado or 
      (LEN(cuit_consultado) <= 8 and LEN(cuit_consultado) >=4 
      and (padrones.cuerpo_clave = cuit_consultado or
       padrones.cuerpo_clave = right('00000000'+cuit_consultado,8)))
       and padrones.habilitado = '1')*/

      left join productos on productos.producto = usuarios_consumos.id_producto
      left join users on users.user_id = usuarios_consumos.user_id
      left join clientes on cliente = @id_cliente 
     where id_producto = @prod
     and usuarios_consumos.user_id in(select distinct user_id from usuarios_productos where cliente = @id_cliente) 
     and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta 
     order by username, fecha_oculta   
           

RETURN

    end
   end 
 end
 if (@tipo_consulta = 'U') 

  begin
   if (@todos = 'T')
   begin
    select nombre_persona,
    cuit_consultado,
    usuarios_consumos.created as fecha_oculta,
    usuarios_consumos.created as fecha, 
    productos.nombre_producto,

    username
    from usuarios_consumos 
    left join padrones on padrones.identificacion = cuit_consultado 
        and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto = usuarios_consumos.id_producto
     left join users on users.user_id = usuarios_consumos.user_id
     left join clientes on cliente = @id_cliente 
    where id_producto = @prod
    and usuarios_consumos.user_id = @user_id
    and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta 
    order by username, fecha_oculta 
   end 
   else 
   begin
    select distinct nombre_persona,
    cuit_consultado,
    convert(date, usuarios_consumos.created) as fecha_oculta,
    (CONVERT(VARCHAR(10),usuarios_consumos.created, 103)) as fecha, 
    productos.nombre_producto,

    username
    from usuarios_consumos 
    left join padrones on padrones.identificacion = cuit_consultado 
        and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto = usuarios_consumos.id_producto
     left join users on users.user_id = usuarios_consumos.user_id
     left join clientes on cliente = @id_cliente 
    where id_producto = @prod
    and usuarios_consumos.user_id = @user_id
    and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta 
    
   end 
 end

 if (@tipo_consulta = 'F') 
 
  begin
   if (@todos = 'T')
   begin
    select nombre_persona,
    cuit_consultado,
    usuarios_consumos.created as fecha_oculta,
    usuarios_consumos.created as fecha, 
    productos.nombre_producto,
   
    --clientes.nombre_cliente as username
    iif(isnull(clientes.cuit,'')!='',clientes.nombre_cliente + ' (' + clientes.cuit + ')',clientes.nombre_cliente)  as username 


    from usuarios_consumos 
    left join padrones on padrones.identificacion = cuit_consultado 
        and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto = usuarios_consumos.id_producto
     left join users on users.user_id = usuarios_consumos.user_id
     left join usuarios_productos on usuarios_productos.user_id = usuarios_consumos.user_id 
     left join clientes on clientes.cliente = usuarios_productos.cliente 
    where usuarios_consumos.id_producto = @prod
    and usuarios_consumos.user_id 
      in (select distinct user_id from usuarios_productos 
       where cliente 
          --in (select distinct cliente from clientes_union where cliente_union = @id_cliente))

          in (select distinct clientes_union.cliente 
    from clientes_union 
    inner join clientes_productos on (clientes_productos.cliente = clientes_union.cliente and producto = @prod and activo = 1) 
    where cliente_union = @id_cliente 
    ))


    and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta 
    order by username, fecha_oculta 
   end
   else
   begin
    select distinct nombre_persona,
    cuit_consultado,
    convert(date, usuarios_consumos.created) as fecha_oculta,
    (CONVERT(VARCHAR(10),usuarios_consumos.created, 103)) as fecha, 
    productos.nombre_producto,
   
    --clientes.nombre_cliente as username
    iif(isnull(clientes.cuit,'')!='',clientes.nombre_cliente + ' (' + clientes.cuit + ')',clientes.nombre_cliente)  as username 


    from usuarios_consumos 
    left join padrones on padrones.identificacion = cuit_consultado 
        and padrones.habilitado = '1'
        --and padrones.identificador = 'CUIT'
     left join productos on productos.producto = usuarios_consumos.id_producto
     left join users on users.user_id = usuarios_consumos.user_id
     left join usuarios_productos on usuarios_productos.user_id = usuarios_consumos.user_id 
     left join clientes on clientes.cliente = usuarios_productos.cliente 
    where usuarios_consumos.id_producto = @prod
    and usuarios_consumos.user_id 
      in (select distinct user_id from usuarios_productos 
       where cliente 
          --in (select distinct cliente from clientes_union where cliente_union = @id_cliente))

          in (select distinct clientes_union.cliente 
    from clientes_union 
    inner join clientes_productos on (clientes_productos.cliente = clientes_union.cliente and producto = @prod and activo = 1) 
    where cliente_union = @id_cliente 
    ))


    and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta 
    order by username, fecha_oculta 
   end
 end
  end  
END
GO