dbo.LN_status_impe_comprobacion_datos

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

1
Name Data Type Length Description
@cliente int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/* 
exec [LN_status_impe_comprobacion_datos] 9936068 
*/

CREATE OR ALTER PROCEDURE dbo.[LN_status_impe_comprobacion_datos ] 
  @cliente int = 9936068
AS
BEGIN
 SET NOCOUNT ON;

 declare @p_contraparte int
 declare @p_contratista int
 declare @datos table (contraparte int, contratista int, desde date, hasta date, dias int, cantidad int) 

 DECLARE C_cursor CURSOR FOR
  select contraparte, id_imperium from LN_contrapartes where cliente = @cliente and activo = 1 --and contraparte = 107153
 OPEN C_cursor

 FETCH NEXT FROM C_cursor INTO @p_contraparte, @p_contratista
 WHILE @@fetch_status = 0
 BEGIN 
  insert into @datos 
  SELECT @p_contraparte, @p_contratista, SUBSTRING(CONVERT(VARCHAR,DATA.PERIODO),1,4) + '-' + SUBSTRING(CONVERT(VARCHAR,DATA.PERIODO),5,2) + '-01' AS PERIODO, 
      DATEADD(day,-1,
      (DATEADD(month,+1,CONVERT(DATE,SUBSTRING(CONVERT(VARCHAR,DATA.PERIODO),1,4) + '-' + SUBSTRING(CONVERT(VARCHAR,DATA.PERIODO),5,2) + '-01'))))
    AS FECHA_LIMITE, 
    null, 
      SUM(DATA.total_docs) AS cantidad
  FROM (
    SELECT led_docs.periodo, 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
     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_contratistas.contratista = @p_contratista
     AND 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) CONFIG_TC ON led_docs.tipo_doc = CONFIG_TC.tipo_doc

    WHERE led_docs.contratista_1 = @p_contratista
    AND led_docs.status_doc != 'V'
    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


    UNION ALL


    SELECT led_docs.periodo, 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
     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_empleados.contratista_1 = @p_contratista
     AND 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) CONFIG_TE ON led_docs.tipo_doc = CONFIG_TE.tipo_doc

    WHERE led_docs.contratista_1 = @p_contratista
    AND led_docs.status_doc != 'V'
    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


    UNION ALL


    SELECT led_docs.periodo, 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
     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_vehiculos.contratista_1 = @p_contratista
     AND led_cliente_vehiculo.requiere_upload = 1
     AND led_cliente_vehiculo.activo = 1
     GROUP BY led_cliente_vehiculo.tipo_doc) CONFIG_TV ON led_docs.tipo_doc = CONFIG_TV.tipo_doc

    WHERE led_docs.contratista_1 = @p_contratista
    AND led_docs.status_doc != 'V'
    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

   
    UNION ALL


    SELECT led_docs.periodo, 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
     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 = @p_contratista
     AND 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) CONFIG_TS ON led_docs.tipo_doc = CONFIG_TS.tipo_doc

    WHERE led_docs.contratista_1 = @p_contratista
    AND led_docs.status_doc != 'V'
    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

  ) DATA

  GROUP BY DATA.periodo
  ORDER BY DATA.periodo

  update @datos set dias = DATEDIFF(day,hasta,convert(date, getdate())) where contraparte = @p_contraparte
   FETCH NEXT FROM C_cursor INTO @p_contraparte, @p_contratista

 END 
 CLOSE C_cursor
 DEALLOCATE C_cursor 

 select datos.contraparte as contraparte, contratista as contratista, nombre_persona, identificacion,  MAX(dias) mayor_dias, valor_numerico as score 
  from @datos datos 
  inner join ln_contrapartes on ln_contrapartes.contraparte = datos.contraparte
  inner join padrones on ln_contrapartes.id_padron  = padrones.id_padron 
  inner join ln_contraparte_indicadores on (ln_contrapartes.contraparte  = ln_contraparte_indicadores.contraparte and indicador = 286 and visible = 1) 

 group by datos.contraparte, contratista, nombre_persona, identificacion, valor_numerico
 order by mayor_dias
END  
GO

Used By

No items found