dbo.Imperium_buscar_clientes

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

3
Name Data Type Length Description
@p_cliente int 4
@desde date 3
@hasta date 3

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
-- exec imperium_buscar_clientes null, '2024-06-25','2024-07-25' 

CREATE OR ALTER PROCEDURE dbo.Imperium_buscar_clientes
 -- Add the parameters for the stored procedure here
 @p_cliente           int = null,
    @desde date = null,
    @hasta date = null
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here
-- and periodo_c.fecha_afectacion between @desde and @hasta 
 declare @periodo int = dbo.PeriodoVencido()

 declare @estado_rec varchar(1) = 'A'

 if (@p_cliente is null) begin


  select 'sincliente', clientes.cliente, clientes.nombre_cliente, 
        led_contratos.vigencia_desde, led_contratos.vigencia_hasta,
  led_contratos.minimo_recursos, led_contratos.maximo_recursos, led_contratos.autogestion,
  ISNULL(contratistas.total_contratistas, 0) AS total_contratistas,
  ISNULL(subcontratistas.total_subcontratistas, 0) AS total_subcontratistas,
  ISNULL(empleados.total_empleados, 0) AS total_empleados,
  ISNULL(vehiculos.total_vehiculos, 0) AS total_vehiculos,
  ISNULL(contratistas.total_contratistas, 0) + ISNULL(subcontratistas.total_subcontratistas, 0) + ISNULL(empleados.total_empleados, 0) + ISNULL(vehiculos.total_vehiculos, 0) AS total_recursos,
  ISNULL(docs.total_docs, 0) AS total_docs
  from clientes inner join led_contratos on clientes.cliente = led_contratos.cliente
  inner join clientes_productos on (clientes.cliente=clientes_productos.cliente and clientes_productos.id_producto=73)
  left outer join
   (select led_contratistas.cliente, count(*) AS total_contratistas
   from led_contratistas inner join led_contratista_periodo
   on led_contratistas.contratista = led_contratista_periodo.contratista
   where led_contratista_periodo.fecha_afectacion between @desde and @hasta 
            /*led_contratista_periodo.periodo = dbo.PeriodoVencido()*/
  /* and led_contratistas.estado_contratista = @estado_rec*/
   group by led_contratistas.cliente) contratistas
  on clientes.cliente = contratistas.cliente
  
  
  left outer join
   (select led_contratistas.cliente, count(*) AS total_subcontratistas
   from led_contratistas inner join led_subcontratista_periodo
   on led_contratistas.contratista = led_subcontratista_periodo.subcontratista

   inner join led_contratistas contratista1 ON led_contratistas.contratista_1 = contratista1.contratista

   where /*led_subcontratista_periodo.periodo = dbo.PeriodoVencido()*/
                led_subcontratista_periodo.fecha_afectacion between @desde and @hasta 
   /* and led_contratistas.estado_contratista = @estado_rec
    and contratista1.estado_contratista = @estado_rec*/

   group by led_contratistas.cliente) subcontratistas
  on clientes.cliente = subcontratistas.cliente

  
  left outer join
   (select led_empleados.cliente, count(*) AS total_empleados
   from led_empleados inner join led_empleados_periodo
   on led_empleados.empleado = led_empleados_periodo.empleado

   inner join led_contratistas contratista1 ON led_empleados.contratista_1 = contratista1.contratista

   where led_empleados_periodo.fecha_afectacion between @desde and @hasta 
            
            /*led_empleados_periodo.periodo = dbo.PeriodoVencido()*/
   /* and led_empleados.estado_empleado = @estado_rec
    and contratista1.estado_contratista = @estado_rec*/

   group by led_empleados.cliente) empleados
  on clientes.cliente = empleados.cliente
 
  left outer join
   (select led_vehiculos.cliente, count(*) AS total_vehiculos
   from led_vehiculos inner join led_vehiculos_periodo
   on led_vehiculos.vehiculo = led_vehiculos_periodo.vehiculo

   inner join led_contratistas contratista1 ON led_vehiculos.contratista_1 = contratista1.contratista

   where led_vehiculos_periodo.fecha_afectacion between @desde and @hasta 
            /*led_vehiculos_periodo.periodo = dbo.PeriodoVencido()*/
   /* and led_vehiculos.estado_vehiculo = @estado_rec
    and contratista1.estado_contratista = @estado_rec*/

   group by led_vehiculos.cliente) vehiculos
  on clientes.cliente = vehiculos.cliente
  
  left outer join
   (select data.cliente, SUM(data.total_documentos) as total_docs
   from
    (select led_docs.cliente, COUNT(*) AS total_documentos
    from led_docs 
    inner join led_contratistas on led_docs.contratista = led_contratistas.contratista
    inner join led_cliente_contratista on 
       (led_docs.tipo_doc = led_cliente_contratista.tipo_doc
       and led_docs.cliente = led_cliente_contratista.cliente
       and led_contratistas.tipo_contratista = led_cliente_contratista.tipo_contratista)
    where led_docs.periodo = dbo.PeriodoVencido()
    and led_docs.doc_id_lista is null
    and led_docs.estado_doc IN ('N','I','V','R')
    and led_cliente_contratista.activo = 1
    and led_cliente_contratista.requiere_upload = 1
    and led_cliente_contratista.verificacion = 'F'
     and led_contratistas.estado_contratista = @estado_rec
    group by led_docs.cliente

    UNION

    select led_docs.cliente, COUNT(*) AS total_documentos
    from led_docs 
    inner join led_empleados on led_docs.empleado = led_empleados.empleado
    inner join led_cliente_empleado on 
       (led_docs.tipo_doc = led_cliente_empleado.tipo_doc
       and led_docs.cliente = led_cliente_empleado.cliente
       and led_empleados.tipo_empleado = led_cliente_empleado.tipo_empleado)
    where led_docs.periodo = dbo.PeriodoVencido()
    and led_docs.doc_id_lista is null
    and led_docs.estado_doc IN ('N','I','V','R')
    and led_cliente_empleado.activo = 1
    and led_cliente_empleado.requiere_upload = 1
    and led_cliente_empleado.verificacion = 'F'
     and led_empleados.estado_empleado = @estado_rec
    group by led_docs.cliente

    UNION

    select led_docs.cliente, COUNT(*) AS total_documentos
    from led_docs 
    inner join led_vehiculos on led_docs.vehiculo = led_vehiculos.vehiculo
    inner join led_cliente_vehiculo on 
       (led_docs.tipo_doc = led_cliente_vehiculo.tipo_doc
       and led_docs.cliente = led_cliente_vehiculo.cliente
       and led_vehiculos.tipo_vehiculo = led_cliente_vehiculo.tipo_vehiculo)
    where led_docs.periodo = dbo.PeriodoVencido()
    and led_docs.doc_id_lista is null
    and led_docs.estado_doc IN ('N','I','V','R')
    and led_cliente_vehiculo.activo = 1
    and led_cliente_vehiculo.requiere_upload = 1
    and led_cliente_vehiculo.verificacion = 'F'
     and led_vehiculos.estado_vehiculo = @estado_rec
    group by led_docs.cliente) data
   group by data.cliente) docs
  on clientes.cliente = docs.cliente
  
  
  where clientes.estado_cliente = 'A'
        and clientes_productos.activo=1
  /*and led_contratos.vigencia_hasta >= GETDATE()
   and clientes.acceso_led = 1*/

  order by clientes.nombre_cliente



 end else


  select clientes.cliente, clientes.nombre_cliente, led_contratos.vigencia_desde, led_contratos.vigencia_hasta,
  led_contratos.minimo_recursos, led_contratos.maximo_recursos, led_contratos.autogestion,
  ISNULL(contratistas.total_contratistas, 0) AS total_contratistas,
  ISNULL(subcontratistas.total_subcontratistas, 0) AS total_subcontratistas,
  ISNULL(empleados.total_empleados, 0) AS total_empleados,
  ISNULL(vehiculos.total_vehiculos, 0) AS total_vehiculos,
  ISNULL(contratistas.total_contratistas, 0) + ISNULL(subcontratistas.total_subcontratistas, 0) + ISNULL(empleados.total_empleados, 0) + ISNULL(vehiculos.total_vehiculos, 0) AS total_recursos,
  ISNULL(docs.total_docs, 0) AS total_docs
  from clientes inner join led_contratos on clientes.cliente = led_contratos.cliente
  
  left outer join
   (select led_contratistas.cliente, count(*) AS total_contratistas
   from led_contratistas inner join led_contratista_periodo
   on led_contratistas.contratista = led_contratista_periodo.contratista
   where led_contratista_periodo.periodo = dbo.PeriodoVencido()
    and led_contratistas.estado_contratista = @estado_rec
   group by led_contratistas.cliente) contratistas
  on clientes.cliente = contratistas.cliente
  
  
  left outer join
   (select led_contratistas.cliente, count(*) AS total_subcontratistas
   from led_contratistas inner join led_subcontratista_periodo
   on led_contratistas.contratista = led_subcontratista_periodo.subcontratista

   inner join led_contratistas contratista1 ON led_contratistas.contratista_1 = contratista1.contratista

   where led_subcontratista_periodo.periodo = dbo.PeriodoVencido()

    and led_contratistas.estado_contratista = @estado_rec
    and contratista1.estado_contratista = @estado_rec
   group by led_contratistas.cliente) subcontratistas
  on clientes.cliente = subcontratistas.cliente

  
  left outer join
   (select led_empleados.cliente, count(*) AS total_empleados
   from led_empleados inner join led_empleados_periodo
   on led_empleados.empleado = led_empleados_periodo.empleado

   inner join led_contratistas contratista1 ON led_empleados.contratista_1 = contratista1.contratista

   where led_empleados_periodo.periodo = dbo.PeriodoVencido()
    and led_empleados.estado_empleado = @estado_rec
    and contratista1.estado_contratista = @estado_rec
   group by led_empleados.cliente) empleados
  on clientes.cliente = empleados.cliente
 
  left outer join
   (select led_vehiculos.cliente, count(*) AS total_vehiculos
   from led_vehiculos inner join led_vehiculos_periodo
   on led_vehiculos.vehiculo = led_vehiculos_periodo.vehiculo

   inner join led_contratistas contratista1 ON led_vehiculos.contratista_1 = contratista1.contratista

   where led_vehiculos_periodo.periodo = dbo.PeriodoVencido()
    and led_vehiculos.estado_vehiculo = @estado_rec
    and contratista1.estado_contratista = @estado_rec
   group by led_vehiculos.cliente) vehiculos
  on clientes.cliente = vehiculos.cliente
  
  left outer join
   (select data.cliente, SUM(data.total_documentos) as total_docs
   from
    (select led_docs.cliente, COUNT(*) AS total_documentos
    from led_docs 
    inner join led_contratistas on led_docs.contratista = led_contratistas.contratista
    inner join led_cliente_contratista on 
       (led_docs.tipo_doc = led_cliente_contratista.tipo_doc
       and led_docs.cliente = led_cliente_contratista.cliente
       and led_contratistas.tipo_contratista = led_cliente_contratista.tipo_contratista)
    where led_docs.periodo = dbo.PeriodoVencido()
    and led_docs.doc_id_lista is null
    and led_docs.estado_doc IN ('N','I','V','R')
    and led_cliente_contratista.activo = 1
    and led_cliente_contratista.requiere_upload = 1
    and led_cliente_contratista.verificacion = 'F'
     and led_contratistas.estado_contratista = @estado_rec
    group by led_docs.cliente

    UNION

    select led_docs.cliente, COUNT(*) AS total_documentos
    from led_docs 
    inner join led_empleados on led_docs.empleado = led_empleados.empleado
    inner join led_cliente_empleado on 
       (led_docs.tipo_doc = led_cliente_empleado.tipo_doc
       and led_docs.cliente = led_cliente_empleado.cliente
       and led_empleados.tipo_empleado = led_cliente_empleado.tipo_empleado)
    where led_docs.periodo = dbo.PeriodoVencido()
    and led_docs.doc_id_lista is null
    and led_docs.estado_doc IN ('N','I','V','R')
    and led_cliente_empleado.activo = 1
    and led_cliente_empleado.requiere_upload = 1
    and led_cliente_empleado.verificacion = 'F'
     and led_empleados.estado_empleado = @estado_rec
    group by led_docs.cliente

    UNION

    select led_docs.cliente, COUNT(*) AS total_documentos
    from led_docs 
    inner join led_vehiculos on led_docs.vehiculo = led_vehiculos.vehiculo
    inner join led_cliente_vehiculo on 
       (led_docs.tipo_doc = led_cliente_vehiculo.tipo_doc
       and led_docs.cliente = led_cliente_vehiculo.cliente
       and led_vehiculos.tipo_vehiculo = led_cliente_vehiculo.tipo_vehiculo)
    where led_docs.periodo = dbo.PeriodoVencido()
    and led_docs.doc_id_lista is null
    and led_docs.estado_doc IN ('N','I','V','R')
    and led_cliente_vehiculo.activo = 1
    and led_cliente_vehiculo.requiere_upload = 1
    and led_cliente_vehiculo.verificacion = 'F'
     and led_vehiculos.estado_vehiculo = @estado_rec
    group by led_docs.cliente) data
   group by data.cliente) docs
  on clientes.cliente = docs.cliente
  
  
  where clientes.estado_cliente = 'A'
  and led_contratos.vigencia_hasta >= GETDATE()
  and clientes.acceso_led = 1
  and clientes.cliente = @p_cliente
  order by clientes.nombre_cliente




 
END
GO

Used By

No items found