Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
9| Name | Data Type | Length | Description |
|---|---|---|---|
| @contraparte | int | 4 | |
| @accion | varchar | 40 | |
| @indicador | int | 4 | |
| @valor | varchar | -1 | |
| @detalle_cliente | varchar | -1 | |
| @detalle_fidelitas | varchar | -1 | |
| @user_id | int | 4 | |
| @activo | bit | 1 | |
| @p_gestion | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: María Inés Soria
-- Create date: 03/11/2021
-- Description: Para ver si la contraparte tiene indicadores de tipo Manual Cliente
-- =============================================
/*
select * from ln_productos order by producto desc
select distinct tipo_dato from ln_indicadores where producto = 2081
select * from ln_cliente_productos where producto = 2081
select * from ln_familia_productos where producto = 2081
select * from ln_indicadores where CLAVE_indicador = 'REVISADO_VRM'
[LN_indicadores_manual_cliente] null, 'BOTON',396
select * from clientes where cli_codigo = 222
select * from ln_contrapartes where cliente = 1226057645
[LN_indicadores_manual_cliente] 196311, 'SELECT_2099'
select * from ln_indicadores where indicador in( 384,408,396)
select * from ln_productos where producto in ( 2080,2082,2084,2085)
update ln_productos set visible_home = 0 where producto in ( 2084,2085)
select * from ln_gestiones where contraparte = 163038
select * from ln_contraparte_indicadores where contraparte = 163038 and indicador = 384
select * from ln_contraparte_comentarios where contraparte = 163038
LN_indicadores_manual_cliente 169241,'UPDATE', 418, 'B','Prueba','Prueba fidelitas',1
LN_indicadores_manual_cliente 163038,'SELECT'
select * from trazabilidad where contraparte = 169241 order by created desc
select * from ln_indicadores_boton_checkbox
LN_indicadores_manual_cliente 169241,'UPDATE',418,'B','','Cambio Materialidad del proveedor : de MEDIO: desde 100k€ e inferior a 5M€ a BAJO: inferior a 100k€',681521128
LN_indicadores_manual_cliente 163038,'INDICADOR',383
LN_indicadores_manual_cliente 194109, 'VALORES_INDICADORES_GESTIONES_2099'
LN_indicadores_manual_cliente 225223,'UPDATE', 489, '426945','','',681521128
*/
CREATE OR ALTER PROCEDURE dbo.LN_indicadores_manual_cliente
@contraparte int,
@accion varchar(40) = 'SELECT',
@indicador int = null,
@valor varchar(max) = null,
@detalle_cliente varchar(max) = null,
@detalle_fidelitas varchar(max) = null,
@user_id int = null,
@activo bit = null,
@p_gestion int = null
AS
BEGIN
SET NOCOUNT ON;
declare @valor_texto_ant varchar(100) = null
declare @valor_numerico_ant decimal(12,2) = null
declare @valor_memo_ant varchar(100) = null
declare @valor_fecha_ant date = null
declare @trazabilidad varchar(max) = null
declare @trazabilidad2 varchar(max) = null
if (@accion = 'BOTON')
begin
select cuando_valor,
texto as texto_boton,
habilitado as boton_habilitado
from ln_indicadores_boton_checkbox
where indicador = @indicador
and boton_checkbox = 'B'
end
if (@accion = 'CHECKBOX')
begin
select cuando_valor,
texto as texto_boton,
habilitado as boton_habilitado
from ln_indicadores_boton_checkbox
where indicador = @indicador
and boton_checkbox = 'C'
end
if (@accion = 'SELECT_PRUEBA' or @accion = 'SELECT')
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'B'),'SI','NO') as es_boton,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'C'),'SI','NO') as es_checkbox
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and (LN_indicadores.valoracion = 'C'/* or LN_indicadores.producto = 2099*/)
-- 08/07/2024 (porque se buscan con la accion select_2099)
and LN_indicadores.producto != 2099 -- que no sean datos extra
--
and LN_productos.visible = 1
and ln_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
and LN_productos.visible_home = 1
order by ln_productos.producto, ln_indicadores.orden
/* select * from LN_productos where visible_home = 1*/
end
if (@accion = 'SELECT_2099')
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'B'),'SI','NO') as es_boton,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'C'),'SI','NO') as es_checkbox
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and LN_indicadores.producto = 2099
and LN_productos.visible = 1
and ln_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
--and LN_productos.visible_home = 1
order by ln_productos.producto, ln_indicadores.orden
/* select * from LN_productos where visible_home = 1*/
end
/*
if (@accion = 'SELECT_PRUEBA')
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'B'),'SI','NO') as es_boton,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'C'),'SI','NO') as es_checkbox
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and LN_indicadores.valoracion = 'C'
and LN_productos.visible = 1
and ln_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
and (LN_productos.visible_home = 1 or LN_productos.producto in ( 2080,2082,2084,2085))
order by ln_productos.producto, ln_indicadores.orden
end
*/
if (@accion = 'COLORES')
begin
select color_fondo as color
from LN_cliente_nivel
where cliente = (select cliente from ln_contrapartes where contraparte = @contraparte)
and indicador = @indicador
and texto = @valor
end
declare @gestion1 int = null
if (@accion = 'UPDATE' or @accion = 'COMENTARIOS')
begin
if (@detalle_cliente is not null or @detalle_fidelitas is not null)
begin
/* este if se agrego 11/07/2024: porque si el cliente no escribio nada, el cambio del indicador ya se guarda en trazabilidad */
/*
if (@accion = 'COMENTARIOS' or @detalle_cliente is not null)
begin
*/
SELECT @gestion1 = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
insert into ln_contraparte_comentarios (contraparte, gestion, indicador, texto_fidelitas, texto_cliente, visible,created_by)
values (@contraparte, @gestion1, @indicador,@detalle_fidelitas,@detalle_cliente,1,@user_id)
/*
end
*/
end
end
if (@accion = 'UPDATE_ACTIVO')
begin
update ln_contrapartes set activo = @activo, modified_by = @user_id, modified = getdate()
where contraparte = @contraparte
SELECT @gestion1 = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
insert into ln_contraparte_comentarios (contraparte, gestion, indicador, texto_fidelitas, texto_cliente, visible,created_by)
values (@contraparte, @gestion1, '0',@detalle_fidelitas,@detalle_cliente,1,@user_id)
select 'ok' as respuesta
end
if (@accion = 'UPDATE')
begin
SELECT @gestion1 = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
select @valor_numerico_ant = valor_numerico,
@valor_texto_ant = valor_texto,
@valor_memo_ant = valor_memo,
@valor_fecha_ant = valor_fecha
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion1
and visible = 1
and indicador = @indicador
/*
select * from ln_indicadores where indicador in (324,384)
select * from ln_cliente_nivel where indicador in (324,384)
update ln_indicadores set opciones = 'D|C|CC|CCC|B|BB|BBB|A|AA|AAA^D|C|CC|CCC|B|BB|BBB|A|AA|AAA' where indicador = 324
*/
if (@valor = '') set @valor = null
declare @gestion int = null, @tipo_dato char(1) = ''
SELECT @gestion = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
declare @cliente int
declare @familia int
select @cliente = ln_contrapartes.cliente,
@familia = ln_contraparte_familias.familia
from ln_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = LN_contrapartes.contraparte
WHERE ln_contrapartes.contraparte = @contraparte
declare @nombre_indicador varchar(100) = null
declare @clave_ind varchar(100) = null
declare @producto int = null
select @tipo_dato = tipo_dato, @nombre_indicador = nombre_indicador, @clave_ind = clave_indicador, @producto = producto
from LN_indicadores where indicador = @indicador
declare @valor_numerico float = null
declare @valor_texto varchar(max) = null
declare @valor_memo varchar(max) = null
declare @valor_fecha date = null
if (@clave_ind like 'DD_%' and @producto = 2105)
begin
if (@clave_ind like 'DD_ESTADO' or @clave_ind like 'DD_APROBACION')
begin
select @valor_numerico = hasta-1 from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and texto = @valor
set @valor_texto = @valor
end
else
begin
set @valor_numerico = case @valor
when 'A' then '10'
when 'M' then '50'
when 'B' then '100'
end
set @valor_texto = @valor
end
select @valor_memo = texto_largo from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and desde <= @valor_numerico and hasta > @valor_numerico
end
else
begin
if (@indicador = 461 or @indicador = 462 or @indicador = 464)
begin
set @valor_numerico = convert(float, @valor)
set @valor_texto = @valor
set @valor_memo = @valor
if (@indicador = 464)
select @valor_memo = texto_largo from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and desde <= @valor_numerico and hasta > @valor_numerico
end
else
begin
if (@tipo_dato = 'I' or @tipo_dato = 'B' or @indicador = 324 or @indicador = 463 or @indicador = 465)
begin
set @valor_numerico = convert(float, @valor)
select @valor_texto = texto, @valor_memo = texto_largo from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and desde <= @valor_numerico and hasta > @valor_numerico
end
else
begin
if (@tipo_dato = 'D')
begin
set @valor_fecha = convert(date,@valor)
end
else
begin
if (@tipo_dato = 'M')
begin
set @valor_memo = @valor
if (LEN(@valor)<=100) set @valor_texto = @valor
end
else
begin
set @valor_texto = @valor
select @valor_numerico = desde, @valor_memo = texto_largo
from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and texto = @valor_texto
end
end
end
if (@valor_memo is null and @valor_texto is not null) /* 08/04/2022: en valor_memo porque el texto que corresponde a la opcion */
BEGIN
EXEC LN_indicadores_opciones @indicador,@valor_texto, @valor_memo output
END
end
end
--select @indicador indicador, @tipo_dato tipo_dato, @valor_numerico valor_numerico, @valor_texto valor_texto, @valor_memo valor_memo, @valor_fecha valor_fecha
if not exists (select * FROM LN_contraparte_indicadores
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indicador
AND visible = 1)
begin
insert into LN_contraparte_indicadores
(contraparte,gestion,indicador,valor_numerico,valor_texto,valor_memo,valor_fecha,created,created_by,visible,familia)
values
(@contraparte, @gestion, @indicador, @valor_numerico, @valor_texto, @valor_memo,@valor_fecha, GETDATE(),@user_id, 1,@familia)
end
else
begin
UPDATE LN_contraparte_indicadores
set valor_numerico = @valor_numerico,
valor_texto = @valor_texto,
valor_memo = @valor_memo,
valor_fecha = @valor_fecha,
familia = @familia,
modified = getdate(),
modified_by = @user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indicador
end
if (@indicador not in (408,409))
begin
/* detalles */
declare @detalle varchar(max) = ''
if (@valor_numerico != -100.0)
begin
if exists (select * From ln_score_detalle_killer
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and visible = 1)
UPDATE LN_score_detalle_killer
set visible = 0, modified = getdate()
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
end
if (@valor_numerico = 100.0 or @valor_numerico = -100.0)
begin
if exists (select * From ln_score_detalle_puntos
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and visible = 1)
UPDATE ln_score_detalle_puntos
set visible = 0, modified = getdate()
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
end
if (@valor_numerico = -100.0)
begin
set @detalle = @nombre_indicador + ': ' + @valor_memo
if exists (select * From ln_score_detalle_killer
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and detalle_killer != isnull(@detalle,'')
and visible = 1)
UPDATE LN_score_detalle_killer
set visible = 0, modified = getdate()
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
if (isnull(@detalle,'')!= '')
begin
if not exists (select * From ln_score_detalle_killer
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and detalle_killer = isnull(@detalle,'')
and visible = 1)
insert into ln_score_detalle_killer
(contraparte, gestion, indicador, detalle_killer, visible, created)
values (@contraparte, @gestion, @indicador, @detalle, 1, getdate())
end
end
if (@valor_numerico between 0 and 99.99)
begin
set @detalle = @nombre_indicador + ': ' + @valor_memo
if exists (select * From ln_score_detalle_puntos
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and detalle != isnull(@detalle,'')
and visible = 1)
begin
UPDATE ln_score_detalle_puntos
set visible = 0, modified = getdate()
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
end
if not exists (select * From ln_score_detalle_puntos
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and detalle = isnull(@detalle,'')
and visible = 1)
begin
insert into ln_score_detalle_puntos
(contraparte, gestion, indicador, detalle, visible, created)
values (@contraparte, @gestion, @indicador, @detalle, 1, getdate())
end
end
end
select @valor_numerico valor_numerico, @valor_texto valor_texto, @valor_memo valor_memo, @detalle detalle
select iif(isnull(@valor_memo,'')!='',@valor_memo,'nulo') as como
if (isnull(@valor_numerico_ant,-500) != isnull(@valor_numerico,-500) or
isnull(@valor_texto_ant,'') != isnull(@valor_texto,'') or
isnull(@valor_memo_ant,'') != isnull(@valor_memo,'') or
isnull(@valor_fecha_ant,'1901-01-01') != isnull(@valor_fecha,'1901-01-01'))
begin
if (@tipo_dato = 'B' AND @valor_numerico = 1 AND isnull(@valor_texto,'')='') set @valor_texto = 'SI'
if (@tipo_dato = 'B' AND isnull(@valor_numerico,0) = 0 AND isnull(@valor_texto,'')='') set @valor_texto = 'NO'
set @trazabilidad = 'Actualizado: ' + @nombre_indicador + ': ' +
iif(@valor_fecha is not null,convert(varchar,@valor_fecha,103),
iif(isnull(@valor_memo,'')!='',@valor_memo,
iif(isnull(@valor_texto,'')!='',@valor_texto,
iif(@valor_numerico is not null,convert(varchar,@valor_numerico),'-'))))
set @trazabilidad2 = 'CAMBIO_INDICADOR_'+convert(varchar,@indicador)
select @trazabilidad trazabilidad
select @trazabilidad2 trazabilidad2
set @user_id = ISNULL(@user_id,1)
exec insertar_trazabilidad @trazabilidad, @cliente, @trazabilidad2,'WWW', @contraparte, @user_id
end
/* Después de tocar un indicador, veo si tiene que calcular un indicador dependiente
Ojo: Por ahora solo está hecho para indicadores de VRM que usan el SP [LN_scores_VRM] */
declare @clave_indicador varchar(100)
declare @indicador_dependiente int
if (select count(*)
from ln_indicadores_dependientes
where ln_indicadores_dependientes.indicador = @indicador) > 0
begin
DECLARE C_ind CURSOR 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 = @indicador
OPEN C_ind
FETCH NEXT FROM C_ind INTO @indicador_dependiente, @clave_indicador
WHILE @@fetch_status = 0
BEGIN
select 'VA A CALCULAR DEPENDIENTE (1): ' as accion,
@indicador as indicador,
@indicador_dependiente as indicador_dependiente,
@clave_indicador as indicador_dependiente
exec [LN_scores_VRM] @clave_indicador,
@contraparte,
@user_id
FETCH NEXT FROM C_ind INTO @indicador_dependiente, @clave_indicador
END
CLOSE C_ind
DEALLOCATE C_ind
end
end
if (@accion = 'INDICADOR')
begin
if (@p_gestion is null)
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
convert(varchar,LN_contraparte_indicadores.valor_fecha,103) as valor_fecha_dmy,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and LN_indicadores.indicador = @indicador
and LN_productos.visible = 1
and ln_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
order by ln_indicadores.orden
end
else
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
convert(varchar,LN_contraparte_indicadores.valor_fecha,103) as valor_fecha_dmy,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and LN_indicadores.indicador = @indicador
and LN_productos.visible = 1
and ln_gestiones.gestion = @p_gestion
order by ln_indicadores.orden
end
end
IF (@accion = 'VALORES_INDICADORES_GESTIONES')
BEGIN
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
--ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,
ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
convert(varchar,LN_contraparte_indicadores.valor_fecha,103) as valor_fecha_dmy,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
ln_contraparte_indicadores.gestion,
ln_gestiones.desde
from LN_contrapartes
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte and ln_contraparte_indicadores.visible = 1)
left join ln_gestiones on (ln_gestiones.contraparte = LN_contraparte_indicadores.contraparte and ln_gestiones.gestion = LN_contraparte_indicadores.gestion)
inner join ln_indicadores on ln_indicadores.indicador = LN_contraparte_indicadores.indicador
inner join ln_productos on ln_productos.producto = ln_indicadores.producto
where LN_contrapartes.contraparte = @contraparte
and LN_indicadores.valoracion = 'C'
and (LN_productos.visible_home = 1 or LN_productos.producto in ( 2080,2082,2084,2085))
order by ln_productos.producto, ln_indicadores.orden
END
IF (@accion = 'VALORES_INDICADORES_GESTIONES_2099')
BEGIN
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
--ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,
ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
convert(varchar,LN_contraparte_indicadores.valor_fecha,103) as valor_fecha_dmy,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
ln_contraparte_indicadores.gestion,
ln_gestiones.desde
from LN_contrapartes
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte and ln_contraparte_indicadores.visible = 1)
left join ln_gestiones on (ln_gestiones.contraparte = LN_contraparte_indicadores.contraparte and ln_gestiones.gestion = LN_contraparte_indicadores.gestion)
inner join ln_indicadores on ln_indicadores.indicador = LN_contraparte_indicadores.indicador
inner join ln_productos on ln_productos.producto = ln_indicadores.producto
where LN_contrapartes.contraparte = @contraparte
and LN_productos.producto in ( 2099)
order by ln_productos.producto, ln_indicadores.orden
END
if (@accion = 'SUBIR_ARCHIVO')
begin
set @detalle_fidelitas = 'Se adjunta Informe Final Debida Diligencia'
set @detalle_cliente = null
SELECT @gestion1 = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
begin
insert into ln_contraparte_comentarios (contraparte, gestion, indicador, texto_fidelitas, texto_cliente, visible,created_by)
values (@contraparte, @gestion1, @indicador,@detalle_fidelitas,@detalle_cliente,1,@user_id)
end
end
END
GO
GO
-- =============================================
-- Author: María Inés Soria
-- Create date: 03/11/2021
-- Description: Para ver si la contraparte tiene indicadores de tipo Manual Cliente
-- =============================================
/*
select * from ln_productos order by producto desc
select distinct tipo_dato from ln_indicadores where producto = 2081
select * from ln_cliente_productos where producto = 2081
select * from ln_familia_productos where producto = 2081
select * from ln_indicadores where CLAVE_indicador = 'REVISADO_VRM'
[LN_indicadores_manual_cliente] null, 'BOTON',396
select * from clientes where cli_codigo = 222
select * from ln_contrapartes where cliente = 1226057645
[LN_indicadores_manual_cliente] 196311, 'SELECT_2099'
select * from ln_indicadores where indicador in( 384,408,396)
select * from ln_productos where producto in ( 2080,2082,2084,2085)
update ln_productos set visible_home = 0 where producto in ( 2084,2085)
select * from ln_gestiones where contraparte = 163038
select * from ln_contraparte_indicadores where contraparte = 163038 and indicador = 384
select * from ln_contraparte_comentarios where contraparte = 163038
LN_indicadores_manual_cliente 169241,'UPDATE', 418, 'B','Prueba','Prueba fidelitas',1
LN_indicadores_manual_cliente 163038,'SELECT'
select * from trazabilidad where contraparte = 169241 order by created desc
select * from ln_indicadores_boton_checkbox
LN_indicadores_manual_cliente 169241,'UPDATE',418,'B','','Cambio Materialidad del proveedor : de MEDIO: desde 100k€ e inferior a 5M€ a BAJO: inferior a 100k€',681521128
LN_indicadores_manual_cliente 163038,'INDICADOR',383
LN_indicadores_manual_cliente 194109, 'VALORES_INDICADORES_GESTIONES_2099'
LN_indicadores_manual_cliente 225223,'UPDATE', 489, '426945','','',681521128
*/
CREATE OR ALTER PROCEDURE dbo.LN_indicadores_manual_cliente
@contraparte int,
@accion varchar(40) = 'SELECT',
@indicador int = null,
@valor varchar(max) = null,
@detalle_cliente varchar(max) = null,
@detalle_fidelitas varchar(max) = null,
@user_id int = null,
@activo bit = null,
@p_gestion int = null
AS
BEGIN
SET NOCOUNT ON;
declare @valor_texto_ant varchar(100) = null
declare @valor_numerico_ant decimal(12,2) = null
declare @valor_memo_ant varchar(100) = null
declare @valor_fecha_ant date = null
declare @trazabilidad varchar(max) = null
declare @trazabilidad2 varchar(max) = null
if (@accion = 'BOTON')
begin
select cuando_valor,
texto as texto_boton,
habilitado as boton_habilitado
from ln_indicadores_boton_checkbox
where indicador = @indicador
and boton_checkbox = 'B'
end
if (@accion = 'CHECKBOX')
begin
select cuando_valor,
texto as texto_boton,
habilitado as boton_habilitado
from ln_indicadores_boton_checkbox
where indicador = @indicador
and boton_checkbox = 'C'
end
if (@accion = 'SELECT_PRUEBA' or @accion = 'SELECT')
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'B'),'SI','NO') as es_boton,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'C'),'SI','NO') as es_checkbox
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and (LN_indicadores.valoracion = 'C'/* or LN_indicadores.producto = 2099*/)
-- 08/07/2024 (porque se buscan con la accion select_2099)
and LN_indicadores.producto != 2099 -- que no sean datos extra
--
and LN_productos.visible = 1
and ln_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
and LN_productos.visible_home = 1
order by ln_productos.producto, ln_indicadores.orden
/* select * from LN_productos where visible_home = 1*/
end
if (@accion = 'SELECT_2099')
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'B'),'SI','NO') as es_boton,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'C'),'SI','NO') as es_checkbox
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and LN_indicadores.producto = 2099
and LN_productos.visible = 1
and ln_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
--and LN_productos.visible_home = 1
order by ln_productos.producto, ln_indicadores.orden
/* select * from LN_productos where visible_home = 1*/
end
/*
if (@accion = 'SELECT_PRUEBA')
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'B'),'SI','NO') as es_boton,
iif(exists (select * from LN_indicadores_boton_checkbox where LN_indicadores_boton_checkbox.indicador = ln_indicadores.indicador and LN_indicadores_boton_checkbox.boton_checkbox = 'C'),'SI','NO') as es_checkbox
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and LN_indicadores.valoracion = 'C'
and LN_productos.visible = 1
and ln_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
and (LN_productos.visible_home = 1 or LN_productos.producto in ( 2080,2082,2084,2085))
order by ln_productos.producto, ln_indicadores.orden
end
*/
if (@accion = 'COLORES')
begin
select color_fondo as color
from LN_cliente_nivel
where cliente = (select cliente from ln_contrapartes where contraparte = @contraparte)
and indicador = @indicador
and texto = @valor
end
declare @gestion1 int = null
if (@accion = 'UPDATE' or @accion = 'COMENTARIOS')
begin
if (@detalle_cliente is not null or @detalle_fidelitas is not null)
begin
/* este if se agrego 11/07/2024: porque si el cliente no escribio nada, el cambio del indicador ya se guarda en trazabilidad */
/*
if (@accion = 'COMENTARIOS' or @detalle_cliente is not null)
begin
*/
SELECT @gestion1 = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
insert into ln_contraparte_comentarios (contraparte, gestion, indicador, texto_fidelitas, texto_cliente, visible,created_by)
values (@contraparte, @gestion1, @indicador,@detalle_fidelitas,@detalle_cliente,1,@user_id)
/*
end
*/
end
end
if (@accion = 'UPDATE_ACTIVO')
begin
update ln_contrapartes set activo = @activo, modified_by = @user_id, modified = getdate()
where contraparte = @contraparte
SELECT @gestion1 = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
insert into ln_contraparte_comentarios (contraparte, gestion, indicador, texto_fidelitas, texto_cliente, visible,created_by)
values (@contraparte, @gestion1, '0',@detalle_fidelitas,@detalle_cliente,1,@user_id)
select 'ok' as respuesta
end
if (@accion = 'UPDATE')
begin
SELECT @gestion1 = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
select @valor_numerico_ant = valor_numerico,
@valor_texto_ant = valor_texto,
@valor_memo_ant = valor_memo,
@valor_fecha_ant = valor_fecha
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion1
and visible = 1
and indicador = @indicador
/*
select * from ln_indicadores where indicador in (324,384)
select * from ln_cliente_nivel where indicador in (324,384)
update ln_indicadores set opciones = 'D|C|CC|CCC|B|BB|BBB|A|AA|AAA^D|C|CC|CCC|B|BB|BBB|A|AA|AAA' where indicador = 324
*/
if (@valor = '') set @valor = null
declare @gestion int = null, @tipo_dato char(1) = ''
SELECT @gestion = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
declare @cliente int
declare @familia int
select @cliente = ln_contrapartes.cliente,
@familia = ln_contraparte_familias.familia
from ln_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = LN_contrapartes.contraparte
WHERE ln_contrapartes.contraparte = @contraparte
declare @nombre_indicador varchar(100) = null
declare @clave_ind varchar(100) = null
declare @producto int = null
select @tipo_dato = tipo_dato, @nombre_indicador = nombre_indicador, @clave_ind = clave_indicador, @producto = producto
from LN_indicadores where indicador = @indicador
declare @valor_numerico float = null
declare @valor_texto varchar(max) = null
declare @valor_memo varchar(max) = null
declare @valor_fecha date = null
if (@clave_ind like 'DD_%' and @producto = 2105)
begin
if (@clave_ind like 'DD_ESTADO' or @clave_ind like 'DD_APROBACION')
begin
select @valor_numerico = hasta-1 from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and texto = @valor
set @valor_texto = @valor
end
else
begin
set @valor_numerico = case @valor
when 'A' then '10'
when 'M' then '50'
when 'B' then '100'
end
set @valor_texto = @valor
end
select @valor_memo = texto_largo from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and desde <= @valor_numerico and hasta > @valor_numerico
end
else
begin
if (@indicador = 461 or @indicador = 462 or @indicador = 464)
begin
set @valor_numerico = convert(float, @valor)
set @valor_texto = @valor
set @valor_memo = @valor
if (@indicador = 464)
select @valor_memo = texto_largo from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and desde <= @valor_numerico and hasta > @valor_numerico
end
else
begin
if (@tipo_dato = 'I' or @tipo_dato = 'B' or @indicador = 324 or @indicador = 463 or @indicador = 465)
begin
set @valor_numerico = convert(float, @valor)
select @valor_texto = texto, @valor_memo = texto_largo from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and desde <= @valor_numerico and hasta > @valor_numerico
end
else
begin
if (@tipo_dato = 'D')
begin
set @valor_fecha = convert(date,@valor)
end
else
begin
if (@tipo_dato = 'M')
begin
set @valor_memo = @valor
if (LEN(@valor)<=100) set @valor_texto = @valor
end
else
begin
set @valor_texto = @valor
select @valor_numerico = desde, @valor_memo = texto_largo
from ln_cliente_nivel where indicador = @indicador and cliente = @cliente and texto = @valor_texto
end
end
end
if (@valor_memo is null and @valor_texto is not null) /* 08/04/2022: en valor_memo porque el texto que corresponde a la opcion */
BEGIN
EXEC LN_indicadores_opciones @indicador,@valor_texto, @valor_memo output
END
end
end
--select @indicador indicador, @tipo_dato tipo_dato, @valor_numerico valor_numerico, @valor_texto valor_texto, @valor_memo valor_memo, @valor_fecha valor_fecha
if not exists (select * FROM LN_contraparte_indicadores
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indicador
AND visible = 1)
begin
insert into LN_contraparte_indicadores
(contraparte,gestion,indicador,valor_numerico,valor_texto,valor_memo,valor_fecha,created,created_by,visible,familia)
values
(@contraparte, @gestion, @indicador, @valor_numerico, @valor_texto, @valor_memo,@valor_fecha, GETDATE(),@user_id, 1,@familia)
end
else
begin
UPDATE LN_contraparte_indicadores
set valor_numerico = @valor_numerico,
valor_texto = @valor_texto,
valor_memo = @valor_memo,
valor_fecha = @valor_fecha,
familia = @familia,
modified = getdate(),
modified_by = @user_id
WHERE contraparte = @contraparte
AND gestion = @gestion
AND indicador = @indicador
end
if (@indicador not in (408,409))
begin
/* detalles */
declare @detalle varchar(max) = ''
if (@valor_numerico != -100.0)
begin
if exists (select * From ln_score_detalle_killer
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and visible = 1)
UPDATE LN_score_detalle_killer
set visible = 0, modified = getdate()
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
end
if (@valor_numerico = 100.0 or @valor_numerico = -100.0)
begin
if exists (select * From ln_score_detalle_puntos
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and visible = 1)
UPDATE ln_score_detalle_puntos
set visible = 0, modified = getdate()
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
end
if (@valor_numerico = -100.0)
begin
set @detalle = @nombre_indicador + ': ' + @valor_memo
if exists (select * From ln_score_detalle_killer
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and detalle_killer != isnull(@detalle,'')
and visible = 1)
UPDATE LN_score_detalle_killer
set visible = 0, modified = getdate()
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
if (isnull(@detalle,'')!= '')
begin
if not exists (select * From ln_score_detalle_killer
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and detalle_killer = isnull(@detalle,'')
and visible = 1)
insert into ln_score_detalle_killer
(contraparte, gestion, indicador, detalle_killer, visible, created)
values (@contraparte, @gestion, @indicador, @detalle, 1, getdate())
end
end
if (@valor_numerico between 0 and 99.99)
begin
set @detalle = @nombre_indicador + ': ' + @valor_memo
if exists (select * From ln_score_detalle_puntos
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and detalle != isnull(@detalle,'')
and visible = 1)
begin
UPDATE ln_score_detalle_puntos
set visible = 0, modified = getdate()
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
end
if not exists (select * From ln_score_detalle_puntos
where contraparte = @contraparte
and gestion = @gestion
and indicador = @indicador
and detalle = isnull(@detalle,'')
and visible = 1)
begin
insert into ln_score_detalle_puntos
(contraparte, gestion, indicador, detalle, visible, created)
values (@contraparte, @gestion, @indicador, @detalle, 1, getdate())
end
end
end
select @valor_numerico valor_numerico, @valor_texto valor_texto, @valor_memo valor_memo, @detalle detalle
select iif(isnull(@valor_memo,'')!='',@valor_memo,'nulo') as como
if (isnull(@valor_numerico_ant,-500) != isnull(@valor_numerico,-500) or
isnull(@valor_texto_ant,'') != isnull(@valor_texto,'') or
isnull(@valor_memo_ant,'') != isnull(@valor_memo,'') or
isnull(@valor_fecha_ant,'1901-01-01') != isnull(@valor_fecha,'1901-01-01'))
begin
if (@tipo_dato = 'B' AND @valor_numerico = 1 AND isnull(@valor_texto,'')='') set @valor_texto = 'SI'
if (@tipo_dato = 'B' AND isnull(@valor_numerico,0) = 0 AND isnull(@valor_texto,'')='') set @valor_texto = 'NO'
set @trazabilidad = 'Actualizado: ' + @nombre_indicador + ': ' +
iif(@valor_fecha is not null,convert(varchar,@valor_fecha,103),
iif(isnull(@valor_memo,'')!='',@valor_memo,
iif(isnull(@valor_texto,'')!='',@valor_texto,
iif(@valor_numerico is not null,convert(varchar,@valor_numerico),'-'))))
set @trazabilidad2 = 'CAMBIO_INDICADOR_'+convert(varchar,@indicador)
select @trazabilidad trazabilidad
select @trazabilidad2 trazabilidad2
set @user_id = ISNULL(@user_id,1)
exec insertar_trazabilidad @trazabilidad, @cliente, @trazabilidad2,'WWW', @contraparte, @user_id
end
/* Después de tocar un indicador, veo si tiene que calcular un indicador dependiente
Ojo: Por ahora solo está hecho para indicadores de VRM que usan el SP [LN_scores_VRM] */
declare @clave_indicador varchar(100)
declare @indicador_dependiente int
if (select count(*)
from ln_indicadores_dependientes
where ln_indicadores_dependientes.indicador = @indicador) > 0
begin
DECLARE C_ind CURSOR 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 = @indicador
OPEN C_ind
FETCH NEXT FROM C_ind INTO @indicador_dependiente, @clave_indicador
WHILE @@fetch_status = 0
BEGIN
select 'VA A CALCULAR DEPENDIENTE (1): ' as accion,
@indicador as indicador,
@indicador_dependiente as indicador_dependiente,
@clave_indicador as indicador_dependiente
exec [LN_scores_VRM] @clave_indicador,
@contraparte,
@user_id
FETCH NEXT FROM C_ind INTO @indicador_dependiente, @clave_indicador
END
CLOSE C_ind
DEALLOCATE C_ind
end
end
if (@accion = 'INDICADOR')
begin
if (@p_gestion is null)
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
convert(varchar,LN_contraparte_indicadores.valor_fecha,103) as valor_fecha_dmy,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and LN_indicadores.indicador = @indicador
and LN_productos.visible = 1
and ln_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
order by ln_indicadores.orden
end
else
begin
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
convert(varchar,LN_contraparte_indicadores.valor_fecha,103) as valor_fecha_dmy,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto
from LN_contrapartes
inner join ln_contraparte_familias on ln_contraparte_familias.contraparte = ln_contrapartes.contraparte
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte
inner join LN_familia_productos on ln_familia_productos.familia = ln_contraparte_familias.familia
inner join ln_productos on ln_productos.producto = LN_familia_productos.producto
inner join ln_indicadores on ln_indicadores.producto = LN_familia_productos.producto
inner join ln_cliente_indicadores on (ln_cliente_indicadores.cliente = ln_contrapartes.cliente
and ln_cliente_indicadores.indicador = ln_indicadores.indicador)
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
and LN_contraparte_indicadores.indicador = LN_indicadores.indicador
and ln_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.gestion = ln_gestiones.gestion)
where LN_contrapartes.contraparte = @contraparte
and LN_familia_productos.activo = 1
and LN_indicadores.indicador = @indicador
and LN_productos.visible = 1
and ln_gestiones.gestion = @p_gestion
order by ln_indicadores.orden
end
end
IF (@accion = 'VALORES_INDICADORES_GESTIONES')
BEGIN
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
--ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,
ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
convert(varchar,LN_contraparte_indicadores.valor_fecha,103) as valor_fecha_dmy,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
ln_contraparte_indicadores.gestion,
ln_gestiones.desde
from LN_contrapartes
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte and ln_contraparte_indicadores.visible = 1)
left join ln_gestiones on (ln_gestiones.contraparte = LN_contraparte_indicadores.contraparte and ln_gestiones.gestion = LN_contraparte_indicadores.gestion)
inner join ln_indicadores on ln_indicadores.indicador = LN_contraparte_indicadores.indicador
inner join ln_productos on ln_productos.producto = ln_indicadores.producto
where LN_contrapartes.contraparte = @contraparte
and LN_indicadores.valoracion = 'C'
and (LN_productos.visible_home = 1 or LN_productos.producto in ( 2080,2082,2084,2085))
order by ln_productos.producto, ln_indicadores.orden
END
IF (@accion = 'VALORES_INDICADORES_GESTIONES_2099')
BEGIN
select ln_indicadores.indicador, ln_indicadores.nombre_indicador, ln_indicadores.etiqueta, ln_indicadores.clave_indicador, LN_indicadores.tipo_dato,
--ln_indicadores.rango_inferior,ln_indicadores.rango_superior,ln_indicadores.intervalo,ln_indicadores.opciones,
ln_indicadores.orden,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_texto,
convert(varchar,LN_contraparte_indicadores.valor_fecha,103) as valor_fecha_dmy,
LN_contraparte_indicadores.valor_memo,
ln_productos.nombre_producto, ln_productos.producto,
ln_contraparte_indicadores.gestion,
ln_gestiones.desde
from LN_contrapartes
left join LN_contraparte_indicadores on (LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte and ln_contraparte_indicadores.visible = 1)
left join ln_gestiones on (ln_gestiones.contraparte = LN_contraparte_indicadores.contraparte and ln_gestiones.gestion = LN_contraparte_indicadores.gestion)
inner join ln_indicadores on ln_indicadores.indicador = LN_contraparte_indicadores.indicador
inner join ln_productos on ln_productos.producto = ln_indicadores.producto
where LN_contrapartes.contraparte = @contraparte
and LN_productos.producto in ( 2099)
order by ln_productos.producto, ln_indicadores.orden
END
if (@accion = 'SUBIR_ARCHIVO')
begin
set @detalle_fidelitas = 'Se adjunta Informe Final Debida Diligencia'
set @detalle_cliente = null
SELECT @gestion1 = gestion
FROM LN_gestiones
WHERE contraparte = @contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
AND vigente = 1
begin
insert into ln_contraparte_comentarios (contraparte, gestion, indicador, texto_fidelitas, texto_cliente, visible,created_by)
values (@contraparte, @gestion1, @indicador,@detalle_fidelitas,@detalle_cliente,1,@user_id)
end
end
END
GO
Depends On
16- dbo.insertar_trazabilidad
- dbo.LN_indicadores_opciones
- dbo.LN_scores_VRM
- dbo.LN_cliente_indicadores
- dbo.LN_cliente_nivel
- dbo.LN_contraparte_familias
- dbo.LN_contraparte_indicadores
- dbo.LN_contrapartes
- dbo.LN_familia_productos
- dbo.LN_gestiones
- dbo.LN_indicadores
- dbo.LN_indicadores_boton_checkbox
- dbo.ln_indicadores_dependientes
- dbo.LN_productos
- dbo.ln_score_detalle_killer
- dbo.ln_score_detalle_puntos