Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
4| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_contraparte | int | 4 | |
| @p_contratista | int | 4 | |
| @cumplimiento | int | 4 | |
| @cumplimiento_txt | varchar | 20 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- ===============================================================
-- Author: Marita Soria
-- Create date: 30/09/2021
-- Description:
/*
BBVA IMPERIUM nuevo indicador
Porcentaje de cumplimiento de estos 3 documentos (considerados indispensables):
Constancia de ART con clausula de no repetición
Seguro de vida
F. 931
en los ultimos X meses (ultimo año)
*/
-- ===============================================================
/*
declare @cumplimiento int = null,
@p_estado_txt_cum varchar(500) = null
exec [LN_PORCENTAJE_ART_VIDA_931] 182826, null,
@cumplimiento output, @p_estado_txt_cum output
select @cumplimiento, @p_estado_txt_cum
*/
CREATE OR ALTER PROCEDUREdbo.LN_PORCENTAJE_ART_VIDA_931 -- Hay que mandar como parametro contraparte, o contratista
@p_contraparte int,
@p_contratista int = null,
@cumplimiento int output,
@cumplimiento_txt varchar(20) output
AS
BEGIN
SET NOCOUNT ON;
declare @p_cliente int
/* Porque a principio de mes nunca va a tener verificados los documentos del periodo vencido */
declare @periodo1 int = (select dbo.PeriodoMenosDos())
declare @periodo2 int = (select dbo.PeriodoAnual())
/*
-- 3 meses entonces tengo que restar 2, asi que x = -2
declare @x int = -2
declare @periodo_hasta1 date = null
set @periodo_hasta1 = convert(date, substring(convert(char,@periodo1),1,4)+'-'+substring(convert(char,@periodo1),5,2)+'-01')
set @periodo_hasta1 = dateadd(m,@x,@periodo_hasta1)
set @periodo2 = convert(int,convert(char(6),replace(@periodo_hasta1,'-','')))
*/
declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'PORCENTAJE_ART_VIDA_931')
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
declare @total int = (select count(*) from led_docs where contratista = @p_contratista and periodo between @periodo2 and @periodo1 and tipo_doc in (649,650,1033) and estado_doc not in ('X'))
declare @cumplidos int = (select count(*) from led_docs where contratista = @p_contratista and periodo between @periodo2 and @periodo1 and tipo_doc in (649,650,1033) and estado_doc in ('V'))
select @total, @cumplidos
-- Si no tiene estos documentos pedidos el indicador debe quedar vacio
if @total = 0
begin
set @cumplimiento = null
set @cumplimiento_txt = NULL
end
else
begin
DECLARE @rate FLOAT
SET @rate = floor(100 * @cumplidos / @total) --> redondea para abajo 99.99 = 99
SET @cumplimiento = CAST(@rate AS int)
select @rate, @cumplimiento
set @cumplimiento_txt = convert(varchar, @cumplimiento) + '%'
end
if (@cumplimiento is not null)
begin
set @cumplimiento_txt = convert(varchar, @cumplimiento) + '%'
end
END
GO
GO
-- ===============================================================
-- Author: Marita Soria
-- Create date: 30/09/2021
-- Description:
/*
BBVA IMPERIUM nuevo indicador
Porcentaje de cumplimiento de estos 3 documentos (considerados indispensables):
Constancia de ART con clausula de no repetición
Seguro de vida
F. 931
en los ultimos X meses (ultimo año)
*/
-- ===============================================================
/*
declare @cumplimiento int = null,
@p_estado_txt_cum varchar(500) = null
exec [LN_PORCENTAJE_ART_VIDA_931] 182826, null,
@cumplimiento output, @p_estado_txt_cum output
select @cumplimiento, @p_estado_txt_cum
*/
CREATE OR ALTER PROCEDUREdbo.LN_PORCENTAJE_ART_VIDA_931 -- Hay que mandar como parametro contraparte, o contratista
@p_contraparte int,
@p_contratista int = null,
@cumplimiento int output,
@cumplimiento_txt varchar(20) output
AS
BEGIN
SET NOCOUNT ON;
declare @p_cliente int
/* Porque a principio de mes nunca va a tener verificados los documentos del periodo vencido */
declare @periodo1 int = (select dbo.PeriodoMenosDos())
declare @periodo2 int = (select dbo.PeriodoAnual())
/*
-- 3 meses entonces tengo que restar 2, asi que x = -2
declare @x int = -2
declare @periodo_hasta1 date = null
set @periodo_hasta1 = convert(date, substring(convert(char,@periodo1),1,4)+'-'+substring(convert(char,@periodo1),5,2)+'-01')
set @periodo_hasta1 = dateadd(m,@x,@periodo_hasta1)
set @periodo2 = convert(int,convert(char(6),replace(@periodo_hasta1,'-','')))
*/
declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'PORCENTAJE_ART_VIDA_931')
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
declare @total int = (select count(*) from led_docs where contratista = @p_contratista and periodo between @periodo2 and @periodo1 and tipo_doc in (649,650,1033) and estado_doc not in ('X'))
declare @cumplidos int = (select count(*) from led_docs where contratista = @p_contratista and periodo between @periodo2 and @periodo1 and tipo_doc in (649,650,1033) and estado_doc in ('V'))
select @total, @cumplidos
-- Si no tiene estos documentos pedidos el indicador debe quedar vacio
if @total = 0
begin
set @cumplimiento = null
set @cumplimiento_txt = NULL
end
else
begin
DECLARE @rate FLOAT
SET @rate = floor(100 * @cumplidos / @total) --> redondea para abajo 99.99 = 99
SET @cumplimiento = CAST(@rate AS int)
select @rate, @cumplimiento
set @cumplimiento_txt = convert(varchar, @cumplimiento) + '%'
end
if (@cumplimiento is not null)
begin
set @cumplimiento_txt = convert(varchar, @cumplimiento) + '%'
end
END
GO