dbo.LN_PORCENTAJE_ART_VIDA_931

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