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
/*
-- =============================================
-- Author: <María Inés Soria>
-- Create date: <06/04/2022>
-- Description: Cálculo de Scores de VRM BBVA
-- =============================================
EXEC [LN_scores_VRM] 'VRM_SCORE_RA', 162668
EXEC [LN_scores_VRM] 'MA_conflictos_interes', 162668
EXEC [LN_scores_VRM] 'MA_Materialidad', 162668
EXEC [LN_scores_VRM] 'MA_Risk_Assessment', 162668
EXEC [LN_scores_VRM] 'VRM_SCORE_AML', 162668
EXEC [LN_scores_VRM] 'VRM_SCORE_MA', 169241
EXEC [LN_scores_VRM] 'VRM_Score_RR' , 162668
EXEC [LN_scores_VRM] 'SOLICITAR_DDR_PENDIENTE' , 162668
EXEC [LN_scores_VRM] 'VRM_SCORE_IT_RISK',144822
EXEC [LN_scores_VRM] 'VRM_SCORE_PROT_CLIENTELA',168613
EXEC [LN_scores_VRM] 'CRP_Riesgo_Concentracion_Pais',169241
select * from ln_contraparte_datos_configuracion order by producto, indicador
update ln_contraparte_datos_configuracion set peso_indicador = null where producto = 2079
select * from ln_indicadores where clave_indicador = 'VRM_SCORE_AML'
select * from ln_productos where producto = 2079
select * from LN_check
select * from ln_indicadores where clave_indicador = 'VRM_SCORE_AML'
select * from ln_contraparte_indicadores where contraparte = 162668 and indicador = 423
where contraparte in (select contraparte from ln_contrapartes where cliente = 1226057645 and activo = 1 and servicio_contratado = 47)
and lncheck != 'V'
select * from ln_contraparte_indicadores where contraparte = 162668 and indicador >= 415
select * from ln_indicadores where indicador in ( 421,422,423)
exec LN_contrapartes_queue_ 'indicadores_vrm_score',NULL,162668
exec LN_dashboard_cliente 'indicadores_contraparte_gestion_vrm', null, null,
null, 162668,
NULL,
NULL,
null,
null,
null,
null,
1,
null,
0,
'2021-12-06'
*/
/*
declare @valores varchar(max) = (select item from dbo.DelimitedSplit8K((select opciones from ln_indicadores where indicador = 417), '^') where ItemNumber = 1)
declare @opciones varchar(max) = (select item from dbo.DelimitedSplit8K((select opciones from ln_indicadores where indicador = 417), '^') where ItemNumber = 2)
select * from dbo.DelimitedSplit8K( @valores,'|')
select * from dbo.DelimitedSplit8K( @opciones,'|')
*/
CREATE OR ALTER PROCEDURE dbo.LN_scores_VRM_ANT
@accion varchar(100),
@contraparte int,
@p_user_id int = 94437923
AS
BEGIN
SET NOCOUNT ON;
declare @score_datos decimal(10,2) = null
declare @score_memo varchar(100) = null
declare @cliente int = null
declare @gestion int = null
declare @familia int = null
declare @pais_contraparte varchar(10) = null
declare @indic_accion int = null
declare @total decimal(12,2) = 0
declare @puntos decimal(12,2)
declare @puntos_producto decimal(12,2)
declare @peso_indicador decimal(12,2)
declare @maximo decimal(12,2)
declare @cant int = 0
declare @valor_memo varchar(100) = null
--select @accion
select @cliente = ln_contrapartes.cliente,
@gestion = LN_gestiones.gestion,
@familia = ln_contraparte_familias.familia,
@pais_contraparte = ln_contrapartes.country_code
from ln_contrapartes
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) return
declare @producto int = null
declare @indicador int = null
declare @valor varchar(100) = null
IF (@accion = 'VRM_SCORE_RA' or @accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_DDR')
BEGIN
select @producto = LN_productos.producto
from LN_productos
inner join ln_indicadores on LN_indicadores.producto = LN_productos.producto
where ln_indicadores.clave_indicador = @accion
if (@producto is null) return
-- VRM_SCORE_RA: Tiene que tener todos los otros indicadores del producto cargados para poder calcularse
-- VRM_SCORE_MA y VRM_SCORE_DDR: Si alguno de los otros indicadores del mismo producto es 1, ya el resultado es 1
set @cant =
(select COUNT(*) from ln_indicadores
where indicador in (select indicador
from ln_indicadores
where ln_indicadores.producto = @producto
and clave_indicador != @accion)
and not exists (select * from LN_contraparte_indicadores where LN_contraparte_indicadores.contraparte = @contraparte
and LN_contraparte_indicadores.gestion = @gestion
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and (valor_numerico is not null or valor_texto is not null or valor_fecha is not null or valor_memo is not null)))
select @cant cantidad_sin_calcular
select indicador, nombre_indicador, clave_indicador
from ln_indicadores
where ln_indicadores.producto = @producto
and clave_indicador != @accion
if ((@cant = 0 and @accion = 'VRM_SCORE_RA') or (@accion = 'VRM_SCORE_DDR' or @accion = 'VRM_SCORE_MA'))
begin
DECLARE C_datos CURSOR FOR
SELECT indicador, valor_texto
FROM LN_contraparte_indicadores a
where a.contraparte = @contraparte
and a.gestion = @gestion
and indicador in (select indicador
from ln_indicadores
where ln_indicadores.producto = @producto
and clave_indicador != @accion)
-- select * from LN_contraparte_datos_configuracion
OPEN C_datos
FETCH NEXT FROM C_datos INTO @indicador, @valor
WHILE @@fetch_status = 0
BEGIN
select @puntos_producto = isnull(puntos_producto ,0), @peso_indicador = isnull(peso_indicador,0),
@puntos = isnull(puntos ,0), @maximo = isnull(maximo ,0)
from LN_contraparte_datos_configuracion
where cliente = @cliente
and producto = @producto
and indicador = @indicador
and valor_cargado = @valor
/*
select @indicador as indicador, @puntos_producto as peso_producto, @peso_indicador as peso_indicador,
@puntos as puntos, @maximo as maximo, (@puntos / @maximo) * @peso_indicador as puntos_indicador
*/
if (@accion = 'VRM_SCORE_MA' and @score_datos is null) set @score_datos = 10 /* VRM_SCORE_MA vale 1 o 10, con que uno de sus componentes sea 1, da 1 */
if ((@accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_DDR') and @puntos = 1) set @score_datos = 1
IF (@accion = 'VRM_SCORE_RA')
set @total = @total + ((@puntos / @maximo) * @peso_indicador)
FETCH NEXT FROM C_datos INTO @indicador, @valor
END
CLOSE C_datos
DEALLOCATE C_datos
IF (@accion = 'VRM_SCORE_RA')
set @score_datos = @puntos_producto * (@total / 100)
-- Si es Score Modulo anticorrupción o Score DDR y por algo da 1, lo deja en 1
-- Sino, si aun tiene indicadores de su producto sin calcular, sigue quedando sin calcular
if ((@accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_DDR') and @score_datos != 1 and @cant != 0) set @score_datos = null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @score_datos*10, format(@score_datos,'###.#'), GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_datos*10,
valor_texto = format(@score_datos,'###.#'),
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @score_datos as score
END
declare @valor_texto varchar(100) = null
declare @valor_numerico decimal(12,2) = null
--IF (@accion = 'MA_Worldcheck')
IF (@accion = 'VRM_SCORE_Worldcheck') -- Es auntomatico, para que nazca como Verde.
-- y luego es dependiente del indicador de Worldcheck
BEGIN
declare @world varchar(100) = null
set @score_datos = null
set @valor_texto = null
select @valor_texto = valor_texto
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 = 'WORDCHK'
/* Se fijaba si alguno era distinto de V, 18/04/2022: Se fija lo que tiene el indicador Worldchek general */
/*if (select COUNT(*) from LN_check where contraparte = @contraparte and visible = 1 and ISNULL(lncheck,'V') != 'V') > 0*/
if (ISNULL(@valor_texto,'V') != 'V')
begin
set @world = 'ALTO: hits relevantes'
set @score_datos = 1
end
if (isnull(@valor_texto,'V') = 'V')
begin
set @world = 'BAJO: sin hits'
set @score_datos = 10
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @score_datos*10, format(@score_datos,'###'), @world, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_datos*10,
valor_texto = format(@score_datos,'###'),
valor_memo = @world,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @score_datos as score, @world as VRM_SCORE_Worldcheck
END
declare @solicitar_ddr varchar(20) = NULL
if ((@accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_Worldcheck' ) and @score_datos = 1)
begin
select @solicitar_ddr = valor_texto
from ln_contraparte_indicadores
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = 396
and visible = 1
if (isnull(@solicitar_ddr,'NO') = 'NO')
begin
SELECT 'DISPARAR AUTOMATICAMENTE DDR' as accion
EXEC LN_indicadores_manual_cliente @contraparte,'UPDATE', 396, 'PENDIENTE',null,'DISPARAR AUTOMATICAMENTE DDR',@p_user_id
end
end
/* -- Disparar DDR automaticamente
if ((@accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_AML') and @score_datos = 1)
begin
EXEC LN_contraparte_sub_docs 'ALTA', @contraparte, @p_user_id, 1
EXEC LN_indicadores_manual_cliente @contraparte,'UPDATE', 396, 'SI',null,null,@p_user_id
EXEC LN_contrapartes_queue_ 'insert',null,@contraparte,null
end
*/
IF (@accion = 'SOLICITAR_DDR_PENDIENTE')
begin
declare @score_ma int = null
declare @score_aml int = null
select @solicitar_ddr = valor_texto
from ln_contraparte_indicadores
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = 396
and visible = 1
if (isnull(@solicitar_ddr,'')='PENDIENTE')
begin
select @score_ma = valor_numerico/10
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 = 'VRM_SCORE_MA'
select @score_aml = valor_numerico/10
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 = 'VRM_SCORE_Worldcheck'
if (isnull(@score_ma,0) != 1 and isnull(@score_aml,0) != 1)
begin
EXEC LN_indicadores_manual_cliente @contraparte,'UPDATE', 396, null,null,'NO DISPARAR AUTOMATICAMENTE DDR',@p_user_id
select 'NO' as solicitar_ddr_pendiente
end
else
begin
select 'PENDIENTE' as solicitar_ddr_pendiente
end
end
else
begin
select 'NO' as solicitar_ddr_pendiente
end
end
IF (@accion = 'MA_conflictos_interes' or @accion = 'DDR_PRP')
BEGIN
declare @prp char(1) = null
declare @prp_memo varchar(100) = null
declare @valores_prp table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(max),fila int, col int, valor_numerico int, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
if exists (select * from ln_docs where tipo_doc in (1189,1208)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_prp exec ln_docs_valores @contraparte, 'CONDICION_PRP'
select @prp = case valor_numerico
when 1 then 'A'
when 0 then 'B'
else null
end
from @valores_prp
select @prp_memo = case @prp
when 'A' then 'ALTO'
when 'B' then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @prp, @prp_memo, GETDATE(), @p_user_id, @familia)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @prp,
valor_memo = @prp_memo,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
end
select @indic_accion as indicador, @prp, @prp_memo
END
IF (@accion = 'MA_Materialidad')
BEGIN
select @valor_texto = valor_texto
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 = 'RA_Materialidad_proveedor'
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'MA_Materialidad'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, created, created_by, familia)
VALUES
(@contraparte, @gestion, @indic_accion, @valor_texto, GETDATE(), @p_user_id, @familia)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @valor_texto,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @valor_texto as MA_Materialidad
END
IF (@accion = 'MA_Risk_Assessment')
BEGIN
select @valor_numerico = valor_numerico
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 = 'VRM_SCORE_RA'
set @valor_texto = null
select @valor_texto = case
when @valor_numerico > 0 and @valor_numerico < 45 then 'A'
when @valor_numerico >= 45 and @valor_numerico <= 100 then 'B'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'MA_Risk_Assessment'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @valor_texto, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @valor_texto,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @valor_texto as MA_Risk_Assessment
END
declare @valor_numerico1 int
declare @valor_numerico2 int
IF (@accion = 'VRM_Score_RR')
BEGIN
set @valor_numerico1 = null
set @valor_numerico2 = null
select @valor_numerico1 = case
when convert(int,valor_texto) >= 50 and convert(int,valor_texto) <= 100 then 1
when convert(int,valor_texto) >= 25 and convert(int,valor_texto) < 50 then 5
when convert(int,valor_texto) >= 0 and convert(int,valor_texto) <= 50 then 10
else null
end
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 = 'SCORE_RR'
set @valor_numerico2 = case
when @valor_numerico1 = 1 then 10
when @valor_numerico1 = 5 then 50
when @valor_numerico1 = 10 then 100
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by, familia)
VALUES
(@contraparte, @gestion, @indic_accion, @valor_numerico2, @valor_numerico1, convert(varchar(max),@valor_numerico1), GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @valor_numerico2,
valor_texto = @valor_numerico1,
valor_memo = convert(varchar(max),@valor_numerico1),
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @valor_numerico1 as RR_Score_RR
END
IF (@accion = 'VRM_SCORE_PROT_CLIENTELA')
BEGIN
declare @pc int = null
declare @valores_pc table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(max),fila int, col int, valor_numerico int, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
declare @pregunta1 int = null
declare @pregunta2 int = null
declare @pregunta3 int = null
declare @pregunta4 char(1) = null
declare @pregunta5 char(1) = null
declare @pregunta6 int = null
declare @pregunta7 int = null
declare @pregunta8 int = null
declare @pregunta9 int = null
declare @pregunta10 int = null
declare @pregunta11 int = null
if exists (select * from ln_docs where tipo_doc in (1211)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC1AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC3AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC7AUTO'
select @pregunta1 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC1AUTO'
select @pregunta2 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC3AUTO'
select @pregunta3 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC7AUTO'
if (@pregunta1 is not null and @pregunta2 is not null and @pregunta3 is not null)
begin
if (@pregunta1 = 0 and @pregunta2 = 0 and @pregunta3 = 0)
begin
set @pc = 10
end
if (@pregunta3 = 1)
begin
set @pc = 1
end
if (@pregunta1 = 1 or @pregunta2 = 1)
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC21AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC25AUTO'
select @pregunta4 = valor_texto from @valores_pc where nombre_campo = 'BBVAC21AUTO'
select @pregunta5 = valor_texto from @valores_pc where nombre_campo = 'BBVAC25AUTO'
if (@pregunta4 = 'A' or @pregunta5 = 'A')
begin
set @pc = 1
end
else
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC28AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC30AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC34AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC38AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC40AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC42AUTO'
select @pregunta6 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC28AUTO'
select @pregunta7 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC30AUTO'
select @pregunta8 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC34AUTO'
select @pregunta9 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC38AUTO'
select @pregunta10 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC40AUTO'
select @pregunta11 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC42AUTO'
declare @cant_si int = 0
declare @cant_no int = 0
if (isnull(@pregunta6,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta7,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta8,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta9,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta10,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta11,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (@pregunta4 = 'M' or @pregunta5 = 'M')
begin
if (@cant_no <= 2) set @pc = 5
else set @pc = 1
end
else
begin
if (@cant_si = 6) set @pc = 10
if (@cant_no <= 2) set @pc = 5
if (@cant_no > 2) set @pc = 1
end
end
end
end
set @valor_memo = case @pc
when 1 then 'ALTO'
when 5 then 'MEDIO'
when 10 then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'VRM_SCORE_PROT_CLIENTELA'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @pc*10, format(@pc,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @pc*10,
valor_texto = format(@pc,'###'),
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
end
select @indic_accion as indicador, @pc*10 as numero, @pc as VRM_SCORE_PROT_CLIENTELA
END
IF (@accion = 'VRM_SCORE_IT_RISK')
BEGIN
declare @puntos_itrisk int = null
declare @total_itrisk int = null
declare @itriskn char(1) = null
declare @itrisks char(1) = null
declare @score_it int = null
set @total_itrisk = 0
/* Organigrama organizativo (CISO/CIO, Responsable Tecnología y Seguridad...) (se mide en términos de capacidad de decisión del responsable de Riesgos y Seguridad Tecnológica Niveles hasta CEO)*/
/* (1 = 0,50; 2 = 0,40; 3 = 0,30; 4 ó más = 0,20) */
if exists (select * from ln_docs where tipo_doc in (1210)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK12'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK12'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
when '2' then 0.40
when '3' then 0.30
when '4' then 0.20
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Partnerships y Alianzas con otros proveedores estratégicos (en función del grado de alineamiento con la estrategia de BBVA) */
/* (1 = 0,20; 2 = 0,30; 3 = 0,40; 4 ó más = 0,50) */
declare @cant_alianzas int = 0
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK22'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK22'
set @cant_alianzas = (select count(*) from dbo.DelimitedSplit8K(@itrisks, ','))
set @puntos_itrisk = case
when (@cant_alianzas = 1) then 0.20
when (@cant_alianzas = 2) then 0.30
when (@cant_alianzas = 3) then 0.40
when (@cant_alianzas >= 4) then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Órganos de Gobierno en los que participa (dependiendo de la participación de IT en los órganos de decisión y gobierno) */
/* (Comité 1º nivel = 0,50; 2º = 0,40; 3º = 0,30; 4º ó más = 0,20) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK24'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK24'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
when '2' then 0.40
when '3' then 0.30
when '4' then 0.20
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/*---------------------------------------------*/
/* ISAE 3402 */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK32'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK32'
set @puntos_itrisk = case @itrisks
when '1' then 0.80
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Manuales Operativos */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK46'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK46'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Incidentes de Servicio - # Histórico de Incidentes */
/* (1,00 = 0 incidentes; 0,50 = 1 incidente; 0 = 2 ó más incidentes) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK54'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK54'
set @puntos_itrisk = case @itrisks
when '1' then 0.5
when '2' then 0
else 1
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/*---------------------------------------------*/
/* ISO 27001/27002 Seguridad de la Información */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK33'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK33'
set @puntos_itrisk = case @itrisks
when '1' then 0.70
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* ISO/IEC 33000 Marco de integración de procesos de mejora (Determinar nivel 1-5) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK28'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK28'
set @puntos_itrisk = case @itrisks
when '1' then 0.2
when '2' then 0.4
when '3' then 0.5
when '4' then 0.6
when '5' then 0.7
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* ISO 9001 Sistemas de Gestión de la Calidad */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK31'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK31'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* NIST 800-53 */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK35'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK35'
set @puntos_itrisk = case @itrisks
when '1' then 0.70
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* ISO/IEC 27017 - Controles de Seguridad para Servicios Cloud */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK34'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK34'
set @puntos_itrisk = case @itrisks
when '1' then 0.60
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* CSA */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK36'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK36'
set @puntos_itrisk = case @itrisks
when '1' then 0.60
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* ISO/IEC 27018 Protección de Información Personal en la Nube */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK37'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK37'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* SOC1, SOC2, SOC3 */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK38'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK38'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* GDPR Compliant */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK39'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK39'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Privacy Shield (USA) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK40'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK40'
set @puntos_itrisk = case @itrisks
when '1' then 0.40
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Proceso Hacking Éticos periódicos */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK45'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK45'
set @puntos_itrisk = case @itrisks
when '1' then 0.70
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Política de Seguridad de la Información y Protección de Datos */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK47'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK47'
set @puntos_itrisk = case @itrisks
when '1' then 0.30
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Sistema de Gestión de la Seguridad de la Información */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK62'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK62'
set @puntos_itrisk = case @itrisks
when '1' then 0.30
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Incidentes de Seguridad Tecnológica - # Histórico de Incidentes */
/* (1,00 = 0 incidentes; 0,50 = 1 incidente; 0 = 2 ó más incidentes) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK33'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK33'
set @puntos_itrisk = case @itrisks
when '1' then 0.5
when '2' then 0
else 1
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/*---------------------------------------------*/
if (@total_itrisk > 11.69) set @score_it = 10
if (@total_itrisk > 8.35 and @total_itrisk <= 11.69) set @score_it = 5
if (@total_itrisk <= 8.35) set @score_it = 1
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'VRM_SCORE_IT_RISK'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @score_it*10, format(@score_it,'###'), GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_it*10,
valor_texto = format(@score_it,'###'),
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
end
select @indic_accion as indicador, @score_it*10 as numero, format(@score_it,'###') as VRM_SCORE_IT_RISK
END
IF (@accion = 'DDR_Empleados_BBVA')
BEGIN
declare @empleados char(1) = null
declare @empleados_memo varchar(100) = null
if exists (select * from ln_docs where tipo_doc in (1186,1207)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_prp exec ln_docs_valores @contraparte, 'RELACION_EMPLEADO_BBVA'
select @empleados = case valor_numerico
when 1 then 'A'
when 0 then 'B'
else null
end
from @valores_prp
select @empleados_memo = case @prp
when 'A' then 'ALTO'
when 'B' then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @empleados, @empleados_memo, GETDATE(), @p_user_id, @familia)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @empleados,
valor_memo = @empleados_memo,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
end
select @indic_accion as indicador, @empleados, @empleados_memo
END
IF (@accion = 'DDR_Anticorrupcion')
BEGIN
declare @anticorrupcion char(1) = null
declare @anticorrupcion_memo varchar(100) = null
if exists (select * from ln_docs where tipo_doc in (1188)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_1'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_2'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_3'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_4'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_5'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_6'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_7'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_8'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_9'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_10'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_11'
declare @negativas_1_7 int = 0, @positivas_1_7 int = 0, @negativas_8_11 int = 0, @positivas_8_11 int = 0
select @negativas_1_7 = count(*)
from @valores_pc
where valor_numerico = 0
and nombre_campo in ('ANTICORRUPCION_1','ANTICORRUPCION_2','ANTICORRUPCION_3','ANTICORRUPCION_4','ANTICORRUPCION_5','ANTICORRUPCION_6','ANTICORRUPCION_7') group by valor_numerico
select @positivas_1_7 = count(*)
from @valores_pc
where valor_numerico = 1
and nombre_campo in ('ANTICORRUPCION_1','ANTICORRUPCION_2','ANTICORRUPCION_3','ANTICORRUPCION_4','ANTICORRUPCION_5','ANTICORRUPCION_6','ANTICORRUPCION_7') group by valor_numerico
select @negativas_8_11 = count(*)
from @valores_pc
where valor_numerico = 0
and nombre_campo in ('ANTICORRUPCION_8','ANTICORRUPCION_9','ANTICORRUPCION_10','ANTICORRUPCION_11')
select @positivas_8_11 = count(*)
from @valores_pc
where valor_numerico = 1
and nombre_campo in ('ANTICORRUPCION_8','ANTICORRUPCION_9','ANTICORRUPCION_10','ANTICORRUPCION_11')
-- Cuando las respuestas a las preguntas 1 a 7 sean en su mayoría negativas Y todas las respuestas a las preguntas 8 a 11 son negativas
-- o Cuando alguna de las respuestas a las preguntas 8 a 11 es positiva, con independencia de las respuestas a las preguntas 1 a 7
if (@anticorrupcion is null and @positivas_8_11 > 0)
begin
set @anticorrupcion = 'A'
set @anticorrupcion_memo = 'ALTO'
end
if (@anticorrupcion is null and @negativas_1_7 > 3 and @negativas_8_11 = 4)
begin
set @anticorrupcion = 'A'
set @anticorrupcion_memo = 'ALTO'
end
-- Cuando las respuestas a las preguntas 1 a 7 son en su mayoría positivas y
-- Todas las respuestas a las preguntas 8 a 11 son negativas.
if (@anticorrupcion is null and @positivas_1_7 > 3 and @positivas_1_7 < 7 and @negativas_8_11 = 4)
begin
set @anticorrupcion = 'M'
set @anticorrupcion_memo = 'MEDIO'
end
-- Todas las respuestas a las preguntas 1 a 7 son positivas y Todas las respuestas a las preguntas 8 a 11 son negativas.
if (@anticorrupcion is null and @positivas_1_7 = 7 and @negativas_8_11 = 4)
begin
set @anticorrupcion = 'B'
set @anticorrupcion_memo = 'BAJO'
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'DDR_Anticorrupcion'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_memo, valor_texto, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @anticorrupcion_memo, @anticorrupcion, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_memo = @anticorrupcion_memo,
valor_texto = @anticorrupcion,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
end
select @indic_accion as indicador, @anticorrupcion, @anticorrupcion_memo
END
/*
IF (@accion = 'MA_Score_DDR')
BEGIN
declare @ddr int = 10
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @ddr, GETDATE(), @p_user_id, @familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @ddr,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @ddr as MA_Score_DDR
END
*/
--IF (@accion = 'MA_Worldcheck')
IF (@accion = 'VRM_SCORE_AML')
BEGIN
set @score_datos = null
set @score_memo = null
select @valor_numerico1 = convert(int,valor_texto)
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 = 'VRM_SCORE_MA'
select @valor_numerico2 = convert(int,valor_texto)
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 = 'VRM_SCORE_Worldcheck'
if (@valor_numerico1 = 10 and @valor_numerico2 = 10)
begin
set @score_datos = 10
end
if (@valor_numerico1 = 1 or @valor_numerico2 = 1) -- Si alguno dio 1, disparo DDR
-- entonces, buscamos el indicador de DDR
begin
select @valor_numerico = convert(int,valor_texto)
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 = 'VRM_SCORE_DDR'
set @score_datos = case
when (@valor_numerico >= 0 and @valor_numerico <= 2.5) then 1
when (@valor_numerico > 2.5) then 5
else null
end
end
set @score_memo = case @score_datos
when 1 then 'ALTO'
when 5 then 'MEDIO'
when 10 then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @score_datos*10, format(@score_datos,'###'), @score_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_datos*10,
valor_texto = format(@score_datos,'###'),
valor_memo = @score_memo,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @score_datos as score, @score_memo as VRM_SCORE_AML
END
IF (@accion = 'CRP_Riesgo_Pais')
BEGIN
declare @lista_blanca varchar(10) = null
declare @footprint varchar(10) = null
declare @RP int = null
--Riesgo País, (modalidad fast fast/full)
--Alto: si País no en Lista Blanca ni en Footprint;
--Medio:si País no en Lista Blanca pero sí en Footprint;
--Bajo: si País en Lista Blanca
select top 1 @lista_blanca = lista_blanca, @footprint = footprint
from LB_Footprint
where visible = 1 and country_code = @pais_contraparte
order by periodo desc
if (@lista_blanca = 'NO' and @footprint = 'NO')
begin
set @RP = 1
end
else
begin
if (@lista_blanca = 'NO' and @footprint = 'SI')
begin
set @RP = 5
end
else
begin
if (@lista_blanca = 'SI')
begin
set @RP = 10
end
end
end
set @valor_memo = case @RP
when 1 then 'ALTO'
when 5 then 'MEDIO'
when 10 then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @RP*10, format(@RP,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @RP*10,
valor_texto = format(@RP,'###'),
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
select @indic_accion as indicador, @RP*10 score, format(@RP,'###') valor
END
/* Familias
542 VRM-A
367 VRM-B
536 VRM-C
368 VRM-D
369 VRM-F
515 VRM-H
527 VRM-K
518 VRM-L
528 VRM-N
543 VRM-TEST
*/
/*
Riesgo Concentración en País, (modalidad full)
Alto: si País supera el umbral límite;
Medio: si País supera el umbral de alerta;
Bajo: si País sin limitación en la lista o bien de un país que no supera el umbral alerta
*/
declare @ventas_contraparte decimal(20,2) = null
declare @ventas table(identificacion varchar(50),
moneda_compras varchar(10),
total_compras decimal(20,2),
moneda_ventas varchar(10),
total_ventas decimal(20,2),
fecha_balance date,
dependencia_economica decimal(20,2),
desde date,
hasta date,
compras_hasta varchar(10))
declare @umbral_limite decimal(20,2) = null
declare @umbral_alerta decimal(20,2) = null
IF (@accion = 'CRP_Riesgo_Concentracion_Pais' and
@familia in ( 542, /* Paises Modalidad Full*/
367,
536,
368,
369,
515,
528,
543))
BEGIN
declare @RCP int = null
set @valor_memo = null
select top 1 @umbral_limite = umbral_limite, @umbral_alerta = umbral_alerta
from Limites_alertas
where visible = 1 and country_code = @pais_contraparte
order by periodo desc
/*
select top 1 umbral_limite, umbral_alerta
from Limites_alertas
where visible = 1 and country_code = 'AR'
order by periodo desc
*/
insert into @ventas exec LN_dependencia_economica_balance @contraparte
select top 1 @ventas_contraparte = total_ventas from @ventas
if (@ventas_contraparte is not null)
begin
if (@umbral_limite is not null and @ventas_contraparte is not null
and @ventas_contraparte > @umbral_limite)
begin
set @RCP = 1
set @valor_memo = 'ALTO'
end
if (@RCP is null and @umbral_alerta is not null and @ventas_contraparte is not null
and @ventas_contraparte > @umbral_alerta)
begin
set @RCP = 5
set @valor_memo = 'MEDIO'
end
if (@RCP is null)
begin
set @RCP = 10
set @valor_memo = 'BAJO'
end
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @RCP*10, format(@RCP,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @RCP*10,
valor_texto = format(@RCP,'###'),
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
select @indic_accion as indicador, @RCP*10 score, format(@RCP,'###') valor
END
/*
Riesgo Concentración Inversa, (modalidad full)
Alto :facturación del proveedor con BBVA igual o mayor a 50% y Materialidad >= 1.000.000€;
Medio: facturación del proveedor con BBVA mayor a 30% e inferior a 50% y Materialidad >= 1.000.000€;
Bajo: menor o igual al 30% o cuando los niveles de actividad (materialidad) es inferior a 1.000.000€
*/
declare @dependencia decimal(20,2)
IF (@accion = 'CRP_Riesgo_Concentracion_Inversa' and
@familia in ( 542, /* Paises Modalidad Full*/
367,
536,
368,
369,
515,
528,
543))
BEGIN
declare @RCI int = null
set @valor_texto = null
set @valor_memo = null
select @valor_texto = valor_texto
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 = 'RA_Materialidad_proveedor'
insert into @ventas exec LN_dependencia_economica_balance @contraparte
select top 1 @dependencia = dependencia_economica from @ventas
if (@dependencia is not null and @valor_texto is not null)
begin
if (@dependencia >= 0.50 and @valor_texto = 'A')
begin
set @RCI = 1
set @valor_memo = 'ALTO'
end
if (@dependencia >= 0.30 and @dependencia < 0.50 and @valor_texto = 'A')
begin
set @RCI = 5
set @valor_memo = 'MEDIO'
end
if (@dependencia < 0.30 or @valor_texto != 'A')
begin
set @RCI = 10
set @valor_memo = 'BAJO'
end
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @RCI*10, format(@RCI,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @RCI*10,
valor_texto = format(@RCI,'###'),
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
select @indic_accion as indicador, @RCI*10 score, format(@RCI,'###') valor
END
/*
Riesgo Step In (modalidad full)
Cálculo a partir de la combinación de los indicadores de “Riesgo Financiero” y de “Concentración Inversa”.
*/
IF (@accion = 'CRP_Riesgo_Step_In' and
@familia in ( 542, /* Paises Modalidad Full*/
367,
536,
368,
369,
515,
528,
543))
BEGIN
declare @valor_texto_2 varchar(10) = null
declare @RSI int = null
set @valor_texto = null
set @valor_texto_2 = null
set @valor_memo = null
select @valor_texto = valor_texto
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 = 'CRP_Riesgo_Concentracion_Inversa'
select @valor_texto_2 = valor_texto
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 = 'VRM_Score_Financiero'
if (@valor_texto = 'A' and @valor_texto_2 = 'A')
begin
set @RSI = 1
set @valor_memo = 'ALTO'
end
if (@valor_texto = 'M' and @valor_texto_2 = 'A')
begin
set @RSI = 5
set @valor_memo = 'MEDIO'
end
if (@valor_texto = 'B' and @valor_texto_2 = 'A')
begin
set @RSI = 10
set @valor_memo = 'BAJO'
end
if (@valor_texto_2 = 'B')
begin
set @RSI = 10
set @valor_memo = 'BAJO'
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @RSI*10, format(@RSI,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @RSI*10,
valor_texto = format(@RSI,'###'),
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
select @indic_accion as indicador, @RSI*10 score, format(@RSI,'###') valor
END
/*
Para determinar la evaluación final del Módulo de Concentración y Riesgo País,
prevalecerá el mayor riesgo obtenido de los cuatro controles que componen el módulo
*/
IF (@accion = 'VRM_SCORE_CONCENTRACION')
BEGIN
set @valor_numerico = null
set @valor_memo = null
select @valor_numerico = min(convert(int,valor_texto))
from ln_contraparte_indicadores
inner join ln_indicadores on ln_indicadores.indicador = ln_contraparte_indicadores.indicador
where contraparte = @contraparte
and gestion = @gestion
and ln_indicadores.producto = 2091 -- Producto Concentración y Riesgo País
and valor_numerico is not null
set @valor_memo = case @valor_numerico
when 10 then 'BAJO'
when 5 then 'MEDIO'
when 1 then 'ALTO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
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*10, format(@valor_numerico,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @valor_numerico*10,
valor_texto = format(@valor_numerico,'###'),
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
select @indic_accion as indicador, @valor_numerico*10 score, format(@valor_numerico,'###') valor
END
/* Después de tocar un indicador, veo si tiene que calcular un indicador dependiente */
declare @clave_indicador varchar(100)
declare @indicador_dependiente int
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (select count(*)
from ln_indicadores_dependientes
where ln_indicadores_dependientes.indicador = @indic_accion) > 0
begin
DECLARE C_indi CURSOR LOCAL FOR
select ln_indicadores_dependientes.indicador_dependiente, LN_indicadores.clave_indicador
from ln_indicadores_dependientes
inner join LN_indicadores on LN_indicadores.indicador = ln_indicadores_dependientes.indicador_dependiente
where ln_indicadores_dependientes.indicador = @indic_accion
OPEN C_indi
FETCH NEXT FROM C_indi INTO @indicador_dependiente, @clave_indicador
WHILE @@fetch_status = 0
BEGIN
select 'VA A CALCULAR DEPENDIENTE (2): ' as accion,
@indic_accion as indicador,
@indicador_dependiente as indicador_dependiente,
@clave_indicador as indicador_dependiente
exec [LN_scores_VRM] @clave_indicador,
@contraparte,
@p_user_id
FETCH NEXT FROM C_indi INTO @indicador_dependiente, @clave_indicador
END
CLOSE C_indi
DEALLOCATE C_indi
end
/* Después de tocar un indicador manual, lo manda al queue para calcular los automáticos en los que puede influir */
/* declare @valoracion char(1) = null
select @valoracion = valoracion from ln_indicadores
where clave_indicador = @accion
if @valoracion != 'A'
exec LN_contrapartes_queue_ 'insert',null,@contraparte,null
*/
END
/*
select * from ln_indicadores where clave_indicador in ( 'VRM_SCORE_RA', 'MA_Risk_Assessment')
'RA_Industria')
insert into ln_indicadores_dependientes values (383,423)
select * from ln_contraparte_indicadores where contraparte = 162668 and indicador in (414, 419)
(indicador in (select indicador from ln_indicadores_dependientes) or
indicador in (select indicador_dependiente from ln_indicadores_dependientes) )
select * from ln_contraparte_indicadores where contraparte = 162668 and indicador = 396
select d.indicador, i.clave_indicador, d.indicador_dependiente, id.clave_indicador
from ln_indicadores_dependientes d
inner join ln_indicadores i on i.indicador = d.indicador
inner join ln_indicadores id on id.indicador = d.indicador_dependiente
order by indicador_dependiente
update ln_indicadores set valoracion = 'D' where indicador in (413,414,419,420)
select valor_numerico, valor_texto
from ln_contraparte_indicadores
where contraparte = 162668
and indicador = 419
select * from ln_indicadores where indicador = 396
select * from ln_productos where producto = 2082
*/
GO
GO
/*
-- =============================================
-- Author: <María Inés Soria>
-- Create date: <06/04/2022>
-- Description: Cálculo de Scores de VRM BBVA
-- =============================================
EXEC [LN_scores_VRM] 'VRM_SCORE_RA', 162668
EXEC [LN_scores_VRM] 'MA_conflictos_interes', 162668
EXEC [LN_scores_VRM] 'MA_Materialidad', 162668
EXEC [LN_scores_VRM] 'MA_Risk_Assessment', 162668
EXEC [LN_scores_VRM] 'VRM_SCORE_AML', 162668
EXEC [LN_scores_VRM] 'VRM_SCORE_MA', 169241
EXEC [LN_scores_VRM] 'VRM_Score_RR' , 162668
EXEC [LN_scores_VRM] 'SOLICITAR_DDR_PENDIENTE' , 162668
EXEC [LN_scores_VRM] 'VRM_SCORE_IT_RISK',144822
EXEC [LN_scores_VRM] 'VRM_SCORE_PROT_CLIENTELA',168613
EXEC [LN_scores_VRM] 'CRP_Riesgo_Concentracion_Pais',169241
select * from ln_contraparte_datos_configuracion order by producto, indicador
update ln_contraparte_datos_configuracion set peso_indicador = null where producto = 2079
select * from ln_indicadores where clave_indicador = 'VRM_SCORE_AML'
select * from ln_productos where producto = 2079
select * from LN_check
select * from ln_indicadores where clave_indicador = 'VRM_SCORE_AML'
select * from ln_contraparte_indicadores where contraparte = 162668 and indicador = 423
where contraparte in (select contraparte from ln_contrapartes where cliente = 1226057645 and activo = 1 and servicio_contratado = 47)
and lncheck != 'V'
select * from ln_contraparte_indicadores where contraparte = 162668 and indicador >= 415
select * from ln_indicadores where indicador in ( 421,422,423)
exec LN_contrapartes_queue_ 'indicadores_vrm_score',NULL,162668
exec LN_dashboard_cliente 'indicadores_contraparte_gestion_vrm', null, null,
null, 162668,
NULL,
NULL,
null,
null,
null,
null,
1,
null,
0,
'2021-12-06'
*/
/*
declare @valores varchar(max) = (select item from dbo.DelimitedSplit8K((select opciones from ln_indicadores where indicador = 417), '^') where ItemNumber = 1)
declare @opciones varchar(max) = (select item from dbo.DelimitedSplit8K((select opciones from ln_indicadores where indicador = 417), '^') where ItemNumber = 2)
select * from dbo.DelimitedSplit8K( @valores,'|')
select * from dbo.DelimitedSplit8K( @opciones,'|')
*/
CREATE OR ALTER PROCEDURE dbo.LN_scores_VRM_ANT
@accion varchar(100),
@contraparte int,
@p_user_id int = 94437923
AS
BEGIN
SET NOCOUNT ON;
declare @score_datos decimal(10,2) = null
declare @score_memo varchar(100) = null
declare @cliente int = null
declare @gestion int = null
declare @familia int = null
declare @pais_contraparte varchar(10) = null
declare @indic_accion int = null
declare @total decimal(12,2) = 0
declare @puntos decimal(12,2)
declare @puntos_producto decimal(12,2)
declare @peso_indicador decimal(12,2)
declare @maximo decimal(12,2)
declare @cant int = 0
declare @valor_memo varchar(100) = null
--select @accion
select @cliente = ln_contrapartes.cliente,
@gestion = LN_gestiones.gestion,
@familia = ln_contraparte_familias.familia,
@pais_contraparte = ln_contrapartes.country_code
from ln_contrapartes
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) return
declare @producto int = null
declare @indicador int = null
declare @valor varchar(100) = null
IF (@accion = 'VRM_SCORE_RA' or @accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_DDR')
BEGIN
select @producto = LN_productos.producto
from LN_productos
inner join ln_indicadores on LN_indicadores.producto = LN_productos.producto
where ln_indicadores.clave_indicador = @accion
if (@producto is null) return
-- VRM_SCORE_RA: Tiene que tener todos los otros indicadores del producto cargados para poder calcularse
-- VRM_SCORE_MA y VRM_SCORE_DDR: Si alguno de los otros indicadores del mismo producto es 1, ya el resultado es 1
set @cant =
(select COUNT(*) from ln_indicadores
where indicador in (select indicador
from ln_indicadores
where ln_indicadores.producto = @producto
and clave_indicador != @accion)
and not exists (select * from LN_contraparte_indicadores where LN_contraparte_indicadores.contraparte = @contraparte
and LN_contraparte_indicadores.gestion = @gestion
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and (valor_numerico is not null or valor_texto is not null or valor_fecha is not null or valor_memo is not null)))
select @cant cantidad_sin_calcular
select indicador, nombre_indicador, clave_indicador
from ln_indicadores
where ln_indicadores.producto = @producto
and clave_indicador != @accion
if ((@cant = 0 and @accion = 'VRM_SCORE_RA') or (@accion = 'VRM_SCORE_DDR' or @accion = 'VRM_SCORE_MA'))
begin
DECLARE C_datos CURSOR FOR
SELECT indicador, valor_texto
FROM LN_contraparte_indicadores a
where a.contraparte = @contraparte
and a.gestion = @gestion
and indicador in (select indicador
from ln_indicadores
where ln_indicadores.producto = @producto
and clave_indicador != @accion)
-- select * from LN_contraparte_datos_configuracion
OPEN C_datos
FETCH NEXT FROM C_datos INTO @indicador, @valor
WHILE @@fetch_status = 0
BEGIN
select @puntos_producto = isnull(puntos_producto ,0), @peso_indicador = isnull(peso_indicador,0),
@puntos = isnull(puntos ,0), @maximo = isnull(maximo ,0)
from LN_contraparte_datos_configuracion
where cliente = @cliente
and producto = @producto
and indicador = @indicador
and valor_cargado = @valor
/*
select @indicador as indicador, @puntos_producto as peso_producto, @peso_indicador as peso_indicador,
@puntos as puntos, @maximo as maximo, (@puntos / @maximo) * @peso_indicador as puntos_indicador
*/
if (@accion = 'VRM_SCORE_MA' and @score_datos is null) set @score_datos = 10 /* VRM_SCORE_MA vale 1 o 10, con que uno de sus componentes sea 1, da 1 */
if ((@accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_DDR') and @puntos = 1) set @score_datos = 1
IF (@accion = 'VRM_SCORE_RA')
set @total = @total + ((@puntos / @maximo) * @peso_indicador)
FETCH NEXT FROM C_datos INTO @indicador, @valor
END
CLOSE C_datos
DEALLOCATE C_datos
IF (@accion = 'VRM_SCORE_RA')
set @score_datos = @puntos_producto * (@total / 100)
-- Si es Score Modulo anticorrupción o Score DDR y por algo da 1, lo deja en 1
-- Sino, si aun tiene indicadores de su producto sin calcular, sigue quedando sin calcular
if ((@accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_DDR') and @score_datos != 1 and @cant != 0) set @score_datos = null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @score_datos*10, format(@score_datos,'###.#'), GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_datos*10,
valor_texto = format(@score_datos,'###.#'),
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @score_datos as score
END
declare @valor_texto varchar(100) = null
declare @valor_numerico decimal(12,2) = null
--IF (@accion = 'MA_Worldcheck')
IF (@accion = 'VRM_SCORE_Worldcheck') -- Es auntomatico, para que nazca como Verde.
-- y luego es dependiente del indicador de Worldcheck
BEGIN
declare @world varchar(100) = null
set @score_datos = null
set @valor_texto = null
select @valor_texto = valor_texto
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 = 'WORDCHK'
/* Se fijaba si alguno era distinto de V, 18/04/2022: Se fija lo que tiene el indicador Worldchek general */
/*if (select COUNT(*) from LN_check where contraparte = @contraparte and visible = 1 and ISNULL(lncheck,'V') != 'V') > 0*/
if (ISNULL(@valor_texto,'V') != 'V')
begin
set @world = 'ALTO: hits relevantes'
set @score_datos = 1
end
if (isnull(@valor_texto,'V') = 'V')
begin
set @world = 'BAJO: sin hits'
set @score_datos = 10
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @score_datos*10, format(@score_datos,'###'), @world, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_datos*10,
valor_texto = format(@score_datos,'###'),
valor_memo = @world,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @score_datos as score, @world as VRM_SCORE_Worldcheck
END
declare @solicitar_ddr varchar(20) = NULL
if ((@accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_Worldcheck' ) and @score_datos = 1)
begin
select @solicitar_ddr = valor_texto
from ln_contraparte_indicadores
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = 396
and visible = 1
if (isnull(@solicitar_ddr,'NO') = 'NO')
begin
SELECT 'DISPARAR AUTOMATICAMENTE DDR' as accion
EXEC LN_indicadores_manual_cliente @contraparte,'UPDATE', 396, 'PENDIENTE',null,'DISPARAR AUTOMATICAMENTE DDR',@p_user_id
end
end
/* -- Disparar DDR automaticamente
if ((@accion = 'VRM_SCORE_MA' or @accion = 'VRM_SCORE_AML') and @score_datos = 1)
begin
EXEC LN_contraparte_sub_docs 'ALTA', @contraparte, @p_user_id, 1
EXEC LN_indicadores_manual_cliente @contraparte,'UPDATE', 396, 'SI',null,null,@p_user_id
EXEC LN_contrapartes_queue_ 'insert',null,@contraparte,null
end
*/
IF (@accion = 'SOLICITAR_DDR_PENDIENTE')
begin
declare @score_ma int = null
declare @score_aml int = null
select @solicitar_ddr = valor_texto
from ln_contraparte_indicadores
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = 396
and visible = 1
if (isnull(@solicitar_ddr,'')='PENDIENTE')
begin
select @score_ma = valor_numerico/10
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 = 'VRM_SCORE_MA'
select @score_aml = valor_numerico/10
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 = 'VRM_SCORE_Worldcheck'
if (isnull(@score_ma,0) != 1 and isnull(@score_aml,0) != 1)
begin
EXEC LN_indicadores_manual_cliente @contraparte,'UPDATE', 396, null,null,'NO DISPARAR AUTOMATICAMENTE DDR',@p_user_id
select 'NO' as solicitar_ddr_pendiente
end
else
begin
select 'PENDIENTE' as solicitar_ddr_pendiente
end
end
else
begin
select 'NO' as solicitar_ddr_pendiente
end
end
IF (@accion = 'MA_conflictos_interes' or @accion = 'DDR_PRP')
BEGIN
declare @prp char(1) = null
declare @prp_memo varchar(100) = null
declare @valores_prp table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(max),fila int, col int, valor_numerico int, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
if exists (select * from ln_docs where tipo_doc in (1189,1208)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_prp exec ln_docs_valores @contraparte, 'CONDICION_PRP'
select @prp = case valor_numerico
when 1 then 'A'
when 0 then 'B'
else null
end
from @valores_prp
select @prp_memo = case @prp
when 'A' then 'ALTO'
when 'B' then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @prp, @prp_memo, GETDATE(), @p_user_id, @familia)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @prp,
valor_memo = @prp_memo,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
end
select @indic_accion as indicador, @prp, @prp_memo
END
IF (@accion = 'MA_Materialidad')
BEGIN
select @valor_texto = valor_texto
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 = 'RA_Materialidad_proveedor'
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'MA_Materialidad'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, created, created_by, familia)
VALUES
(@contraparte, @gestion, @indic_accion, @valor_texto, GETDATE(), @p_user_id, @familia)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @valor_texto,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @valor_texto as MA_Materialidad
END
IF (@accion = 'MA_Risk_Assessment')
BEGIN
select @valor_numerico = valor_numerico
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 = 'VRM_SCORE_RA'
set @valor_texto = null
select @valor_texto = case
when @valor_numerico > 0 and @valor_numerico < 45 then 'A'
when @valor_numerico >= 45 and @valor_numerico <= 100 then 'B'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'MA_Risk_Assessment'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @valor_texto, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @valor_texto,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @valor_texto as MA_Risk_Assessment
END
declare @valor_numerico1 int
declare @valor_numerico2 int
IF (@accion = 'VRM_Score_RR')
BEGIN
set @valor_numerico1 = null
set @valor_numerico2 = null
select @valor_numerico1 = case
when convert(int,valor_texto) >= 50 and convert(int,valor_texto) <= 100 then 1
when convert(int,valor_texto) >= 25 and convert(int,valor_texto) < 50 then 5
when convert(int,valor_texto) >= 0 and convert(int,valor_texto) <= 50 then 10
else null
end
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 = 'SCORE_RR'
set @valor_numerico2 = case
when @valor_numerico1 = 1 then 10
when @valor_numerico1 = 5 then 50
when @valor_numerico1 = 10 then 100
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by, familia)
VALUES
(@contraparte, @gestion, @indic_accion, @valor_numerico2, @valor_numerico1, convert(varchar(max),@valor_numerico1), GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @valor_numerico2,
valor_texto = @valor_numerico1,
valor_memo = convert(varchar(max),@valor_numerico1),
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @valor_numerico1 as RR_Score_RR
END
IF (@accion = 'VRM_SCORE_PROT_CLIENTELA')
BEGIN
declare @pc int = null
declare @valores_pc table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(max),fila int, col int, valor_numerico int, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
declare @pregunta1 int = null
declare @pregunta2 int = null
declare @pregunta3 int = null
declare @pregunta4 char(1) = null
declare @pregunta5 char(1) = null
declare @pregunta6 int = null
declare @pregunta7 int = null
declare @pregunta8 int = null
declare @pregunta9 int = null
declare @pregunta10 int = null
declare @pregunta11 int = null
if exists (select * from ln_docs where tipo_doc in (1211)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC1AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC3AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC7AUTO'
select @pregunta1 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC1AUTO'
select @pregunta2 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC3AUTO'
select @pregunta3 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC7AUTO'
if (@pregunta1 is not null and @pregunta2 is not null and @pregunta3 is not null)
begin
if (@pregunta1 = 0 and @pregunta2 = 0 and @pregunta3 = 0)
begin
set @pc = 10
end
if (@pregunta3 = 1)
begin
set @pc = 1
end
if (@pregunta1 = 1 or @pregunta2 = 1)
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC21AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC25AUTO'
select @pregunta4 = valor_texto from @valores_pc where nombre_campo = 'BBVAC21AUTO'
select @pregunta5 = valor_texto from @valores_pc where nombre_campo = 'BBVAC25AUTO'
if (@pregunta4 = 'A' or @pregunta5 = 'A')
begin
set @pc = 1
end
else
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC28AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC30AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC34AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC38AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC40AUTO'
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVAC42AUTO'
select @pregunta6 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC28AUTO'
select @pregunta7 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC30AUTO'
select @pregunta8 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC34AUTO'
select @pregunta9 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC38AUTO'
select @pregunta10 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC40AUTO'
select @pregunta11 = valor_numerico from @valores_pc where nombre_campo = 'BBVAC42AUTO'
declare @cant_si int = 0
declare @cant_no int = 0
if (isnull(@pregunta6,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta7,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta8,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta9,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta10,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (isnull(@pregunta11,0) = 1) set @cant_si = @cant_si + 1 else set @cant_no = @cant_no + 1
if (@pregunta4 = 'M' or @pregunta5 = 'M')
begin
if (@cant_no <= 2) set @pc = 5
else set @pc = 1
end
else
begin
if (@cant_si = 6) set @pc = 10
if (@cant_no <= 2) set @pc = 5
if (@cant_no > 2) set @pc = 1
end
end
end
end
set @valor_memo = case @pc
when 1 then 'ALTO'
when 5 then 'MEDIO'
when 10 then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'VRM_SCORE_PROT_CLIENTELA'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @pc*10, format(@pc,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @pc*10,
valor_texto = format(@pc,'###'),
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
end
select @indic_accion as indicador, @pc*10 as numero, @pc as VRM_SCORE_PROT_CLIENTELA
END
IF (@accion = 'VRM_SCORE_IT_RISK')
BEGIN
declare @puntos_itrisk int = null
declare @total_itrisk int = null
declare @itriskn char(1) = null
declare @itrisks char(1) = null
declare @score_it int = null
set @total_itrisk = 0
/* Organigrama organizativo (CISO/CIO, Responsable Tecnología y Seguridad...) (se mide en términos de capacidad de decisión del responsable de Riesgos y Seguridad Tecnológica Niveles hasta CEO)*/
/* (1 = 0,50; 2 = 0,40; 3 = 0,30; 4 ó más = 0,20) */
if exists (select * from ln_docs where tipo_doc in (1210)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK12'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK12'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
when '2' then 0.40
when '3' then 0.30
when '4' then 0.20
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Partnerships y Alianzas con otros proveedores estratégicos (en función del grado de alineamiento con la estrategia de BBVA) */
/* (1 = 0,20; 2 = 0,30; 3 = 0,40; 4 ó más = 0,50) */
declare @cant_alianzas int = 0
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK22'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK22'
set @cant_alianzas = (select count(*) from dbo.DelimitedSplit8K(@itrisks, ','))
set @puntos_itrisk = case
when (@cant_alianzas = 1) then 0.20
when (@cant_alianzas = 2) then 0.30
when (@cant_alianzas = 3) then 0.40
when (@cant_alianzas >= 4) then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Órganos de Gobierno en los que participa (dependiendo de la participación de IT en los órganos de decisión y gobierno) */
/* (Comité 1º nivel = 0,50; 2º = 0,40; 3º = 0,30; 4º ó más = 0,20) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK24'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK24'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
when '2' then 0.40
when '3' then 0.30
when '4' then 0.20
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/*---------------------------------------------*/
/* ISAE 3402 */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK32'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK32'
set @puntos_itrisk = case @itrisks
when '1' then 0.80
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Manuales Operativos */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK46'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK46'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Incidentes de Servicio - # Histórico de Incidentes */
/* (1,00 = 0 incidentes; 0,50 = 1 incidente; 0 = 2 ó más incidentes) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK54'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK54'
set @puntos_itrisk = case @itrisks
when '1' then 0.5
when '2' then 0
else 1
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/*---------------------------------------------*/
/* ISO 27001/27002 Seguridad de la Información */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK33'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK33'
set @puntos_itrisk = case @itrisks
when '1' then 0.70
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* ISO/IEC 33000 Marco de integración de procesos de mejora (Determinar nivel 1-5) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK28'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK28'
set @puntos_itrisk = case @itrisks
when '1' then 0.2
when '2' then 0.4
when '3' then 0.5
when '4' then 0.6
when '5' then 0.7
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* ISO 9001 Sistemas de Gestión de la Calidad */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK31'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK31'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* NIST 800-53 */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK35'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK35'
set @puntos_itrisk = case @itrisks
when '1' then 0.70
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* ISO/IEC 27017 - Controles de Seguridad para Servicios Cloud */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK34'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK34'
set @puntos_itrisk = case @itrisks
when '1' then 0.60
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* CSA */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK36'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK36'
set @puntos_itrisk = case @itrisks
when '1' then 0.60
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* ISO/IEC 27018 Protección de Información Personal en la Nube */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK37'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK37'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* SOC1, SOC2, SOC3 */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK38'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK38'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* GDPR Compliant */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK39'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK39'
set @puntos_itrisk = case @itrisks
when '1' then 0.50
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Privacy Shield (USA) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK40'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK40'
set @puntos_itrisk = case @itrisks
when '1' then 0.40
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Proceso Hacking Éticos periódicos */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK45'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK45'
set @puntos_itrisk = case @itrisks
when '1' then 0.70
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Política de Seguridad de la Información y Protección de Datos */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK47'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK47'
set @puntos_itrisk = case @itrisks
when '1' then 0.30
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Sistema de Gestión de la Seguridad de la Información */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK62'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK62'
set @puntos_itrisk = case @itrisks
when '1' then 0.30
else 0
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/* Incidentes de Seguridad Tecnológica - # Histórico de Incidentes */
/* (1,00 = 0 incidentes; 0,50 = 1 incidente; 0 = 2 ó más incidentes) */
insert into @valores_pc exec ln_docs_valores @contraparte, 'BBVANRISK33'
select @itrisks = valor_texto from @valores_pc where nombre_campo = 'BBVANRISK33'
set @puntos_itrisk = case @itrisks
when '1' then 0.5
when '2' then 0
else 1
end
set @total_itrisk = @total_itrisk + @puntos_itrisk
select @puntos_itrisk
/*---------------------------------------------*/
if (@total_itrisk > 11.69) set @score_it = 10
if (@total_itrisk > 8.35 and @total_itrisk <= 11.69) set @score_it = 5
if (@total_itrisk <= 8.35) set @score_it = 1
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'VRM_SCORE_IT_RISK'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @score_it*10, format(@score_it,'###'), GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_it*10,
valor_texto = format(@score_it,'###'),
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
end
select @indic_accion as indicador, @score_it*10 as numero, format(@score_it,'###') as VRM_SCORE_IT_RISK
END
IF (@accion = 'DDR_Empleados_BBVA')
BEGIN
declare @empleados char(1) = null
declare @empleados_memo varchar(100) = null
if exists (select * from ln_docs where tipo_doc in (1186,1207)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_prp exec ln_docs_valores @contraparte, 'RELACION_EMPLEADO_BBVA'
select @empleados = case valor_numerico
when 1 then 'A'
when 0 then 'B'
else null
end
from @valores_prp
select @empleados_memo = case @prp
when 'A' then 'ALTO'
when 'B' then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @empleados, @empleados_memo, GETDATE(), @p_user_id, @familia)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @empleados,
valor_memo = @empleados_memo,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
end
select @indic_accion as indicador, @empleados, @empleados_memo
END
IF (@accion = 'DDR_Anticorrupcion')
BEGIN
declare @anticorrupcion char(1) = null
declare @anticorrupcion_memo varchar(100) = null
if exists (select * from ln_docs where tipo_doc in (1188)
and contraparte = @contraparte and gestion = @gestion
and estado_doc = 'V')
begin
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_1'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_2'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_3'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_4'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_5'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_6'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_7'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_8'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_9'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_10'
insert into @valores_pc exec ln_docs_valores @contraparte, 'ANTICORRUPCION_11'
declare @negativas_1_7 int = 0, @positivas_1_7 int = 0, @negativas_8_11 int = 0, @positivas_8_11 int = 0
select @negativas_1_7 = count(*)
from @valores_pc
where valor_numerico = 0
and nombre_campo in ('ANTICORRUPCION_1','ANTICORRUPCION_2','ANTICORRUPCION_3','ANTICORRUPCION_4','ANTICORRUPCION_5','ANTICORRUPCION_6','ANTICORRUPCION_7') group by valor_numerico
select @positivas_1_7 = count(*)
from @valores_pc
where valor_numerico = 1
and nombre_campo in ('ANTICORRUPCION_1','ANTICORRUPCION_2','ANTICORRUPCION_3','ANTICORRUPCION_4','ANTICORRUPCION_5','ANTICORRUPCION_6','ANTICORRUPCION_7') group by valor_numerico
select @negativas_8_11 = count(*)
from @valores_pc
where valor_numerico = 0
and nombre_campo in ('ANTICORRUPCION_8','ANTICORRUPCION_9','ANTICORRUPCION_10','ANTICORRUPCION_11')
select @positivas_8_11 = count(*)
from @valores_pc
where valor_numerico = 1
and nombre_campo in ('ANTICORRUPCION_8','ANTICORRUPCION_9','ANTICORRUPCION_10','ANTICORRUPCION_11')
-- Cuando las respuestas a las preguntas 1 a 7 sean en su mayoría negativas Y todas las respuestas a las preguntas 8 a 11 son negativas
-- o Cuando alguna de las respuestas a las preguntas 8 a 11 es positiva, con independencia de las respuestas a las preguntas 1 a 7
if (@anticorrupcion is null and @positivas_8_11 > 0)
begin
set @anticorrupcion = 'A'
set @anticorrupcion_memo = 'ALTO'
end
if (@anticorrupcion is null and @negativas_1_7 > 3 and @negativas_8_11 = 4)
begin
set @anticorrupcion = 'A'
set @anticorrupcion_memo = 'ALTO'
end
-- Cuando las respuestas a las preguntas 1 a 7 son en su mayoría positivas y
-- Todas las respuestas a las preguntas 8 a 11 son negativas.
if (@anticorrupcion is null and @positivas_1_7 > 3 and @positivas_1_7 < 7 and @negativas_8_11 = 4)
begin
set @anticorrupcion = 'M'
set @anticorrupcion_memo = 'MEDIO'
end
-- Todas las respuestas a las preguntas 1 a 7 son positivas y Todas las respuestas a las preguntas 8 a 11 son negativas.
if (@anticorrupcion is null and @positivas_1_7 = 7 and @negativas_8_11 = 4)
begin
set @anticorrupcion = 'B'
set @anticorrupcion_memo = 'BAJO'
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = 'DDR_Anticorrupcion'
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_memo, valor_texto, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @anticorrupcion_memo, @anticorrupcion, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_memo = @anticorrupcion_memo,
valor_texto = @anticorrupcion,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
end
select @indic_accion as indicador, @anticorrupcion, @anticorrupcion_memo
END
/*
IF (@accion = 'MA_Score_DDR')
BEGIN
declare @ddr int = 10
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @ddr, GETDATE(), @p_user_id, @familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @ddr,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @ddr as MA_Score_DDR
END
*/
--IF (@accion = 'MA_Worldcheck')
IF (@accion = 'VRM_SCORE_AML')
BEGIN
set @score_datos = null
set @score_memo = null
select @valor_numerico1 = convert(int,valor_texto)
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 = 'VRM_SCORE_MA'
select @valor_numerico2 = convert(int,valor_texto)
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 = 'VRM_SCORE_Worldcheck'
if (@valor_numerico1 = 10 and @valor_numerico2 = 10)
begin
set @score_datos = 10
end
if (@valor_numerico1 = 1 or @valor_numerico2 = 1) -- Si alguno dio 1, disparo DDR
-- entonces, buscamos el indicador de DDR
begin
select @valor_numerico = convert(int,valor_texto)
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 = 'VRM_SCORE_DDR'
set @score_datos = case
when (@valor_numerico >= 0 and @valor_numerico <= 2.5) then 1
when (@valor_numerico > 2.5) then 5
else null
end
end
set @score_memo = case @score_datos
when 1 then 'ALTO'
when 5 then 'MEDIO'
when 10 then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @score_datos*10, format(@score_datos,'###'), @score_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_datos*10,
valor_texto = format(@score_datos,'###'),
valor_memo = @score_memo,
familia = @familia,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indic_accion
and visible = 1
end
select @indic_accion as indicador, @score_datos as score, @score_memo as VRM_SCORE_AML
END
IF (@accion = 'CRP_Riesgo_Pais')
BEGIN
declare @lista_blanca varchar(10) = null
declare @footprint varchar(10) = null
declare @RP int = null
--Riesgo País, (modalidad fast fast/full)
--Alto: si País no en Lista Blanca ni en Footprint;
--Medio:si País no en Lista Blanca pero sí en Footprint;
--Bajo: si País en Lista Blanca
select top 1 @lista_blanca = lista_blanca, @footprint = footprint
from LB_Footprint
where visible = 1 and country_code = @pais_contraparte
order by periodo desc
if (@lista_blanca = 'NO' and @footprint = 'NO')
begin
set @RP = 1
end
else
begin
if (@lista_blanca = 'NO' and @footprint = 'SI')
begin
set @RP = 5
end
else
begin
if (@lista_blanca = 'SI')
begin
set @RP = 10
end
end
end
set @valor_memo = case @RP
when 1 then 'ALTO'
when 5 then 'MEDIO'
when 10 then 'BAJO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @RP*10, format(@RP,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @RP*10,
valor_texto = format(@RP,'###'),
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
select @indic_accion as indicador, @RP*10 score, format(@RP,'###') valor
END
/* Familias
542 VRM-A
367 VRM-B
536 VRM-C
368 VRM-D
369 VRM-F
515 VRM-H
527 VRM-K
518 VRM-L
528 VRM-N
543 VRM-TEST
*/
/*
Riesgo Concentración en País, (modalidad full)
Alto: si País supera el umbral límite;
Medio: si País supera el umbral de alerta;
Bajo: si País sin limitación en la lista o bien de un país que no supera el umbral alerta
*/
declare @ventas_contraparte decimal(20,2) = null
declare @ventas table(identificacion varchar(50),
moneda_compras varchar(10),
total_compras decimal(20,2),
moneda_ventas varchar(10),
total_ventas decimal(20,2),
fecha_balance date,
dependencia_economica decimal(20,2),
desde date,
hasta date,
compras_hasta varchar(10))
declare @umbral_limite decimal(20,2) = null
declare @umbral_alerta decimal(20,2) = null
IF (@accion = 'CRP_Riesgo_Concentracion_Pais' and
@familia in ( 542, /* Paises Modalidad Full*/
367,
536,
368,
369,
515,
528,
543))
BEGIN
declare @RCP int = null
set @valor_memo = null
select top 1 @umbral_limite = umbral_limite, @umbral_alerta = umbral_alerta
from Limites_alertas
where visible = 1 and country_code = @pais_contraparte
order by periodo desc
/*
select top 1 umbral_limite, umbral_alerta
from Limites_alertas
where visible = 1 and country_code = 'AR'
order by periodo desc
*/
insert into @ventas exec LN_dependencia_economica_balance @contraparte
select top 1 @ventas_contraparte = total_ventas from @ventas
if (@ventas_contraparte is not null)
begin
if (@umbral_limite is not null and @ventas_contraparte is not null
and @ventas_contraparte > @umbral_limite)
begin
set @RCP = 1
set @valor_memo = 'ALTO'
end
if (@RCP is null and @umbral_alerta is not null and @ventas_contraparte is not null
and @ventas_contraparte > @umbral_alerta)
begin
set @RCP = 5
set @valor_memo = 'MEDIO'
end
if (@RCP is null)
begin
set @RCP = 10
set @valor_memo = 'BAJO'
end
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @RCP*10, format(@RCP,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @RCP*10,
valor_texto = format(@RCP,'###'),
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
select @indic_accion as indicador, @RCP*10 score, format(@RCP,'###') valor
END
/*
Riesgo Concentración Inversa, (modalidad full)
Alto :facturación del proveedor con BBVA igual o mayor a 50% y Materialidad >= 1.000.000€;
Medio: facturación del proveedor con BBVA mayor a 30% e inferior a 50% y Materialidad >= 1.000.000€;
Bajo: menor o igual al 30% o cuando los niveles de actividad (materialidad) es inferior a 1.000.000€
*/
declare @dependencia decimal(20,2)
IF (@accion = 'CRP_Riesgo_Concentracion_Inversa' and
@familia in ( 542, /* Paises Modalidad Full*/
367,
536,
368,
369,
515,
528,
543))
BEGIN
declare @RCI int = null
set @valor_texto = null
set @valor_memo = null
select @valor_texto = valor_texto
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 = 'RA_Materialidad_proveedor'
insert into @ventas exec LN_dependencia_economica_balance @contraparte
select top 1 @dependencia = dependencia_economica from @ventas
if (@dependencia is not null and @valor_texto is not null)
begin
if (@dependencia >= 0.50 and @valor_texto = 'A')
begin
set @RCI = 1
set @valor_memo = 'ALTO'
end
if (@dependencia >= 0.30 and @dependencia < 0.50 and @valor_texto = 'A')
begin
set @RCI = 5
set @valor_memo = 'MEDIO'
end
if (@dependencia < 0.30 or @valor_texto != 'A')
begin
set @RCI = 10
set @valor_memo = 'BAJO'
end
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @RCI*10, format(@RCI,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @RCI*10,
valor_texto = format(@RCI,'###'),
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
select @indic_accion as indicador, @RCI*10 score, format(@RCI,'###') valor
END
/*
Riesgo Step In (modalidad full)
Cálculo a partir de la combinación de los indicadores de “Riesgo Financiero” y de “Concentración Inversa”.
*/
IF (@accion = 'CRP_Riesgo_Step_In' and
@familia in ( 542, /* Paises Modalidad Full*/
367,
536,
368,
369,
515,
528,
543))
BEGIN
declare @valor_texto_2 varchar(10) = null
declare @RSI int = null
set @valor_texto = null
set @valor_texto_2 = null
set @valor_memo = null
select @valor_texto = valor_texto
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 = 'CRP_Riesgo_Concentracion_Inversa'
select @valor_texto_2 = valor_texto
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 = 'VRM_Score_Financiero'
if (@valor_texto = 'A' and @valor_texto_2 = 'A')
begin
set @RSI = 1
set @valor_memo = 'ALTO'
end
if (@valor_texto = 'M' and @valor_texto_2 = 'A')
begin
set @RSI = 5
set @valor_memo = 'MEDIO'
end
if (@valor_texto = 'B' and @valor_texto_2 = 'A')
begin
set @RSI = 10
set @valor_memo = 'BAJO'
end
if (@valor_texto_2 = 'B')
begin
set @RSI = 10
set @valor_memo = 'BAJO'
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by,familia)
VALUES
(@contraparte, @gestion, @indic_accion, @RSI*10, format(@RSI,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @RSI*10,
valor_texto = format(@RSI,'###'),
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
select @indic_accion as indicador, @RSI*10 score, format(@RSI,'###') valor
END
/*
Para determinar la evaluación final del Módulo de Concentración y Riesgo País,
prevalecerá el mayor riesgo obtenido de los cuatro controles que componen el módulo
*/
IF (@accion = 'VRM_SCORE_CONCENTRACION')
BEGIN
set @valor_numerico = null
set @valor_memo = null
select @valor_numerico = min(convert(int,valor_texto))
from ln_contraparte_indicadores
inner join ln_indicadores on ln_indicadores.indicador = ln_contraparte_indicadores.indicador
where contraparte = @contraparte
and gestion = @gestion
and ln_indicadores.producto = 2091 -- Producto Concentración y Riesgo País
and valor_numerico is not null
set @valor_memo = case @valor_numerico
when 10 then 'BAJO'
when 5 then 'MEDIO'
when 1 then 'ALTO'
else null
end
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (@indic_accion is not null)
begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = @indic_accion)
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*10, format(@valor_numerico,'###'), @valor_memo, GETDATE(), @p_user_id,@familia)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @valor_numerico*10,
valor_texto = format(@valor_numerico,'###'),
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
select @indic_accion as indicador, @valor_numerico*10 score, format(@valor_numerico,'###') valor
END
/* Después de tocar un indicador, veo si tiene que calcular un indicador dependiente */
declare @clave_indicador varchar(100)
declare @indicador_dependiente int
select @indic_accion = indicador from ln_indicadores
where clave_indicador = @accion
if (select count(*)
from ln_indicadores_dependientes
where ln_indicadores_dependientes.indicador = @indic_accion) > 0
begin
DECLARE C_indi CURSOR LOCAL FOR
select ln_indicadores_dependientes.indicador_dependiente, LN_indicadores.clave_indicador
from ln_indicadores_dependientes
inner join LN_indicadores on LN_indicadores.indicador = ln_indicadores_dependientes.indicador_dependiente
where ln_indicadores_dependientes.indicador = @indic_accion
OPEN C_indi
FETCH NEXT FROM C_indi INTO @indicador_dependiente, @clave_indicador
WHILE @@fetch_status = 0
BEGIN
select 'VA A CALCULAR DEPENDIENTE (2): ' as accion,
@indic_accion as indicador,
@indicador_dependiente as indicador_dependiente,
@clave_indicador as indicador_dependiente
exec [LN_scores_VRM] @clave_indicador,
@contraparte,
@p_user_id
FETCH NEXT FROM C_indi INTO @indicador_dependiente, @clave_indicador
END
CLOSE C_indi
DEALLOCATE C_indi
end
/* Después de tocar un indicador manual, lo manda al queue para calcular los automáticos en los que puede influir */
/* declare @valoracion char(1) = null
select @valoracion = valoracion from ln_indicadores
where clave_indicador = @accion
if @valoracion != 'A'
exec LN_contrapartes_queue_ 'insert',null,@contraparte,null
*/
END
/*
select * from ln_indicadores where clave_indicador in ( 'VRM_SCORE_RA', 'MA_Risk_Assessment')
'RA_Industria')
insert into ln_indicadores_dependientes values (383,423)
select * from ln_contraparte_indicadores where contraparte = 162668 and indicador in (414, 419)
(indicador in (select indicador from ln_indicadores_dependientes) or
indicador in (select indicador_dependiente from ln_indicadores_dependientes) )
select * from ln_contraparte_indicadores where contraparte = 162668 and indicador = 396
select d.indicador, i.clave_indicador, d.indicador_dependiente, id.clave_indicador
from ln_indicadores_dependientes d
inner join ln_indicadores i on i.indicador = d.indicador
inner join ln_indicadores id on id.indicador = d.indicador_dependiente
order by indicador_dependiente
update ln_indicadores set valoracion = 'D' where indicador in (413,414,419,420)
select valor_numerico, valor_texto
from ln_contraparte_indicadores
where contraparte = 162668
and indicador = 419
select * from ln_indicadores where indicador = 396
select * from ln_productos where producto = 2082
*/
GO
Depends On
16- dbo.LN_dependencia_economica_balance
- dbo.LN_docs_valores
- dbo.LN_indicadores_manual_cliente
- dbo.LN_scores_VRM
- dbo.LB_Footprint
- dbo.Limites_alertas
- dbo.LN_contraparte_datos_configuracion
- dbo.LN_contraparte_familias
- dbo.LN_contraparte_indicadores
- dbo.LN_contrapartes
- dbo.LN_docs
- dbo.LN_gestiones
- dbo.LN_indicadores
- dbo.ln_indicadores_dependientes
- dbo.LN_productos
- dbo.DelimitedSplit8K
Used By
No items found