dbo.LN_Cumplimiento_ultimo_mes

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 : ES EL SCORE DE CUMPLIMIENTO ESPECIAL QUE SOLICITO PAE
-- ===============================================================
/*

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]   182754, 
null,
@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 -- 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 

 /* 15/10/2021: le resto 1 mes, porque toma en cumplimiento_ultimo_mes, el mes anterior al que se está analizando */

 declare @periodo_hasta int = (select dbo.PeriodoVencido())
 declare @periodo_hasta1 date = null

 set @periodo_hasta1 = convert(date, substring(convert(char,@periodo_hasta),1,4)+'-'+substring(convert(char,@periodo_hasta),5,2)+'-01')
 set @periodo_hasta1 = dateadd(m,-1,@periodo_hasta1)
 set @periodo_hasta  = convert(int,convert(char(6),replace(@periodo_hasta1,'-',''))) 

 set @periodo_hasta =  dbo.PeriodoMenosDos()

 --select @periodo_hasta

 /* */ 

 declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'CUMPLIMIENTO_ULTIMO' and producto = 2066) 
 /*declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'CUMPLIMIENTO_ULTIMO_MES' 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() */ @periodo_hasta as periodo 

 set @p_puntos = null 

 -- 20/01/2023: Si no tiene documentos en el periodo, el indicador debe quedar vacio (antes quedaba verde) 
 IF (select count(*) from led_docs where contratista = @p_contratista and periodo = @periodo_hasta) = 0 
 begin
  set @p_estado = null
  set @p_estado_txt = null 
  set @p_color = null 
  return 
 end 


 -- 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() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) > 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() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 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() */ @periodo_hasta 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','afipnomina')))
 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() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 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() */ @periodo_hasta 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','afipnomina')))
 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() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 0
  and  
  (select count(*) from led_docs where contratista = @p_contratista 
   and tipo_doc not in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X')and isnull(doc_id_lista,0)=0) > 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() */ @periodo_hasta 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','afipnomina')))
 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