dbo.LN_Cumplimiento_ultimo_mes_15102021

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

6
Name Data Type Length Description
@p_contraparte int 4
@p_contratista int 4
@p_puntos int 4
@p_estado char 1
@p_estado_txt varchar 500
@p_color varchar 20

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- ===============================================================
-- Author: Marita Soria
-- Create date: 30/09/2021
-- Description: Indicador de Imperium - Cumplimiento último mes 
-- ===============================================================
/*

select * from led_docs where periodo = '202109' and tipo_doc in (2,1032,1033) and cliente = 2046807993
declare @p_puntos_cum int = null, 
@p_estado_cum char(1) = null , 
@p_estado_txt_cum varchar(500) = null , 
@p_color_cum varchar(20) = null 
exec [LN_Cumplimiento_ultimo_mes]   null , 
7285,
@p_puntos_cum output, 
@p_estado_cum output, 
@p_estado_txt_cum output, 
@p_color_cum output
select  @p_puntos_cum , 
@p_estado_cum, 
@p_estado_txt_cum,
@p_color_cum 
*/


CREATE OR ALTER PROCEDUREdbo.LN_Cumplimiento_ultimo_mes_15102021 -- Hay que mandar como parametro contraparte, o contratista 
 @p_contraparte int, 
 @p_contratista int = null, 
 @p_puntos int = null output, 
 @p_estado char(1) = null output, 
 @p_estado_txt varchar(500) = null output, 
 @p_color varchar(20) = null output
AS
BEGIN
 SET NOCOUNT ON;

 declare @p_cliente int 

 declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'CUMPLIMIENTO_ULTIMO' and producto = 2066) 

 if (@p_contraparte is null) 
  select @p_contraparte = contraparte, 
      @p_cliente = cliente 
    from ln_contrapartes 
   where id_imperium = @p_contratista
     and activo = 1 

 select @p_contratista = id_imperium, 
     @p_cliente = cliente 
     from ln_contrapartes 
 where contraparte = @p_contraparte
 
 select @p_contraparte as contraparte, @p_contratista as contratista, @p_cliente as cliente, dbo.PeriodoVencido()  as periodo 

 set @p_puntos = null 

 -- 1) ROJO: NO PRESENTO NINGUN DOCUMENTO o Presento todo pero no presento el 931  
 --    (o sea, solo controlo que tenga sin presentar algún documento correspondiente al 931)

 if (select count(*) from led_docs where contratista = @p_contratista 
 and tipo_doc in (2,1032,1033) and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) > 0 
  if(DATEPART(d,getdate()) <= 7) 
  begin
   set @p_puntos = 10
   select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
      from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos 
   if @p_estado is null 
      begin 
       set @p_estado = 'P'
       set @p_estado_txt = 'EN ESPERA - PRINCIPIO DE MES'
       set @p_color = 'cccccc'
      end 
   return 
  end
  else  
  begin
   set @p_puntos = 4
   select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
      from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos 
   if @p_estado is null 
      begin 
       set @p_estado = 'R'
       set @p_estado_txt = 'ROJO'
       set @p_color = 'A72B2A'
      end 
   return 
  end 
 
 -- 2) VERDE: Presentación completa de los documentos del periodo, y todos los datos del 931 completos
 if ((select count(*) from led_docs where contratista = @p_contratista 
  and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) = 0 
     and not exists (select *
     from led_campos_tipo_doc  
     left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
     where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
               and periodo = dbo.PeriodoVencido() and contratista_1 = @p_contratista 
                     and estado_doc = 'V' and contratista = contratista_1)
       and led_campos_tipo_doc.campo_activo = 1
       and isnull(led_campos_doc.valor_numerico,0) = 0
       and nombre_campo in 
             ('028segurovidaobligatorio',
         '301aportessegsoc',
         '302aportesoss',
         '312riesgotrabajo',
         '351contribsegsocial',
         '352contribobrasocial')))
 begin
  set @p_puntos = 1
  select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo 
     from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos 
  if @p_estado is null 
     begin 
      set @p_estado = 'V'
      set @p_estado_txt = 'VERDE'
      set @p_color = '63b68c'
     end 
  return  
 end
  
 -- 3) NARANJA: Al 931 le falta completar algún dato
 
 IF ((select count(*) from led_docs where contratista = @p_contratista 
 and tipo_doc in (2,1032,1033)  and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) = 0 
 and exists (select *
    from led_campos_tipo_doc  
    left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
    where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
             and periodo = dbo.PeriodoVencido() and contratista_1 = @p_contratista 
                   and estado_doc = 'V' and contratista = contratista_1)
     and led_campos_tipo_doc.campo_activo = 1
     and isnull(led_campos_doc.valor_numerico,0) = 0
     and nombre_campo in 
          ('028segurovidaobligatorio',
        '301aportessegsoc',
        '302aportesoss',
        '312riesgotrabajo',
        '351contribsegsocial',
        '352contribobrasocial')))
 begin
  set @p_puntos = 3
  select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
     from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos 
  if @p_estado is null 
     begin 
      set @p_estado = 'N'
      set @p_estado_txt = 'NARANJA'
      set @p_color = 'FF5C1C'
     end 
  return  
 end

  -- 4) Cuando adeuda al menos un requerimiento pero tiene correcto el 100% el F931 --> AMARILLO 

 if ((select count(*) from led_docs where contratista = @p_contratista 
  and tipo_doc in (2,1032,1033) and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) = 0
  and  
  (select count(*) from led_docs where contratista = @p_contratista 
   and tipo_doc not in (2,1032,1033) and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) > 0
   and not exists (select *
    from led_campos_tipo_doc  
    left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
    where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
             and periodo = dbo.PeriodoVencido() and contratista_1 = @p_contratista 
                   and estado_doc = 'V' and contratista = contratista_1)
     and led_campos_tipo_doc.campo_activo = 1
     and isnull(led_campos_doc.valor_numerico,0) = 0
     and nombre_campo in 
          ('028segurovidaobligatorio',
        '301aportessegsoc',
        '302aportesoss',
        '312riesgotrabajo',
        '351contribsegsocial',
        '352contribobrasocial')))
 begin
  set @p_puntos = 2
  select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
     from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos 
  if @p_estado is null 
     begin 
      set @p_estado = 'A'
      set @p_estado_txt = 'AMARILLO'
      set @p_color = 'FFB81C'
     end 
  return 
 end  

 set @p_estado = null
 set @p_estado_txt = null 
 set @p_color = null 

END

GO

Used By

No items found