dbo.Imperium_vista_contratista_Cumplimiento_Mensual_todos_29062022

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_contratista int 4
@p_cliente int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================

/*
exec Imperium_vista_contratista_Cumplimiento_Mensual_todos null,7048064

*/



CREATE OR ALTER PROCEDUREdbo.Imperium_vista_contratista_Cumplimiento_Mensual_todos_29062022 
 -- Add the parameters for the stored procedure here
 @p_contratista int, 
 @p_cliente int = null 

AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 declare @vcliente int = @p_cliente

 declare @contratistas table (contratista int) 
 if (@p_contratista is not null) 
 begin
  insert into @contratistas values (@p_contratista)
 end 
 else 
 begin
  /* insert into @contratistas 
   select distinct led_contratistas.contratista
   from clientes 
   inner join led_contratos on clientes.cliente = led_contratos.cliente
   inner join led_contratistas on led_contratistas.cliente = clientes.cliente
   inner join led_contratista_periodo on led_contratistas.contratista = led_contratista_periodo.contratista
  
   where clientes.estado_cliente = 'A'
   and led_contratos.vigencia_hasta >= GETDATE()
   and led_contratista_periodo.periodo >= dbo.PeriodoVencido()
   and led_contratistas.estado_contratista = 'A'
   and clientes.acceso_led = 1
   and clientes.cliente = @vcliente*/

   set @p_contratista = null
 end 
    -- Insert statements for procedure here
 SELECT DATA.periodo, DATA.estado_doc, SUM(DATA.total_docs) AS cantidad,
  CASE
   WHEN DATA.estado_doc = 'E' THEN 1
   WHEN DATA.estado_doc = 'R' THEN 2
   WHEN DATA.estado_doc = 'P' THEN 3
   WHEN DATA.estado_doc = 'N' THEN 4
   WHEN DATA.estado_doc = 'I' THEN 5
   WHEN DATA.estado_doc = 'V' THEN 6
  END AS orden,

  DATEDIFF(MONTH, dbo.Periodo2Date(dbo.PeriodoAnual()), dbo.Periodo2Date(DATA.periodo))+1 AS IDX, 

  convert(date,convert(varchar,dbo.PeriodoVencido())+'01') as fecha_periodo_vencido

 FROM (
   SELECT led_docs.periodo, led_docs.status_doc AS estado_doc, COUNT(*) AS total_docs

   FROM led_docs INNER JOIN led_contratista_periodo ON
    (led_docs.contratista = led_contratista_periodo.contratista
     AND led_docs.periodo = led_contratista_periodo.periodo)

   INNER JOIN

    (SELECT led_cliente_contratista.tipo_doc, led_contratistas.contratista
    FROM led_cliente_contratista INNER JOIN led_contratistas
     ON led_cliente_contratista.cliente = led_contratistas.cliente
    INNER JOIN led_contratista_multi ON
     (led_contratistas.contratista = led_contratista_multi.contratista
     AND led_cliente_contratista.tipo_contratista = led_contratista_multi.tipo_contratista)
    WHERE 
     led_cliente_contratista.requiere_upload = 1
    AND led_cliente_contratista.activo = 1
    AND led_contratista_multi.activo = 1
    AND led_contratista_multi.vigencia_desde <= GETDATE()
    AND (led_contratista_multi.vigencia_hasta IS NULL OR led_contratista_multi.vigencia_hasta > GETDATE())
    GROUP BY led_cliente_contratista.tipo_doc, led_contratistas.contratista) CONFIG_TC 
    ON (led_docs.tipo_doc = CONFIG_TC.tipo_doc and CONFIG_TC.contratista = led_docs.contratista_1) 

   WHERE led_docs.contratista_1 in (select distinct led_contratistas.contratista
   from clientes 
   inner join led_contratos on clientes.cliente = led_contratos.cliente
   inner join led_contratistas on led_contratistas.cliente = clientes.cliente
   inner join led_contratista_periodo on led_contratistas.contratista = led_contratista_periodo.contratista
    
   where clientes.estado_cliente = 'A'
   and led_contratos.vigencia_hasta >= GETDATE()
   and led_contratista_periodo.periodo >= dbo.PeriodoVencido()
   and led_contratistas.estado_contratista = 'A'
   and clientes.acceso_led = 1
   and clientes.cliente = @vcliente) 
   AND led_docs.status_doc IN ('N', 'I', 'R', 'V', 'P', 'E')
   AND led_docs.periodo BETWEEN dbo.PeriodoAnual() AND dbo.PeriodoVencido()
   AND led_docs.led_seccion = 'C'
   AND led_docs.doc_id_lista IS NULL
   GROUP BY led_docs.periodo, led_docs.status_doc


   UNION


   SELECT led_docs.periodo, led_docs.status_doc AS estado_doc, COUNT(*) AS total_docs
   FROM led_docs 
   INNER JOIN led_empleados_periodo ON
    (led_docs.empleado = led_empleados_periodo.empleado
     AND led_docs.periodo = led_empleados_periodo.periodo)
   INNER JOIN

    (SELECT led_cliente_empleado.tipo_doc, led_empleados.contratista_1
    FROM led_cliente_empleado INNER JOIN led_empleados
     ON led_cliente_empleado.cliente = led_empleados.cliente
    INNER JOIN led_empleado_multi ON
     (led_empleados.empleado = led_empleado_multi.empleado
     AND led_cliente_empleado.tipo_empleado = led_empleado_multi.tipo_empleado)
    WHERE led_cliente_empleado.requiere_upload = 1
    AND led_cliente_empleado.activo = 1
    AND led_empleado_multi.activo = 1
    AND led_empleado_multi.vigencia_desde <= GETDATE()
    AND (led_empleado_multi.vigencia_hasta IS NULL OR led_empleado_multi.vigencia_hasta > GETDATE())
    GROUP BY led_cliente_empleado.tipo_doc,  led_empleados.contratista_1) CONFIG_TE ON 
    (led_docs.tipo_doc = CONFIG_TE.tipo_doc and CONFIG_TE.contratista_1 = led_docs.contratista_1) 

   WHERE led_docs.contratista_1 in (select distinct led_contratistas.contratista
   from clientes 
   inner join led_contratos on clientes.cliente = led_contratos.cliente
   inner join led_contratistas on led_contratistas.cliente = clientes.cliente
   inner join led_contratista_periodo on led_contratistas.contratista = led_contratista_periodo.contratista
    
   where clientes.estado_cliente = 'A'
   and led_contratos.vigencia_hasta >= GETDATE()
   and led_contratista_periodo.periodo >= dbo.PeriodoVencido()
   and led_contratistas.estado_contratista = 'A'
   and clientes.acceso_led = 1
   and clientes.cliente = @vcliente) 
   AND led_docs.status_doc IN ('N', 'I', 'R', 'V', 'P', 'E')
   AND led_docs.periodo BETWEEN dbo.PeriodoAnual() AND dbo.PeriodoVencido()
   AND led_docs.led_seccion = 'E'
   AND led_docs.doc_id_lista IS NULL
   GROUP BY led_docs.periodo, led_docs.status_doc


   UNION


   SELECT led_docs.periodo, led_docs.status_doc AS estado_doc, COUNT(*) AS total_docs
   FROM led_docs 
   INNER JOIN led_vehiculos_periodo ON
    (led_docs.vehiculo = led_vehiculos_periodo.vehiculo
     AND led_docs.periodo = led_vehiculos_periodo.periodo)
   INNER JOIN

    (SELECT led_cliente_vehiculo.tipo_doc, led_vehiculos.contratista_1
    FROM led_cliente_vehiculo 
    INNER JOIN led_vehiculos ON 
      (led_cliente_vehiculo.cliente = led_vehiculos.cliente
      AND led_cliente_vehiculo.tipo_vehiculo = led_vehiculos.tipo_vehiculo)
    WHERE led_cliente_vehiculo.requiere_upload = 1
    AND led_cliente_vehiculo.activo = 1
    GROUP BY led_cliente_vehiculo.tipo_doc, led_vehiculos.contratista_1) CONFIG_TV ON 
    (led_docs.tipo_doc = CONFIG_TV.tipo_doc and CONFIG_TV.contratista_1 = led_docs.contratista_1) 

   WHERE led_docs.contratista_1 in (select distinct led_contratistas.contratista
   from clientes 
   inner join led_contratos on clientes.cliente = led_contratos.cliente
   inner join led_contratistas on led_contratistas.cliente = clientes.cliente
   inner join led_contratista_periodo on led_contratistas.contratista = led_contratista_periodo.contratista
    
   where clientes.estado_cliente = 'A'
   and led_contratos.vigencia_hasta >= GETDATE()
   and led_contratista_periodo.periodo >= dbo.PeriodoVencido()
   and led_contratistas.estado_contratista = 'A'
   and clientes.acceso_led = 1
   and clientes.cliente = @vcliente) 
   AND led_docs.status_doc IN ('N', 'I', 'R', 'V', 'P', 'E')
   AND led_docs.periodo BETWEEN dbo.PeriodoAnual() AND dbo.PeriodoVencido()
   AND led_docs.led_seccion = 'V'
   AND led_docs.doc_id_lista IS NULL
   GROUP BY led_docs.periodo, led_docs.status_doc

   
   UNION


   SELECT led_docs.periodo, led_docs.status_doc AS estado_doc, COUNT(*) AS total_docs
   FROM led_docs 
   INNER JOIN led_subcontratista_periodo ON
    (led_docs.contratista = led_subcontratista_periodo.subcontratista
     AND led_docs.periodo = led_subcontratista_periodo.periodo)
   INNER JOIN

    (SELECT led_cliente_contratista.tipo_doc, led_contratistas.contratista_1
    FROM led_cliente_contratista 
    INNER JOIN led_contratistas ON 
      (led_cliente_contratista.cliente = led_contratistas.cliente
      AND led_cliente_contratista.tipo_contratista = led_contratistas.tipo_contratista)
    WHERE  led_contratistas.contratista_1 <> led_contratistas.contratista
    AND led_cliente_contratista.requiere_upload = 1
    AND led_cliente_contratista.activo = 1
    GROUP BY led_cliente_contratista.tipo_doc, led_contratistas.contratista_1) CONFIG_TS ON 
    (led_docs.tipo_doc = CONFIG_TS.tipo_doc and CONFIG_TS.contratista_1 = led_docs.contratista_1) 

   WHERE led_docs.contratista_1 in (select distinct led_contratistas.contratista
   from clientes 
   inner join led_contratos on clientes.cliente = led_contratos.cliente
   inner join led_contratistas on led_contratistas.cliente = clientes.cliente
   inner join led_contratista_periodo on led_contratistas.contratista = led_contratista_periodo.contratista
    
   where clientes.estado_cliente = 'A'
   and led_contratos.vigencia_hasta >= GETDATE()
   and led_contratista_periodo.periodo >= dbo.PeriodoVencido()
   and led_contratistas.estado_contratista = 'A'
   and clientes.acceso_led = 1
   and clientes.cliente = @vcliente) 
   AND led_docs.status_doc IN ('N', 'I', 'R', 'V', 'P', 'E')
   AND led_docs.periodo BETWEEN dbo.PeriodoAnual() AND dbo.PeriodoVencido()
   AND led_docs.led_seccion = 'C'
   AND led_docs.doc_id_lista IS NULL
   GROUP BY led_docs.periodo, led_docs.status_doc

 ) DATA

 GROUP BY DATA.periodo, DATA.estado_doc 
 ORDER BY DATA.periodo, orden
 
END

GO

Used By

No items found