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
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
Depends On
5Used By
No items found