dbo.Imperium_cumplimientos_indicadores

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 


[Imperium_cumplimientos_indicadores] 'CUMPLIMIENTO_ULTIMO_MES_T_1',145452,null
*/

CREATE OR ALTER PROCEDURE dbo.Imperium_cumplimientos_indicadores
 @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

  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(10)  = null

  --  % Cumplimiento Mes en análisis (Todos)
  if (@clave_indicador = 'CUMPLIMIENTO_ULTIMO_MES_T_1') 
  BEGIN
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','U',1 
  END 
  -- % Cumplimiento 12 Meses Anteriores (Todos)
  if (@clave_indicador = 'CUMPLIMIENTO_MESES_ANTERIORES_T_1_12') 
  BEGIN
   --exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',1,12
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',2,12 -- de 1 año para atras hasta 2 meses para atras de hoy
  END 

  -- % Cumplimiento de UN mes (del mes actual - 2)  (Todos)
  if (@clave_indicador = 'CUMPLIMIENTO_MESES_ANTERIORES_T_2_1') 
  BEGIN
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',2,1
  END 
  -- % Cumplimiento de UN mes (del mes actual - 3)  (Todos)
  if (@clave_indicador = 'CUMPLIMIENTO_MESES_ANTERIORES_T_3_1') 
  BEGIN
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',3,1
  END 
  -- % Cumplimiento de UN mes (del mes actual - 4)  (Todos)
  if (@clave_indicador = 'CUMPLIMIENTO_MESES_ANTERIORES_T_4_1') 
  BEGIN
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',4,1
  END 

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

   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',2,1
   if (@cumplimiento is not null)
   begin
    set @total = @total + @cumplimiento  
    set @cantidad = @cantidad + 1
   end 

   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',3,1
   if (@cumplimiento is not null)
   begin
    set @total = @total + @cumplimiento  
    set @cantidad = @cantidad + 1
   end 

   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'T','A',4,1
   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 = 'CUMPLIMIENTO_ULTIMO_MES_C_1') 
  BEGIN
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'C','U',1 
  END 
  -- % Cumplimiento 12 Meses Anteriores (Propios del Contratista)
  if (@clave_indicador = 'CUMPLIMIENTO_MESES_ANTERIORES_C_1_12') 
  BEGIN
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'C','A',1,12
  END 

  -- % Cumplimiento Mes en análisis (Subcontratistas)
  if (@clave_indicador = 'CUMPLIMIENTO_ULTIMO_MES_S_1') 
  BEGIN
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'S','U',1 
  END 
  -- % Cumplimiento 12 Meses Anteriores (Subontratistas)
  if (@clave_indicador = 'CUMPLIMIENTO_MESES_ANTERIORES_S_1_12') 
  BEGIN
   exec [Imperium_cumplimientos] @contratista, @cumplimiento output, 'S','A',1,12
  END 

 
  if (@cumplimiento is not null)
  begin
   set @cumplimiento_txt = convert(varchar, @cumplimiento) + '%'
  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, created, created_by)
    VALUES
    (@p_contraparte, @gest, @indicador, @cumplimiento, @cumplimiento_txt, GETDATE(), @p_user_id)
  ELSE
    UPDATE LN_contraparte_indicadores SET
      valor_numerico = @cumplimiento,
      valor_texto =  @cumplimiento_txt,
      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
  
END
GO

Used By

No items found