dbo.Imperium_cumplimientos_indicadores_2024

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

3
Name Data Type Length Description
@clave_indicador varchar 100
@p_contraparte int 4
@p_user_id int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

-- =====================================================================================
-- Author: Marita Soria
-- Create date: 29/06/2023
-- Description: Calculo de los indicadadores de Cumplimiento de Documentos de Imperium  
-- =====================================================================================
/*
Tener en cuenta:
en la tabla ln_indicadores: 
el campo tipo_dato tiene que ser 'S' para que se vea bien en el panel de control 
y el servicio_contratado = 73, para que solo se vea en panel de control de Imperium
 
update ln_indicadores set tipo_dato = 'S',servicio_contratado = 73 where indicador in (523,524,525,526,527,528)

@clave_indicador
% Cumplimiento Mes en análisis (Todos) CUMPLIMIENTO_ULTIMO_MES_T_1  
% Cumplimiento 12 Meses Anteriores (Todos) CUMPLIMIENTO_MESES_ANTERIORES_T_1_12   
% Cumplimiento Mes en análisis (Propios del Contratista) CUMPLIMIENTO_ULTIMO_MES_C_1  
% Cumplimiento 12 Meses Anteriores (Propios del Contratista) CUMPLIMIENTO_MESES_ANTERIORES_C_1_12    
% Cumplimiento Mes en análisis (Subcontratistas) CUMPLIMIENTO_ULTIMO_MES_S_1 
% Cumplimiento 12 Meses Anteriores (Subontratistas) CUMPLIMIENTO_MESES_ANTERIORES_S_1_12 


exec [Imperium_cumplimientos_indicadores_2024] 'CUMPLIMIENTO_MESES_ANTERIORES_T_3_1_COLOR',191509,null
exec [Imperium_cumplimientos_indicadores_2024] 'CUMPLIMIENTO_ULTIMO_MES_T_1_periodo',191515,null
exec [Imperium_cumplimientos_indicadores_2024] 'CUMPLIMIENTO_ULTIMO_MES_T_1_pendientes',191515,null
exec [Imperium_cumplimientos_indicadores_2024] 'CUMPLIMIENTO_ULTIMO_MES_T_1_ingresados',191515,null
exec [Imperium_cumplimientos_indicadores_2024] 'CUMPLIMIENTO_ULTIMO_MES_T_1_VERIFICADOS',191515,null
exec [Imperium_cumplimientos_indicadores_2024] 'CUMPLIMIENTO_ULTIMO_MES_T_1_rechazados',191515,null
exec [Imperium_cumplimientos_indicadores_2024] 'CUMPLIMIENTO_ULTIMO_MES_T_1_totales',191515,null

insert into ln_contrapartes_queue (contraparte, id_taken) values (191515,1)

select * from ln_indicadores where producto = 2066 order by orden

select * from ln_contrapartes_queue where processed = 0

select i.clave_indicador, c.* from ln_contraparte_indicadores c
inner join ln_indicadores i on i.indicador = c.indicador
where contraparte = 191509
order by clave_indicador




*/

CREATE OR ALTER PROCEDURE dbo.Imperium_cumplimientos_indicadores_2024
 @clave_indicador varchar(100),
 @p_contraparte  int,
 @p_user_id      int = null 
 AS
BEGIN

  SET NOCOUNT ON;
  declare @gest   int = null
  declare @contratista int = null 
  declare @indicador   int = null

  select @indicador = LN_indicadores.indicador
    from LN_indicadores
   where clave_indicador = @clave_indicador

  /* Si se grabo hace menos de 15 minutos no hace nada,
   porque ya lo calculo con alguno de los indicadores del mismo tipo 
   como por cada uno graba todos los que tiene (periodo, verificados, ingresados, etc), no se vuelve a calcular
   Esto lo hice porque va a repetir el mismo calculo por eje. para CUMPLIMIENTO_ULTIMO_MES_T_1
   CUMPLIMIENTO_ULTIMO_MES_T_1_PERIODO
   CUMPLIMIENTO_ULTIMO_MES_T_1_PEDIENTES
   CUMPLIMIENTO_ULTIMO_MES_T_1_INGRESADOS
   CUMPLIMIENTO_ULTIMO_MES_T_1_VERIFICADOS
   CUMPLIMIENTO_ULTIMO_MES_T_1_RECHAZADOS
   CUMPLIMIENTO_ULTIMO_MES_T_1_TOTALES
   */

  /*
   if exists (select contraparte, gestion, indicador
   from LN_contraparte_indicadores
   where contraparte = @p_contraparte
   and gestion = @gest
   and visible = 1
   and indicador = @indicador
   and (created = dateadd(MI,-15,getdate()) or modified = dateadd(MI,-15,getdate()))) 
  
   begin 
   return
   end
   */



  SELECT @gest = LN_gestiones.gestion, @contratista = LN_CONTRAPARTES.id_imperium 
    FROM LN_gestiones 
   INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   WHERE LN_gestiones.desde <= GETDATE()
     AND LN_gestiones.hasta >= GETDATE()
     AND LN_contrapartes.activo = 1
     AND LN_contrapartes.contraparte = @p_contraparte

  declare @cumplimiento int = null 
  declare @cumplimiento_txt varchar(100)  = null

  declare @per varchar(50) = null
  declare @pendientes  FLOAT = null
  declare @ingresados  FLOAT = null
  declare @verificados FLOAT = null
  declare @rechazados  FLOAT = null
  declare @totales     FLOAT = null

  --  % Cumplimiento Mes en análisis (Todos)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_ULTIMO_MES_T_1%') 
  BEGIN
   exec [Imperium_cumplimientos_2024] @contratista, @cumplimiento output, 'T','U',1,11, --EL 11 NO SE MANDABA Y EL DEFAULT EN EL SP ES 11, POR ESO LE MANDO 11
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 
  -- % Cumplimiento 12 Meses Anteriores (Todos)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_MESES_ANTERIORES_T_1_12%') 
  BEGIN
   --exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',1,12
   exec [Imperium_cumplimientos_2024] @contratista, @cumplimiento output, 'T','A',2,12, -- de 1 año para atras hasta 2 meses para atras de hoy
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 

  -- % Cumplimiento de UN mes (del mes actual - 2)  (Todos)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_MESES_ANTERIORES_T_2_1%') 
  BEGIN
   exec [Imperium_cumplimientos_2024] @contratista, @cumplimiento output, 'T','A',2,1,
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 
  -- % Cumplimiento de UN mes (del mes actual - 3)  (Todos)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_MESES_ANTERIORES_T_3_1%') 
  BEGIN
   exec [Imperium_cumplimientos_2024] @contratista, @cumplimiento output, 'T','A',3,1,
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 
  -- % Cumplimiento de UN mes (del mes actual - 4)  (Todos)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_MESES_ANTERIORES_T_4_1%') 
  BEGIN
   exec Imperium_cumplimientos_2024 @contratista, @cumplimiento output, 'T','A',4,1,
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 

  -- PROMEDIO % Cumplimiento los meses (-2 -3 y -4) (Todos)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_PROMEDIO_MESES_ANTERIORES_T_2_3%') 
  BEGIN
   declare @total int = 0 
   declare @cantidad int = 0 

   exec Imperium_cumplimientos_2024 @contratista, @cumplimiento output, 'T','A',2,1,
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
   if (@cumplimiento is not null)
   begin
    set @total = @total + @cumplimiento  
    set @cantidad = @cantidad + 1
   end 

   exec Imperium_cumplimientos_2024 @contratista, @cumplimiento output, 'T','A',3,1,
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
   if (@cumplimiento is not null)
   begin
    set @total = @total + @cumplimiento  
    set @cantidad = @cantidad + 1
   end 

   exec Imperium_cumplimientos_2024 @contratista, @cumplimiento output, 'T','A',4,1,
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
   if (@cumplimiento is not null)
   begin
    set @total = @total + @cumplimiento  
    set @cantidad = @cantidad + 1
   end 

   IF @cantidad = 0 
    set @cumplimiento = null 
   else 
    set @cumplimiento = floor(@total / @cantidad) --> redondea para abajo 99.99 = 99
  
  END


  -- % Cumplimiento Mes en análisis (Propios del Contratista)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_ULTIMO_MES_C_1%') 
  BEGIN
   exec Imperium_cumplimientos_2024 @contratista, @cumplimiento output, 'C','U',1,11, --EL 11 NO SE MANDABA Y EL DEFAULT EN EL SP ES 11, POR ESO LE MANDO 11
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 
  -- % Cumplimiento 12 Meses Anteriores (Propios del Contratista)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_MESES_ANTERIORES_C_1_12%') 
  BEGIN
   exec Imperium_cumplimientos_2024 @contratista, @cumplimiento output, 'C','A',1,12,
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 

  -- % Cumplimiento Mes en análisis (Subcontratistas)
  if (@clave_indicador LIKE 'CUMPLIMIENTO_ULTIMO_MES_S_1%') 
  BEGIN
   exec Imperium_cumplimientos_2024 @contratista, @cumplimiento output, 'S','U',1,11, --EL 11 NO SE MANDABA Y EL DEFAULT EN EL SP ES 11, POR ESO LE MANDO 11
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 
  -- % Cumplimiento 12 Meses Anteriores (Subontratistas)

  if (@clave_indicador LIKE 'CUMPLIMIENTO_MESES_ANTERIORES_S_1_12%') 
  BEGIN
   exec Imperium_cumplimientos_2024 @contratista, @cumplimiento output, 'S','A',1,12,
    @per output, 
    @pendientes output,
    @ingresados output ,
    @verificados output ,
    @rechazados output ,
    @totales output
  END 

  if (@cumplimiento is not null)
  begin
   set @cumplimiento_txt = convert(varchar, @cumplimiento) + '%'
  end 
  declare @cumplimiento_memo varchar(100) = null 
  if (@clave_indicador LIKE '%COLOR')
  begin
   set @cumplimiento_txt = null  
   set @cumplimiento_txt = case 
    when @cumplimiento >= 98 then 'Verde: Presentó todo'
    when @cumplimiento > 0 and @cumplimiento < 98 then 'Amarillo: Presentación parcial'
    when @cumplimiento = 0   then 'Rojo: Adeuda todo'
   end 
   set @cumplimiento_memo = case 
    when @cumplimiento >= 98 then '2e7d32'
    when @cumplimiento > 0 and @cumplimiento < 98 then 'FFB81C'
    when @cumplimiento = 0   then 'A72B2A'
   end 

  end

  if (@clave_indicador LIKE '%PERIODO')
  begin
   set @cumplimiento_txt = @per
   set @cumplimiento = null 
  end

  if (@clave_indicador LIKE '%PENDIENTES')
  begin
   set @cumplimiento_txt = @pendientes
   set @cumplimiento = @pendientes 
  end

  if (@clave_indicador LIKE '%INGRESADOS')
  begin
   set @cumplimiento_txt = @ingresados
   set @cumplimiento = @ingresados 
  end

  if (@clave_indicador LIKE '%VERIFICADOS')
  begin
   set @cumplimiento_txt = @verificados
   set @cumplimiento = @verificados 
  end

  if (@clave_indicador LIKE '%RECHAZADOS')
  begin
   set @cumplimiento_txt = @rechazados
   set @cumplimiento = @rechazados 
  end

  if (@clave_indicador LIKE '%TOTALES')
  begin
   set @cumplimiento_txt = @totales
   set @cumplimiento = @totales 
  end


  if not exists (select contraparte, gestion, indicador
       from LN_contraparte_indicadores
       where contraparte = @p_contraparte
       and gestion = @gest
       and visible = 1
       and indicador = @indicador)
    INSERT INTO LN_contraparte_indicadores
    (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by)
    VALUES
    (@p_contraparte, @gest, @indicador, @cumplimiento, @cumplimiento_txt,  @cumplimiento_memo, GETDATE(), @p_user_id)
  ELSE
    UPDATE LN_contraparte_indicadores SET
      valor_numerico = @cumplimiento,
      valor_texto =  @cumplimiento_txt,
      valor_memo =  @cumplimiento_memo,
      modified = GETDATE(),
      modified_by = @p_user_id
    WHERE contraparte = @p_contraparte
     AND gestion = @gest
     AND indicador = @indicador
     and visible = 1

  select @clave_indicador as indicador, @cumplimiento as cumplimiento, @cumplimiento_txt as txt,  @cumplimiento_memo as color 
  
END
GO

Used By

No items found