dbo.obtener_cliente_usuario

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

2
Name Data Type Length Description
@p_id_usuario int 4
@id_producto int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec obtener_cliente_usuario 0,12
exec obtener_cliente_usuario 12,0
*/



CREATE OR ALTER PROCEDURE dbo.obtener_cliente_usuario 
@p_id_usuario int,
@id_producto int -- Id_informe_comercial
AS

BEGIN
 declare @cliente int
    declare @tipo_paquete char(1)
 declare @fecha_desde date
 declare @fecha_hasta date
 declare @consumos int 
 declare @dias int
 declare @estado         char(1)
 declare @estado_usuario char(1)
 declare @fin char(1) = 'N'

 if @p_id_usuario in (0,12) set @p_id_usuario = 15342812
 if (@id_producto = 0) set @id_producto = 12

 set @cliente = null
 set @estado = '0'
 set @estado_usuario = '0'

    set @cliente = (select top 1 cliente 
  from usuarios_productos 
  where usuarios_productos.user_id = @p_id_usuario 
    and usuarios_productos.id_producto = @id_producto
    and usuarios_productos.activo = 1 )

 if (@cliente is not null)
 begin
  set @estado = (select estado_cliente from clientes where cliente = @cliente)
  if (select count(*) 
     from usuarios_productos up
       where up.cliente = @cliente 
      and up.id_producto = @id_producto 
      and up.activo = 1) > 0 
  begin
   set @estado_usuario = 'A'
  end
 end 

 /* Agregado para que deje entrar a los clientes que tienen otro producto */
 if (@cliente is null) 
 begin
    set @cliente = (select top 1 cliente 
     from usuarios_productos 
        where usuarios_productos.user_id = @p_id_usuario 
         and usuarios_productos.activo = 1 ) 
    if (@cliente is not null) 
    begin
    select '0' as error,
    null as usuario_limite_consumo,
    @cliente as client_id,
    null as nombre_cliente,
    null as fecha_desde,
    null as fecha_hasta,
    null as tipo_paquete,
    '99' as id_producto,
    null as cliente_bloquear_consumo,
    null as cliente_limite_consumo,
    null as usuario_consumido,
    null as cliente_consumido
    set @fin = 'S'
    end
 end 
 /* fin del agregado */

 if (@fin = 'N') 
 begin
 if (@cliente is null or @estado != 'A' or @estado_usuario != 'A') 
 begin
      -- ese usuario no tiene el producto activo
   select '99' as error,
    null as usuario_limite_consumo,
    @cliente as client_id,
    null as nombre_cliente,
    null as fecha_desde,
    null as fecha_hasta,
    null as tipo_paquete,
    null as id_producto,
    null as cliente_bloquear_consumo,
    null as cliente_limite_consumo,
    null as usuario_consumido,
          null as cliente_consumido
 end 

 else 

 begin 
 
 select @tipo_paquete = clientes_productos.tipo_paquete, 
        @fecha_desde  = clientes_productos.fecha_desde, 
     @fecha_hasta  = clientes_productos.fecha_hasta  
     from clientes_productos
  where cliente = @cliente
  and id_producto = @id_producto

 if (@tipo_paquete != 'P' or @tipo_paquete is null) 
  begin
   set @fecha_hasta = GETDATE()
   set @dias = CONVERT(int, DAY(getdate())) 
   set @dias = @dias - 1
   set @fecha_desde = dateadd(day,@dias*(-1),@fecha_hasta)
  end 

     select top 1 '0' as error,
         up.limite_consumo as usuario_limite_consumo,
   @cliente as client_id,
   clientes.nombre_cliente as nombre_cliente,
   @fecha_desde as fecha_desde,
         @fecha_hasta as fecha_hasta,
   cp.tipo_paquete,
         up.id_producto,
   cp.bloquear_consumo cliente_bloquear_consumo,
   cp.limite_consumo cliente_limite_consumo,

         (select count(subquery.resultado) as consultas
   from (
       select distinct nombre_persona,
              cuit_consultado,
              (CONVERT(VARCHAR(10),usuarios_consumos.created, 103)) as resultado,
        user_id
    from usuarios_consumos 
    inner join padrones on padrones.identificacion = cuit_consultado 
        and padrones.habilitado = '1'
    where id_producto = @id_producto
    and usuarios_consumos.user_id = @p_id_usuario
    and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta)
    subquery)
   as usuario_consumido,
 
   (select count(subquery.resultado) as consultas
   from (
         select distinct nombre_persona,
              cuit_consultado,
              (CONVERT(VARCHAR(10),usuarios_consumos.created, 103)) as resultado,
        user_id
     from usuarios_consumos 
     inner join padrones on padrones.identificacion = cuit_consultado 
         and padrones.habilitado = '1'
     where id_producto = @id_producto
     and usuarios_consumos.user_id in(select distinct user_id from usuarios_productos where cliente = @cliente) 
     and convert(date,usuarios_consumos.created) between @fecha_desde and @fecha_hasta)
     subquery)
     as cliente_consumido

   from usuarios_productos up

   left join clientes_productos cp 
     on cp.cliente = @cliente
  and cp.id_producto = @id_producto 
  and cp.activo = 1

   left join clientes
     on clientes.cliente = @cliente
 
  where up.user_id = @p_id_usuario
    and up.id_producto = @id_producto 
    and up.activo = 1 

  end 
  end 

END

GO

Used By

No items found