dbo.LN_scores_DD

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

3
Name Data Type Length Description
@accion varchar 100
@contraparte int 4
@p_user_id int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [LN_scores_DD] 'DD_anexo_a_1',201458 
exec [LN_scores_DD] 'DD_SCORE_FINAL',201458

LN_indicadores_manual_cliente  201458,'INDICADOR',520,null,null,null,1,null,202173


exec LN_indicadores_producto 201458,2105, 202173
EXEC dbo.LN_contrapartes_ 'DOCUMENTOS_POR_GESTION', 201458, 
null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, '2023-05-03'

select * from ln_gestiones where contraparte = 201458
update ln_docs set estado_doc = 'V' where contraparte = 201458 and tipo_doc = 1234
select * from ln_contraparte_indicadores where contraparte = 201458 and indicador >= 512
delete from ln_contraparte_indicadores where  indicador = 520 

*/


CREATE OR ALTER PROCEDURE dbo.LN_scores_DD 
  @accion      varchar(100), 
  @contraparte int, 
  @p_user_id   int = 94437923
AS
BEGIN
 SET NOCOUNT ON;
 
 declare @cliente int = null 
 declare @gestion int = null 
 declare @familia int = null 
 declare @pais_contraparte varchar(10) = null 

 declare @indic_accion int = null 
 declare @nombre_indic_accion varchar(500) = null 

 declare @valor_texto varchar(100) = null 
 declare @valor_numerico decimal(12,2) = null 
 declare @valor_memo varchar(100) = null
 
 declare @valor_texto_ant varchar(100) = null 
 declare @valor_numerico_ant decimal(12,2) = null 
 declare @valor_memo_ant varchar(100) = null

 declare @trazabilidad varchar(max) = null 
 declare @trazabilidad2 varchar(max) = null 

 declare @cuit varchar(20) 

/* ------------------------------------------------------------------- */
/* Acciones generales */ 
  select @cliente = ln_contrapartes.cliente, 
      @gestion = LN_gestiones.gestion, 
      @familia = ln_contraparte_familias.familia, 
      @pais_contraparte = ln_contrapartes.country_code, 
      @cuit = identificacion 
    from ln_contrapartes
   inner join padrones on padrones.id_padron = ln_contrapartes.id_padron 
   inner join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
   inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = LN_contrapartes.contraparte

    where ln_contrapartes.contraparte = @contraparte 
     AND LN_gestiones.desde <= GETDATE()
     AND LN_gestiones.hasta >= GETDATE()
     AND LN_gestiones.vigente = 1

  if (@gestion is null or @cliente is null) 
  begin
   select 'Sin gestion o cliente'
   return
  end 

  set @indic_accion = null 
  set @nombre_indic_accion = null 
  SELECT @indic_accion = LN_indicadores.indicador, @nombre_indic_accion = nombre_indicador 
    FROM LN_indicadores 
   INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
   INNER JOIN LN_familia_productos ON LN_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
   INNER JOIN LN_gestiones ON LN_contraparte_familias.contraparte = LN_gestiones.contraparte
   inner join LN_cliente_indicadores on (LN_cliente_indicadores.cliente =  @cliente and LN_cliente_indicadores.indicador = LN_indicadores.indicador)
  WHERE LN_indicadores.clave_indicador = @accion
    AND LN_contraparte_familias.contraparte = @contraparte
    AND LN_productos.visible = 1
    --AND LN_indicadores.visible = 1 -- Estos tienen visible = 0, porque no se ven en el panel, por eso le saco esta condicion
    AND LN_contraparte_familias.activo = 1
    AND LN_familia_productos.activo = 1
    AND LN_gestiones.desde <= getdate()
    AND LN_gestiones.hasta >= getdate()
    AND LN_gestiones.vigente = 1 

  if (@indic_accion is null) 
  begin
   select @contraparte, 'Indicador no se calcula'
   return
  end

  /* Guarda valores anteriores para guardar trazabilidad si cambió */ 

  select  @valor_numerico_ant = valor_numerico, 
    @valor_texto_ant = valor_texto, 
    @valor_memo_ant = convert(varchar(100),valor_memo)
     from LN_contraparte_indicadores
    where contraparte = @contraparte
   and gestion = @gestion 
   and visible = 1
   and indicador = @indic_accion
/*
1244 - DD - Anexo A.6. Cuestionario de Precalificación del Nivel de Riesgo del Tercero en Materia de Salud y Seguridad en el Trabajo
1243 - DD - Anexo A.5. Cuestionario de Precalificación del Nivel de Riesgo del Tercero en Materia de Derechos Humanos
1242 - DD - Anexo A.4. Cuestionario de Precalificación del Nivel de Riesgo del Tercero en materia de Responsabilidad Ambiental
1240 - DD - Anexo A.3. Cuestionario de Precalificación del Nivel de Riesgo del Tercero en materia de Protección de Datos Personales
1239 - DD - Anexo A.2. Cuestionario de Precalificación del Nivel de Riesgo del Tercero en materia de Prevención de Lavado de Dinero y Financiamiento al Terrorismo
1234 - DD - Anexo A.1. Cuestionario de Precalificación del Nivel de Riesgo del Tercero en materia Anticorrupción 
1241 - DD - Anexo A. Cuestionario de Recopilación de Datos para una Debida Diligencia

*/

 set @valor_texto = null 
 set @valor_numerico = null 
 set @valor_memo = null 

 IF (@accion = 'DD_anexo_a' or 
  @accion = 'DD_anexo_a_1' or 
  @accion = 'DD_anexo_a_2' or 
  @accion = 'DD_anexo_a_3' or 
  @accion = 'DD_anexo_a_4' or 
  @accion = 'DD_anexo_a_5' or 
  @accion = 'DD_anexo_a_6')
 BEGIN
  declare @doc_id int = null 
  declare @tipo_doc int = null 
  
  IF (@accion = 'DD_anexo_a')    set @tipo_doc = 1241
  IF (@accion = 'DD_anexo_a_1')  set @tipo_doc = 1234
  IF (@accion = 'DD_anexo_a_2')  set @tipo_doc = 1239 
  IF (@accion = 'DD_anexo_a_3')  set @tipo_doc = 1240
  IF (@accion = 'DD_anexo_a_4')  set @tipo_doc = 1242
  IF (@accion = 'DD_anexo_a_5')  set @tipo_doc = 1243
  IF (@accion = 'DD_anexo_a_6')  set @tipo_doc = 1244

  select @doc_id = MAX(doc_id) 
    from ln_docs 
   where tipo_doc = @tipo_doc 
     and contraparte =  @contraparte and gestion = @gestion
        and estado_doc = 'V'

  if (@doc_id is not null)
  begin
   exec [LN_docs_campos_puntos_] @doc_id, @valor_numerico output 
  end 
 END 


 
 IF (@accion = 'DD_SCORE_FINAL')
 BEGIN
  EXEC [LN_scores_DD] 'DD_anexo_a_1', @contraparte, @p_user_id
  EXEC [LN_scores_DD] 'DD_anexo_a_2', @contraparte, @p_user_id
  EXEC [LN_scores_DD] 'DD_anexo_a_3', @contraparte, @p_user_id
  EXEC [LN_scores_DD] 'DD_anexo_a_4', @contraparte, @p_user_id
  EXEC [LN_scores_DD] 'DD_anexo_a_5', @contraparte, @p_user_id
  EXEC [LN_scores_DD] 'DD_anexo_a_6', @contraparte, @p_user_id
  EXEC [LN_scores_DD] 'DD_anexo_a',   @contraparte, @p_user_id

  if exists (select * from ln_contraparte_indicadores 
     inner join LN_indicadores on LN_indicadores.indicador = LN_contraparte_indicadores.indicador
        where contraparte = @contraparte and gestion = @gestion 
     and clave_indicador like 'DD[_]%' and clave_indicador NOT LIKE 'DD_SCORE_FINAL%' and clave_indicador != 'DD_anexo_a'
     and valor_texto = 'A')
  begin
     set @valor_numerico = 10 
  end 
  else
  begin 
   if exists (select * from ln_contraparte_indicadores 
      inner join LN_indicadores on LN_indicadores.indicador = LN_contraparte_indicadores.indicador
      where contraparte = @contraparte and gestion = @gestion 
      and clave_indicador like 'DD[_]%' and clave_indicador  NOT LIKE 'DD_SCORE_FINAL%' and clave_indicador != 'DD_anexo_a'
      and valor_texto = 'M')
   begin
      set @valor_numerico = 50
   end 
   else
   begin
    if exists (select * from ln_contraparte_indicadores 
       inner join LN_indicadores on LN_indicadores.indicador = LN_contraparte_indicadores.indicador
       where contraparte = @contraparte and gestion = @gestion 
       and clave_indicador like 'DD[_]%' and clave_indicador  NOT LIKE 'DD_SCORE_FINAL%' and clave_indicador != 'DD_anexo_a'
       and valor_texto = 'B')
    begin
       set @valor_numerico = 100  
    end
   end
  end

 END 

 if (@valor_numerico is not null)
 begin
  if exists (select * from LN_cliente_nivel 
     where cliente = @cliente and indicador = @indic_accion and @valor_numerico >= desde and @valor_numerico < hasta)
  begin
   select @valor_texto = upper(texto), @valor_memo = upper(texto_largo)
    from LN_cliente_nivel 
    where cliente = @cliente and indicador = @indic_accion and @valor_numerico >= desde and @valor_numerico < hasta
  end
  else 
  begin
   -- Toma como default los de amx
    select @valor_texto = upper(texto), @valor_memo = upper(texto_largo)
    from LN_cliente_nivel 
    where cliente = 5546348 and indicador = @indic_accion and @valor_numerico >= desde and @valor_numerico < hasta
  end  
 end 

 if not exists (select contraparte, gestion, indicador
      from LN_contraparte_indicadores
      where contraparte = @contraparte
      and gestion = @gestion 
      and visible = 1
      and indicador = @indic_accion)
 begin
  INSERT INTO LN_contraparte_indicadores
  (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
  VALUES
  (@contraparte, @gestion, @indic_accion, @valor_numerico, @valor_texto, @valor_memo, GETDATE(), @p_user_id,@familia)
 end 
 else
 begin
  UPDATE LN_contraparte_indicadores SET
    valor_numerico = @valor_numerico,
    valor_texto = @valor_texto,
    valor_memo = @valor_memo, 
    familia = @familia, 
    modified = GETDATE(),
    modified_by = @p_user_id
  WHERE contraparte = @contraparte
   AND gestion = @gestion
   AND indicador = @indic_accion
   and visible = 1 
 end

 IF (@accion = 'DD_SCORE_FINAL')
 BEGIN
  -- Si no tiene el manual cargado se lo cargo 
  if not exists (select contraparte, gestion, indicador
       from LN_contraparte_indicadores
      where contraparte = @contraparte
        and gestion = @gestion 
        and visible = 1
        and indicador = 520) -- DD_SCORE_FINAL_MANUAL
  begin 
   INSERT INTO LN_contraparte_indicadores
   (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
   VALUES
   (@contraparte, @gestion, 520, @valor_numerico, @valor_texto, @valor_memo, GETDATE(), @p_user_id,@familia)
  end 
 END

 -- Trazabilidad
 if (isnull(@valor_numerico_ant,-500) != isnull(@valor_numerico,-500) or
  isnull(@valor_texto_ant,'')      != isnull(@valor_texto,'') or 
  isnull(@valor_memo_ant,'')       != isnull(@valor_memo,''))
 begin 

  set @trazabilidad = 'Actualizado automáticamente: ' + @nombre_indic_accion + ': ' + 
       iif(isnull(@valor_memo,'')!='',@valor_memo,
        iif(isnull(@valor_texto,'')!='',@valor_texto,convert(varchar,@valor_numerico)))
  set @trazabilidad2 = 'CAMBIO_INDICADOR_'+convert(varchar,@indic_accion)
  exec insertar_trazabilidad  @trazabilidad, @cliente, @trazabilidad2,'WWW', @contraparte,1
  
 end

 select @accion as clave, @indic_accion as indicador, @valor_numerico as valor, @valor_texto as texto, @valor_memo as memo

END  


/*
select * from LN_cliente_nivel where indicador between 512 and 517 and cliente = 5546348 
*/
     
  /*
   insert into LN_cliente_nivel(cliente,desde,hasta,texto,texto_largo,color_fondo,color_texto,indicador) 
   values (5546348,0,11,'ALTO','ALTO','A72B2A','FFFFFF',518)
  
   insert into LN_cliente_nivel(cliente,desde,hasta,texto,texto_largo,color_fondo,color_texto,indicador) 
   values (5546348,11,51,'MEDIO','MEDIO','FFB81C','FFFFFF',518)
  
  
   insert into LN_cliente_nivel(cliente,desde,hasta,texto,texto_largo,color_fondo,color_texto,indicador) 
   values (5546348,51,101,'BAJO','BAJO','63b68c','FFFFFF',518)
   */

GO

Used By

No items found