Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
12| Name | Data Type | Length | Description |
|---|---|---|---|
| @accion | varchar | 50 | |
| @p_cliente | int | 4 | |
| @p_country_code | varchar | 2 | |
| @p_familia | int | 4 | |
| @p_contraparte | int | 4 | |
| @p_clave_indicador | varchar | 50 | |
| @p_score | float | 8 | |
| @p_valor_numerico | float | 8 | |
| @p_valor_texto | varchar | 100 | |
| @p_valor_memo | text | -1 | |
| @p_user_id | int | 4 | |
| @p_visible | tinyint | 1 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
/*
CAMBIADO
exec ln_dashboard_cliente 'PRODUCTOS_GRILLA',1750864950
*/
-- Description: <Description,,>
-- =============================================
/*
exec LN_dashboard_cliente 'VALORES_GRILLA_EXT', '5546348', null,null, 95
exec LN_dashboard_cliente 'cumplimiento_documentos','5546348','AR','29','219'
exec LN_dashboard_cliente 'score_final_contraparte', null, null, null, '301'
exec LN_dashboard_cliente 'VALORES_GRILLA_EXT', 5546348, 'AR',null, 95
*/
CREATE OR ALTER PROCEDURE dbo.LN_dashboard_cliente_ant
-- Add the parameters for the stored procedure here
@accion varchar(50),
@p_cliente int,
@p_country_code varchar(2),
@p_familia int,
@p_contraparte int,
/* Este parámetro opcional para obtener por clave un indicador específico de una contraparte
cuando @accion = 'indicadores_contraparte' */
@p_clave_indicador varchar(50) = NULL,
/* Parámetro para asentar el score manual o cuando se consulta mediante API */
@p_score float = NULL,
/* Estos tres parámetros para asentar indicadores varios en tabla LN_contraparte_indicadores */
@p_valor_numerico float = null,
@p_valor_texto varchar(100) = null,
@p_valor_memo text = null,
@p_user_id int = null,
@p_visible tinyint = 1
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF (@accion = 'GRAFICO_INFORME_COMERCIAL' or @accion = 'GRAFICO_SCORE_BALANCE' or @accion = 'GRAFICO_SCORE_FINAL' or @accion = 'GRAFICO_SCORE_DOCUMENTOS') BEGIN
create table #rangos (
rango varchar(2),
etiqueta varchar(10),
color varchar(6),
total int)
insert into #rangos VALUES ('R5','0-20','A72B2A',0)
insert into #rangos VALUES ('R4','21-40','d37123',0)
insert into #rangos VALUES ('R3','41-60','FFB81C',0)
insert into #rangos VALUES ('R2','61-80','cbc367',0)
insert into #rangos VALUES ('R1','81-100','63b68c',0)
END
/*************************************************************/
DECLARE @contrap int, @gest int = NULL, @indic int, @pond tinyint, @valor float, @prod int, @exc int = null, @tipo_exc varchar(1) = NULL
DECLARE @doc_id int, @tipo_doc int, @estado_doc varchar(1), @vers int, @familia int = null
DECLARE @cantidad int = 0, @cumplidos int = 0, @cantidad_verificados int = 0
DECLARE @producto_alertas int = null
DECLARE @inicial tinyint
DECLARE @carga_inicial tinyint
DECLARE @limite_carga_inicial datetime
DECLARE @has_killer bit = 0, @killer bit = 0
declare @cuit varchar(50) = null
declare @country varchar(2) = null
declare @cliente int = null
/**********************************************/
IF (@accion = 'PAISES') BEGIN
SELECT cc.country_code, cc.country_name
from country cc
inner join LN_contrapartes on cc.country_code = LN_contrapartes.country_code
where LN_contrapartes.cliente = @p_cliente
group by cc.country_code, cc.country_name
END
IF (@accion = 'CONTRAPARTES') BEGIN
if (@p_country_code is null AND @p_familia is null) begin
SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
identificadores.country_code, country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
LN_contraparte_familias.codigo_agrupacion,
LN_contraparte_familias.estado_homologacion,
LN_contraparte_familias.activo,
LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
users.first_name + ' ' + users.last_name AS created_by_user,
users1.first_name + ' ' + users1.last_name AS modified_by_user
FROM LN_contrapartes
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end else
if (@p_country_code is not null and @p_familia is null) begin
SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
identificadores.country_code, country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
LN_contraparte_familias.codigo_agrupacion,
LN_contraparte_familias.estado_homologacion,
LN_contraparte_familias.activo,
LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
users.first_name + ' ' + users.last_name AS created_by_user,
users1.first_name + ' ' + users1.last_name AS modified_by_user
FROM LN_contrapartes
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
AND country.country_code = @p_country_code
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end else
if (@p_country_code is null AND @p_familia is not null) begin
SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
identificadores.country_code, country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
LN_contraparte_familias.codigo_agrupacion,
LN_contraparte_familias.estado_homologacion,
LN_contraparte_familias.activo,
LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
users.first_name + ' ' + users.last_name AS created_by_user,
users1.first_name + ' ' + users1.last_name AS modified_by_user
FROM LN_contrapartes
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
AND LN_contraparte_familias.familia = @p_familia
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end else
SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
identificadores.country_code, country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
LN_contraparte_familias.codigo_agrupacion,
LN_contraparte_familias.estado_homologacion,
LN_contraparte_familias.activo,
LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
users.first_name + ' ' + users.last_name AS created_by_user,
users1.first_name + ' ' + users1.last_name AS modified_by_user
FROM LN_contrapartes
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
AND country.country_code = @p_country_code
AND LN_contraparte_familias.familia = @p_familia
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
END
IF (@accion = 'PRODUCTOS_GRILLA') BEGIN
if (@p_contraparte is null)
/* productos del panel de control del cliente vinculados por familias principales */
SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name, LN_cliente_productos.orden_producto,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_familias.visible = 1
AND ISNULL(LN_familias.subfamilia, 0) = 0
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name, LN_cliente_productos.orden_producto,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso
ORDER BY LN_cliente_productos.orden_producto
else
SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
ORDER BY LN_cliente_productos.orden_producto
END
IF (@accion = 'PRODUCTOS_GRILLA_2') BEGIN
/* Sólo los productos que deben aparecer en las solapas de vista de contrapartes */
if (@p_contraparte is null)
SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_productos.visible_brief = 1
ORDER BY LN_cliente_productos.producto
else
SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
AND LN_productos.visible_brief = 1
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas
ORDER BY LN_productos.producto
END
IF (@accion = 'PRODUCTOS_INDICADORES') BEGIN
/*SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, ISNULL(LN_productos.balance, 0) AS balance,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_familias.visible = 1
AND ISNULL(LN_familias.subfamilia, 0) = 0
AND LN_indicadores.visible = 1
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden
ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden*/
/* para el panel de control, basado en los productos asociados a familias de contrapartes principales
Este select reemplazará al de más arriba cuando esté implementado la suscripción de indicadores de balance por cliente */
SELECT DATA.* FROM
(SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, ISNULL(LN_productos.balance, 0) AS balance,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden,
SUSC.indicador AS indicador_susc,
show_panel = CASE
WHEN ISNULL(LN_productos.balance, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0) ELSE 1 END
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
WHERE cliente = @p_cliente) SUSC
ON (LN_cliente_productos.cliente = SUSC.cliente AND LN_indicadores.indicador = SUSC.indicador)
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_familias.visible = 1
AND ISNULL(LN_familias.subfamilia, 0) = 0
AND LN_indicadores.visible = 1
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden,
SUSC.indicador
--ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden
) DATA
WHERE DATA.show_panel = 1
ORDER BY DATA.orden_producto, DATA.orden
END
IF (@accion = 'VALORES_GRILLA') BEGIN
/* Para obtener valores de indicadores de la grilla panel de control, sólo tomo
indicadores que puedan ser visibles en grilla LN_indicadores.visible = 1 */
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.clave_indicador,
case
when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null,
REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'),
null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null,
/*REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'), */
format(LN_contraparte_indicadores.valor_numerico, '#############.##'),
null)
/*
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
*/
when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
else null
end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
case
when LN_contraparte_indicadores.valor_numerico = 1 then '96CAB0'
when LN_contraparte_indicadores.valor_numerico = 2 then 'FFFFBA'
when LN_contraparte_indicadores.valor_numerico = 3 then 'FDC689'
when LN_contraparte_indicadores.valor_numerico = 4 then 'FD676E'
when LN_contraparte_indicadores.valor_numerico = 5 then 'C55B5B'
when LN_contraparte_indicadores.valor_numerico = 6 then 'C55B5B'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'R' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'N' then 'FFFFFF'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_fondo from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS color_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_texto from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS textcolor_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS svg_data_personalizado,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'FIDECHECK') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#A72B2A" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'R' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#FFB81C" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#63b68c" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
case
when LN_contraparte_indicadores.valor_numerico = 1 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#96CAB0;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M278.767,145.419c-3.126-4.003-7.276-6.006-12.451-6.006c-4.591,0-7.716,0.879-9.375,2.637
c-1.662,1.758-5.226,6.445-10.693,14.063c-5.47,7.617-11.744,14.502-18.823,20.654c-7.082,6.152-16.53,12.012-28.345,17.578
c-7.91,3.712-13.429,6.738-16.553,9.082c-3.126,2.344-4.688,6.006-4.688,10.986c0,4.298,1.586,8.082,4.761,11.353
c3.172,3.273,6.812,4.907,10.913,4.907c8.592,0,25.292-9.521,50.098-28.564V335.41c0,7.814,1.806,13.722,5.42,17.725
c3.612,4.003,8.397,6.006,14.355,6.006c13.378,0,20.068-9.814,20.068-29.443V161.972
C283.455,154.941,281.892,149.425,278.767,145.419z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 2 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FFFFBA;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M319.783,325.595c-4.005-3.124-9.814-4.688-17.432-4.688h-76.465c2.44-3.71,4.834-6.885,7.178-9.521
c5.468-6.64,15.55-15.967,30.249-27.979c14.696-12.012,25.17-20.824,31.421-26.44c6.249-5.614,12.378-13.378,18.384-23.291
c6.006-9.911,9.009-20.922,9.009-33.032c0-7.713-1.442-15.161-4.321-22.339c-2.882-7.178-6.91-13.5-12.085-18.97
c-5.177-5.468-11.183-9.764-18.018-12.891c-10.547-4.688-23.291-7.031-38.232-7.031c-12.403,0-23.218,1.831-32.446,5.493
s-16.846,8.473-22.852,14.429c-6.006,5.958-10.524,12.598-13.55,19.922c-3.028,7.324-4.541,14.355-4.541,21.094
c0,5.566,1.611,9.961,4.834,13.184s7.274,4.834,12.158,4.834c5.566,0,9.789-1.758,12.671-5.273
c2.879-3.516,5.468-8.544,7.764-15.088c2.293-6.542,3.93-10.547,4.907-12.012c7.324-11.229,17.381-16.846,30.176-16.846
c6.054,0,11.646,1.369,16.772,4.102c5.127,2.735,9.178,6.569,12.158,11.499c2.978,4.933,4.468,10.524,4.468,16.772
c0,5.763-1.392,11.646-4.175,17.651s-6.837,11.865-12.158,17.578c-5.324,5.713-11.989,11.403-19.995,17.065
c-4.493,3.028-11.964,9.352-22.412,18.97c-10.451,9.62-22.169,21.167-35.156,34.644c-3.126,3.321-6.006,7.887-8.643,13.696
c-2.637,5.812-3.955,10.474-3.955,13.989c0,5.47,2.051,10.231,6.152,14.282c4.102,4.054,9.814,6.079,17.139,6.079H306.6
c6.445,0,11.254-1.659,14.429-4.98c3.172-3.319,4.761-7.372,4.761-12.158C325.789,332.97,323.786,328.722,319.783,325.595z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 3 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FDC689;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M319.637,269.711c-2.637-6.395-6.569-12.231-11.792-17.505c-5.226-5.273-11.646-9.961-19.263-14.063
c7.91-6.64,13.989-13.451,18.237-20.435c4.248-6.981,6.372-15.355,6.372-25.122c0-7.42-1.465-14.355-4.395-20.801
s-7.276-12.108-13.037-16.992c-5.763-4.882-12.55-8.617-20.361-11.206c-7.814-2.586-16.457-3.882-25.928-3.882
c-10.84,0-20.654,1.538-29.443,4.614s-16.139,7.155-22.046,12.231c-5.91,5.079-10.4,10.426-13.477,16.04
c-3.076,5.617-4.614,10.963-4.614,16.04c0,5.273,1.634,9.499,4.907,12.671c3.271,3.175,6.859,4.761,10.767,4.761
c3.319,0,6.249-0.586,8.789-1.758c2.538-1.172,4.296-2.783,5.273-4.834c1.659-3.809,3.49-7.86,5.493-12.158
c2-4.296,4.125-7.812,6.372-10.547c2.245-2.733,5.296-4.93,9.155-6.592c3.856-1.659,8.764-2.49,14.722-2.49
c8.789,0,15.77,2.71,20.947,8.13c5.175,5.42,7.764,11.891,7.764,19.409c0,9.865-3.248,17.432-9.741,22.705
c-6.496,5.273-14.234,7.91-23.218,7.91h-6.006c-6.935,0-12.158,1.442-15.674,4.321c-3.516,2.882-5.273,6.665-5.273,11.353
c0,4.786,1.465,8.521,4.395,11.206c2.93,2.687,7.079,4.028,12.451,4.028c1.172,0,3.809-0.194,7.91-0.586
c4.102-0.389,7.127-0.586,9.082-0.586c11.133,0,19.823,3.248,26.074,9.741c6.249,6.496,9.375,15.454,9.375,26.88
c0,7.716-1.831,14.502-5.493,20.361s-8.302,10.279-13.916,13.257c-5.617,2.98-11.451,4.468-17.505,4.468
c-10.547,0-18.727-3.296-24.536-9.888c-5.812-6.592-11.256-16.674-16.333-30.249c-0.783-2.245-2.442-4.175-4.98-5.786
c-2.541-1.611-5.177-2.417-7.91-2.417c-5.47,0-10.034,1.735-13.696,5.2c-3.662,3.468-5.493,8.034-5.493,13.696
c0,4.395,1.538,9.961,4.614,16.699s7.617,13.257,13.623,19.556s13.646,11.549,22.925,15.747c9.276,4.198,19.775,6.299,31.494,6.299
c11.522,0,22.046-1.831,31.567-5.493s17.748-8.739,24.683-15.234c6.933-6.493,12.181-13.891,15.747-22.192
c3.563-8.299,5.347-16.894,5.347-25.781C323.592,283.018,322.273,276.109,319.637,269.711z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 4 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FD676E;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M324.983,279.892c-4.541-2.051-10.572-3.076-18.091-3.076h-6.299V163.437
c0-16.992-7.423-25.488-22.266-25.488c-4.591,0-8.521,1.538-11.792,4.614c-3.273,3.076-7.448,8.034-12.524,14.868l-77.637,103.857
c-2.149,2.833-3.955,5.226-5.42,7.178c-1.465,1.955-2.882,3.98-4.248,6.079c-1.369,2.101-2.394,4.102-3.076,6.006
c-0.685,1.904-1.025,3.786-1.025,5.64c0,7.228,2.318,12.941,6.958,17.139c4.637,4.2,11.595,6.299,20.874,6.299h73.535v27.246
c0,7.324,1.685,12.868,5.054,16.626s7.787,5.64,13.257,5.64c5.566,0,10.009-1.831,13.33-5.493c3.319-3.662,4.98-9.251,4.98-16.772
V309.63h8.936c7.42,0,12.987-1.293,16.699-3.882c3.71-2.586,5.566-6.713,5.566-12.378
C331.795,286.436,329.524,281.943,324.983,279.892z M263.973,276.816h-62.988l62.988-85.107V276.816z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 5 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M320.516,255.136c-3.516-8.496-8.35-15.843-14.502-22.046c-6.152-6.2-13.307-11.06-21.46-14.575
c-8.155-3.516-16.919-5.273-26.294-5.273c-11.719,0-24.513,3.712-38.379,11.133l8.35-47.461h69.58
c7.226,0,12.694-1.561,16.406-4.688c3.71-3.124,5.566-7.226,5.566-12.305c0-11.62-7.617-17.432-22.852-17.432h-77.344
c-8.4,0-14.454,1.904-18.164,5.713c-3.712,3.809-6.251,9.913-7.617,18.311l-12.304,70.166c-1.076,6.152-1.611,9.474-1.611,9.961
c0,4.395,1.854,8.327,5.566,11.792c3.71,3.468,7.958,5.2,12.744,5.2c4.395,0,9.984-2.563,16.772-7.69
c6.786-5.127,11.986-8.716,15.601-10.767c3.612-2.051,9.618-3.076,18.018-3.076c6.834,0,13.037,1.637,18.604,4.907
c5.566,3.273,10.009,8.229,13.33,14.868c3.319,6.642,4.98,14.648,4.98,24.023c0,8.693-1.538,16.457-4.614,23.291
c-3.076,6.837-7.448,12.208-13.11,16.113c-5.665,3.907-12.257,5.859-19.775,5.859c-8.203,0-15.626-2.417-22.266-7.251
c-6.642-4.834-11.916-11.595-15.82-20.288c-4.005-9.471-10.107-14.209-18.311-14.209c-4.786,0-8.766,1.71-11.938,5.127
c-3.175,3.419-4.761,7.031-4.761,10.84c0,6.251,2.271,13.55,6.812,21.899s12.254,15.747,23.145,22.192
c10.888,6.445,25.072,9.668,42.554,9.668c15.624,0,29.418-3.419,41.382-10.254c11.961-6.834,21.117-16.063,27.466-27.686
c6.347-11.62,9.521-24.511,9.521-38.672C325.789,272.765,324.031,263.632,320.516,255.136z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 6 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M321.248,258.652c-3.223-8.69-7.789-16.234-13.696-22.632c-5.91-6.395-12.794-11.327-20.654-14.795
c-7.862-3.465-16.432-5.2-25.708-5.2c-9.668,0-18.409,1.904-26.221,5.713c-7.814,3.809-15.04,9.668-21.68,17.578
c1.268-26.562,5.468-45.019,12.598-55.371c3.516-5.077,7.837-9.105,12.964-12.085c5.127-2.978,10.277-4.468,15.454-4.468
c6.445,0,12.108,1.783,16.992,5.347c4.882,3.566,8.446,8.276,10.693,14.136c1.659,4.591,4.248,8.18,7.764,10.767
c3.516,2.589,7.324,3.882,11.426,3.882c4.688,0,8.544-1.634,11.572-4.907c3.026-3.271,4.541-6.908,4.541-10.913
c0-6.64-2.417-13.573-7.251-20.801c-4.834-7.226-12.012-13.28-21.533-18.164c-9.521-4.882-20.533-7.324-33.032-7.324
c-12.989,0-24.562,2.442-34.717,7.324c-10.158,4.884-18.8,12.11-25.928,21.68c-7.13,9.572-12.598,21.632-16.406,36.182
c-3.809,14.552-5.713,31.055-5.713,49.512c0,22.657,3.149,41.821,9.448,57.495s15.404,27.516,27.319,35.522
c11.913,8.009,26.074,12.012,42.48,12.012c14.257,0,27.026-3.149,38.306-9.448s20.068-15.063,26.367-26.294
c6.299-11.229,9.448-23.73,9.448-37.5C326.082,276.427,324.471,267.345,321.248,258.652z M277.303,318.198
c-6.445,8.057-14.601,12.085-24.463,12.085c-10.353,0-18.947-4.395-25.781-13.184c-6.837-8.789-10.254-19.775-10.254-32.959
c0-8.203,1.685-15.355,5.054-21.46c3.369-6.102,7.812-10.767,13.33-13.989c5.516-3.223,11.302-4.834,17.358-4.834
c6.347,0,12.158,1.685,17.432,5.054c5.274,3.369,9.423,8.253,12.451,14.648c3.026,6.397,4.541,14.04,4.541,22.925
C286.971,299.571,283.748,310.141,277.303,318.198z"/>
</svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 181 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 121 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 91 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else null
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positive'
when LN_contraparte_indicadores.valor_texto = 'R' then 'Related'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negative'
else null
end
WHEN LN_indicadores.clave_indicador = 'SITUACION_CD' THEN
iif (LN_contraparte_indicadores.valor_numerico is not null, 'Situación ' + Convert(varchar,LN_contraparte_indicadores.valor_numerico)+' - Período: '+LN_contraparte_indicadores.valor_texto, null)
WHEN LN_indicadores.clave_indicador = 'EXCEPCION' THEN
iif (excepciones.tipo_excepcion = 'V', 'Excepción para PERMITIR ingreso', iif(excepciones.tipo_excepcion = 'R', 'Excepción para RECHAZAR ingreso', NULL))
ELSE NULL
END AS textcaption,
/** TEXTOS **/
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select texto_largo from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS texto,
/** PUNTO **/
CASE
WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto
FROM LN_contrapartes
INNER JOIN LN_contraparte_indicadores ON LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_indicadores.producto = LN_familia_productos.producto)
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
LEFT OUTER JOIN
(SELECT LN_docs.contraparte, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_gestiones ON LN_docs.gestion = LN_gestiones.gestion
INNER JOIN
(select LN_docs.contraparte, LN_docs.tipo_doc, max(doc_version) as ultima
from LN_docs
inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion
AND LN_docs.contraparte = LN_gestiones.contraparte)
where LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
group by LN_docs.contraparte, LN_docs.tipo_doc) ultimas_versiones
ON (LN_docs.tipo_doc = ultimas_versiones.tipo_doc
AND ln_docs.contraparte = ultimas_versiones.contraparte
AND LN_docs.doc_version = ultimas_versiones.ultima)
WHERE LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_docs.estado_doc = 'I'
GROUP BY LN_docs.contraparte) PENDIENTES_VERIFICAR ON LN_contrapartes.contraparte = PENDIENTES_VERIFICAR.contraparte
LEFT OUTER JOIN
(select LN_excepciones.contraparte, LN_excepciones.tipo_excepcion
from LN_contrapartes inner join LN_excepciones
on LN_contrapartes.contraparte = LN_excepciones.contraparte
where LN_contrapartes.cliente = @p_cliente
and LN_excepciones.estado = 1
and LN_excepciones.vigencia >= GETDATE()) excepciones ON LN_contrapartes.contraparte = excepciones.contraparte
WHERE LN_contrapartes.cliente = @p_cliente
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.visible = 1
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
END
IF (@accion = 'VALORES_GRILLA_EXT') BEGIN
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.clave_indicador, LN_productos.producto_id,
case
when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null,
REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'),
null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null,
/*REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'), */
format(LN_contraparte_indicadores.valor_numerico, '#############.##'),
null)
/*
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
*/
when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, right('00'+cast(month(LN_contraparte_indicadores.valor_fecha) as varchar),2) + '-' + cast(right(year(LN_contraparte_indicadores.valor_fecha),2) as varchar), NULL) --convert(varchar, LN_contraparte_indicadores.valor_fecha, 103)
when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
else null
end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
case
when LN_contraparte_indicadores.valor_numerico = 1 then '96CAB0'
when LN_contraparte_indicadores.valor_numerico = 2 then 'FFFFBA'
when LN_contraparte_indicadores.valor_numerico = 3 then 'FDC689'
when LN_contraparte_indicadores.valor_numerico = 4 then 'FD676E'
when LN_contraparte_indicadores.valor_numerico = 5 then 'C55B5B'
when LN_contraparte_indicadores.valor_numerico = 6 then 'C55B5B'
else null
end
WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 181 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 121 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 91 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_fondo from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS color_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_texto from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS textcolor_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS svg_data_personalizado,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'FIDECHECK') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#A72B2A" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'R' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#FFB81C" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#63b68c" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
case
when LN_contraparte_indicadores.valor_numerico = 1 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#96CAB0;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M278.767,145.419c-3.126-4.003-7.276-6.006-12.451-6.006c-4.591,0-7.716,0.879-9.375,2.637
c-1.662,1.758-5.226,6.445-10.693,14.063c-5.47,7.617-11.744,14.502-18.823,20.654c-7.082,6.152-16.53,12.012-28.345,17.578
c-7.91,3.712-13.429,6.738-16.553,9.082c-3.126,2.344-4.688,6.006-4.688,10.986c0,4.298,1.586,8.082,4.761,11.353
c3.172,3.273,6.812,4.907,10.913,4.907c8.592,0,25.292-9.521,50.098-28.564V335.41c0,7.814,1.806,13.722,5.42,17.725
c3.612,4.003,8.397,6.006,14.355,6.006c13.378,0,20.068-9.814,20.068-29.443V161.972
C283.455,154.941,281.892,149.425,278.767,145.419z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 2 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FFFFBA;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M319.783,325.595c-4.005-3.124-9.814-4.688-17.432-4.688h-76.465c2.44-3.71,4.834-6.885,7.178-9.521
c5.468-6.64,15.55-15.967,30.249-27.979c14.696-12.012,25.17-20.824,31.421-26.44c6.249-5.614,12.378-13.378,18.384-23.291
c6.006-9.911,9.009-20.922,9.009-33.032c0-7.713-1.442-15.161-4.321-22.339c-2.882-7.178-6.91-13.5-12.085-18.97
c-5.177-5.468-11.183-9.764-18.018-12.891c-10.547-4.688-23.291-7.031-38.232-7.031c-12.403,0-23.218,1.831-32.446,5.493
s-16.846,8.473-22.852,14.429c-6.006,5.958-10.524,12.598-13.55,19.922c-3.028,7.324-4.541,14.355-4.541,21.094
c0,5.566,1.611,9.961,4.834,13.184s7.274,4.834,12.158,4.834c5.566,0,9.789-1.758,12.671-5.273
c2.879-3.516,5.468-8.544,7.764-15.088c2.293-6.542,3.93-10.547,4.907-12.012c7.324-11.229,17.381-16.846,30.176-16.846
c6.054,0,11.646,1.369,16.772,4.102c5.127,2.735,9.178,6.569,12.158,11.499c2.978,4.933,4.468,10.524,4.468,16.772
c0,5.763-1.392,11.646-4.175,17.651s-6.837,11.865-12.158,17.578c-5.324,5.713-11.989,11.403-19.995,17.065
c-4.493,3.028-11.964,9.352-22.412,18.97c-10.451,9.62-22.169,21.167-35.156,34.644c-3.126,3.321-6.006,7.887-8.643,13.696
c-2.637,5.812-3.955,10.474-3.955,13.989c0,5.47,2.051,10.231,6.152,14.282c4.102,4.054,9.814,6.079,17.139,6.079H306.6
c6.445,0,11.254-1.659,14.429-4.98c3.172-3.319,4.761-7.372,4.761-12.158C325.789,332.97,323.786,328.722,319.783,325.595z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 3 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FDC689;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M319.637,269.711c-2.637-6.395-6.569-12.231-11.792-17.505c-5.226-5.273-11.646-9.961-19.263-14.063
c7.91-6.64,13.989-13.451,18.237-20.435c4.248-6.981,6.372-15.355,6.372-25.122c0-7.42-1.465-14.355-4.395-20.801
s-7.276-12.108-13.037-16.992c-5.763-4.882-12.55-8.617-20.361-11.206c-7.814-2.586-16.457-3.882-25.928-3.882
c-10.84,0-20.654,1.538-29.443,4.614s-16.139,7.155-22.046,12.231c-5.91,5.079-10.4,10.426-13.477,16.04
c-3.076,5.617-4.614,10.963-4.614,16.04c0,5.273,1.634,9.499,4.907,12.671c3.271,3.175,6.859,4.761,10.767,4.761
c3.319,0,6.249-0.586,8.789-1.758c2.538-1.172,4.296-2.783,5.273-4.834c1.659-3.809,3.49-7.86,5.493-12.158
c2-4.296,4.125-7.812,6.372-10.547c2.245-2.733,5.296-4.93,9.155-6.592c3.856-1.659,8.764-2.49,14.722-2.49
c8.789,0,15.77,2.71,20.947,8.13c5.175,5.42,7.764,11.891,7.764,19.409c0,9.865-3.248,17.432-9.741,22.705
c-6.496,5.273-14.234,7.91-23.218,7.91h-6.006c-6.935,0-12.158,1.442-15.674,4.321c-3.516,2.882-5.273,6.665-5.273,11.353
c0,4.786,1.465,8.521,4.395,11.206c2.93,2.687,7.079,4.028,12.451,4.028c1.172,0,3.809-0.194,7.91-0.586
c4.102-0.389,7.127-0.586,9.082-0.586c11.133,0,19.823,3.248,26.074,9.741c6.249,6.496,9.375,15.454,9.375,26.88
c0,7.716-1.831,14.502-5.493,20.361s-8.302,10.279-13.916,13.257c-5.617,2.98-11.451,4.468-17.505,4.468
c-10.547,0-18.727-3.296-24.536-9.888c-5.812-6.592-11.256-16.674-16.333-30.249c-0.783-2.245-2.442-4.175-4.98-5.786
c-2.541-1.611-5.177-2.417-7.91-2.417c-5.47,0-10.034,1.735-13.696,5.2c-3.662,3.468-5.493,8.034-5.493,13.696
c0,4.395,1.538,9.961,4.614,16.699s7.617,13.257,13.623,19.556s13.646,11.549,22.925,15.747c9.276,4.198,19.775,6.299,31.494,6.299
c11.522,0,22.046-1.831,31.567-5.493s17.748-8.739,24.683-15.234c6.933-6.493,12.181-13.891,15.747-22.192
c3.563-8.299,5.347-16.894,5.347-25.781C323.592,283.018,322.273,276.109,319.637,269.711z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 4 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FD676E;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M324.983,279.892c-4.541-2.051-10.572-3.076-18.091-3.076h-6.299V163.437
c0-16.992-7.423-25.488-22.266-25.488c-4.591,0-8.521,1.538-11.792,4.614c-3.273,3.076-7.448,8.034-12.524,14.868l-77.637,103.857
c-2.149,2.833-3.955,5.226-5.42,7.178c-1.465,1.955-2.882,3.98-4.248,6.079c-1.369,2.101-2.394,4.102-3.076,6.006
c-0.685,1.904-1.025,3.786-1.025,5.64c0,7.228,2.318,12.941,6.958,17.139c4.637,4.2,11.595,6.299,20.874,6.299h73.535v27.246
c0,7.324,1.685,12.868,5.054,16.626s7.787,5.64,13.257,5.64c5.566,0,10.009-1.831,13.33-5.493c3.319-3.662,4.98-9.251,4.98-16.772
V309.63h8.936c7.42,0,12.987-1.293,16.699-3.882c3.71-2.586,5.566-6.713,5.566-12.378
C331.795,286.436,329.524,281.943,324.983,279.892z M263.973,276.816h-62.988l62.988-85.107V276.816z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 5 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M320.516,255.136c-3.516-8.496-8.35-15.843-14.502-22.046c-6.152-6.2-13.307-11.06-21.46-14.575
c-8.155-3.516-16.919-5.273-26.294-5.273c-11.719,0-24.513,3.712-38.379,11.133l8.35-47.461h69.58
c7.226,0,12.694-1.561,16.406-4.688c3.71-3.124,5.566-7.226,5.566-12.305c0-11.62-7.617-17.432-22.852-17.432h-77.344
c-8.4,0-14.454,1.904-18.164,5.713c-3.712,3.809-6.251,9.913-7.617,18.311l-12.304,70.166c-1.076,6.152-1.611,9.474-1.611,9.961
c0,4.395,1.854,8.327,5.566,11.792c3.71,3.468,7.958,5.2,12.744,5.2c4.395,0,9.984-2.563,16.772-7.69
c6.786-5.127,11.986-8.716,15.601-10.767c3.612-2.051,9.618-3.076,18.018-3.076c6.834,0,13.037,1.637,18.604,4.907
c5.566,3.273,10.009,8.229,13.33,14.868c3.319,6.642,4.98,14.648,4.98,24.023c0,8.693-1.538,16.457-4.614,23.291
c-3.076,6.837-7.448,12.208-13.11,16.113c-5.665,3.907-12.257,5.859-19.775,5.859c-8.203,0-15.626-2.417-22.266-7.251
c-6.642-4.834-11.916-11.595-15.82-20.288c-4.005-9.471-10.107-14.209-18.311-14.209c-4.786,0-8.766,1.71-11.938,5.127
c-3.175,3.419-4.761,7.031-4.761,10.84c0,6.251,2.271,13.55,6.812,21.899s12.254,15.747,23.145,22.192
c10.888,6.445,25.072,9.668,42.554,9.668c15.624,0,29.418-3.419,41.382-10.254c11.961-6.834,21.117-16.063,27.466-27.686
c6.347-11.62,9.521-24.511,9.521-38.672C325.789,272.765,324.031,263.632,320.516,255.136z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 6 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M321.248,258.652c-3.223-8.69-7.789-16.234-13.696-22.632c-5.91-6.395-12.794-11.327-20.654-14.795
c-7.862-3.465-16.432-5.2-25.708-5.2c-9.668,0-18.409,1.904-26.221,5.713c-7.814,3.809-15.04,9.668-21.68,17.578
c1.268-26.562,5.468-45.019,12.598-55.371c3.516-5.077,7.837-9.105,12.964-12.085c5.127-2.978,10.277-4.468,15.454-4.468
c6.445,0,12.108,1.783,16.992,5.347c4.882,3.566,8.446,8.276,10.693,14.136c1.659,4.591,4.248,8.18,7.764,10.767
c3.516,2.589,7.324,3.882,11.426,3.882c4.688,0,8.544-1.634,11.572-4.907c3.026-3.271,4.541-6.908,4.541-10.913
c0-6.64-2.417-13.573-7.251-20.801c-4.834-7.226-12.012-13.28-21.533-18.164c-9.521-4.882-20.533-7.324-33.032-7.324
c-12.989,0-24.562,2.442-34.717,7.324c-10.158,4.884-18.8,12.11-25.928,21.68c-7.13,9.572-12.598,21.632-16.406,36.182
c-3.809,14.552-5.713,31.055-5.713,49.512c0,22.657,3.149,41.821,9.448,57.495s15.404,27.516,27.319,35.522
c11.913,8.009,26.074,12.012,42.48,12.012c14.257,0,27.026-3.149,38.306-9.448s20.068-15.063,26.367-26.294
c6.299-11.229,9.448-23.73,9.448-37.5C326.082,276.427,324.471,267.345,321.248,258.652z M277.303,318.198
c-6.445,8.057-14.601,12.085-24.463,12.085c-10.353,0-18.947-4.395-25.781-13.184c-6.837-8.789-10.254-19.775-10.254-32.959
c0-8.203,1.685-15.355,5.054-21.46c3.369-6.102,7.812-10.767,13.33-13.989c5.516-3.223,11.302-4.834,17.358-4.834
c6.347,0,12.158,1.685,17.432,5.054c5.274,3.369,9.423,8.253,12.451,14.648c3.026,6.397,4.541,14.04,4.541,22.925
C286.971,299.571,283.748,310.141,277.303,318.198z"/>
</svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 181 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 121 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 91 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else null
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positive'
when LN_contraparte_indicadores.valor_texto = 'R' then 'Related'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negative'
else null
end
WHEN LN_indicadores.clave_indicador = 'SITUACION_CD' THEN
iif (LN_contraparte_indicadores.valor_numerico is not null, 'Situación ' + Convert(varchar,LN_contraparte_indicadores.valor_numerico)+' - Período: '+LN_contraparte_indicadores.valor_texto, null)
WHEN LN_indicadores.clave_indicador = 'EXCEPCION' THEN
iif (excepciones.tipo_excepcion = 'V', 'Excepción para PERMITIR ingreso', iif(excepciones.tipo_excepcion = 'R', 'Excepción para RECHAZAR ingreso', NULL))
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
LN_contraparte_indicadores.valor_texto
ELSE NULL
END AS textcaption,
/** TEXTOS **/
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select texto from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS texto,
/** PUNTO **/
CASE
WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto
FROM LN_contrapartes
INNER JOIN LN_contraparte_indicadores ON LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_indicadores.producto = LN_familia_productos.producto)
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
LEFT OUTER JOIN
(SELECT LN_docs.contraparte, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_gestiones ON LN_docs.gestion = LN_gestiones.gestion
INNER JOIN
(select LN_docs.contraparte, LN_docs.tipo_doc, max(doc_version) as ultima
from LN_docs
inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion
AND LN_docs.contraparte = LN_gestiones.contraparte)
where LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
group by LN_docs.contraparte, LN_docs.tipo_doc) ultimas_versiones
ON (LN_docs.tipo_doc = ultimas_versiones.tipo_doc
AND ln_docs.contraparte = ultimas_versiones.contraparte
AND LN_docs.doc_version = ultimas_versiones.ultima)
WHERE LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_docs.estado_doc = 'I'
GROUP BY LN_docs.contraparte) PENDIENTES_VERIFICAR ON LN_contrapartes.contraparte = PENDIENTES_VERIFICAR.contraparte
LEFT OUTER JOIN
(select LN_excepciones.contraparte, LN_excepciones.tipo_excepcion
from LN_contrapartes inner join LN_excepciones
on LN_contrapartes.contraparte = LN_excepciones.contraparte
where LN_contrapartes.cliente = @p_cliente
and LN_excepciones.estado = 1
and LN_excepciones.vigencia >= GETDATE()) excepciones ON LN_contrapartes.contraparte = excepciones.contraparte
WHERE LN_contrapartes.cliente = @p_cliente
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.visible = 1
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_cliente_productos.activo = 1
END
/*** GRAFICOS DASHBOARD ***/
IF (@accion = 'GRAFICO_INFORME_COMERCIAL') BEGIN
DECLARE @cant INT
SELECT @cant = COUNT(*)
FROM LN_contrapartes inner join LN_gestiones
on LN_contrapartes.contraparte = LN_gestiones.contraparte
WHERE LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.cliente = @p_cliente
SELECT #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
FROM #rangos
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then '81-100'
when rango = 'R2' then '61-80'
when rango = 'R3' then '41-60'
when rango = 'R4' then '21-40'
when rango = 'R5' then '0-20'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'cbc367'
when rango = 'R3' then 'FFB81C'
when rango = 'R4' then 'd37123'
when rango = 'R5' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'SCORE_IC'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) SCOREIC
GROUP BY rango) totales ON #rangos.rango = totales.rango
ORDER BY #rangos.rango
END
IF (@accion = 'GRAFICO_SCORE_BALANCE') BEGIN
SELECT #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
FROM #rangos
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then '81-100'
when rango = 'R2' then '61-80'
when rango = 'R3' then '41-60'
when rango = 'R4' then '21-40'
when rango = 'R5' then '0-20'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'cbc367'
when rango = 'R3' then 'FFB81C'
when rango = 'R4' then 'd37123'
when rango = 'R5' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_indicadores.producto = LN_familia_productos.producto)
WHERE LN_indicadores.clave_indicador = 'SCORE_BAL'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
and LN_familia_productos.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) SCOREBAL
GROUP BY rango) totales ON #rangos.rango = totales.rango
ORDER BY #rangos.rango
END
IF (@accion = 'GRAFICO_SCORE_FINAL') BEGIN
SELECT #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
FROM #rangos
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then '81-100'
when rango = 'R2' then '61-80'
when rango = 'R3' then '41-60'
when rango = 'R4' then '21-40'
when rango = 'R5' then '0-20'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'cbc367'
when rango = 'R3' then 'FFB81C'
when rango = 'R4' then 'd37123'
when rango = 'R5' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
when LN_contraparte_indicadores.valor_numerico < 0 then 'R5'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'SCORE_FINAL'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) SCOREFIN
GROUP BY rango) totales ON #rangos.rango = totales.rango
ORDER BY #rangos.rango
END
IF (@accion = 'GRAFICO_SCORE_DOCUMENTOS') BEGIN
SELECT #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
FROM #rangos
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then '81-100'
when rango = 'R2' then '61-80'
when rango = 'R3' then '41-60'
when rango = 'R4' then '21-40'
when rango = 'R5' then '0-20'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'cbc367'
when rango = 'R3' then 'FFB81C'
when rango = 'R4' then 'd37123'
when rango = 'R5' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
when LN_contraparte_indicadores.valor_numerico < 0 then 'R5'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'SCORE_DOC'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) SCOREDOC
GROUP BY rango) totales ON #rangos.rango = totales.rango
ORDER BY #rangos.rango
END
IF (@accion = 'GRAFICO_FIDECHECK') BEGIN
create table #rangospep (
rango varchar(2),
etiqueta varchar(20),
color varchar(6),
total int)
insert into #rangospep VALUES ('R3','Positivo','A72B2A',0)
insert into #rangospep VALUES ('R2','Relacionado','FFB81C',0)
insert into #rangospep VALUES ('R1','Negativo','63b68c',0)
SELECT #rangospep.rango, #rangospep.etiqueta, #rangospep.color, ISNULL(totales.total,0) as total
FROM #rangospep
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then 'Negativo'
when rango = 'R2' then 'Relacionado'
when rango = 'R3' then 'Positivo'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'FFB81C'
when rango = 'R3' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_texto = 'N' then 'R1'
when LN_contraparte_indicadores.valor_texto = 'R' then 'R2'
when LN_contraparte_indicadores.valor_texto = 'P' then 'R3'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'FIDECHECK'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) FIDECHECK
GROUP BY rango) totales ON #rangospep.rango = totales.rango
ORDER BY #rangospep.rango
DROP TABLE #rangospep
END
/*** FIN GRAFICOS DASHBOARD ***/
/*** INDICADORES DEL DASHBOARD ***/
IF (@accion = 'indicadores_contraparte') BEGIN
/* Traer todos los scores de una contraparte en la gestión activa */
select @cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
IF (@p_clave_indicador IS NULL)
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.etiqueta as etiqueta_indicador,
LN_indicadores.producto, LN_productos.nombre_producto,
LN_productos.producto_id,
LN_cliente_productos.ponderacion, LN_productos.etiqueta,
LN_contraparte_indicadores.visible,
case when LN_indicadores.tipo_dato <> 'S'
then CONVERT(VARCHAR, ROUND(LN_contraparte_indicadores.valor_numerico,0))
else LN_contraparte_indicadores.valor_texto end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
ELSE NULL
END AS textcaption,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_fondo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS color_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_texto from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS textcolor_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS svg_data_personalizado,
/** TEXTOS **/
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select texto_largo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS texto,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select titulo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS titulo_texto,
/** PUNTO
CASE
WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto, **/
ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_productos.producto = LN_familia_productos.producto)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.clave_indicador LIKE 'SCORE%'
AND LN_indicadores.visible = 1
GROUP BY LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.etiqueta,
LN_indicadores.producto, LN_productos.nombre_producto,
LN_productos.producto_id,
LN_cliente_productos.orden_producto,
LN_cliente_productos.ponderacion,
LN_productos.etiqueta,
LN_indicadores.tipo_dato,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.visible,
LN_contraparte_indicadores.created,
LN_contraparte_indicadores.modified
ORDER BY LN_cliente_productos.orden_producto
ELSE
/* Para un indicador específico (tipo_dato = I / F / B son valores numéricos) */
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.etiqueta as etiqueta_indicador,
LN_indicadores.producto, LN_productos.nombre_producto,
LN_productos.producto_id,
LN_cliente_productos.ponderacion, LN_productos.etiqueta,
LN_contraparte_indicadores.visible,
case
when LN_indicadores.tipo_dato = 'I' OR LN_indicadores.tipo_dato = 'F' OR LN_indicadores.tipo_dato = 'B'
then CONVERT(VARCHAR,ROUND(LN_contraparte_indicadores.valor_numerico,0))
when LN_indicadores.tipo_dato = 'S'
then LN_contraparte_indicadores.valor_texto
else CONVERT(VARCHAR(MAX), LN_contraparte_indicadores.valor_memo)
end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 181 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 121 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 91 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
ELSE NULL
END AS textcaption,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_fondo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS color_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_texto from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS textcolor_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS svg_data_personalizado,
/** TEXTOS **/
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select texto_largo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS texto,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select titulo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS titulo_texto,
/** PUNTO **/
CASE
/*WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)*/
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_numerico, CONVERT(VARCHAR,LN_contraparte_indicadores.valor_fecha,103) AS valor_fecha,
ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_productos.producto = LN_familia_productos.producto)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.clave_indicador = @p_clave_indicador
ORDER BY LN_cliente_productos.orden_producto
END
/* idem accion anterior para todos los indicadores, ni uno específico ni solo SCORES */
IF (@accion = 'indicadores_contraparte_full') BEGIN
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.etiqueta as etiqueta_indicador,
LN_indicadores.producto, LN_productos.nombre_producto,
LN_productos.producto_id,
LN_cliente_productos.ponderacion, LN_productos.etiqueta,
LN_contraparte_indicadores.visible,
case
when LN_indicadores.tipo_dato = 'I' OR LN_indicadores.tipo_dato = 'F' OR LN_indicadores.tipo_dato = 'B'
then CONVERT(VARCHAR,ROUND(LN_contraparte_indicadores.valor_numerico,0))
when LN_indicadores.tipo_dato = 'S'
then LN_contraparte_indicadores.valor_texto
else CONVERT(VARCHAR(MAX), LN_contraparte_indicadores.valor_memo)
end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
ELSE NULL
END AS textcaption,
/** PUNTO **/
CASE
/*WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)*/
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto,
LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_numerico, CONVERT(VARCHAR,LN_contraparte_indicadores.valor_fecha,103) AS valor_fecha,
ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_productos.producto = LN_familia_productos.producto)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden
END
IF (@accion = 'score_final_contraparte') BEGIN
/* Calcula y actualiza score final */
DECLARE @sf decimal(4,1)=null, @isf int = NULL,
@cantidad_scores int = 0,
@suma_scores int = 0,
@suma_pond int = 0,
@tiene_docs tinyint = 0
SELECT @carga_inicial = ISNULL(carga_inicial, 0),
@limite_carga_inicial = limite_carga_inicial
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
/*SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta*/
SELECT @isf = LN_indicadores.indicador,
@gest = LN_gestiones.gestion
FROM LN_indicadores
INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
INNER JOIN LN_familia_productos ON LN_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_gestiones ON LN_contraparte_familias.contraparte = LN_gestiones.contraparte
WHERE LN_indicadores.clave_indicador = 'SCORE_FINAL'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_productos.visible = 1
AND LN_indicadores.visible = 1
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= getdate()
AND LN_gestiones.hasta >= getdate()
SELECT @tiene_docs = COUNT(*)
FROM LN_familia_productos
INNER JOIN LN_productos
on LN_familia_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias
on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_familias
on LN_contraparte_familias.familia = LN_familias.familia
-- agregado para que tenga en cuenta solo documentos con aplica = 1
INNER JOIN LN_set_tipo_doc on LN_familias.set_doc = LN_set_tipo_doc.set_doc
inner join ln_docs on ln_docs.contraparte = @p_contraparte and ln_docs.aplica = 1 and ln_docs.tipo_doc = ln_set_tipo_doc.tipo_doc
--
WHERE LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.documentos = 1
and LN_familias.set_doc IS NOT NULL
IF @gest IS NOT NULL and @isf IS NOT NULL BEGIN
DECLARE @producto int,
@nombre_producto varchar(100),
@total_documentos int,
@pendientes int,
@ingresados int,
@rechazados int,
@verificados int,
@ponderar bit = 0,
@esdoc bit
DECLARE Scores CURSOR FOR
/*SELECT LN_contraparte_indicadores.indicador,
ISNULL(LN_cliente_productos.ponderacion,0) AS ponderacion,
ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico
FROM LN_contrapartes
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_cliente_productos.ponderacion > 0
AND LN_indicadores.clave_indicador LIKE 'SCORE%'
GROUP BY LN_contrapartes.contraparte,
LN_gestiones.gestion,
LN_contraparte_indicadores.indicador,
LN_cliente_productos.ponderacion,
LN_contraparte_indicadores.valor_numerico*/
/*
obtengo los scores de la contraparte junto con información de
documentación asociada a cada producto para aplicar la lógica
de reponderación.
Si el producto incluye documentos y el score es 0 sólo hay que
tomarlo en cuenta cuando haya existido alguna acción con los
mismos. Por ejemplo un 0 en score de documentos no pesa si tiene
todos los documentos pendientes de ingresar.
*/
/* cambiado 29/04/2019 para que tome solo los documentos con aplica = 1
SELECT LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,
ISNULL(producto_docs.total_docs, 0) AS total_docs,
ISNULL(docs_pendientes.pendientes, 0) AS pendientes,
ISNULL(docs_ingresados.ingresados, 0) AS ingresados,
ISNULL(docs_rechazados.rechazados, 0) AS rechazados,
ISNULL(docs_verificados.verificados, 0) AS verificados,
ISNULL(LN_cliente_productos.ponderacion,0) AS ponderacion,
ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico
FROM LN_contrapartes
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion
/*AND ISNULL(LN_contraparte_indicadores.balance_preexiste, 0) = 0*/)
INNER JOIN LN_indicadores ON (LN_contraparte_indicadores.indicador = LN_indicadores.indicador
AND LN_familia_productos.producto = LN_indicadores.producto)
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
LEFT OUTER JOIN (select LN_productos.producto, count(*) as total_docs
from LN_familia_productos
INNER JOIN LN_productos
on LN_familia_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias
on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_familias
on LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN LN_set_tipo_doc
on LN_familias.set_doc = LN_set_tipo_doc.set_doc
WHERE LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.documentos = 1
and LN_set_tipo_doc.activo = 1
GROUP BY LN_productos.producto) producto_docs ON LN_productos.producto = producto_docs.producto
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS pendientes
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'N'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_pendientes ON
(LN_productos.producto = docs_pendientes.producto
and LN_contrapartes.contraparte = docs_pendientes.contraparte
and LN_gestiones.gestion = docs_pendientes.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'I'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_ingresados ON
(LN_productos.producto = docs_ingresados.producto
and LN_contrapartes.contraparte = docs_ingresados.contraparte
and LN_gestiones.gestion = docs_ingresados.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS rechazados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'R'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_rechazados ON
(LN_productos.producto = docs_rechazados.producto
and LN_contrapartes.contraparte = docs_rechazados.contraparte
and LN_gestiones.gestion = docs_rechazados.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS verificados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'V'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_verificados ON
(LN_productos.producto = docs_verificados.producto
and LN_contrapartes.contraparte = docs_verificados.contraparte
and LN_gestiones.gestion = docs_verificados.gestion)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_cliente_productos.ponderacion > 0
AND LN_indicadores.clave_indicador LIKE 'SCORE%'
GROUP BY LN_contrapartes.contraparte,
LN_gestiones.gestion,
LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,
producto_docs.total_docs,
docs_pendientes.pendientes,
docs_ingresados.ingresados,
docs_rechazados.rechazados,
docs_verificados.verificados,
LN_cliente_productos.ponderacion,
LN_contraparte_indicadores.valor_numerico
*/
/* cambiado 29/04/2019 para que tome solo los documentos con aplica = 1
se cambio por esto:
en total_doc, antes contaba los documentos de la familia, ahora se fija tambien que en ln_docs tenga aplica = 1
y si la contraparte no tienen ningun documento que aplique, entonces, no tiene que ponderar documentos
- para pendientes, ingresados, verificados, rechazados, toma solo los aplica = 1
*/
SELECT LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,LN_productos.documentos,
ISNULL(producto_docs.total_docs, 0) AS total_docs,
ISNULL(docs_pendientes.pendientes, 0) AS pendientes,
ISNULL(docs_ingresados.ingresados, 0) AS ingresados,
ISNULL(docs_rechazados.rechazados, 0) AS rechazados,
ISNULL(docs_verificados.verificados, 0) AS verificados,
-- si estamos en documentos, y total_doc esta en cero, no toma la ponderacion de documentos para esta contraparte
iif(ln_productos.documentos=1 and ISNULL(producto_docs.total_docs,0)=0,0,ISNULL(LN_cliente_productos.ponderacion,0)) AS ponderacion,
ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico
FROM LN_contrapartes
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON (LN_contraparte_indicadores.indicador = LN_indicadores.indicador
AND LN_familia_productos.producto = LN_indicadores.producto)
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
LEFT OUTER JOIN (select LN_productos.producto, count(*) as total_docs
from LN_familia_productos
INNER JOIN LN_productos
on LN_familia_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias
on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_familias
on LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN LN_set_tipo_doc
on LN_familias.set_doc = LN_set_tipo_doc.set_doc
-- esto se agrego para que tome los documentos que aplica = 1
inner join ln_docs on ln_docs.contraparte = @p_contraparte and ln_docs.aplica = 1 and ln_docs.tipo_doc = ln_set_tipo_doc.tipo_doc
--
WHERE LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.documentos = 1
and LN_set_tipo_doc.activo = 1
GROUP BY LN_productos.producto) producto_docs ON LN_productos.producto = producto_docs.producto
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS pendientes
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'N'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
and ln_docs.aplica = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_pendientes ON
(LN_productos.producto = docs_pendientes.producto
and LN_contrapartes.contraparte = docs_pendientes.contraparte
and LN_gestiones.gestion = docs_pendientes.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'I'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
and ln_docs.aplica = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_ingresados ON
(LN_productos.producto = docs_ingresados.producto
and LN_contrapartes.contraparte = docs_ingresados.contraparte
and LN_gestiones.gestion = docs_ingresados.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS rechazados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'R'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
and ln_docs.aplica = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_rechazados ON
(LN_productos.producto = docs_rechazados.producto
and LN_contrapartes.contraparte = docs_rechazados.contraparte
and LN_gestiones.gestion = docs_rechazados.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS verificados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'V'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
and ln_docs.aplica = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_verificados ON
(LN_productos.producto = docs_verificados.producto
and LN_contrapartes.contraparte = docs_verificados.contraparte
and LN_gestiones.gestion = docs_verificados.gestion)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_cliente_productos.ponderacion > 0
AND LN_indicadores.clave_indicador LIKE 'SCORE%'
GROUP BY LN_contrapartes.contraparte,
LN_gestiones.gestion,
LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,LN_productos.documentos,
producto_docs.total_docs,
docs_pendientes.pendientes,
docs_ingresados.ingresados,
docs_rechazados.rechazados,
docs_verificados.verificados,
LN_cliente_productos.ponderacion,
LN_contraparte_indicadores.valor_numerico
OPEN Scores
FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
@esdoc, -- agregado
@total_documentos, @pendientes,
@ingresados, @rechazados, @verificados,
@pond, @valor
WHILE @@FETCH_STATUS = 0 BEGIN
/*SET @sf = isnull(@sf,0) + convert(decimal(4,1),@pond) / 100 * convert(decimal(4,1),@valor)*/
/* Si el score es 0, entonces tengo que ver si tiene documentos. Si tiene documentos,
sólo voy a hacer pesar el 0 si hubo acción de rechazo sobre los mismos.
Si tiene todo pendiente de ingresar y/o de verificar, no se debe tener en cuenta */
/* Control de Killer */
if (@valor = -100) begin
if (@has_killer = 0)
set @has_killer = 1
end
/* fin control de killer */
IF (@total_documentos > 0)
SET @ponderar = iif(@carga_inicial = 0 , 1, 0)
ELSE
SET @ponderar = 1
/*IF (@carga_inicial = 0)
SET @ponderar = iif(@total_documentos > 0, 1, 0)
ELSE
SET @ponderar = iif(@valor = 0, iif(@total_documentos > 0, iif(@rechazados > 0, 1, 0) , 1), 1)*/
if (@ponderar = 1) begin
SET @cantidad_scores = @cantidad_scores + 1
SET @suma_pond = @suma_pond + @pond
end
FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
@esdoc, --agregado
@total_documentos, @pendientes,
@ingresados, @rechazados, @verificados,
@pond, @valor
END
CLOSE Scores
/* Primero sumé los pesos a ponderar, ahora aplico fórmula volviendo a recorrer el cursor excepto que haya un killer */
IF (@has_killer = 0) BEGIN
if (@suma_pond > 0) begin
OPEN Scores
FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
@esdoc, --agregado
@total_documentos, @pendientes,
@ingresados, @rechazados, @verificados,
@pond, @valor
WHILE @@FETCH_STATUS = 0 BEGIN
IF (@total_documentos > 0)
SET @ponderar = iif(@carga_inicial = 0 , 1, 0)
ELSE
SET @ponderar = 1
/*IF (@carga_inicial = 0)
SET @ponderar = iif(@total_documentos > 0, 1, 0)
ELSE
SET @ponderar = iif(@valor = 0, iif(@total_documentos > 0, iif(@rechazados > 0, 1, 0) , 1), 1)*/
if (@ponderar = 1) begin
SET @sf = isnull(@sf,0) + CONVERT(DECIMAL(4,1),@pond) * CONVERT(DECIMAL(4,1),@valor) / @suma_pond
end
FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
@esdoc, --agregado
@total_documentos, @pendientes,
@ingresados, @rechazados, @verificados,
@pond, @valor
END
CLOSE Scores
end
END ELSE BEGIN
SET @sf = -100
END
DEALLOCATE Scores
/*Actualizo Score final*/
SELECT @cliente = cliente
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
declare @score_txt varchar(100) = null
set @score_txt = (select texto from ln_cliente_nivel where cliente = @cliente
and desde <= @sf and hasta > @sf)
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isf
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico, valor_texto)
VALUES
(@p_contraparte, @gest, @isf, GETDATE(), @sf, @score_txt)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = round(@sf,0),
valor_texto = @score_txt,
modified = GETDATE()
WHERE indicador = @isf
AND contraparte = @p_contraparte
AND gestion = @gest
select valor_numerico as score, valor_texto as score_texto
from LN_contraparte_indicadores
WHERE indicador = @isf
AND contraparte = @p_contraparte
AND gestion = @gest
END /* gest not null , indicador not null */
END
IF (@accion = 'score_documentos') BEGIN
/* Calcula y actualiza score de documentos */
/*
Se fija si tiene la condicion doc_no_verificados_killer en 1:
Si tiene esa conidicion, y hay documentos ingresados y no verificados ==> killer
*/
SELECT @cliente = cliente
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
declare @doc_no_verificados_killer bit = 0
if (select COUNT(*) from ln_cliente_productos
where cliente = @cliente
and doc_no_verificados_killer = 1) > 0
set @doc_no_verificados_killer = 1
DECLARE @sd decimal(5,2) = 0,
@isd int = NULL,
@suma_pesos_set decimal(10,2) = null,
@peso_doc decimal(5,2),
@suma_docs decimal(10,2) = null,
@detalle varchar(max) = null,
@documento varchar(100) = ''
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= getdate()
DECLARE Familias CURSOR FOR
select familia from LN_contraparte_familias where contraparte = @p_contraparte and activo = 1
OPEN Familias
FETCH NEXT FROM Familias INTO @familia
WHILE @@FETCH_STATUS = 0 BEGIN
/* Obtengo el indicador de score de documentos que le corresponde según la familia */
SELECT @isd = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'SCORE_DOC'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_contraparte_familias.familia = @familia
IF @gest IS NOT NULL and @isd IS NOT NULL BEGIN
SET @cantidad = null
declare @anio varchar(4)
DECLARE Documentos CURSOR FOR
SELECT LN_set_tipo_doc.tipo_doc, LN_set_tipo_doc.killer,
ISNULL(LN_set_tipo_doc.peso_score, 0) as peso_score,
DOCS.estado_doc, DOCS.vigencia as vigencia
FROM LN_set_tipo_doc
INNER JOIN LN_familias ON LN_set_tipo_doc.set_doc = LN_familias.set_doc
LEFT OUTER JOIN
(select LN_docs.tipo_doc, LN_docs.estado_doc, versiones.vers, datepart(year,versiones.fecha_vigencia) as vigencia
from LN_docs
inner join
(
-- de los que no son balances, se toma la ultima versión del documento
select contraparte, gestion,
LN_docs.tipo_doc, max(doc_version) as vers, null as fecha_vigencia
from LN_docs
inner join LN_tipos_doc on LN_tipos_doc.tipo_doc = LN_docs.tipo_doc and LN_tipos_doc.es_balance = 0
where contraparte = @p_contraparte
and gestion = @gest
group by contraparte, gestion, LN_docs.tipo_doc
union
-- de los balances toma todas las versiones
select contraparte, gestion,
LN_docs.tipo_doc, doc_version as vers, LN_docs.fecha_vigencia as fecha_vigencia
from LN_docs
inner join LN_tipos_doc on LN_tipos_doc.tipo_doc = LN_docs.tipo_doc and LN_tipos_doc.es_balance = 1
where contraparte = @p_contraparte
and gestion = @gest
) versiones
on (LN_docs.contraparte = versiones.contraparte
and LN_docs.gestion = versiones.gestion
and LN_docs.tipo_doc = versiones.tipo_doc
and LN_docs.doc_version = versiones.vers)
where LN_docs.estado_doc <> 'X'
and LN_docs.aplica = 1) DOCS ON LN_set_tipo_doc.tipo_doc = DOCS.tipo_doc
WHERE LN_familias.familia = @familia
AND LN_set_tipo_doc.activo = 1
AND DOCS.estado_doc IS NOT NULL
OPEN Documentos
FETCH NEXT FROM Documentos INTO @tipo_doc, @killer, @peso_doc, @estado_doc, @anio
WHILE @@FETCH_STATUS = 0 BEGIN
if (@cantidad is null)
begin
set @cantidad = 0
set @suma_pesos_set = 0
set @suma_docs = 0
end
SET @suma_pesos_set = @suma_pesos_set + @peso_doc
SET @cantidad = @cantidad + 1
IF (@estado_doc = 'V') BEGIN
SET @cantidad_verificados = @cantidad_verificados + 1
SET @suma_docs = @suma_docs + @peso_doc
END ELSE BEGIN
IF (@estado_doc in('N','R')) BEGIN
/* Si el documento no está ingresado entonces hay que fijarse si es killer del score */
IF (@killer = 1) BEGIN
/* Agregado para guardar el detalle de los killer */
select @documento = nombre_tipo_doc from LN_tipos_doc where tipo_doc = @tipo_doc
if (@detalle is null) set @detalle = 'Documento no presentado: ' + replace(@documento,';',',')
else set @detalle = @detalle + '; Documento no presentado: ' + replace(@documento,';',',')
if (@anio is not null) set @detalle = @detalle + ' (' + @anio + ')'
IF (@has_killer = 0)
SET @has_killer = 1
END
END
if (@estado_doc = 'I' and @doc_no_verificados_killer = 1 ) BEGIN
/* Agregado para guardar el detalle de los killer */
select @documento = nombre_tipo_doc from LN_tipos_doc where tipo_doc = @tipo_doc
if (@detalle is null) set @detalle = 'Documento no verificado: ' + replace(@documento,';',',')
else set @detalle = @detalle + '; Documento no verificado: ' + replace(@documento,';',',')
if (@anio is not null) set @detalle = @detalle + ' (' + @anio + ')'
IF (@has_killer = 0)
SET @has_killer = 1
END
END
FETCH NEXT FROM Documentos INTO @tipo_doc, @killer, @peso_doc, @estado_doc, @anio
END
CLOSE Documentos
DEALLOCATE Documentos
/* Mientras esté en carga inicial no se calcula score de documentos a menos que
tenga el 100% de verificados, con lo cual se debe sacar de carga inicial */
DECLARE @guardar_score tinyint = 1
SELECT @carga_inicial = ISNULL(carga_inicial, 0),
@limite_carga_inicial = limite_carga_inicial,
@cliente = cliente
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
if (@cantidad > 0) begin
SET @guardar_score = iif(@carga_inicial = 1, iif(@cantidad = @cantidad_verificados, 1, 0), 1)
if (@carga_inicial = 1) begin
if (@cantidad = @cantidad_verificados) begin
UPDATE LN_contrapartes SET carga_inicial = 0
WHERE contraparte = @p_contraparte
end
end
end
/*** EXCEPCION SOLICITADA PARA AMX, QUE CALCULE SIEMPRE EL SCORE, ESTÉ O NO EN CARGA INICIAL ***/
/*
if (@cliente = 5546348) begin
SET @guardar_score = 1
end
*/
/*****/
IF (@guardar_score = 0) BEGIN
if exists (select *
FROM LN_contraparte_indicadores
WHERE indicador = @isd
AND contraparte = @p_contraparte
AND gestion = @gest)
DELETE FROM LN_contraparte_indicadores
WHERE indicador = @isd
AND contraparte = @p_contraparte
AND gestion = @gest
if exists (select * From ln_score_detalle_killer
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
and visible = 1)
UPDATE ln_score_detalle_killer
set visible = 0,
modified = GETDATE()
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
and visible = 1
END
IF (@guardar_score = 1) BEGIN
if (@has_killer = 1)
set @sd = - 100
else
set @sd = iif (@suma_pesos_set > 0, ROUND(@suma_docs / @suma_pesos_set * 100, 0), NULL)
select @p_contraparte AS contraparte, @isd as indicador, ROUND(@sd,0) AS score
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isd
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @isd, GETDATE(), ROUND(@sd,0))
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = round(@sd,0),
modified = GETDATE()
WHERE indicador = @isd
AND contraparte = @p_contraparte
AND gestion = @gest
/* Detalle de los killer */
if exists (select * From ln_score_detalle_killer
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
and detalle_killer != isnull(@detalle,'')
and visible = 1)
UPDATE LN_score_detalle_killer
set visible = 0, modified = getdate()
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
if (@detalle is not null)
begin
if not exists (select * From ln_score_detalle_killer
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
and detalle_killer = isnull(@detalle,'')
and visible = 1)
insert into ln_score_detalle_killer
(contraparte, gestion, indicador, detalle_killer, visible, created)
values (@p_contraparte, @gest, @isd, @detalle, 1, getdate())
end
END
END
FETCH NEXT FROM Familias INTO @familia
END
CLOSE Familias
DEALLOCATE Familias
END
IF (@accion = 'cumplimiento_documentos') BEGIN
/* Calcula y actualiza indice de cumplimiento de documentos */
DECLARE @cd decimal(4,1)=0, @icd int = NULL
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= getdate()
SELECT @icd = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'CUMPL_DOC'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @icd IS NOT NULL BEGIN
set @cantidad = null
set @cumplidos = null
if (SELECT COUNT(*)
FROM LN_docs
where contraparte = @p_contraparte
and LN_docs.estado_doc <> 'X'
and LN_docs.gestion = @gest
AND LN_docs.aplica = 1) > 0
begin
SET @cantidad = 0
SET @cumplidos = 0
end
DECLARE Documentos CURSOR FOR
/*SELECT LN_docs.doc_id, LN_docs.tipo_doc, LN_docs.estado_doc, versiones.vers
FROM LN_docs
INNER JOIN
(select contraparte, gestion,
tipo_doc, max(doc_version) as vers
from LN_docs
where contraparte = @p_contraparte
and gestion = @gest
group by contraparte, gestion, tipo_doc) versiones
ON (LN_docs.contraparte = versiones.contraparte
AND LN_docs.gestion = versiones.gestion
AND LN_docs.tipo_doc = versiones.tipo_doc
AND LN_docs.doc_version = versiones.vers)
WHERE LN_docs.estado_doc <> 'X'*/
SELECT LN_docs.doc_id, LN_docs.tipo_doc, LN_docs.estado_doc, LN_docs.doc_version
FROM LN_docs
INNER JOIN LN_contraparte_familias ON LN_docs.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
AND LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
AND LN_set_tipo_doc.activo = 1)
WHERE LN_docs.contraparte = @p_contraparte
AND LN_docs.estado_doc <> 'X'
AND LN_docs.gestion = @gest
AND LN_docs.aplica = 1
OPEN Documentos
FETCH NEXT FROM Documentos INTO @doc_id, @tipo_doc, @estado_doc, @vers
WHILE @@FETCH_STATUS = 0 BEGIN
SET @cantidad = @cantidad + 1
IF (@estado_doc = 'I' OR @estado_doc = 'V') BEGIN
if @estado_doc = 'V' begin
SET @cantidad_verificados = @cantidad_verificados + 1
end
SET @cumplidos = @cumplidos + 1
END
FETCH NEXT FROM Documentos INTO @doc_id, @tipo_doc, @estado_doc, @vers
END
CLOSE Documentos
DEALLOCATE Documentos
/* Mientras esté en carga inicial no se calcula cumplimineto de documentos a menos que
tenga el 100% de verificados, con lo cual se debe sacar de carga inicial */
DECLARE @guardar_cump tinyint = 1
SELECT @carga_inicial = ISNULL(carga_inicial, 0),
@limite_carga_inicial = limite_carga_inicial,
@cliente = cliente
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
if (@cantidad > 0) begin
SET @guardar_cump = iif(@carga_inicial = 1, iif(@cantidad = @cantidad_verificados, 1, 0), 1)
if (@carga_inicial = 1) begin
if (@cantidad = @cantidad_verificados) begin
UPDATE LN_contrapartes SET carga_inicial = 0
WHERE contraparte = @p_contraparte
end
end
end
/*** EXCEPCION SOLICITADA PARA AMX, QUE CALCULE SIEMPRE EL CUMPLIMIENTO, ESTÉ O NO EN CARGA INICIAL ***/
if (@cliente = 5546348) begin
SET @guardar_cump = 1
end
/*****/
IF (@guardar_cump = 1) BEGIN
SET @cd = convert(float, @cumplidos) / convert(float, @cantidad) * 100
select @p_contraparte AS contraparte, @icd AS indicador, ROUND(@cd,0) AS score
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @icd
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @icd, GETDATE(), ROUND(@cd,0))
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = round(@cd,0),
modified = GETDATE()
WHERE indicador = @icd
AND contraparte = @p_contraparte
AND gestion = @gest
END
END
END
IF (@accion = 'score_balance') BEGIN
/* guarda el score de balance pasado como parámetro */
IF (@p_score >= 0) begin
DECLARE @isb int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= getdate()
SELECT @isb = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_cliente_productos on (LN_familia_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'SCORE_BAL'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
/*select @gest, @isb*/
IF @gest IS NOT NULL and @isb IS NOT NULL BEGIN
/*EXEC LN_validar_carga_inicial @p_contraparte, @inicial OUTPUT
if (@inicial = 0) begin*/
/* Determino si el Score de Balance que se va a guardar corresponde a un documento LED
verificado cuyo correspondiente registro en balances_contables está visible y PUBLICADO.
Debería tomar el último ejercicio */
DECLARE @fecha_ultimo_balance date, @id_ultimo_balance int
SELECT TOP 1
@fecha_ultimo_balance = fecha_balance,
@id_ultimo_balance = id_balance
FROM balances_contables
INNER JOIN padrones ON balances_contables.cuit = padrones.identificacion
INNER JOIN LN_contrapartes ON padrones.id_padron = LN_contrapartes.id_padron
WHERE LN_contrapartes.contraparte = @p_contraparte
AND balances_contables.estado = 'PUBLICADO'
AND ISNULL(balances_contables.visible, 0) = 1
ORDER BY balances_contables.fecha_balance DESC
DECLARE @fecha_ultimo_ejercicio date, @id_ultimo_ejercicio int, @estado_ultimo_ejercicio varchar(1)
SELECT TOP 1
@fecha_ultimo_ejercicio = convert(date, fin_ejercicio),
@id_ultimo_ejercicio = id_externo,
@estado_ultimo_ejercicio = estado_doc
FROM LN_docs
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND es_balance = 1
order by fin_ejercicio desc
/* Comparamos para determinar si se calculó el score con un balance existente
o basado en lo que proveyó la contraparte. Deben coincidir y estar
publicdo y verificado el documento en LED */
DECLARE @preexiste tinyint = 1
if (@fecha_ultimo_balance = @fecha_ultimo_ejercicio
AND @id_ultimo_balance = @id_ultimo_ejercicio
AND @estado_ultimo_ejercicio = 'V') begin
SET @preexiste = 0
end
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isb
AND contraparte = @p_contraparte
AND gestion = @gest) begin
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico, balance_preexiste)
VALUES
(@p_contraparte, @gest, @isb, GETDATE(), @p_score, @preexiste)
end else begin
/*select @gest, @isb, @p_score, @p_contraparte*/
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_score,
balance_preexiste = @preexiste,
modified = GETDATE()
WHERE indicador = @isb
AND contraparte = @p_contraparte
AND gestion = @gest
end
/*end*/
END
end
END
IF (@accion = 'score_comercial') BEGIN
/* guarda el score de informe comercial pasado como parámetro */
IF (@p_score >= 0) begin
DECLARE @isc int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @isc = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'SCORE_IC'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @isc IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isc
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @isc, GETDATE(), @p_score)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_score,
modified = GETDATE()
WHERE indicador = @isc
AND contraparte = @p_contraparte
AND gestion = @gest
END
end
END
IF (@accion = 'valoracion_balance') BEGIN
/* guarda la valoración de balance pasada como valor numérico en el parámetro score
la valoración es un indicador string en tabla, por lo tanto se convierte el número
según regla preestablecida
*/
if (@p_score >= 0) begin
DECLARE @ivb int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @ivb = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'VALORACION_BAL'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @ivb IS NOT NULL BEGIN
DECLARE @val varchar(1)
if (@p_score <= 2) set @val = 'N'
else if (@p_score <= 4) set @val = 'D'
else if (@p_score <= 6) set @val = 'E'
else if (@p_score <= 8) set @val = 'U'
else set @val = 'P'
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @ivb
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_texto, valor_numerico, visible)
VALUES
(@p_contraparte, @gest, @ivb, GETDATE(), @val, @p_score, @p_visible)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @val,
valor_numerico = @p_score,
modified = GETDATE(),
visible = @p_visible
WHERE indicador = @ivb
AND contraparte = @p_contraparte
AND gestion = @gest
END
end
END
IF (@accion = 'analisis_balance') BEGIN
/* guarda el texto de análisis de balance pasado en el parámetro @p_valor_memo */
DECLARE @iab int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @iab = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'ANALISIS_BAL'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @iab IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @iab
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, created_by, valor_memo, visible)
VALUES
(@p_contraparte, @gest, @iab, GETDATE(), @p_user_id, @p_valor_memo, @p_visible)
else
UPDATE LN_contraparte_indicadores SET
valor_memo = @p_valor_memo,
visible = @p_visible,
modified = GETDATE(),
modified_by = @p_user_id
WHERE indicador = @iab
AND contraparte = @p_contraparte
AND gestion = @gest
END
END
IF (@accion = 'score_dossier' or @accion = 'score_br') BEGIN
/* guarda el score de DOSSIER o de BUSINESS REPORT pasado como parámetro */
IF (@p_score >= 0) begin
DECLARE @isdd int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @isdd = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
WHERE LN_indicadores.clave_indicador = iif(@accion = 'score_dossier', 'SCORE_DOSSIER', 'SCORE_BR')
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_cliente_productos.activo = 1
IF @gest IS NOT NULL and @isdd IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isdd
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @isdd, GETDATE(), @p_score)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_score,
modified = GETDATE()
WHERE indicador = @isdd
AND contraparte = @p_contraparte
AND gestion = @gest
END
END
END
IF (@accion = 'nivel_riesgo') BEGIN
/* Guarda el indicador nivel de riesgo del DOSSIER para una contraparte */
if (@p_valor_texto is not null) begin
DECLARE @inr int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @inr = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
WHERE LN_indicadores.clave_indicador = 'NIVEL_RIESGO'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_cliente_productos.activo = 1
IF @gest IS NOT NULL and @inr IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @inr
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_texto)
VALUES
(@p_contraparte, @gest, @inr, GETDATE(), @p_valor_texto)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @p_valor_texto,
modified = GETDATE()
WHERE indicador = @inr
AND contraparte = @p_contraparte
AND gestion = @gest
END
end
END
IF (@accion = 'dependencia_economica') BEGIN
/* Guarda el valor para el indicador dependencia económica del Dossier de una contraparte */
if (@p_valor_numerico is not null) begin
DECLARE @ide int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @ide = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
WHERE LN_indicadores.clave_indicador = 'DEP_ECON'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_cliente_productos.activo = 1
IF @gest IS NOT NULL and @ide IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @ide
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @ide, GETDATE(), CONVERT(float, @p_valor_numerico))
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = CONVERT(float, @p_valor_numerico),
modified = GETDATE()
WHERE indicador = @ide
AND contraparte = @p_contraparte
AND gestion = @gest
END
end
END
IF (@accion = 'fidecheck') BEGIN
/* Calcula el estado de fidecheck negativo/relacionado/positivo */
DECLARE @ifc int = null, @vf varchar(1) = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @ifc = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'FIDECHECK'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @ifc IS NOT NULL BEGIN
IF (select count(*) from LN_demo_fidecheck
where contraparte = @p_contraparte
and fidecheck = 'P') > 0 begin
SET @vf = 'P'
end ELSE
IF (select count(*) from LN_demo_fidecheck
where contraparte = @p_contraparte
and fidecheck = 'R') > 0 begin
SET @vf = 'R'
end ELSE begin
IF (select count(*) from LN_demo_fidecheck
where contraparte = @p_contraparte
and fidecheck = 'N') > 0
SET @vf = 'N'
end
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @ifc
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_texto)
VALUES
(@p_contraparte, @gest, @ifc, GETDATE(), @vf)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @vf,
modified = GETDATE()
WHERE indicador = @ifc
AND contraparte = @p_contraparte
AND gestion = @gest
END
END
IF (@accion = 'ultima_novedad_contraparte') BEGIN
/* guarda en la tabla de indicadores la fecha de la última novedad de monitoreo
Exceptuamos novedades de la sección 7 (Contables) */
DECLARE @iun int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @iun = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD'
AND LN_contraparte_familias.contraparte = @p_contraparte
DECLARE @valor_fecha smalldatetime = NULL
IF @gest IS NOT NULL and @iun IS NOT NULL BEGIN
SELECT @valor_fecha = MAX(monitoreos_resultados.fecha)
FROM monitoreos_resultados
INNER JOIN monitoreos ON monitoreos_resultados.cuit = monitoreos.cuit
INNER JOIN padrones ON monitoreos_resultados.cuit = padrones.identificacion
INNER JOIN LN_contrapartes ON (padrones.id_padron = LN_contrapartes.id_padron
AND monitoreos.cliente = LN_contrapartes.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND monitoreos_resultados.seccion_mantenimiento <> 7
if (@valor_fecha IS NOT NULL) begin
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @iun
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, created_by, valor_fecha)
SELECT @p_contraparte as contraparte, @gest as gestion,
@iun as indicador, GETDATE() AS created, @p_user_id as created_by,
MAX(monitoreos_resultados.fecha)
FROM monitoreos_resultados
INNER JOIN monitoreos ON monitoreos_resultados.cuit = monitoreos.cuit
INNER JOIN padrones ON monitoreos_resultados.cuit = padrones.identificacion
INNER JOIN LN_contrapartes ON (padrones.id_padron = LN_contrapartes.id_padron
AND monitoreos.cliente = LN_contrapartes.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND monitoreos_resultados.seccion_mantenimiento <> 7
else
UPDATE LN_contraparte_indicadores SET
valor_fecha = @valor_fecha,
modified = GETDATE(),
modified_by = @p_user_id
WHERE LN_contraparte_indicadores.indicador = @iun
AND LN_contraparte_indicadores.contraparte = @p_contraparte
AND LN_contraparte_indicadores.gestion = @gest
end
SELECT CONVERT(VARCHAR, @valor_fecha, 23) AS fecha
END
END
IF (@accion = 'novedades_monitoreo') BEGIN
select TOP 50 nov.contraparte, padrones.nombre_persona, padrones.identificador, padrones.identificacion, nov.ultima_novedad
from padrones INNER JOIN
(select monitoreos_resultados.cuit, LN_contrapartes.contraparte, max(monitoreos_resultados.fecha) as ultima_novedad
from monitoreos_resultados
inner join padrones ON monitoreos_resultados.cuit = padrones.identificacion
inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
and monitoreos_resultados.seccion_mantenimiento <> 7
group by monitoreos_resultados.cuit, LN_contrapartes.contraparte) nov ON padrones.identificacion = nov.cuit
order by nov.ultima_novedad DESC, padrones.nombre_persona
END
IF (@accion = 'verifica_indicador') BEGIN
/* dado un ID de contraparte y una clave de indicador verifica
si el producto está asociado al cliente y corresponde calcular
el valor del indicador */
if (@p_contraparte > 0 AND @p_clave_indicador IS NOT NULL) begin
SELECT LN_contrapartes.contraparte,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.producto,
LN_cliente_productos.ponderacion
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_cliente_productos ON LN_contrapartes.cliente = LN_cliente_productos.cliente
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_indicadores ON LN_cliente_productos.producto = LN_indicadores.producto
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.clave_indicador = @p_clave_indicador
AND LN_familia_productos.activo = 1
AND LN_cliente_productos.activo = 1
GROUP BY LN_contrapartes.contraparte,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.producto,
LN_cliente_productos.ponderacion
end
END
IF (@accion = 'documentacion_pendiente') BEGIN
select clientes.nombre_cliente as 'CLIENTE',
pa.identificacion as CUIT, pa.nombre_persona as 'RAZON_SOCIAL',
td.nombre_tipo_doc as 'DOCUMENTO',
IIF(do.estado_doc='N','No ingresado','Rechazado') as 'ESTADO'
from LN_docs do
inner JOIN LN_contrapartes co on co.contraparte=do.contraparte
inner join clientes on co.cliente = clientes.cliente
INNER JOIN padrones pa on pa.id_padron=co.id_padron
INNER JOIN LN_tipos_doc td on do.tipo_doc=td.tipo_doc
INNER JOIN LN_gestiones on co.contraparte = LN_gestiones.contraparte
where do.cliente = @p_cliente
and estado_doc in ('N','R')
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
order by do.contraparte, td.nombre_tipo_doc
END
IF (@accion = 'cantidad_subcontratistas') BEGIN
/* grabar / actualizar el indicador de cantidad de subcontratistas de una contraparte */
DECLARE @ics int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @ics = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'SUBCONT'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @ics IS NOT NULL BEGIN
declare @cant_subc int
EXEC LN_subcontratistas 'contar', @p_contraparte, null, null , @cant_subc output
if exists (SELECT contraparte, indicador
FROM LN_contraparte_indicadores
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ics)
UPDATE LN_contraparte_indicadores SET
valor_numerico = iif(@cant_subc > 0, @cant_subc, NULL),
visible = 1,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ics
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ics, iif(@cant_subc > 0, @cant_subc, NULL), 1, GETDATE(), @p_user_id)
SELECT @cant_subc as cantidad
END
END
/*** Indicadores homologación ***/
IF (@accion = 'homologacion_subcontratista') BEGIN
/* Dado un ID de contraparte, verifica que pueda calcularse
su estado de homologación final por la existencia de los
indicadores correspondientes al producto */
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join LN_contraparte_familias
ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
and LN_contrapartes.cliente = LN_cliente_productos.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_productos.visible = 1
AND LN_familias.visible = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest > 0) begin
/* check si está asociado a un producto que tenga el indicador de homologación */
DECLARE @ihom int = null
SELECT @ihom = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'HOMOLOG'
AND LN_contraparte_familias.contraparte = @p_contraparte
if (@ihom > 0) begin
/* busco los diferentes indicadores que conforman la homologación */
DECLARE @hindic int, @vn float, @canth int = 0, @cant0 int = 0, @cant1 int = 0
DECLARE Homolog CURSOR FOR
SELECT LN_contraparte_indicadores.indicador, ISNULL(LN_contraparte_indicadores.valor_numerico, 0)
FROM LN_contraparte_indicadores inner join LN_indicadores
ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
AND LN_contraparte_indicadores.gestion = @gest
AND LN_indicadores.clave_indicador IN ('CTRL_ETICO','CTRL_CALIDAD','CTRL_COMERCIAL')
OPEN Homolog
FETCH NEXT FROM Homolog INTO @hindic, @vn
WHILE @@FETCH_STATUS = 0 BEGIN
SET @canth = @canth + 1
IF (@vn = 0) SET @cant0 = @cant0 + 1
IF (@vn > 0) SET @cant1 = @cant1 + 1
FETCH NEXT FROM Homolog INTO @hindic, @vn
END
CLOSE Homolog
DEALLOCATE Homolog
if (@canth > 0) begin
/* Busco excepción activa */
SELECT @exc = LN_excepciones.excepcion,
@tipo_exc = LN_excepciones.tipo_excepcion
FROM LN_excepciones
WHERE LN_excepciones.contraparte = @p_contraparte
AND LN_excepciones.gestion = @gest
AND LN_excepciones.estado = 1
AND LN_excepciones.vigencia >= GETDATE()
if not exists (select valor_numerico
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ihom) begin
if (@cant0 > 0)
/* existencia de un rojo queda rojo, si no hay excepcion a verde */
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @ihom, iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)), GETDATE(), @p_user_id)
else
if (@cant1 > 0)
/* sin rojos todos verdes (1) queda verde si no hay excepcion a rojo */
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @ihom, iif(@exc is null, 1, iif(@tipo_exc = 'R', 0, 1)), GETDATE(), @p_user_id)
else
/* ver caso si no hay ni rojos ni verdes debería ser resultado rojo, si no hay excepcion a verde */
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @ihom, iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)), GETDATE(), @p_user_id)
end else begin
if (@cant0 > 0)
/* existencia de un rojo debe quedar rojo (0) si no hay excepcion a verde */
update LN_contraparte_indicadores SET
valor_numerico = iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)),
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ihom
else
if (@cant1 > 0)
/* sin rojos todos verdes (1) queda verde si no hay excepcion a rojo */
update LN_contraparte_indicadores SET
valor_numerico = iif(@exc is null, 1, iif(@tipo_exc = 'R', 0, 1)),
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ihom
else
/* caso ni rojos ni verdes debería quedar rojo (0) si no hay excepcion a verde */
update LN_contraparte_indicadores SET
valor_numerico = iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)),
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ihom
end
end else begin
/* si no hay valores no tiene sentido calcular la homologación : BORRO el posible registro existente */
DELETE FROM LN_contraparte_indicadores
WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
AND LN_contraparte_indicadores.gestion = @gest
AND LN_contraparte_indicadores.indicador = @ihom
end
end
end
END
IF (@accion = 'control_etico' or @accion = 'control_calidad') BEGIN
/* Registración del estado de control etico y control de calidad en función de valores
en las tablas LN_control_screening y LN_control_black_list respectivamente */
select @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,
@country = identificadores.country_code,
@cliente = LN_contrapartes.cliente
from LN_gestiones
inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest is not null) begin
DECLARE @ich int = null, @clave_ind varchar(50)
if (@accion = 'control_etico')
set @clave_ind = 'CTRL_ETICO'
else
set @clave_ind = 'CTRL_CALIDAD'
select @ich = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = @clave_ind
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@ich is not null) begin
declare @valor_anterior float = null, @valor_num float
/* EL VALOR A GUARDAR EN LA TABLA DE INDICADORES ES 1 = VERDE , 0 = ROJO */
if (@accion = 'control_etico') begin
/* Control de Etica utilizando la tabla LN_control_screening */
if exists (select identificacion
from LN_control_screening
where cliente = @cliente
/*and country_code = @country*/
and identificacion = @cuit
and visible = 1)
set @valor_num = 0
else
set @valor_num = 1
/* Si es de AR y no lo encontré en tabla lo busco como socio de sociedades en lista de ctrl etico */
if (@valor_num = 1 /*AND @country = 'AR'*/) begin
if exists (select socios.c01_cuit, socios.c01_cuit_soc
from socios
inner join LN_control_screening on socios.c01_cuit_soc = LN_control_screening.identificacion
inner join padrones on padrones.identificacion = socios.c01_cuit_soc and padrones.habilitado = 1
where socios.visible = 1
and socios.c01_cuit = @cuit
and isnull(socios.c04_ultimo,'') != 'N'
and LN_control_screening.visible = 1
/*and LN_control_screening.country_code = @country*/
and LN_control_screening.cliente = @cliente)
set @valor_num = 0
else
set @valor_num = 1
end
end else begin
/* Control de Calidad utilizando tabla LN_control_black_list */
if exists (select identificacion
from LN_control_black_list
where cliente = @cliente
and country_code = @country
and identificacion = @cuit
and visible = 1)
set @valor_num = 0
else
set @valor_num = 1
/* Si es de AR y no lo encontré en tabla lo busco como socio de sociedades en lista de ctrl de calidad */
if (@valor_num = 1 /*AND @country = 'AR'*/) begin
if exists (select socios.c01_cuit, socios.c01_cuit_soc
from socios
inner join LN_control_black_list on socios.c01_cuit_soc = LN_control_black_list.identificacion
inner join padrones on padrones.identificacion = socios.c01_cuit_soc and padrones.habilitado = 1
where socios.visible = 1
and socios.c01_cuit = @cuit
and LN_control_black_list.visible = 1
and isnull(socios.c04_ultimo,'') != 'N'
/*and LN_control_black_list.country_code = @country*/
and LN_control_black_list.cliente = @cliente)
set @valor_num = 0
else
set @valor_num = 1
end
end
select @valor_anterior = valor_numerico
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ich
if (@valor_anterior is null)
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @ich, @valor_num, GETDATE(), @p_user_id)
else
if (@valor_anterior <> @valor_num) begin
/* Actualizo sólo si cambia */
update LN_contraparte_indicadores set
valor_numerico = @valor_num,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ich
end
end
end
END
IF (@accion = 'CONTROL_COMERCIAL') BEGIN
select @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,
@country = identificadores.country_code,
@cliente = LN_contrapartes.cliente
from LN_gestiones
inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest is not null) begin
DECLARE @icc int = null
select @icc = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'CTRL_COMERCIAL'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@icc is not null) begin
declare @vcc_ant float = null, @vcc float = null
declare @juicios int
/* Búsqueda en Juicios Concursos y Quiebras */
SELECT @juicios = COUNT(*)
FROM juicios CYQ0
WHERE CYQ0.cuit_demandado = @cuit
AND ( CYQ0.id_tipo_causa IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 0)
OR CYQ0.cau_codigo IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 0) )
AND NOT EXISTS
(SELECT id_juicio
FROM juicios CYQ1
WHERE CYQ1.cuit_demandado = @cuit
AND ( CYQ1.id_tipo_causa IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 1)
OR CYQ0.cau_codigo IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 1) )
AND CYQ1.fecha_causa >= CYQ0.fecha_causa)
if (@juicios = 0)
set @vcc = 1
else
set @vcc = 0
select @vcc_ant = valor_numerico
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @icc
if (@vcc_ant is null)
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @icc, @vcc, GETDATE(), @p_user_id)
else
if (@vcc_ant <> @vcc) begin
/* Actualizo sólo si cambia */
update LN_contraparte_indicadores set
valor_numerico = @vcc,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @icc
end
end
end
END
/* Asentar el indicador de excepción de homologación para contraparte */
IF (@accion = 'excepcion') BEGIN
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join LN_contraparte_familias
ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
and LN_contrapartes.cliente = LN_cliente_productos.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
/*AND ISNULL(LN_familias.subfamilia, 0) = 1
AND LN_contrapartes.subcontratista = 1*/
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_productos.visible = 1
AND LN_familias.visible = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest is not null) begin
declare @ieh int = null
select @ieh = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'EXCEPCION'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@ieh is not null) begin
/* Busco excepción activa */
SELECT @exc = LN_excepciones.excepcion
FROM LN_excepciones
WHERE LN_excepciones.contraparte = @p_contraparte
AND LN_excepciones.gestion = @gest
AND LN_excepciones.estado = 1
AND LN_excepciones.vigencia >= GETDATE()
if @exc is not null
if NOT EXISTS (select contraparte
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ieh)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ieh, 1, 1, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = 1,
visible = 1,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ieh
end
end
END
/* fin excepcion */
/* desactivar excepcion elimina el registro del indicador de la contraparte y recalcula la homologacion */
IF (@accion = 'desactivar_excepcion') BEGIN
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join LN_contraparte_familias
ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
and LN_contrapartes.cliente = LN_cliente_productos.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
/*AND ISNULL(LN_familias.subfamilia, 0) = 1
AND LN_contrapartes.subcontratista = 1*/
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_productos.visible = 1
AND LN_familias.visible = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest is not null) begin
declare @ieh2 int = null
select @ieh2 = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'EXCEPCION'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@ieh2 is not null) begin
/* Elimino indicador de excepción activa */
DELETE FROM LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ieh2
end
end
END
/* fin desactivar excepcion */
/* Fin indicadores homologación */
/* Producto Alertas BCRA */
IF (@accion = 'alertas_cendeu') BEGIN
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
if (@gest > 0) begin
DECLARE @iac int = null
select @iac = LN_indicadores.indicador,
@producto_alertas = LN_indicadores.producto,
@cliente = ln_contrapartes.cliente
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'SITUACION_CD'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@iac is not null) begin
DECLARE @periodo varchar(6) = null, @situacion int = null
/*EXEC LN_alertas_cendeu @cuit, @periodo OUTPUT, @situacion OUTPUT*/
EXEC LN_alertas_cendeu_cliente @cuit, @cliente, @periodo OUTPUT, @situacion OUTPUT
/*if (@periodo is not null and @situacion is not null) begin*/
if not exists (select indicador from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @iac)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by)
VALUES
(@p_contraparte, @gest, @iac, @situacion, @periodo, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @situacion,
valor_texto = @periodo,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @iac
/*end*/
end
end
END
IF (@accion = 'alertas_cheques') BEGIN
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
if (@gest > 0) begin
DECLARE @iah int = null
select @iah = LN_indicadores.indicador,
@producto_alertas = LN_indicadores.producto,
@cliente = LN_contrapartes.cliente
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'CHEQUES_RECH'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@iah is not null) begin
DECLARE @ch_rechazados int = 0
/* EXEC LN_alertas_cheques @cuit, 360, @ch_rechazados output */
EXEC LN_alertas_cheques_cliente @cuit, @cliente, @ch_rechazados output
if not exists (select indicador from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @iah)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @iah, @ch_rechazados, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @ch_rechazados,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @iah
end
end
END
/* Si se recalculó alguno de los indicadores de Alertas, llamo al cálculo del score del producto alertas */
IF (@accion = 'alertas_cendeu' OR @accion = 'alertas_cheques') BEGIN
if (@producto_alertas is not null AND @gest > 0) begin
declare @indic_score_alertas int = null
select @indic_score_alertas = LN_indicadores.indicador
from LN_indicadores
where producto = @producto_alertas
and clave_indicador = 'SCORE_ALERTAS_BCRA'
SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1
if (@indic_score_alertas is not null and @familia IS NOT NULL) begin
declare @score_alertas decimal(10,2) = null
EXEC LN_score_alertas @familia, @p_contraparte, @score_alertas OUTPUT
if (@score_alertas is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_alertas)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @indic_score_alertas, @score_alertas, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_alertas,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @indic_score_alertas
end
end
end
END
/* Fin Producto Alertas BCRA */
IF (@accion = 'judicial') BEGIN
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
declare @indic_score_judicial int = null
select @indic_score_judicial = LN_indicadores.indicador
from LN_indicadores
where clave_indicador = 'SCORE_JUDICIAL'
if (@indic_score_judicial is not null) begin
declare @score_judicial decimal(10,2) = null
EXEC LN_score_judicial @p_contraparte, @score_judicial OUTPUT
if (@score_judicial is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_judicial)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @indic_score_judicial, @score_judicial, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_judicial,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @indic_score_judicial
end
end
END
/* Producto dependencia económica calculada en función de las tablas de compras y documento de ventas */
IF (@accion = 'dependencia_economica_calc') BEGIN
DECLARE @campo int = null
DECLARE @seccion int = null
DECLARE @tipo_campo varchar(1) = null
DECLARE @monto_ventas money = NULL
DECLARE @monto_iva money = NULL
DECLARE @monto_compras money = NULL
DECLARE @id_padron int = null
DECLARE @fecha_vigencia datetime = null
declare @graba_score char(1) = 'S'
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,
@cliente = LN_contrapartes.cliente,
@id_padron = LN_contrapartes.id_padron
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
if (@gest > 0) begin
/* Verifico el indicador Dependencia Económica Calculada */
DECLARE @idec int = null
DECLARE @producto_de int = NULL
select @idec = LN_indicadores.indicador,
@producto_de = LN_indicadores.producto
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'DEP_ECON_CALC'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@idec > 0) begin
/* Búsqueda de un documento de la contraparte cargado con información de ventas */
select @campo = LN_tipo_doc_campos.campo,
@seccion = LN_tipo_doc_campos.seccion,
@doc_id = LN_docs.doc_id,
@tipo_doc = LN_docs.tipo_doc,
@tipo_campo = LN_campos.tipo_campo,
@fecha_vigencia = LN_docs.fecha_vigencia
from LN_tipo_doc_campos
INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
where LN_docs.contraparte = @p_contraparte
and LN_docs.gestion = @gest
and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
and LN_docs.estado_doc = 'V'
if (@doc_id > 0 AND @fecha_vigencia is not null) begin
/* Existe el documento de ventas, busco las compras en un período anual */
select @campo = LN_tipo_doc_campos.campo,
@seccion = LN_tipo_doc_campos.seccion,
@doc_id = LN_docs.doc_id,
@tipo_doc = LN_docs.tipo_doc,
@tipo_campo = LN_campos.tipo_campo,
@fecha_vigencia = LN_docs.fecha_vigencia
from LN_tipo_doc_campos
INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
where LN_docs.contraparte = @p_contraparte
and LN_docs.gestion = @gest
and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
and LN_docs.estado_doc = 'V'
if exists ( select cliente
from LN_dep_econ_compras
where cliente = @cliente
and id_padron = @id_padron
and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
and hasta <= CONVERT(DATE, @fecha_vigencia) ) begin
SELECT @monto_compras = SUM(ISNULL(total_compras,0))
FROM LN_dep_econ_compras
where cliente = @cliente
and id_padron = @id_padron
and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
and hasta <= CONVERT(DATE, @fecha_vigencia)
/* Sumo las ventas, analizando si el campo que contiene el documento
es un valor simple o es una tabla, tomando en tal caso la columna 1 */
if (@tipo_campo != 'G') begin
SELECT @monto_ventas = ISNULL(valor_numerico,0)
FROM LN_doc_campos
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
end
else begin
/* ventas */
SELECT @monto_ventas = SUM(ISNULL(valor_numerico,0))
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 1
/* columna iva */
SELECT @monto_iva = SUM(ISNULL(valor_numerico,0))
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 2
end
/* Determinación de la alícuota de iva ingresada en el documento de las ventas anuales */
declare @alicuota_iva float, @aplica_iva_ventas float = 21, @pais varchar(2)
select
@alicuota_iva = isnull(LN_doc_campos.valor_numerico, 0),
@pais = LN_contrapartes.country_code
from LN_doc_campos
inner join LN_docs on LN_doc_campos.doc_id = LN_docs.doc_id
inner join LN_tipo_doc_campos on
(LN_doc_campos.campo = LN_tipo_doc_campos.campo
and LN_docs.tipo_doc = LN_tipo_doc_campos.tipo_doc)
inner join LN_contrapartes on LN_docs.contraparte = LN_contrapartes.contraparte
where LN_doc_campos.seccion = @seccion
and LN_doc_campos.doc_id = @doc_id
and LN_tipo_doc_campos.campo_id = 'ALICUOTA-IVA'
set @aplica_iva_ventas =
CASE
WHEN @pais = 'AR' THEN iif(@alicuota_iva = 10, 10.5, 21)
WHEN @pais = 'UY' THEN 22
WHEN @pais = 'PY' THEN iif(@alicuota_iva = 0, 10, iif(@alicuota_iva < 10, 5, 10))
END
if (@monto_compras > 0 AND (@monto_ventas > 0 OR @monto_iva > 0 AND @aplica_iva_ventas > 0)) begin
/* Calculo la dependencia económica preferentemente basado en el IVA ventas */
DECLARE @dep_econ_calc float
IF (@monto_iva > 0 AND @aplica_iva_ventas > 0)
SET @dep_econ_calc = CONVERT(float, @monto_compras / (@monto_iva/@aplica_iva_ventas*100) * 100)
ELSE
SET @dep_econ_calc = CONVERT(float, @monto_compras / @monto_ventas * 100)
set @graba_score = 'S'
if not exists (select indicador from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @idec)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @idec, @dep_econ_calc, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @dep_econ_calc,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @idec
end
end
end
else
begin
if exists (select indicador from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @idec)
begin
set @graba_score = 'S'
DELETE from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @idec
end
end
if (@graba_score = 'S') begin
/* Llamo al cálculo del score de dependencia económica, bajo el mismo producto */
declare @indic_score_dep_econ int = null
select @indic_score_dep_econ = LN_indicadores.indicador
from LN_indicadores
where producto = @producto_de
and clave_indicador = 'SCORE_DEP_ECON'
SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1
if (@indic_score_dep_econ is not null and @familia IS NOT NULL) begin
declare @score_dep_econ int = null
EXEC LN_score_dependencia_economica @familia, @p_contraparte, @score_dep_econ OUTPUT
if (@score_dep_econ is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_dep_econ)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @indic_score_dep_econ, @score_dep_econ, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_dep_econ,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @indic_score_dep_econ
end
else
begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_dep_econ)
delete from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_dep_econ
end
end
/* fin calculo del score de dependencia económica */
end
end
end
END
/** Para asentar indicadores del producto Límite de Crédito **/
/* Indicadores numéricos que se ingresan en forma manual */
IF (@accion = 'monto_recomendado' OR @accion = 'monto_aprobado' OR @accion = 'monto_aprobado_usd' OR @accion = 'score_balance_lc' OR @accion = 'escenarios_futuros' OR @accion = 'ventas_limite_credito') BEGIN
IF (@p_contraparte > 0) BEGIN
DECLARE @ilc1 int = null
DECLARE @clave1 VARCHAR(50) = CASE
WHEN @accion = 'monto_recomendado' THEN 'LC_RECOMENDADO'
WHEN @accion = 'monto_aprobado' THEN 'LC_APROBADO'
WHEN @accion = 'monto_aprobado_usd' THEN 'LC_APROBADO_USD'
WHEN @accion = 'score_balance_lc' THEN 'LC_SCORE_BALANCE'
WHEN @accion = 'escenarios_futuros' THEN 'LC_ESCENARIOS_FUTUROS'
WHEN @accion = 'ventas_limite_credito' THEN 'LC_VENTAS'
END
select @ilc1 = LN_indicadores.indicador,
@gest = LN_gestiones.gestion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = @clave1
if (@ilc1 is not null AND @gest is not null) begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilc1)
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_valor_numerico,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilc1
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilc1, @p_valor_numerico, 1, GETDATE(), @p_user_id)
/* Caso especial si es se está asentando el score de balance para el límite de credito
hay que replicar dicho valor en otro indicador de score de balance de otro producto balance que
esté asociado a la contraparte con imputación manual */
if (@accion = 'score_balance_lc') begin
DECLARE @otroscore int = null
select @otroscore = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.producto_id = 'balances'
and LN_indicadores.clave_indicador = 'SCORE_BAL'
and LN_indicadores.valoracion = 'F'
and LN_familia_productos.activo = 1
and LN_contraparte_familias.activo = 1
and LN_productos.visible = 1
if (@otroscore is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @otroscore)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @otroscore, @p_valor_numerico, 1, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_valor_numerico,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @otroscore
end
end
/* fin actualizar otro score */
end
/* para ejecutar en forma particular y asentar fecha de recomendación o aprobación cuando se asienta el indicador del monto correspondiente */
if (@accion = 'monto_aprobado' OR @accion = 'monto_aprobado_usd' OR @accion = 'monto_recomendado') begin
DECLARE @ilcf int = null
select @ilcf = LN_indicadores.indicador,
@gest = LN_gestiones.gestion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = iif(@accion = 'monto_recomendado', 'LC_RECOMENDADO_FECHA', iif(@accion = 'monto_aprobado', 'LC_APROBADO_FECHA', 'LC_APROBADO_USD_FECHA'))
if (@ilcf is not null AND @gest is not null) begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilcf)
UPDATE LN_contraparte_indicadores SET
valor_fecha = iif(@p_valor_numerico is not null, GETDATE(), NULL),
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilcf
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_fecha, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilcf, iif(@p_valor_numerico is not null, GETDATE(), NULL), 1, GETDATE(), @p_user_id)
end
end
/**/
END
END
/* Indicadores texto de ingreso manual */
IF (@accion = 'tendencia_balance_lc' OR @accion = 'tendencia_escenarios' OR @accion = 'situacion_socios' OR @accion = 'tendencia_situacion' OR @accion = 'ventas_limite_credito_fecha') BEGIN
/* en el caso del indicador fecha de ventas se recibe texto y se convierte a fecha */
IF (@p_contraparte > 0) BEGIN
DECLARE @ilc2 int = null
DECLARE @clave2 VARCHAR(30) = CASE
WHEN @accion = 'tendencia_balance_lc' THEN 'LC_TEND_BALANCE'
WHEN @accion = 'tendencia_escenarios' THEN 'LC_ESCENARIOS_TENDENCIA'
WHEN @accion = 'situacion_socios' THEN 'LC_SITUACION_SOCIOS'
WHEN @accion = 'tendencia_situacion' THEN 'LC_SITUACION_TENDENCIA'
WHEN @accion = 'ventas_limite_credito_fecha' THEN 'LC_VENTAS_FECHA'
END
DECLARE @valor_fecha_lc DATE = NULL
if (@accion = 'ventas_limite_credito_fecha')
if (@p_valor_texto is not null)
set @valor_fecha_lc = DATEFROMPARTS(CONVERT(INT,SUBSTRING(@p_valor_texto,7,4)),CONVERT(INT,SUBSTRING(@p_valor_texto,4,2)),CONVERT(INT,SUBSTRING(@p_valor_texto,1,2)))
select @ilc2 = LN_indicadores.indicador,
@gest = LN_gestiones.gestion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = @clave2
if (@ilc2 is not null AND @gest is not null) begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilc2)
UPDATE LN_contraparte_indicadores SET
valor_texto = iif(@accion <> 'ventas_limite_credito_fecha', @p_valor_texto, NULL),
valor_fecha = iif(@accion <> 'ventas_limite_credito_fecha', NULL, @valor_fecha_lc),
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilc2
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, valor_fecha, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilc2,
iif(@accion <> 'ventas_limite_credito_fecha', @p_valor_texto, NULL),
iif(@accion <> 'ventas_limite_credito_fecha', NULL, @valor_fecha_lc),
1, GETDATE(), @p_user_id)
/* Caso especial si es se está asentando la tendencia del balance para el límite de credito
hay que replicar dicho valor en otro indicador de valoración de balance de otro producto balance que
esté asociado a la contraparte con imputación manual */
if (@accion = 'tendencia_balance_lc') begin
DECLARE @otravaloracion int = null
select @otravaloracion = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.producto_id = 'balances'
and LN_indicadores.clave_indicador = 'VALORACION_BAL'
and LN_indicadores.valoracion = 'F'
and LN_familia_productos.activo = 1
and LN_contraparte_familias.activo = 1
and LN_productos.visible = 1
if (@otravaloracion is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @otravaloracion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @otravaloracion, @p_valor_texto, 1, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @p_valor_texto,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @otravaloracion
end
end
/* fin actualizar otra valoracion */
end
END
END
/* Indicadores automáticos del límite de crédito */
IF (@accion = 'dias_deuda_ventas') BEGIN
IF (@p_contraparte > 0) BEGIN
DECLARE @ilcdv int = null
select @ilcdv = LN_indicadores.indicador,
@gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS'
if (@ilcdv is not null AND @gest is not null AND @cuit is not null) begin
/* obtengo el valor del indicador LC_VENTAS, debiendo ser mayor a cero para poder aplicar fórmula */
declare @indicador_ventas int = null
select @indicador_ventas = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = 'LC_VENTAS'
if (@indicador_ventas is not null) begin
declare @total_ventas bigint = NULL
select @total_ventas = CONVERT(BIGINT, ISNULL(valor_numerico, 0))
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indicador_ventas
if (@total_ventas > 0) begin
/* Ahora voy a obtener el total de la central de deudores con los máximos del último trimestre */
DECLARE @total_cendeu BIGINT = NULL
declare @p_cuit varchar(30) = @cuit
declare @p_5anios date = getdate() - (5*365)
declare @p_2anios date = getdate() - (5*365)
declare @p_3meses date = getdate() - (90)
declare @dtStart date, @dtEnd date, @dtEnd_cuit date, @dtEnd_cuit2 date, @periodo_maximo varchar(7),@fec_periodo_minimo varchar(11),@periodo_minimo varchar(7);
select @dtEnd = (select max(fecha_informacion) from fuentes_procesadas where visible = '1' and fuente = 'cendeu')
select @dtEnd_cuit = convert(date,isnull(max(cendeu.fec_inf),'200112')+'01') from cendeu where iden = @p_cuit and vigente = 1 and id_fuente = 2
select @dtEnd_cuit2 = convert(date,isnull(max(cendeu.fec_inf),'200112')+'01') from cendeu_temp cendeu where iden = @p_cuit and vigente = 1 and id_fuente = 2
if @dtEnd_cuit2 > @dtEnd_cuit begin
set @dtEnd_cuit = @dtEnd_cuit2
end
if (@dtEnd_cuit > @dtEnd) begin
set @dtEnd = @dtEnd_cuit
end
set @dtStart = dateadd(month,-23, @dtEnd)
set @periodo_maximo = replace(Convert(varchar(7),@dtEnd),'-','')
set @fec_periodo_minimo = @dtStart
set @periodo_minimo = replace(Convert(varchar(7),@dtStart),'-','')
set @dtStart = dateadd(month,-2, @dtEnd)
if(@periodo_maximo is not null) begin
set @fec_periodo_minimo = dateadd(MM, -2,convert(date,@periodo_maximo+'01'))
set @periodo_minimo = convert(varchar(4),DATEPART(yyyy,@fec_periodo_minimo))+right('0'+convert(varchar(2),DATEPART(mm,@fec_periodo_minimo)),2)
end
SELECT @total_cendeu = SUM(CENDEU_TRIMESTRAL.total)
FROM (
SELECT trimestral.nombre, trimestral.situacion, MAX(trimestral.total) as total
FROM (
select distinct
fec_inf,codigo_ent,
isnull(nombre_corto,nombre) as nombre,
convert(int,situacion) as situacion,
((prestamos+particip+garotor+o_cptos+deuda_total)) as total
from cendeu inner join EntidadesBancarias on
convert(int,cendeu.codigo_ent) = EntidadesBancarias.id_banco
where iden = @p_Cuit and cendeu.fec_inf between @periodo_minimo and @periodo_maximo
and vigente = 1
and not exists (select * from cendeu b where b.iden = cendeu.iden and cast(b.codigo_ent as int) = cast(cendeu.codigo_ent as int) and b.fec_inf = cendeu.fec_inf and b.vigente = 1 and b.id_fuente = 2 and b.id_cendeu != cendeu.id_cendeu)
and not exists (select * from cendeu c
where c.iden = cendeu.iden
and cast(c.codigo_ent as int) = cast(cendeu.codigo_ent as int)
and c.fec_inf = cendeu.fec_inf
and c.vigente = cendeu.vigente
and (isnull(c.id_fuente,1)) = (isnull(cendeu.id_fuente,1))
and c.id_cendeu < cendeu.id_cendeu)
and not (
(cast(fec_inf+'01' as date) < @p_5anios)
OR
(cast(fec_inf+'01' as date) < @p_2anios
and
--not (convert(date,created) > @p_3meses and convert(date,modified) > @p_3meses))
not exists (select * from cendeu_temp z where z.iden = cendeu.iden and cast(z.codigo_ent as int) = cast(cendeu.codigo_ent as int) and (convert(date,z.created) > @p_3meses)))
OR
(cast(fec_inf+'01' as date) < @p_2anios
and
exists (select * from cendeu_cancela c
where c.iden = cendeu.iden
and cast(c.codigo_ent as int) = cast(cendeu.codigo_ent as int)
and cast(fec_inf+'01' as date) between convert(date,c.fec_inf_desde) and convert(date,c.fec_inf_hasta)
and c.vigente = '1'))
)
union
select distinct
fec_inf,codigo_ent,
isnull(nombre_corto,nombre) as nombre,
convert(int,situacion) as situacion,
((prestamos+particip+garotor+o_cptos+deuda_total)) as total
from cendeu_temp inner join EntidadesBancarias on
convert(int,cendeu_temp.codigo_ent) = EntidadesBancarias.id_banco
where iden = @p_Cuit and cendeu_temp.fec_inf between @periodo_minimo and @periodo_maximo
and vigente = 1
and not exists (select * from cendeu b where b.iden = cendeu_temp.iden and cast(b.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int) and b.fec_inf = cendeu_temp.fec_inf and b.vigente = 1 and b.id_fuente = 2 and b.id_cendeu != cendeu_temp.id_cendeu)
and not exists (select * from cendeu_temp c
where c.iden = cendeu_temp.iden
and cast(c.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int)
and c.fec_inf = cendeu_temp.fec_inf
and c.vigente = cendeu_temp.vigente
and (isnull(c.id_fuente,1)) = (isnull(cendeu_temp.id_fuente,1))
and c.id_cendeu < cendeu_temp.id_cendeu)
and not (
(cast(fec_inf+'01' as date) < @p_5anios)
OR
(cast(fec_inf+'01' as date) < @p_2anios
and
--not (convert(date,created) > @p_3meses and convert(date,modified) > @p_3meses))
not exists (select * from cendeu_temp z where z.iden = cendeu_temp.iden and cast(z.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int) and (convert(date,z.created) > @p_3meses)))
OR
(cast(fec_inf+'01' as date) < @p_2anios
and
exists (select * from cendeu_cancela c
where c.iden = cendeu_temp.iden
and cast(c.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int)
and cast(fec_inf+'01' as date) between convert(date,c.fec_inf_desde) and convert(date,c.fec_inf_hasta)
and c.vigente = '1'))
)
) trimestral
GROUP BY nombre, situacion) CENDEU_TRIMESTRAL
if (@total_cendeu > 0) begin
/* Aplico la fórmula para obtener los días (divido ventas por 1000 porque en cendeu el total viene en miles de pesos */
DECLARE @dias_deuda_ventas int
SET @dias_deuda_ventas = @total_cendeu * 365 / (@total_ventas/1000)
/* Guardo el indicador */
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilcdv)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilcdv, @dias_deuda_ventas, 1, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @dias_deuda_ventas,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilcdv
end
end
end
end
END
END
IF (@accion = 'rentabilidad_operativa_lc' OR @accion = 'rentabilidad_operativa_lc_fecha') BEGIN
IF (@p_contraparte > 0) BEGIN
DECLARE @ilcr int = null
DECLARE @clave3 VARCHAR(30) = CASE
WHEN @accion = 'rentabilidad_operativa_lc' THEN 'LC_RENTABILIDAD'
WHEN @accion = 'rentabilidad_operativa_lc_fecha' THEN 'LC_RENTABILIDAD_FECHA'
END
select @ilcr = LN_indicadores.indicador,
@gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = @clave3
if (@ilcr is not null AND @gest is not null AND @cuit is not null) begin
DECLARE @fecha_bal date = NULL
DECLARE @rentab_bal decimal(20,2) = NULL
DECLARE @idbal int = null
DECLARE Balances CURSOR FOR
select TOP 1 balances_contables.id_balance
from balances_contables
where balances_contables.cuit = @cuit
and balances_contables.estado = 'PUBLICADO'
and isnull(balances_contables.visible,0) = 1
and datediff(year, balances_contables.fecha_balance, GETDATE()) < 6
order by balances_contables.fecha_balance DESC
OPEN Balances
FETCH NEXT FROM Balances INTO @idbal
CLOSE Balances
DEALLOCATE Balances
if (@idbal IS NOT NULL) begin
select @fecha_bal = balances_contables.fecha_balance,
@rentab_bal = iif(balances_contables.res_vtanet > 0, (ISNULL(balances_contables.ganancia, 0) + ISNULL(balances_contables.res_otrosegr, 0) - ISNULL(balances_contables.res_otrosing, 0)) / balances_contables.res_vtanet * 100, NULL)
from balances_contables
where balances_contables.id_balance = @idbal
if (@fecha_bal is not null AND @rentab_bal is not null) begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilcr)
UPDATE LN_contraparte_indicadores SET
valor_numerico = iif(@accion = 'rentabilidad_operativa_lc', @rentab_bal, NULL),
valor_fecha = iif(@accion = 'rentabilidad_operativa_lc_fecha', @fecha_bal, NULL),
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilcr
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_fecha, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilcr, iif(@accion = 'rentabilidad_operativa_lc', @rentab_bal, NULL),
iif(@accion = 'rentabilidad_operativa_lc_fecha', @fecha_bal, NULL), 1, GETDATE(), @p_user_id)
end
end
end
END
END
/** FIN DE ASENTAR INDICADORES DEL PRODUCTO LIMITE DE CREDITO **/
/*** ASENTAR INDICES DE BALANCE COMO INDICADORES PARA UNA CONTRAPARTE TOMANDO DE LA SUSCRIPCION DE INDICES DEL CLIENTE ***/
IF (@accion = 'indices_balance') BEGIN
IF (@p_contraparte IS NOT NULL and @p_clave_indicador IS NOT NULL and @p_valor_numerico IS NOT NULL) BEGIN
SELECT @gest = gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
if (@gest is not null) begin
DECLARE @indicador_balance int = null
SELECT @indicador_balance = LN_indicadores.indicador
FROM LN_indicadores INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
INNER JOIN LN_familia_productos ON LN_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
AND LN_contrapartes.cliente = LN_familias.cliente)
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_productos.producto = LN_cliente_productos.producto)
INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_indicadores.clave_indicador = @p_clave_indicador
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_cliente_productos.activo = 1
AND ISNULL(LN_productos.balance, 0) > 0
if (@indicador_balance is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indicador_balance)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @indicador_balance, @p_valor_numerico, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_valor_numerico,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indicador_balance
end
end
END
END
/**************************************************/
IF (@accion = 'GRAFICO_INFORME_COMERCIAL' or @accion = 'GRAFICO_SCORE_BALANCE' or @accion = 'GRAFICO_SCORE_FINAL' or @accion = 'GRAFICO_SCORE_DOCUMENTOS') BEGIN
DROP TABLE #rangos
END
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
/*
CAMBIADO
exec ln_dashboard_cliente 'PRODUCTOS_GRILLA',1750864950
*/
-- Description: <Description,,>
-- =============================================
/*
exec LN_dashboard_cliente 'VALORES_GRILLA_EXT', '5546348', null,null, 95
exec LN_dashboard_cliente 'cumplimiento_documentos','5546348','AR','29','219'
exec LN_dashboard_cliente 'score_final_contraparte', null, null, null, '301'
exec LN_dashboard_cliente 'VALORES_GRILLA_EXT', 5546348, 'AR',null, 95
*/
CREATE OR ALTER PROCEDURE dbo.LN_dashboard_cliente_ant
-- Add the parameters for the stored procedure here
@accion varchar(50),
@p_cliente int,
@p_country_code varchar(2),
@p_familia int,
@p_contraparte int,
/* Este parámetro opcional para obtener por clave un indicador específico de una contraparte
cuando @accion = 'indicadores_contraparte' */
@p_clave_indicador varchar(50) = NULL,
/* Parámetro para asentar el score manual o cuando se consulta mediante API */
@p_score float = NULL,
/* Estos tres parámetros para asentar indicadores varios en tabla LN_contraparte_indicadores */
@p_valor_numerico float = null,
@p_valor_texto varchar(100) = null,
@p_valor_memo text = null,
@p_user_id int = null,
@p_visible tinyint = 1
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF (@accion = 'GRAFICO_INFORME_COMERCIAL' or @accion = 'GRAFICO_SCORE_BALANCE' or @accion = 'GRAFICO_SCORE_FINAL' or @accion = 'GRAFICO_SCORE_DOCUMENTOS') BEGIN
create table #rangos (
rango varchar(2),
etiqueta varchar(10),
color varchar(6),
total int)
insert into #rangos VALUES ('R5','0-20','A72B2A',0)
insert into #rangos VALUES ('R4','21-40','d37123',0)
insert into #rangos VALUES ('R3','41-60','FFB81C',0)
insert into #rangos VALUES ('R2','61-80','cbc367',0)
insert into #rangos VALUES ('R1','81-100','63b68c',0)
END
/*************************************************************/
DECLARE @contrap int, @gest int = NULL, @indic int, @pond tinyint, @valor float, @prod int, @exc int = null, @tipo_exc varchar(1) = NULL
DECLARE @doc_id int, @tipo_doc int, @estado_doc varchar(1), @vers int, @familia int = null
DECLARE @cantidad int = 0, @cumplidos int = 0, @cantidad_verificados int = 0
DECLARE @producto_alertas int = null
DECLARE @inicial tinyint
DECLARE @carga_inicial tinyint
DECLARE @limite_carga_inicial datetime
DECLARE @has_killer bit = 0, @killer bit = 0
declare @cuit varchar(50) = null
declare @country varchar(2) = null
declare @cliente int = null
/**********************************************/
IF (@accion = 'PAISES') BEGIN
SELECT cc.country_code, cc.country_name
from country cc
inner join LN_contrapartes on cc.country_code = LN_contrapartes.country_code
where LN_contrapartes.cliente = @p_cliente
group by cc.country_code, cc.country_name
END
IF (@accion = 'CONTRAPARTES') BEGIN
if (@p_country_code is null AND @p_familia is null) begin
SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
identificadores.country_code, country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
LN_contraparte_familias.codigo_agrupacion,
LN_contraparte_familias.estado_homologacion,
LN_contraparte_familias.activo,
LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
users.first_name + ' ' + users.last_name AS created_by_user,
users1.first_name + ' ' + users1.last_name AS modified_by_user
FROM LN_contrapartes
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end else
if (@p_country_code is not null and @p_familia is null) begin
SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
identificadores.country_code, country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
LN_contraparte_familias.codigo_agrupacion,
LN_contraparte_familias.estado_homologacion,
LN_contraparte_familias.activo,
LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
users.first_name + ' ' + users.last_name AS created_by_user,
users1.first_name + ' ' + users1.last_name AS modified_by_user
FROM LN_contrapartes
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
AND country.country_code = @p_country_code
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end else
if (@p_country_code is null AND @p_familia is not null) begin
SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
identificadores.country_code, country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
LN_contraparte_familias.codigo_agrupacion,
LN_contraparte_familias.estado_homologacion,
LN_contraparte_familias.activo,
LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
users.first_name + ' ' + users.last_name AS created_by_user,
users1.first_name + ' ' + users1.last_name AS modified_by_user
FROM LN_contrapartes
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
AND LN_contraparte_familias.familia = @p_familia
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end else
SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
identificadores.country_code, country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
LN_contraparte_familias.codigo_agrupacion,
LN_contraparte_familias.estado_homologacion,
LN_contraparte_familias.activo,
LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
users.first_name + ' ' + users.last_name AS created_by_user,
users1.first_name + ' ' + users1.last_name AS modified_by_user
FROM LN_contrapartes
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
AND country.country_code = @p_country_code
AND LN_contraparte_familias.familia = @p_familia
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
END
IF (@accion = 'PRODUCTOS_GRILLA') BEGIN
if (@p_contraparte is null)
/* productos del panel de control del cliente vinculados por familias principales */
SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name, LN_cliente_productos.orden_producto,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_familias.visible = 1
AND ISNULL(LN_familias.subfamilia, 0) = 0
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name, LN_cliente_productos.orden_producto,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso
ORDER BY LN_cliente_productos.orden_producto
else
SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
ORDER BY LN_cliente_productos.orden_producto
END
IF (@accion = 'PRODUCTOS_GRILLA_2') BEGIN
/* Sólo los productos que deben aparecer en las solapas de vista de contrapartes */
if (@p_contraparte is null)
SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_productos.visible_brief = 1
ORDER BY LN_cliente_productos.producto
else
SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
AND LN_productos.visible_brief = 1
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
LN_productos.documentos, LN_productos.subcontratistas
ORDER BY LN_productos.producto
END
IF (@accion = 'PRODUCTOS_INDICADORES') BEGIN
/*SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, ISNULL(LN_productos.balance, 0) AS balance,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_familias.visible = 1
AND ISNULL(LN_familias.subfamilia, 0) = 0
AND LN_indicadores.visible = 1
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden
ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden*/
/* para el panel de control, basado en los productos asociados a familias de contrapartes principales
Este select reemplazará al de más arriba cuando esté implementado la suscripción de indicadores de balance por cliente */
SELECT DATA.* FROM
(SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, ISNULL(LN_productos.balance, 0) AS balance,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden,
SUSC.indicador AS indicador_susc,
show_panel = CASE
WHEN ISNULL(LN_productos.balance, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0) ELSE 1 END
FROM LN_productos
INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
WHERE cliente = @p_cliente) SUSC
ON (LN_cliente_productos.cliente = SUSC.cliente AND LN_indicadores.indicador = SUSC.indicador)
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_familias.visible = 1
AND ISNULL(LN_familias.subfamilia, 0) = 0
AND LN_indicadores.visible = 1
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden,
SUSC.indicador
--ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden
) DATA
WHERE DATA.show_panel = 1
ORDER BY DATA.orden_producto, DATA.orden
END
IF (@accion = 'VALORES_GRILLA') BEGIN
/* Para obtener valores de indicadores de la grilla panel de control, sólo tomo
indicadores que puedan ser visibles en grilla LN_indicadores.visible = 1 */
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.clave_indicador,
case
when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null,
REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'),
null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null,
/*REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'), */
format(LN_contraparte_indicadores.valor_numerico, '#############.##'),
null)
/*
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
*/
when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
else null
end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
case
when LN_contraparte_indicadores.valor_numerico = 1 then '96CAB0'
when LN_contraparte_indicadores.valor_numerico = 2 then 'FFFFBA'
when LN_contraparte_indicadores.valor_numerico = 3 then 'FDC689'
when LN_contraparte_indicadores.valor_numerico = 4 then 'FD676E'
when LN_contraparte_indicadores.valor_numerico = 5 then 'C55B5B'
when LN_contraparte_indicadores.valor_numerico = 6 then 'C55B5B'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'R' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'N' then 'FFFFFF'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_fondo from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS color_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_texto from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS textcolor_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS svg_data_personalizado,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'FIDECHECK') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#A72B2A" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'R' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#FFB81C" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#63b68c" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
case
when LN_contraparte_indicadores.valor_numerico = 1 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#96CAB0;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M278.767,145.419c-3.126-4.003-7.276-6.006-12.451-6.006c-4.591,0-7.716,0.879-9.375,2.637
c-1.662,1.758-5.226,6.445-10.693,14.063c-5.47,7.617-11.744,14.502-18.823,20.654c-7.082,6.152-16.53,12.012-28.345,17.578
c-7.91,3.712-13.429,6.738-16.553,9.082c-3.126,2.344-4.688,6.006-4.688,10.986c0,4.298,1.586,8.082,4.761,11.353
c3.172,3.273,6.812,4.907,10.913,4.907c8.592,0,25.292-9.521,50.098-28.564V335.41c0,7.814,1.806,13.722,5.42,17.725
c3.612,4.003,8.397,6.006,14.355,6.006c13.378,0,20.068-9.814,20.068-29.443V161.972
C283.455,154.941,281.892,149.425,278.767,145.419z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 2 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FFFFBA;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M319.783,325.595c-4.005-3.124-9.814-4.688-17.432-4.688h-76.465c2.44-3.71,4.834-6.885,7.178-9.521
c5.468-6.64,15.55-15.967,30.249-27.979c14.696-12.012,25.17-20.824,31.421-26.44c6.249-5.614,12.378-13.378,18.384-23.291
c6.006-9.911,9.009-20.922,9.009-33.032c0-7.713-1.442-15.161-4.321-22.339c-2.882-7.178-6.91-13.5-12.085-18.97
c-5.177-5.468-11.183-9.764-18.018-12.891c-10.547-4.688-23.291-7.031-38.232-7.031c-12.403,0-23.218,1.831-32.446,5.493
s-16.846,8.473-22.852,14.429c-6.006,5.958-10.524,12.598-13.55,19.922c-3.028,7.324-4.541,14.355-4.541,21.094
c0,5.566,1.611,9.961,4.834,13.184s7.274,4.834,12.158,4.834c5.566,0,9.789-1.758,12.671-5.273
c2.879-3.516,5.468-8.544,7.764-15.088c2.293-6.542,3.93-10.547,4.907-12.012c7.324-11.229,17.381-16.846,30.176-16.846
c6.054,0,11.646,1.369,16.772,4.102c5.127,2.735,9.178,6.569,12.158,11.499c2.978,4.933,4.468,10.524,4.468,16.772
c0,5.763-1.392,11.646-4.175,17.651s-6.837,11.865-12.158,17.578c-5.324,5.713-11.989,11.403-19.995,17.065
c-4.493,3.028-11.964,9.352-22.412,18.97c-10.451,9.62-22.169,21.167-35.156,34.644c-3.126,3.321-6.006,7.887-8.643,13.696
c-2.637,5.812-3.955,10.474-3.955,13.989c0,5.47,2.051,10.231,6.152,14.282c4.102,4.054,9.814,6.079,17.139,6.079H306.6
c6.445,0,11.254-1.659,14.429-4.98c3.172-3.319,4.761-7.372,4.761-12.158C325.789,332.97,323.786,328.722,319.783,325.595z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 3 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FDC689;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M319.637,269.711c-2.637-6.395-6.569-12.231-11.792-17.505c-5.226-5.273-11.646-9.961-19.263-14.063
c7.91-6.64,13.989-13.451,18.237-20.435c4.248-6.981,6.372-15.355,6.372-25.122c0-7.42-1.465-14.355-4.395-20.801
s-7.276-12.108-13.037-16.992c-5.763-4.882-12.55-8.617-20.361-11.206c-7.814-2.586-16.457-3.882-25.928-3.882
c-10.84,0-20.654,1.538-29.443,4.614s-16.139,7.155-22.046,12.231c-5.91,5.079-10.4,10.426-13.477,16.04
c-3.076,5.617-4.614,10.963-4.614,16.04c0,5.273,1.634,9.499,4.907,12.671c3.271,3.175,6.859,4.761,10.767,4.761
c3.319,0,6.249-0.586,8.789-1.758c2.538-1.172,4.296-2.783,5.273-4.834c1.659-3.809,3.49-7.86,5.493-12.158
c2-4.296,4.125-7.812,6.372-10.547c2.245-2.733,5.296-4.93,9.155-6.592c3.856-1.659,8.764-2.49,14.722-2.49
c8.789,0,15.77,2.71,20.947,8.13c5.175,5.42,7.764,11.891,7.764,19.409c0,9.865-3.248,17.432-9.741,22.705
c-6.496,5.273-14.234,7.91-23.218,7.91h-6.006c-6.935,0-12.158,1.442-15.674,4.321c-3.516,2.882-5.273,6.665-5.273,11.353
c0,4.786,1.465,8.521,4.395,11.206c2.93,2.687,7.079,4.028,12.451,4.028c1.172,0,3.809-0.194,7.91-0.586
c4.102-0.389,7.127-0.586,9.082-0.586c11.133,0,19.823,3.248,26.074,9.741c6.249,6.496,9.375,15.454,9.375,26.88
c0,7.716-1.831,14.502-5.493,20.361s-8.302,10.279-13.916,13.257c-5.617,2.98-11.451,4.468-17.505,4.468
c-10.547,0-18.727-3.296-24.536-9.888c-5.812-6.592-11.256-16.674-16.333-30.249c-0.783-2.245-2.442-4.175-4.98-5.786
c-2.541-1.611-5.177-2.417-7.91-2.417c-5.47,0-10.034,1.735-13.696,5.2c-3.662,3.468-5.493,8.034-5.493,13.696
c0,4.395,1.538,9.961,4.614,16.699s7.617,13.257,13.623,19.556s13.646,11.549,22.925,15.747c9.276,4.198,19.775,6.299,31.494,6.299
c11.522,0,22.046-1.831,31.567-5.493s17.748-8.739,24.683-15.234c6.933-6.493,12.181-13.891,15.747-22.192
c3.563-8.299,5.347-16.894,5.347-25.781C323.592,283.018,322.273,276.109,319.637,269.711z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 4 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FD676E;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M324.983,279.892c-4.541-2.051-10.572-3.076-18.091-3.076h-6.299V163.437
c0-16.992-7.423-25.488-22.266-25.488c-4.591,0-8.521,1.538-11.792,4.614c-3.273,3.076-7.448,8.034-12.524,14.868l-77.637,103.857
c-2.149,2.833-3.955,5.226-5.42,7.178c-1.465,1.955-2.882,3.98-4.248,6.079c-1.369,2.101-2.394,4.102-3.076,6.006
c-0.685,1.904-1.025,3.786-1.025,5.64c0,7.228,2.318,12.941,6.958,17.139c4.637,4.2,11.595,6.299,20.874,6.299h73.535v27.246
c0,7.324,1.685,12.868,5.054,16.626s7.787,5.64,13.257,5.64c5.566,0,10.009-1.831,13.33-5.493c3.319-3.662,4.98-9.251,4.98-16.772
V309.63h8.936c7.42,0,12.987-1.293,16.699-3.882c3.71-2.586,5.566-6.713,5.566-12.378
C331.795,286.436,329.524,281.943,324.983,279.892z M263.973,276.816h-62.988l62.988-85.107V276.816z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 5 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M320.516,255.136c-3.516-8.496-8.35-15.843-14.502-22.046c-6.152-6.2-13.307-11.06-21.46-14.575
c-8.155-3.516-16.919-5.273-26.294-5.273c-11.719,0-24.513,3.712-38.379,11.133l8.35-47.461h69.58
c7.226,0,12.694-1.561,16.406-4.688c3.71-3.124,5.566-7.226,5.566-12.305c0-11.62-7.617-17.432-22.852-17.432h-77.344
c-8.4,0-14.454,1.904-18.164,5.713c-3.712,3.809-6.251,9.913-7.617,18.311l-12.304,70.166c-1.076,6.152-1.611,9.474-1.611,9.961
c0,4.395,1.854,8.327,5.566,11.792c3.71,3.468,7.958,5.2,12.744,5.2c4.395,0,9.984-2.563,16.772-7.69
c6.786-5.127,11.986-8.716,15.601-10.767c3.612-2.051,9.618-3.076,18.018-3.076c6.834,0,13.037,1.637,18.604,4.907
c5.566,3.273,10.009,8.229,13.33,14.868c3.319,6.642,4.98,14.648,4.98,24.023c0,8.693-1.538,16.457-4.614,23.291
c-3.076,6.837-7.448,12.208-13.11,16.113c-5.665,3.907-12.257,5.859-19.775,5.859c-8.203,0-15.626-2.417-22.266-7.251
c-6.642-4.834-11.916-11.595-15.82-20.288c-4.005-9.471-10.107-14.209-18.311-14.209c-4.786,0-8.766,1.71-11.938,5.127
c-3.175,3.419-4.761,7.031-4.761,10.84c0,6.251,2.271,13.55,6.812,21.899s12.254,15.747,23.145,22.192
c10.888,6.445,25.072,9.668,42.554,9.668c15.624,0,29.418-3.419,41.382-10.254c11.961-6.834,21.117-16.063,27.466-27.686
c6.347-11.62,9.521-24.511,9.521-38.672C325.789,272.765,324.031,263.632,320.516,255.136z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 6 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M321.248,258.652c-3.223-8.69-7.789-16.234-13.696-22.632c-5.91-6.395-12.794-11.327-20.654-14.795
c-7.862-3.465-16.432-5.2-25.708-5.2c-9.668,0-18.409,1.904-26.221,5.713c-7.814,3.809-15.04,9.668-21.68,17.578
c1.268-26.562,5.468-45.019,12.598-55.371c3.516-5.077,7.837-9.105,12.964-12.085c5.127-2.978,10.277-4.468,15.454-4.468
c6.445,0,12.108,1.783,16.992,5.347c4.882,3.566,8.446,8.276,10.693,14.136c1.659,4.591,4.248,8.18,7.764,10.767
c3.516,2.589,7.324,3.882,11.426,3.882c4.688,0,8.544-1.634,11.572-4.907c3.026-3.271,4.541-6.908,4.541-10.913
c0-6.64-2.417-13.573-7.251-20.801c-4.834-7.226-12.012-13.28-21.533-18.164c-9.521-4.882-20.533-7.324-33.032-7.324
c-12.989,0-24.562,2.442-34.717,7.324c-10.158,4.884-18.8,12.11-25.928,21.68c-7.13,9.572-12.598,21.632-16.406,36.182
c-3.809,14.552-5.713,31.055-5.713,49.512c0,22.657,3.149,41.821,9.448,57.495s15.404,27.516,27.319,35.522
c11.913,8.009,26.074,12.012,42.48,12.012c14.257,0,27.026-3.149,38.306-9.448s20.068-15.063,26.367-26.294
c6.299-11.229,9.448-23.73,9.448-37.5C326.082,276.427,324.471,267.345,321.248,258.652z M277.303,318.198
c-6.445,8.057-14.601,12.085-24.463,12.085c-10.353,0-18.947-4.395-25.781-13.184c-6.837-8.789-10.254-19.775-10.254-32.959
c0-8.203,1.685-15.355,5.054-21.46c3.369-6.102,7.812-10.767,13.33-13.989c5.516-3.223,11.302-4.834,17.358-4.834
c6.347,0,12.158,1.685,17.432,5.054c5.274,3.369,9.423,8.253,12.451,14.648c3.026,6.397,4.541,14.04,4.541,22.925
C286.971,299.571,283.748,310.141,277.303,318.198z"/>
</svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 181 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 121 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 91 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else null
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positive'
when LN_contraparte_indicadores.valor_texto = 'R' then 'Related'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negative'
else null
end
WHEN LN_indicadores.clave_indicador = 'SITUACION_CD' THEN
iif (LN_contraparte_indicadores.valor_numerico is not null, 'Situación ' + Convert(varchar,LN_contraparte_indicadores.valor_numerico)+' - Período: '+LN_contraparte_indicadores.valor_texto, null)
WHEN LN_indicadores.clave_indicador = 'EXCEPCION' THEN
iif (excepciones.tipo_excepcion = 'V', 'Excepción para PERMITIR ingreso', iif(excepciones.tipo_excepcion = 'R', 'Excepción para RECHAZAR ingreso', NULL))
ELSE NULL
END AS textcaption,
/** TEXTOS **/
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select texto_largo from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS texto,
/** PUNTO **/
CASE
WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto
FROM LN_contrapartes
INNER JOIN LN_contraparte_indicadores ON LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_indicadores.producto = LN_familia_productos.producto)
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
LEFT OUTER JOIN
(SELECT LN_docs.contraparte, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_gestiones ON LN_docs.gestion = LN_gestiones.gestion
INNER JOIN
(select LN_docs.contraparte, LN_docs.tipo_doc, max(doc_version) as ultima
from LN_docs
inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion
AND LN_docs.contraparte = LN_gestiones.contraparte)
where LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
group by LN_docs.contraparte, LN_docs.tipo_doc) ultimas_versiones
ON (LN_docs.tipo_doc = ultimas_versiones.tipo_doc
AND ln_docs.contraparte = ultimas_versiones.contraparte
AND LN_docs.doc_version = ultimas_versiones.ultima)
WHERE LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_docs.estado_doc = 'I'
GROUP BY LN_docs.contraparte) PENDIENTES_VERIFICAR ON LN_contrapartes.contraparte = PENDIENTES_VERIFICAR.contraparte
LEFT OUTER JOIN
(select LN_excepciones.contraparte, LN_excepciones.tipo_excepcion
from LN_contrapartes inner join LN_excepciones
on LN_contrapartes.contraparte = LN_excepciones.contraparte
where LN_contrapartes.cliente = @p_cliente
and LN_excepciones.estado = 1
and LN_excepciones.vigencia >= GETDATE()) excepciones ON LN_contrapartes.contraparte = excepciones.contraparte
WHERE LN_contrapartes.cliente = @p_cliente
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.visible = 1
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
END
IF (@accion = 'VALORES_GRILLA_EXT') BEGIN
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.clave_indicador, LN_productos.producto_id,
case
when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null,
REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'),
null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null,
/*REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'), */
format(LN_contraparte_indicadores.valor_numerico, '#############.##'),
null)
/*
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
*/
when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, right('00'+cast(month(LN_contraparte_indicadores.valor_fecha) as varchar),2) + '-' + cast(right(year(LN_contraparte_indicadores.valor_fecha),2) as varchar), NULL) --convert(varchar, LN_contraparte_indicadores.valor_fecha, 103)
when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
else null
end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
case
when LN_contraparte_indicadores.valor_numerico = 1 then '96CAB0'
when LN_contraparte_indicadores.valor_numerico = 2 then 'FFFFBA'
when LN_contraparte_indicadores.valor_numerico = 3 then 'FDC689'
when LN_contraparte_indicadores.valor_numerico = 4 then 'FD676E'
when LN_contraparte_indicadores.valor_numerico = 5 then 'C55B5B'
when LN_contraparte_indicadores.valor_numerico = 6 then 'C55B5B'
else null
end
WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 181 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 121 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 91 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_fondo from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS color_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_texto from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS textcolor_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS svg_data_personalizado,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'FIDECHECK') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#A72B2A" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'R' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#FFB81C" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#63b68c" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
case
when LN_contraparte_indicadores.valor_numerico = 1 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#96CAB0;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M278.767,145.419c-3.126-4.003-7.276-6.006-12.451-6.006c-4.591,0-7.716,0.879-9.375,2.637
c-1.662,1.758-5.226,6.445-10.693,14.063c-5.47,7.617-11.744,14.502-18.823,20.654c-7.082,6.152-16.53,12.012-28.345,17.578
c-7.91,3.712-13.429,6.738-16.553,9.082c-3.126,2.344-4.688,6.006-4.688,10.986c0,4.298,1.586,8.082,4.761,11.353
c3.172,3.273,6.812,4.907,10.913,4.907c8.592,0,25.292-9.521,50.098-28.564V335.41c0,7.814,1.806,13.722,5.42,17.725
c3.612,4.003,8.397,6.006,14.355,6.006c13.378,0,20.068-9.814,20.068-29.443V161.972
C283.455,154.941,281.892,149.425,278.767,145.419z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 2 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FFFFBA;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M319.783,325.595c-4.005-3.124-9.814-4.688-17.432-4.688h-76.465c2.44-3.71,4.834-6.885,7.178-9.521
c5.468-6.64,15.55-15.967,30.249-27.979c14.696-12.012,25.17-20.824,31.421-26.44c6.249-5.614,12.378-13.378,18.384-23.291
c6.006-9.911,9.009-20.922,9.009-33.032c0-7.713-1.442-15.161-4.321-22.339c-2.882-7.178-6.91-13.5-12.085-18.97
c-5.177-5.468-11.183-9.764-18.018-12.891c-10.547-4.688-23.291-7.031-38.232-7.031c-12.403,0-23.218,1.831-32.446,5.493
s-16.846,8.473-22.852,14.429c-6.006,5.958-10.524,12.598-13.55,19.922c-3.028,7.324-4.541,14.355-4.541,21.094
c0,5.566,1.611,9.961,4.834,13.184s7.274,4.834,12.158,4.834c5.566,0,9.789-1.758,12.671-5.273
c2.879-3.516,5.468-8.544,7.764-15.088c2.293-6.542,3.93-10.547,4.907-12.012c7.324-11.229,17.381-16.846,30.176-16.846
c6.054,0,11.646,1.369,16.772,4.102c5.127,2.735,9.178,6.569,12.158,11.499c2.978,4.933,4.468,10.524,4.468,16.772
c0,5.763-1.392,11.646-4.175,17.651s-6.837,11.865-12.158,17.578c-5.324,5.713-11.989,11.403-19.995,17.065
c-4.493,3.028-11.964,9.352-22.412,18.97c-10.451,9.62-22.169,21.167-35.156,34.644c-3.126,3.321-6.006,7.887-8.643,13.696
c-2.637,5.812-3.955,10.474-3.955,13.989c0,5.47,2.051,10.231,6.152,14.282c4.102,4.054,9.814,6.079,17.139,6.079H306.6
c6.445,0,11.254-1.659,14.429-4.98c3.172-3.319,4.761-7.372,4.761-12.158C325.789,332.97,323.786,328.722,319.783,325.595z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 3 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FDC689;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#000000;" d="M319.637,269.711c-2.637-6.395-6.569-12.231-11.792-17.505c-5.226-5.273-11.646-9.961-19.263-14.063
c7.91-6.64,13.989-13.451,18.237-20.435c4.248-6.981,6.372-15.355,6.372-25.122c0-7.42-1.465-14.355-4.395-20.801
s-7.276-12.108-13.037-16.992c-5.763-4.882-12.55-8.617-20.361-11.206c-7.814-2.586-16.457-3.882-25.928-3.882
c-10.84,0-20.654,1.538-29.443,4.614s-16.139,7.155-22.046,12.231c-5.91,5.079-10.4,10.426-13.477,16.04
c-3.076,5.617-4.614,10.963-4.614,16.04c0,5.273,1.634,9.499,4.907,12.671c3.271,3.175,6.859,4.761,10.767,4.761
c3.319,0,6.249-0.586,8.789-1.758c2.538-1.172,4.296-2.783,5.273-4.834c1.659-3.809,3.49-7.86,5.493-12.158
c2-4.296,4.125-7.812,6.372-10.547c2.245-2.733,5.296-4.93,9.155-6.592c3.856-1.659,8.764-2.49,14.722-2.49
c8.789,0,15.77,2.71,20.947,8.13c5.175,5.42,7.764,11.891,7.764,19.409c0,9.865-3.248,17.432-9.741,22.705
c-6.496,5.273-14.234,7.91-23.218,7.91h-6.006c-6.935,0-12.158,1.442-15.674,4.321c-3.516,2.882-5.273,6.665-5.273,11.353
c0,4.786,1.465,8.521,4.395,11.206c2.93,2.687,7.079,4.028,12.451,4.028c1.172,0,3.809-0.194,7.91-0.586
c4.102-0.389,7.127-0.586,9.082-0.586c11.133,0,19.823,3.248,26.074,9.741c6.249,6.496,9.375,15.454,9.375,26.88
c0,7.716-1.831,14.502-5.493,20.361s-8.302,10.279-13.916,13.257c-5.617,2.98-11.451,4.468-17.505,4.468
c-10.547,0-18.727-3.296-24.536-9.888c-5.812-6.592-11.256-16.674-16.333-30.249c-0.783-2.245-2.442-4.175-4.98-5.786
c-2.541-1.611-5.177-2.417-7.91-2.417c-5.47,0-10.034,1.735-13.696,5.2c-3.662,3.468-5.493,8.034-5.493,13.696
c0,4.395,1.538,9.961,4.614,16.699s7.617,13.257,13.623,19.556s13.646,11.549,22.925,15.747c9.276,4.198,19.775,6.299,31.494,6.299
c11.522,0,22.046-1.831,31.567-5.493s17.748-8.739,24.683-15.234c6.933-6.493,12.181-13.891,15.747-22.192
c3.563-8.299,5.347-16.894,5.347-25.781C323.592,283.018,322.273,276.109,319.637,269.711z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 4 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#FD676E;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M324.983,279.892c-4.541-2.051-10.572-3.076-18.091-3.076h-6.299V163.437
c0-16.992-7.423-25.488-22.266-25.488c-4.591,0-8.521,1.538-11.792,4.614c-3.273,3.076-7.448,8.034-12.524,14.868l-77.637,103.857
c-2.149,2.833-3.955,5.226-5.42,7.178c-1.465,1.955-2.882,3.98-4.248,6.079c-1.369,2.101-2.394,4.102-3.076,6.006
c-0.685,1.904-1.025,3.786-1.025,5.64c0,7.228,2.318,12.941,6.958,17.139c4.637,4.2,11.595,6.299,20.874,6.299h73.535v27.246
c0,7.324,1.685,12.868,5.054,16.626s7.787,5.64,13.257,5.64c5.566,0,10.009-1.831,13.33-5.493c3.319-3.662,4.98-9.251,4.98-16.772
V309.63h8.936c7.42,0,12.987-1.293,16.699-3.882c3.71-2.586,5.566-6.713,5.566-12.378
C331.795,286.436,329.524,281.943,324.983,279.892z M263.973,276.816h-62.988l62.988-85.107V276.816z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 5 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M320.516,255.136c-3.516-8.496-8.35-15.843-14.502-22.046c-6.152-6.2-13.307-11.06-21.46-14.575
c-8.155-3.516-16.919-5.273-26.294-5.273c-11.719,0-24.513,3.712-38.379,11.133l8.35-47.461h69.58
c7.226,0,12.694-1.561,16.406-4.688c3.71-3.124,5.566-7.226,5.566-12.305c0-11.62-7.617-17.432-22.852-17.432h-77.344
c-8.4,0-14.454,1.904-18.164,5.713c-3.712,3.809-6.251,9.913-7.617,18.311l-12.304,70.166c-1.076,6.152-1.611,9.474-1.611,9.961
c0,4.395,1.854,8.327,5.566,11.792c3.71,3.468,7.958,5.2,12.744,5.2c4.395,0,9.984-2.563,16.772-7.69
c6.786-5.127,11.986-8.716,15.601-10.767c3.612-2.051,9.618-3.076,18.018-3.076c6.834,0,13.037,1.637,18.604,4.907
c5.566,3.273,10.009,8.229,13.33,14.868c3.319,6.642,4.98,14.648,4.98,24.023c0,8.693-1.538,16.457-4.614,23.291
c-3.076,6.837-7.448,12.208-13.11,16.113c-5.665,3.907-12.257,5.859-19.775,5.859c-8.203,0-15.626-2.417-22.266-7.251
c-6.642-4.834-11.916-11.595-15.82-20.288c-4.005-9.471-10.107-14.209-18.311-14.209c-4.786,0-8.766,1.71-11.938,5.127
c-3.175,3.419-4.761,7.031-4.761,10.84c0,6.251,2.271,13.55,6.812,21.899s12.254,15.747,23.145,22.192
c10.888,6.445,25.072,9.668,42.554,9.668c15.624,0,29.418-3.419,41.382-10.254c11.961-6.834,21.117-16.063,27.466-27.686
c6.347-11.62,9.521-24.511,9.521-38.672C325.789,272.765,324.031,263.632,320.516,255.136z"/>
</svg>'
when LN_contraparte_indicadores.valor_numerico = 6 then
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
<path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M321.248,258.652c-3.223-8.69-7.789-16.234-13.696-22.632c-5.91-6.395-12.794-11.327-20.654-14.795
c-7.862-3.465-16.432-5.2-25.708-5.2c-9.668,0-18.409,1.904-26.221,5.713c-7.814,3.809-15.04,9.668-21.68,17.578
c1.268-26.562,5.468-45.019,12.598-55.371c3.516-5.077,7.837-9.105,12.964-12.085c5.127-2.978,10.277-4.468,15.454-4.468
c6.445,0,12.108,1.783,16.992,5.347c4.882,3.566,8.446,8.276,10.693,14.136c1.659,4.591,4.248,8.18,7.764,10.767
c3.516,2.589,7.324,3.882,11.426,3.882c4.688,0,8.544-1.634,11.572-4.907c3.026-3.271,4.541-6.908,4.541-10.913
c0-6.64-2.417-13.573-7.251-20.801c-4.834-7.226-12.012-13.28-21.533-18.164c-9.521-4.882-20.533-7.324-33.032-7.324
c-12.989,0-24.562,2.442-34.717,7.324c-10.158,4.884-18.8,12.11-25.928,21.68c-7.13,9.572-12.598,21.632-16.406,36.182
c-3.809,14.552-5.713,31.055-5.713,49.512c0,22.657,3.149,41.821,9.448,57.495s15.404,27.516,27.319,35.522
c11.913,8.009,26.074,12.012,42.48,12.012c14.257,0,27.026-3.149,38.306-9.448s20.068-15.063,26.367-26.294
c6.299-11.229,9.448-23.73,9.448-37.5C326.082,276.427,324.471,267.345,321.248,258.652z M277.303,318.198
c-6.445,8.057-14.601,12.085-24.463,12.085c-10.353,0-18.947-4.395-25.781-13.184c-6.837-8.789-10.254-19.775-10.254-32.959
c0-8.203,1.685-15.355,5.054-21.46c3.369-6.102,7.812-10.767,13.33-13.989c5.516-3.223,11.302-4.834,17.358-4.834
c6.347,0,12.158,1.685,17.432,5.054c5.274,3.369,9.423,8.253,12.451,14.648c3.026,6.397,4.541,14.04,4.541,22.925
C286.971,299.571,283.748,310.141,277.303,318.198z"/>
</svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 181 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 121 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 91 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else null
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positive'
when LN_contraparte_indicadores.valor_texto = 'R' then 'Related'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negative'
else null
end
WHEN LN_indicadores.clave_indicador = 'SITUACION_CD' THEN
iif (LN_contraparte_indicadores.valor_numerico is not null, 'Situación ' + Convert(varchar,LN_contraparte_indicadores.valor_numerico)+' - Período: '+LN_contraparte_indicadores.valor_texto, null)
WHEN LN_indicadores.clave_indicador = 'EXCEPCION' THEN
iif (excepciones.tipo_excepcion = 'V', 'Excepción para PERMITIR ingreso', iif(excepciones.tipo_excepcion = 'R', 'Excepción para RECHAZAR ingreso', NULL))
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
LN_contraparte_indicadores.valor_texto
ELSE NULL
END AS textcaption,
/** TEXTOS **/
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select texto from ln_cliente_nivel where cliente = @p_cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS texto,
/** PUNTO **/
CASE
WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto
FROM LN_contrapartes
INNER JOIN LN_contraparte_indicadores ON LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_indicadores.producto = LN_familia_productos.producto)
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
LEFT OUTER JOIN
(SELECT LN_docs.contraparte, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_gestiones ON LN_docs.gestion = LN_gestiones.gestion
INNER JOIN
(select LN_docs.contraparte, LN_docs.tipo_doc, max(doc_version) as ultima
from LN_docs
inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion
AND LN_docs.contraparte = LN_gestiones.contraparte)
where LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
group by LN_docs.contraparte, LN_docs.tipo_doc) ultimas_versiones
ON (LN_docs.tipo_doc = ultimas_versiones.tipo_doc
AND ln_docs.contraparte = ultimas_versiones.contraparte
AND LN_docs.doc_version = ultimas_versiones.ultima)
WHERE LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_docs.estado_doc = 'I'
GROUP BY LN_docs.contraparte) PENDIENTES_VERIFICAR ON LN_contrapartes.contraparte = PENDIENTES_VERIFICAR.contraparte
LEFT OUTER JOIN
(select LN_excepciones.contraparte, LN_excepciones.tipo_excepcion
from LN_contrapartes inner join LN_excepciones
on LN_contrapartes.contraparte = LN_excepciones.contraparte
where LN_contrapartes.cliente = @p_cliente
and LN_excepciones.estado = 1
and LN_excepciones.vigencia >= GETDATE()) excepciones ON LN_contrapartes.contraparte = excepciones.contraparte
WHERE LN_contrapartes.cliente = @p_cliente
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.visible = 1
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_cliente_productos.activo = 1
END
/*** GRAFICOS DASHBOARD ***/
IF (@accion = 'GRAFICO_INFORME_COMERCIAL') BEGIN
DECLARE @cant INT
SELECT @cant = COUNT(*)
FROM LN_contrapartes inner join LN_gestiones
on LN_contrapartes.contraparte = LN_gestiones.contraparte
WHERE LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.cliente = @p_cliente
SELECT #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
FROM #rangos
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then '81-100'
when rango = 'R2' then '61-80'
when rango = 'R3' then '41-60'
when rango = 'R4' then '21-40'
when rango = 'R5' then '0-20'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'cbc367'
when rango = 'R3' then 'FFB81C'
when rango = 'R4' then 'd37123'
when rango = 'R5' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'SCORE_IC'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) SCOREIC
GROUP BY rango) totales ON #rangos.rango = totales.rango
ORDER BY #rangos.rango
END
IF (@accion = 'GRAFICO_SCORE_BALANCE') BEGIN
SELECT #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
FROM #rangos
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then '81-100'
when rango = 'R2' then '61-80'
when rango = 'R3' then '41-60'
when rango = 'R4' then '21-40'
when rango = 'R5' then '0-20'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'cbc367'
when rango = 'R3' then 'FFB81C'
when rango = 'R4' then 'd37123'
when rango = 'R5' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_indicadores.producto = LN_familia_productos.producto)
WHERE LN_indicadores.clave_indicador = 'SCORE_BAL'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
and LN_familia_productos.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) SCOREBAL
GROUP BY rango) totales ON #rangos.rango = totales.rango
ORDER BY #rangos.rango
END
IF (@accion = 'GRAFICO_SCORE_FINAL') BEGIN
SELECT #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
FROM #rangos
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then '81-100'
when rango = 'R2' then '61-80'
when rango = 'R3' then '41-60'
when rango = 'R4' then '21-40'
when rango = 'R5' then '0-20'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'cbc367'
when rango = 'R3' then 'FFB81C'
when rango = 'R4' then 'd37123'
when rango = 'R5' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
when LN_contraparte_indicadores.valor_numerico < 0 then 'R5'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'SCORE_FINAL'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) SCOREFIN
GROUP BY rango) totales ON #rangos.rango = totales.rango
ORDER BY #rangos.rango
END
IF (@accion = 'GRAFICO_SCORE_DOCUMENTOS') BEGIN
SELECT #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
FROM #rangos
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then '81-100'
when rango = 'R2' then '61-80'
when rango = 'R3' then '41-60'
when rango = 'R4' then '21-40'
when rango = 'R5' then '0-20'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'cbc367'
when rango = 'R3' then 'FFB81C'
when rango = 'R4' then 'd37123'
when rango = 'R5' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
when LN_contraparte_indicadores.valor_numerico < 0 then 'R5'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'SCORE_DOC'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) SCOREDOC
GROUP BY rango) totales ON #rangos.rango = totales.rango
ORDER BY #rangos.rango
END
IF (@accion = 'GRAFICO_FIDECHECK') BEGIN
create table #rangospep (
rango varchar(2),
etiqueta varchar(20),
color varchar(6),
total int)
insert into #rangospep VALUES ('R3','Positivo','A72B2A',0)
insert into #rangospep VALUES ('R2','Relacionado','FFB81C',0)
insert into #rangospep VALUES ('R1','Negativo','63b68c',0)
SELECT #rangospep.rango, #rangospep.etiqueta, #rangospep.color, ISNULL(totales.total,0) as total
FROM #rangospep
LEFT OUTER JOIN (
SELECT rango,
CASE
when rango = 'R1' then 'Negativo'
when rango = 'R2' then 'Relacionado'
when rango = 'R3' then 'Positivo'
END AS etiqueta,
CASE
when rango = 'R1' then '63b68c'
when rango = 'R2' then 'FFB81C'
when rango = 'R3' then 'A72B2A'
END AS color, COUNT(*) AS total
FROM (
select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
case
when LN_contraparte_indicadores.valor_texto = 'N' then 'R1'
when LN_contraparte_indicadores.valor_texto = 'R' then 'R2'
when LN_contraparte_indicadores.valor_texto = 'P' then 'R3'
else NULL END AS rango
from LN_contraparte_indicadores
inner join LN_contrapartes ON
LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_indicadores ON
(LN_cliente_productos.producto = LN_indicadores.producto
AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'FIDECHECK'
and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
and LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 0
and LN_contrapartes.cliente = @p_cliente) FIDECHECK
GROUP BY rango) totales ON #rangospep.rango = totales.rango
ORDER BY #rangospep.rango
DROP TABLE #rangospep
END
/*** FIN GRAFICOS DASHBOARD ***/
/*** INDICADORES DEL DASHBOARD ***/
IF (@accion = 'indicadores_contraparte') BEGIN
/* Traer todos los scores de una contraparte en la gestión activa */
select @cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
IF (@p_clave_indicador IS NULL)
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.etiqueta as etiqueta_indicador,
LN_indicadores.producto, LN_productos.nombre_producto,
LN_productos.producto_id,
LN_cliente_productos.ponderacion, LN_productos.etiqueta,
LN_contraparte_indicadores.visible,
case when LN_indicadores.tipo_dato <> 'S'
then CONVERT(VARCHAR, ROUND(LN_contraparte_indicadores.valor_numerico,0))
else LN_contraparte_indicadores.valor_texto end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
ELSE NULL
END AS textcaption,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_fondo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS color_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_texto from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS textcolor_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS svg_data_personalizado,
/** TEXTOS **/
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select texto_largo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS texto,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select titulo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS titulo_texto,
/** PUNTO
CASE
WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto, **/
ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_productos.producto = LN_familia_productos.producto)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.clave_indicador LIKE 'SCORE%'
AND LN_indicadores.visible = 1
GROUP BY LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.etiqueta,
LN_indicadores.producto, LN_productos.nombre_producto,
LN_productos.producto_id,
LN_cliente_productos.orden_producto,
LN_cliente_productos.ponderacion,
LN_productos.etiqueta,
LN_indicadores.tipo_dato,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.visible,
LN_contraparte_indicadores.created,
LN_contraparte_indicadores.modified
ORDER BY LN_cliente_productos.orden_producto
ELSE
/* Para un indicador específico (tipo_dato = I / F / B son valores numéricos) */
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.etiqueta as etiqueta_indicador,
LN_indicadores.producto, LN_productos.nombre_producto,
LN_productos.producto_id,
LN_cliente_productos.ponderacion, LN_productos.etiqueta,
LN_contraparte_indicadores.visible,
case
when LN_indicadores.tipo_dato = 'I' OR LN_indicadores.tipo_dato = 'F' OR LN_indicadores.tipo_dato = 'B'
then CONVERT(VARCHAR,ROUND(LN_contraparte_indicadores.valor_numerico,0))
when LN_indicadores.tipo_dato = 'S'
then LN_contraparte_indicadores.valor_texto
else CONVERT(VARCHAR(MAX), LN_contraparte_indicadores.valor_memo)
end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 181 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 121 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 91 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
ELSE NULL
END AS textcaption,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_fondo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS color_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select color_texto from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE null
END AS textcolor_personalizado,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS svg_data_personalizado,
/** TEXTOS **/
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select texto_largo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS texto,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select titulo from ln_cliente_nivel where cliente = @cliente
and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
ELSE NULL
END AS titulo_texto,
/** PUNTO **/
CASE
/*WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)*/
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_numerico, CONVERT(VARCHAR,LN_contraparte_indicadores.valor_fecha,103) AS valor_fecha,
ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_productos.producto = LN_familia_productos.producto)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.clave_indicador = @p_clave_indicador
ORDER BY LN_cliente_productos.orden_producto
END
/* idem accion anterior para todos los indicadores, ni uno específico ni solo SCORES */
IF (@accion = 'indicadores_contraparte_full') BEGIN
SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.etiqueta as etiqueta_indicador,
LN_indicadores.producto, LN_productos.nombre_producto,
LN_productos.producto_id,
LN_cliente_productos.ponderacion, LN_productos.etiqueta,
LN_contraparte_indicadores.visible,
case
when LN_indicadores.tipo_dato = 'I' OR LN_indicadores.tipo_dato = 'F' OR LN_indicadores.tipo_dato = 'B'
then CONVERT(VARCHAR,ROUND(LN_contraparte_indicadores.valor_numerico,0))
when LN_indicadores.tipo_dato = 'S'
then LN_contraparte_indicadores.valor_texto
else CONVERT(VARCHAR(MAX), LN_contraparte_indicadores.valor_memo)
end as valor,
/** COLOR **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
else null
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
else null
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
else NULL
end
END AS color,
/** COLOR TEXTO **/
CASE
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
else '000000'
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
else '000000'
end
ELSE
case
when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
else '000000'
end
END AS textcolor,
/** SVG **/
CASE
WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027 c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445 c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239 c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069 c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069 c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
case
when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
else null
end
WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
case
when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC') THEN
case
/*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/
when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
else NULL
end
WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602 c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602 C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94 L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953 s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56 l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711 c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405 l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
</g>
</svg>'
when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
<g>
<path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
</g>
</svg>'
else NULL
end
ELSE NULL
END AS svg_data,
/** TEXT CAPTION **/
CASE
WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
case
when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro'
when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente'
when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
else NULL
end
WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
case
when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
else null
end
ELSE NULL
END AS textcaption,
/** PUNTO **/
CASE
/*WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)*/
WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
ELSE 0
END AS punto,
LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_numerico, CONVERT(VARCHAR,LN_contraparte_indicadores.valor_fecha,103) AS valor_fecha,
ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_productos.producto = LN_familia_productos.producto)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden
END
IF (@accion = 'score_final_contraparte') BEGIN
/* Calcula y actualiza score final */
DECLARE @sf decimal(4,1)=null, @isf int = NULL,
@cantidad_scores int = 0,
@suma_scores int = 0,
@suma_pond int = 0,
@tiene_docs tinyint = 0
SELECT @carga_inicial = ISNULL(carga_inicial, 0),
@limite_carga_inicial = limite_carga_inicial
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
/*SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta*/
SELECT @isf = LN_indicadores.indicador,
@gest = LN_gestiones.gestion
FROM LN_indicadores
INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
INNER JOIN LN_familia_productos ON LN_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_gestiones ON LN_contraparte_familias.contraparte = LN_gestiones.contraparte
WHERE LN_indicadores.clave_indicador = 'SCORE_FINAL'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_productos.visible = 1
AND LN_indicadores.visible = 1
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= getdate()
AND LN_gestiones.hasta >= getdate()
SELECT @tiene_docs = COUNT(*)
FROM LN_familia_productos
INNER JOIN LN_productos
on LN_familia_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias
on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_familias
on LN_contraparte_familias.familia = LN_familias.familia
-- agregado para que tenga en cuenta solo documentos con aplica = 1
INNER JOIN LN_set_tipo_doc on LN_familias.set_doc = LN_set_tipo_doc.set_doc
inner join ln_docs on ln_docs.contraparte = @p_contraparte and ln_docs.aplica = 1 and ln_docs.tipo_doc = ln_set_tipo_doc.tipo_doc
--
WHERE LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.documentos = 1
and LN_familias.set_doc IS NOT NULL
IF @gest IS NOT NULL and @isf IS NOT NULL BEGIN
DECLARE @producto int,
@nombre_producto varchar(100),
@total_documentos int,
@pendientes int,
@ingresados int,
@rechazados int,
@verificados int,
@ponderar bit = 0,
@esdoc bit
DECLARE Scores CURSOR FOR
/*SELECT LN_contraparte_indicadores.indicador,
ISNULL(LN_cliente_productos.ponderacion,0) AS ponderacion,
ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico
FROM LN_contrapartes
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_cliente_productos.ponderacion > 0
AND LN_indicadores.clave_indicador LIKE 'SCORE%'
GROUP BY LN_contrapartes.contraparte,
LN_gestiones.gestion,
LN_contraparte_indicadores.indicador,
LN_cliente_productos.ponderacion,
LN_contraparte_indicadores.valor_numerico*/
/*
obtengo los scores de la contraparte junto con información de
documentación asociada a cada producto para aplicar la lógica
de reponderación.
Si el producto incluye documentos y el score es 0 sólo hay que
tomarlo en cuenta cuando haya existido alguna acción con los
mismos. Por ejemplo un 0 en score de documentos no pesa si tiene
todos los documentos pendientes de ingresar.
*/
/* cambiado 29/04/2019 para que tome solo los documentos con aplica = 1
SELECT LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,
ISNULL(producto_docs.total_docs, 0) AS total_docs,
ISNULL(docs_pendientes.pendientes, 0) AS pendientes,
ISNULL(docs_ingresados.ingresados, 0) AS ingresados,
ISNULL(docs_rechazados.rechazados, 0) AS rechazados,
ISNULL(docs_verificados.verificados, 0) AS verificados,
ISNULL(LN_cliente_productos.ponderacion,0) AS ponderacion,
ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico
FROM LN_contrapartes
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion
/*AND ISNULL(LN_contraparte_indicadores.balance_preexiste, 0) = 0*/)
INNER JOIN LN_indicadores ON (LN_contraparte_indicadores.indicador = LN_indicadores.indicador
AND LN_familia_productos.producto = LN_indicadores.producto)
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
LEFT OUTER JOIN (select LN_productos.producto, count(*) as total_docs
from LN_familia_productos
INNER JOIN LN_productos
on LN_familia_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias
on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_familias
on LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN LN_set_tipo_doc
on LN_familias.set_doc = LN_set_tipo_doc.set_doc
WHERE LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.documentos = 1
and LN_set_tipo_doc.activo = 1
GROUP BY LN_productos.producto) producto_docs ON LN_productos.producto = producto_docs.producto
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS pendientes
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'N'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_pendientes ON
(LN_productos.producto = docs_pendientes.producto
and LN_contrapartes.contraparte = docs_pendientes.contraparte
and LN_gestiones.gestion = docs_pendientes.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'I'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_ingresados ON
(LN_productos.producto = docs_ingresados.producto
and LN_contrapartes.contraparte = docs_ingresados.contraparte
and LN_gestiones.gestion = docs_ingresados.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS rechazados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'R'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_rechazados ON
(LN_productos.producto = docs_rechazados.producto
and LN_contrapartes.contraparte = docs_rechazados.contraparte
and LN_gestiones.gestion = docs_rechazados.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS verificados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'V'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_verificados ON
(LN_productos.producto = docs_verificados.producto
and LN_contrapartes.contraparte = docs_verificados.contraparte
and LN_gestiones.gestion = docs_verificados.gestion)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_cliente_productos.ponderacion > 0
AND LN_indicadores.clave_indicador LIKE 'SCORE%'
GROUP BY LN_contrapartes.contraparte,
LN_gestiones.gestion,
LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,
producto_docs.total_docs,
docs_pendientes.pendientes,
docs_ingresados.ingresados,
docs_rechazados.rechazados,
docs_verificados.verificados,
LN_cliente_productos.ponderacion,
LN_contraparte_indicadores.valor_numerico
*/
/* cambiado 29/04/2019 para que tome solo los documentos con aplica = 1
se cambio por esto:
en total_doc, antes contaba los documentos de la familia, ahora se fija tambien que en ln_docs tenga aplica = 1
y si la contraparte no tienen ningun documento que aplique, entonces, no tiene que ponderar documentos
- para pendientes, ingresados, verificados, rechazados, toma solo los aplica = 1
*/
SELECT LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,LN_productos.documentos,
ISNULL(producto_docs.total_docs, 0) AS total_docs,
ISNULL(docs_pendientes.pendientes, 0) AS pendientes,
ISNULL(docs_ingresados.ingresados, 0) AS ingresados,
ISNULL(docs_rechazados.rechazados, 0) AS rechazados,
ISNULL(docs_verificados.verificados, 0) AS verificados,
-- si estamos en documentos, y total_doc esta en cero, no toma la ponderacion de documentos para esta contraparte
iif(ln_productos.documentos=1 and ISNULL(producto_docs.total_docs,0)=0,0,ISNULL(LN_cliente_productos.ponderacion,0)) AS ponderacion,
ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico
FROM LN_contrapartes
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
INNER JOIN LN_indicadores ON (LN_contraparte_indicadores.indicador = LN_indicadores.indicador
AND LN_familia_productos.producto = LN_indicadores.producto)
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
LEFT OUTER JOIN (select LN_productos.producto, count(*) as total_docs
from LN_familia_productos
INNER JOIN LN_productos
on LN_familia_productos.producto = LN_productos.producto
INNER JOIN LN_contraparte_familias
on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_familias
on LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN LN_set_tipo_doc
on LN_familias.set_doc = LN_set_tipo_doc.set_doc
-- esto se agrego para que tome los documentos que aplica = 1
inner join ln_docs on ln_docs.contraparte = @p_contraparte and ln_docs.aplica = 1 and ln_docs.tipo_doc = ln_set_tipo_doc.tipo_doc
--
WHERE LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.documentos = 1
and LN_set_tipo_doc.activo = 1
GROUP BY LN_productos.producto) producto_docs ON LN_productos.producto = producto_docs.producto
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS pendientes
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'N'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
and ln_docs.aplica = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_pendientes ON
(LN_productos.producto = docs_pendientes.producto
and LN_contrapartes.contraparte = docs_pendientes.contraparte
and LN_gestiones.gestion = docs_pendientes.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'I'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
and ln_docs.aplica = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_ingresados ON
(LN_productos.producto = docs_ingresados.producto
and LN_contrapartes.contraparte = docs_ingresados.contraparte
and LN_gestiones.gestion = docs_ingresados.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS rechazados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'R'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
and ln_docs.aplica = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_rechazados ON
(LN_productos.producto = docs_rechazados.producto
and LN_contrapartes.contraparte = docs_rechazados.contraparte
and LN_gestiones.gestion = docs_rechazados.gestion)
LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS verificados
FROM LN_docs
INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
WHERE LN_docs.estado_doc = 'V'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_set_tipo_doc.activo = 1
AND LN_productos.documentos = 1
and ln_docs.aplica = 1
GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_verificados ON
(LN_productos.producto = docs_verificados.producto
and LN_contrapartes.contraparte = docs_verificados.contraparte
and LN_gestiones.gestion = docs_verificados.gestion)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_cliente_productos.ponderacion > 0
AND LN_indicadores.clave_indicador LIKE 'SCORE%'
GROUP BY LN_contrapartes.contraparte,
LN_gestiones.gestion,
LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,LN_productos.documentos,
producto_docs.total_docs,
docs_pendientes.pendientes,
docs_ingresados.ingresados,
docs_rechazados.rechazados,
docs_verificados.verificados,
LN_cliente_productos.ponderacion,
LN_contraparte_indicadores.valor_numerico
OPEN Scores
FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
@esdoc, -- agregado
@total_documentos, @pendientes,
@ingresados, @rechazados, @verificados,
@pond, @valor
WHILE @@FETCH_STATUS = 0 BEGIN
/*SET @sf = isnull(@sf,0) + convert(decimal(4,1),@pond) / 100 * convert(decimal(4,1),@valor)*/
/* Si el score es 0, entonces tengo que ver si tiene documentos. Si tiene documentos,
sólo voy a hacer pesar el 0 si hubo acción de rechazo sobre los mismos.
Si tiene todo pendiente de ingresar y/o de verificar, no se debe tener en cuenta */
/* Control de Killer */
if (@valor = -100) begin
if (@has_killer = 0)
set @has_killer = 1
end
/* fin control de killer */
IF (@total_documentos > 0)
SET @ponderar = iif(@carga_inicial = 0 , 1, 0)
ELSE
SET @ponderar = 1
/*IF (@carga_inicial = 0)
SET @ponderar = iif(@total_documentos > 0, 1, 0)
ELSE
SET @ponderar = iif(@valor = 0, iif(@total_documentos > 0, iif(@rechazados > 0, 1, 0) , 1), 1)*/
if (@ponderar = 1) begin
SET @cantidad_scores = @cantidad_scores + 1
SET @suma_pond = @suma_pond + @pond
end
FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
@esdoc, --agregado
@total_documentos, @pendientes,
@ingresados, @rechazados, @verificados,
@pond, @valor
END
CLOSE Scores
/* Primero sumé los pesos a ponderar, ahora aplico fórmula volviendo a recorrer el cursor excepto que haya un killer */
IF (@has_killer = 0) BEGIN
if (@suma_pond > 0) begin
OPEN Scores
FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
@esdoc, --agregado
@total_documentos, @pendientes,
@ingresados, @rechazados, @verificados,
@pond, @valor
WHILE @@FETCH_STATUS = 0 BEGIN
IF (@total_documentos > 0)
SET @ponderar = iif(@carga_inicial = 0 , 1, 0)
ELSE
SET @ponderar = 1
/*IF (@carga_inicial = 0)
SET @ponderar = iif(@total_documentos > 0, 1, 0)
ELSE
SET @ponderar = iif(@valor = 0, iif(@total_documentos > 0, iif(@rechazados > 0, 1, 0) , 1), 1)*/
if (@ponderar = 1) begin
SET @sf = isnull(@sf,0) + CONVERT(DECIMAL(4,1),@pond) * CONVERT(DECIMAL(4,1),@valor) / @suma_pond
end
FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
@esdoc, --agregado
@total_documentos, @pendientes,
@ingresados, @rechazados, @verificados,
@pond, @valor
END
CLOSE Scores
end
END ELSE BEGIN
SET @sf = -100
END
DEALLOCATE Scores
/*Actualizo Score final*/
SELECT @cliente = cliente
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
declare @score_txt varchar(100) = null
set @score_txt = (select texto from ln_cliente_nivel where cliente = @cliente
and desde <= @sf and hasta > @sf)
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isf
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico, valor_texto)
VALUES
(@p_contraparte, @gest, @isf, GETDATE(), @sf, @score_txt)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = round(@sf,0),
valor_texto = @score_txt,
modified = GETDATE()
WHERE indicador = @isf
AND contraparte = @p_contraparte
AND gestion = @gest
select valor_numerico as score, valor_texto as score_texto
from LN_contraparte_indicadores
WHERE indicador = @isf
AND contraparte = @p_contraparte
AND gestion = @gest
END /* gest not null , indicador not null */
END
IF (@accion = 'score_documentos') BEGIN
/* Calcula y actualiza score de documentos */
/*
Se fija si tiene la condicion doc_no_verificados_killer en 1:
Si tiene esa conidicion, y hay documentos ingresados y no verificados ==> killer
*/
SELECT @cliente = cliente
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
declare @doc_no_verificados_killer bit = 0
if (select COUNT(*) from ln_cliente_productos
where cliente = @cliente
and doc_no_verificados_killer = 1) > 0
set @doc_no_verificados_killer = 1
DECLARE @sd decimal(5,2) = 0,
@isd int = NULL,
@suma_pesos_set decimal(10,2) = null,
@peso_doc decimal(5,2),
@suma_docs decimal(10,2) = null,
@detalle varchar(max) = null,
@documento varchar(100) = ''
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= getdate()
DECLARE Familias CURSOR FOR
select familia from LN_contraparte_familias where contraparte = @p_contraparte and activo = 1
OPEN Familias
FETCH NEXT FROM Familias INTO @familia
WHILE @@FETCH_STATUS = 0 BEGIN
/* Obtengo el indicador de score de documentos que le corresponde según la familia */
SELECT @isd = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'SCORE_DOC'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_contraparte_familias.familia = @familia
IF @gest IS NOT NULL and @isd IS NOT NULL BEGIN
SET @cantidad = null
declare @anio varchar(4)
DECLARE Documentos CURSOR FOR
SELECT LN_set_tipo_doc.tipo_doc, LN_set_tipo_doc.killer,
ISNULL(LN_set_tipo_doc.peso_score, 0) as peso_score,
DOCS.estado_doc, DOCS.vigencia as vigencia
FROM LN_set_tipo_doc
INNER JOIN LN_familias ON LN_set_tipo_doc.set_doc = LN_familias.set_doc
LEFT OUTER JOIN
(select LN_docs.tipo_doc, LN_docs.estado_doc, versiones.vers, datepart(year,versiones.fecha_vigencia) as vigencia
from LN_docs
inner join
(
-- de los que no son balances, se toma la ultima versión del documento
select contraparte, gestion,
LN_docs.tipo_doc, max(doc_version) as vers, null as fecha_vigencia
from LN_docs
inner join LN_tipos_doc on LN_tipos_doc.tipo_doc = LN_docs.tipo_doc and LN_tipos_doc.es_balance = 0
where contraparte = @p_contraparte
and gestion = @gest
group by contraparte, gestion, LN_docs.tipo_doc
union
-- de los balances toma todas las versiones
select contraparte, gestion,
LN_docs.tipo_doc, doc_version as vers, LN_docs.fecha_vigencia as fecha_vigencia
from LN_docs
inner join LN_tipos_doc on LN_tipos_doc.tipo_doc = LN_docs.tipo_doc and LN_tipos_doc.es_balance = 1
where contraparte = @p_contraparte
and gestion = @gest
) versiones
on (LN_docs.contraparte = versiones.contraparte
and LN_docs.gestion = versiones.gestion
and LN_docs.tipo_doc = versiones.tipo_doc
and LN_docs.doc_version = versiones.vers)
where LN_docs.estado_doc <> 'X'
and LN_docs.aplica = 1) DOCS ON LN_set_tipo_doc.tipo_doc = DOCS.tipo_doc
WHERE LN_familias.familia = @familia
AND LN_set_tipo_doc.activo = 1
AND DOCS.estado_doc IS NOT NULL
OPEN Documentos
FETCH NEXT FROM Documentos INTO @tipo_doc, @killer, @peso_doc, @estado_doc, @anio
WHILE @@FETCH_STATUS = 0 BEGIN
if (@cantidad is null)
begin
set @cantidad = 0
set @suma_pesos_set = 0
set @suma_docs = 0
end
SET @suma_pesos_set = @suma_pesos_set + @peso_doc
SET @cantidad = @cantidad + 1
IF (@estado_doc = 'V') BEGIN
SET @cantidad_verificados = @cantidad_verificados + 1
SET @suma_docs = @suma_docs + @peso_doc
END ELSE BEGIN
IF (@estado_doc in('N','R')) BEGIN
/* Si el documento no está ingresado entonces hay que fijarse si es killer del score */
IF (@killer = 1) BEGIN
/* Agregado para guardar el detalle de los killer */
select @documento = nombre_tipo_doc from LN_tipos_doc where tipo_doc = @tipo_doc
if (@detalle is null) set @detalle = 'Documento no presentado: ' + replace(@documento,';',',')
else set @detalle = @detalle + '; Documento no presentado: ' + replace(@documento,';',',')
if (@anio is not null) set @detalle = @detalle + ' (' + @anio + ')'
IF (@has_killer = 0)
SET @has_killer = 1
END
END
if (@estado_doc = 'I' and @doc_no_verificados_killer = 1 ) BEGIN
/* Agregado para guardar el detalle de los killer */
select @documento = nombre_tipo_doc from LN_tipos_doc where tipo_doc = @tipo_doc
if (@detalle is null) set @detalle = 'Documento no verificado: ' + replace(@documento,';',',')
else set @detalle = @detalle + '; Documento no verificado: ' + replace(@documento,';',',')
if (@anio is not null) set @detalle = @detalle + ' (' + @anio + ')'
IF (@has_killer = 0)
SET @has_killer = 1
END
END
FETCH NEXT FROM Documentos INTO @tipo_doc, @killer, @peso_doc, @estado_doc, @anio
END
CLOSE Documentos
DEALLOCATE Documentos
/* Mientras esté en carga inicial no se calcula score de documentos a menos que
tenga el 100% de verificados, con lo cual se debe sacar de carga inicial */
DECLARE @guardar_score tinyint = 1
SELECT @carga_inicial = ISNULL(carga_inicial, 0),
@limite_carga_inicial = limite_carga_inicial,
@cliente = cliente
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
if (@cantidad > 0) begin
SET @guardar_score = iif(@carga_inicial = 1, iif(@cantidad = @cantidad_verificados, 1, 0), 1)
if (@carga_inicial = 1) begin
if (@cantidad = @cantidad_verificados) begin
UPDATE LN_contrapartes SET carga_inicial = 0
WHERE contraparte = @p_contraparte
end
end
end
/*** EXCEPCION SOLICITADA PARA AMX, QUE CALCULE SIEMPRE EL SCORE, ESTÉ O NO EN CARGA INICIAL ***/
/*
if (@cliente = 5546348) begin
SET @guardar_score = 1
end
*/
/*****/
IF (@guardar_score = 0) BEGIN
if exists (select *
FROM LN_contraparte_indicadores
WHERE indicador = @isd
AND contraparte = @p_contraparte
AND gestion = @gest)
DELETE FROM LN_contraparte_indicadores
WHERE indicador = @isd
AND contraparte = @p_contraparte
AND gestion = @gest
if exists (select * From ln_score_detalle_killer
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
and visible = 1)
UPDATE ln_score_detalle_killer
set visible = 0,
modified = GETDATE()
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
and visible = 1
END
IF (@guardar_score = 1) BEGIN
if (@has_killer = 1)
set @sd = - 100
else
set @sd = iif (@suma_pesos_set > 0, ROUND(@suma_docs / @suma_pesos_set * 100, 0), NULL)
select @p_contraparte AS contraparte, @isd as indicador, ROUND(@sd,0) AS score
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isd
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @isd, GETDATE(), ROUND(@sd,0))
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = round(@sd,0),
modified = GETDATE()
WHERE indicador = @isd
AND contraparte = @p_contraparte
AND gestion = @gest
/* Detalle de los killer */
if exists (select * From ln_score_detalle_killer
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
and detalle_killer != isnull(@detalle,'')
and visible = 1)
UPDATE LN_score_detalle_killer
set visible = 0, modified = getdate()
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
if (@detalle is not null)
begin
if not exists (select * From ln_score_detalle_killer
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @isd
and detalle_killer = isnull(@detalle,'')
and visible = 1)
insert into ln_score_detalle_killer
(contraparte, gestion, indicador, detalle_killer, visible, created)
values (@p_contraparte, @gest, @isd, @detalle, 1, getdate())
end
END
END
FETCH NEXT FROM Familias INTO @familia
END
CLOSE Familias
DEALLOCATE Familias
END
IF (@accion = 'cumplimiento_documentos') BEGIN
/* Calcula y actualiza indice de cumplimiento de documentos */
DECLARE @cd decimal(4,1)=0, @icd int = NULL
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= getdate()
SELECT @icd = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'CUMPL_DOC'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @icd IS NOT NULL BEGIN
set @cantidad = null
set @cumplidos = null
if (SELECT COUNT(*)
FROM LN_docs
where contraparte = @p_contraparte
and LN_docs.estado_doc <> 'X'
and LN_docs.gestion = @gest
AND LN_docs.aplica = 1) > 0
begin
SET @cantidad = 0
SET @cumplidos = 0
end
DECLARE Documentos CURSOR FOR
/*SELECT LN_docs.doc_id, LN_docs.tipo_doc, LN_docs.estado_doc, versiones.vers
FROM LN_docs
INNER JOIN
(select contraparte, gestion,
tipo_doc, max(doc_version) as vers
from LN_docs
where contraparte = @p_contraparte
and gestion = @gest
group by contraparte, gestion, tipo_doc) versiones
ON (LN_docs.contraparte = versiones.contraparte
AND LN_docs.gestion = versiones.gestion
AND LN_docs.tipo_doc = versiones.tipo_doc
AND LN_docs.doc_version = versiones.vers)
WHERE LN_docs.estado_doc <> 'X'*/
SELECT LN_docs.doc_id, LN_docs.tipo_doc, LN_docs.estado_doc, LN_docs.doc_version
FROM LN_docs
INNER JOIN LN_contraparte_familias ON LN_docs.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
AND LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
AND LN_set_tipo_doc.activo = 1)
WHERE LN_docs.contraparte = @p_contraparte
AND LN_docs.estado_doc <> 'X'
AND LN_docs.gestion = @gest
AND LN_docs.aplica = 1
OPEN Documentos
FETCH NEXT FROM Documentos INTO @doc_id, @tipo_doc, @estado_doc, @vers
WHILE @@FETCH_STATUS = 0 BEGIN
SET @cantidad = @cantidad + 1
IF (@estado_doc = 'I' OR @estado_doc = 'V') BEGIN
if @estado_doc = 'V' begin
SET @cantidad_verificados = @cantidad_verificados + 1
end
SET @cumplidos = @cumplidos + 1
END
FETCH NEXT FROM Documentos INTO @doc_id, @tipo_doc, @estado_doc, @vers
END
CLOSE Documentos
DEALLOCATE Documentos
/* Mientras esté en carga inicial no se calcula cumplimineto de documentos a menos que
tenga el 100% de verificados, con lo cual se debe sacar de carga inicial */
DECLARE @guardar_cump tinyint = 1
SELECT @carga_inicial = ISNULL(carga_inicial, 0),
@limite_carga_inicial = limite_carga_inicial,
@cliente = cliente
FROM LN_contrapartes
WHERE contraparte = @p_contraparte
if (@cantidad > 0) begin
SET @guardar_cump = iif(@carga_inicial = 1, iif(@cantidad = @cantidad_verificados, 1, 0), 1)
if (@carga_inicial = 1) begin
if (@cantidad = @cantidad_verificados) begin
UPDATE LN_contrapartes SET carga_inicial = 0
WHERE contraparte = @p_contraparte
end
end
end
/*** EXCEPCION SOLICITADA PARA AMX, QUE CALCULE SIEMPRE EL CUMPLIMIENTO, ESTÉ O NO EN CARGA INICIAL ***/
if (@cliente = 5546348) begin
SET @guardar_cump = 1
end
/*****/
IF (@guardar_cump = 1) BEGIN
SET @cd = convert(float, @cumplidos) / convert(float, @cantidad) * 100
select @p_contraparte AS contraparte, @icd AS indicador, ROUND(@cd,0) AS score
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @icd
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @icd, GETDATE(), ROUND(@cd,0))
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = round(@cd,0),
modified = GETDATE()
WHERE indicador = @icd
AND contraparte = @p_contraparte
AND gestion = @gest
END
END
END
IF (@accion = 'score_balance') BEGIN
/* guarda el score de balance pasado como parámetro */
IF (@p_score >= 0) begin
DECLARE @isb int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= getdate()
SELECT @isb = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_cliente_productos on (LN_familia_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
WHERE LN_indicadores.clave_indicador = 'SCORE_BAL'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
/*select @gest, @isb*/
IF @gest IS NOT NULL and @isb IS NOT NULL BEGIN
/*EXEC LN_validar_carga_inicial @p_contraparte, @inicial OUTPUT
if (@inicial = 0) begin*/
/* Determino si el Score de Balance que se va a guardar corresponde a un documento LED
verificado cuyo correspondiente registro en balances_contables está visible y PUBLICADO.
Debería tomar el último ejercicio */
DECLARE @fecha_ultimo_balance date, @id_ultimo_balance int
SELECT TOP 1
@fecha_ultimo_balance = fecha_balance,
@id_ultimo_balance = id_balance
FROM balances_contables
INNER JOIN padrones ON balances_contables.cuit = padrones.identificacion
INNER JOIN LN_contrapartes ON padrones.id_padron = LN_contrapartes.id_padron
WHERE LN_contrapartes.contraparte = @p_contraparte
AND balances_contables.estado = 'PUBLICADO'
AND ISNULL(balances_contables.visible, 0) = 1
ORDER BY balances_contables.fecha_balance DESC
DECLARE @fecha_ultimo_ejercicio date, @id_ultimo_ejercicio int, @estado_ultimo_ejercicio varchar(1)
SELECT TOP 1
@fecha_ultimo_ejercicio = convert(date, fin_ejercicio),
@id_ultimo_ejercicio = id_externo,
@estado_ultimo_ejercicio = estado_doc
FROM LN_docs
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND es_balance = 1
order by fin_ejercicio desc
/* Comparamos para determinar si se calculó el score con un balance existente
o basado en lo que proveyó la contraparte. Deben coincidir y estar
publicdo y verificado el documento en LED */
DECLARE @preexiste tinyint = 1
if (@fecha_ultimo_balance = @fecha_ultimo_ejercicio
AND @id_ultimo_balance = @id_ultimo_ejercicio
AND @estado_ultimo_ejercicio = 'V') begin
SET @preexiste = 0
end
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isb
AND contraparte = @p_contraparte
AND gestion = @gest) begin
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico, balance_preexiste)
VALUES
(@p_contraparte, @gest, @isb, GETDATE(), @p_score, @preexiste)
end else begin
/*select @gest, @isb, @p_score, @p_contraparte*/
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_score,
balance_preexiste = @preexiste,
modified = GETDATE()
WHERE indicador = @isb
AND contraparte = @p_contraparte
AND gestion = @gest
end
/*end*/
END
end
END
IF (@accion = 'score_comercial') BEGIN
/* guarda el score de informe comercial pasado como parámetro */
IF (@p_score >= 0) begin
DECLARE @isc int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @isc = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'SCORE_IC'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @isc IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isc
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @isc, GETDATE(), @p_score)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_score,
modified = GETDATE()
WHERE indicador = @isc
AND contraparte = @p_contraparte
AND gestion = @gest
END
end
END
IF (@accion = 'valoracion_balance') BEGIN
/* guarda la valoración de balance pasada como valor numérico en el parámetro score
la valoración es un indicador string en tabla, por lo tanto se convierte el número
según regla preestablecida
*/
if (@p_score >= 0) begin
DECLARE @ivb int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @ivb = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'VALORACION_BAL'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @ivb IS NOT NULL BEGIN
DECLARE @val varchar(1)
if (@p_score <= 2) set @val = 'N'
else if (@p_score <= 4) set @val = 'D'
else if (@p_score <= 6) set @val = 'E'
else if (@p_score <= 8) set @val = 'U'
else set @val = 'P'
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @ivb
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_texto, valor_numerico, visible)
VALUES
(@p_contraparte, @gest, @ivb, GETDATE(), @val, @p_score, @p_visible)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @val,
valor_numerico = @p_score,
modified = GETDATE(),
visible = @p_visible
WHERE indicador = @ivb
AND contraparte = @p_contraparte
AND gestion = @gest
END
end
END
IF (@accion = 'analisis_balance') BEGIN
/* guarda el texto de análisis de balance pasado en el parámetro @p_valor_memo */
DECLARE @iab int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @iab = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'ANALISIS_BAL'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @iab IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @iab
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, created_by, valor_memo, visible)
VALUES
(@p_contraparte, @gest, @iab, GETDATE(), @p_user_id, @p_valor_memo, @p_visible)
else
UPDATE LN_contraparte_indicadores SET
valor_memo = @p_valor_memo,
visible = @p_visible,
modified = GETDATE(),
modified_by = @p_user_id
WHERE indicador = @iab
AND contraparte = @p_contraparte
AND gestion = @gest
END
END
IF (@accion = 'score_dossier' or @accion = 'score_br') BEGIN
/* guarda el score de DOSSIER o de BUSINESS REPORT pasado como parámetro */
IF (@p_score >= 0) begin
DECLARE @isdd int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @isdd = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
WHERE LN_indicadores.clave_indicador = iif(@accion = 'score_dossier', 'SCORE_DOSSIER', 'SCORE_BR')
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_cliente_productos.activo = 1
IF @gest IS NOT NULL and @isdd IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @isdd
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @isdd, GETDATE(), @p_score)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_score,
modified = GETDATE()
WHERE indicador = @isdd
AND contraparte = @p_contraparte
AND gestion = @gest
END
END
END
IF (@accion = 'nivel_riesgo') BEGIN
/* Guarda el indicador nivel de riesgo del DOSSIER para una contraparte */
if (@p_valor_texto is not null) begin
DECLARE @inr int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @inr = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
WHERE LN_indicadores.clave_indicador = 'NIVEL_RIESGO'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_cliente_productos.activo = 1
IF @gest IS NOT NULL and @inr IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @inr
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_texto)
VALUES
(@p_contraparte, @gest, @inr, GETDATE(), @p_valor_texto)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @p_valor_texto,
modified = GETDATE()
WHERE indicador = @inr
AND contraparte = @p_contraparte
AND gestion = @gest
END
end
END
IF (@accion = 'dependencia_economica') BEGIN
/* Guarda el valor para el indicador dependencia económica del Dossier de una contraparte */
if (@p_valor_numerico is not null) begin
DECLARE @ide int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @ide = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_indicadores.producto = LN_cliente_productos.producto)
WHERE LN_indicadores.clave_indicador = 'DEP_ECON'
AND LN_contraparte_familias.contraparte = @p_contraparte
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_cliente_productos.activo = 1
IF @gest IS NOT NULL and @ide IS NOT NULL BEGIN
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @ide
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_numerico)
VALUES
(@p_contraparte, @gest, @ide, GETDATE(), CONVERT(float, @p_valor_numerico))
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = CONVERT(float, @p_valor_numerico),
modified = GETDATE()
WHERE indicador = @ide
AND contraparte = @p_contraparte
AND gestion = @gest
END
end
END
IF (@accion = 'fidecheck') BEGIN
/* Calcula el estado de fidecheck negativo/relacionado/positivo */
DECLARE @ifc int = null, @vf varchar(1) = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @ifc = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'FIDECHECK'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @ifc IS NOT NULL BEGIN
IF (select count(*) from LN_demo_fidecheck
where contraparte = @p_contraparte
and fidecheck = 'P') > 0 begin
SET @vf = 'P'
end ELSE
IF (select count(*) from LN_demo_fidecheck
where contraparte = @p_contraparte
and fidecheck = 'R') > 0 begin
SET @vf = 'R'
end ELSE begin
IF (select count(*) from LN_demo_fidecheck
where contraparte = @p_contraparte
and fidecheck = 'N') > 0
SET @vf = 'N'
end
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @ifc
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, valor_texto)
VALUES
(@p_contraparte, @gest, @ifc, GETDATE(), @vf)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @vf,
modified = GETDATE()
WHERE indicador = @ifc
AND contraparte = @p_contraparte
AND gestion = @gest
END
END
IF (@accion = 'ultima_novedad_contraparte') BEGIN
/* guarda en la tabla de indicadores la fecha de la última novedad de monitoreo
Exceptuamos novedades de la sección 7 (Contables) */
DECLARE @iun int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @iun = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD'
AND LN_contraparte_familias.contraparte = @p_contraparte
DECLARE @valor_fecha smalldatetime = NULL
IF @gest IS NOT NULL and @iun IS NOT NULL BEGIN
SELECT @valor_fecha = MAX(monitoreos_resultados.fecha)
FROM monitoreos_resultados
INNER JOIN monitoreos ON monitoreos_resultados.cuit = monitoreos.cuit
INNER JOIN padrones ON monitoreos_resultados.cuit = padrones.identificacion
INNER JOIN LN_contrapartes ON (padrones.id_padron = LN_contrapartes.id_padron
AND monitoreos.cliente = LN_contrapartes.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND monitoreos_resultados.seccion_mantenimiento <> 7
if (@valor_fecha IS NOT NULL) begin
if not exists (select indicador
FROM LN_contraparte_indicadores
WHERE indicador = @iun
AND contraparte = @p_contraparte
AND gestion = @gest)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, created, created_by, valor_fecha)
SELECT @p_contraparte as contraparte, @gest as gestion,
@iun as indicador, GETDATE() AS created, @p_user_id as created_by,
MAX(monitoreos_resultados.fecha)
FROM monitoreos_resultados
INNER JOIN monitoreos ON monitoreos_resultados.cuit = monitoreos.cuit
INNER JOIN padrones ON monitoreos_resultados.cuit = padrones.identificacion
INNER JOIN LN_contrapartes ON (padrones.id_padron = LN_contrapartes.id_padron
AND monitoreos.cliente = LN_contrapartes.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND monitoreos_resultados.seccion_mantenimiento <> 7
else
UPDATE LN_contraparte_indicadores SET
valor_fecha = @valor_fecha,
modified = GETDATE(),
modified_by = @p_user_id
WHERE LN_contraparte_indicadores.indicador = @iun
AND LN_contraparte_indicadores.contraparte = @p_contraparte
AND LN_contraparte_indicadores.gestion = @gest
end
SELECT CONVERT(VARCHAR, @valor_fecha, 23) AS fecha
END
END
IF (@accion = 'novedades_monitoreo') BEGIN
select TOP 50 nov.contraparte, padrones.nombre_persona, padrones.identificador, padrones.identificacion, nov.ultima_novedad
from padrones INNER JOIN
(select monitoreos_resultados.cuit, LN_contrapartes.contraparte, max(monitoreos_resultados.fecha) as ultima_novedad
from monitoreos_resultados
inner join padrones ON monitoreos_resultados.cuit = padrones.identificacion
inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
and monitoreos_resultados.seccion_mantenimiento <> 7
group by monitoreos_resultados.cuit, LN_contrapartes.contraparte) nov ON padrones.identificacion = nov.cuit
order by nov.ultima_novedad DESC, padrones.nombre_persona
END
IF (@accion = 'verifica_indicador') BEGIN
/* dado un ID de contraparte y una clave de indicador verifica
si el producto está asociado al cliente y corresponde calcular
el valor del indicador */
if (@p_contraparte > 0 AND @p_clave_indicador IS NOT NULL) begin
SELECT LN_contrapartes.contraparte,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.producto,
LN_cliente_productos.ponderacion
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_cliente_productos ON LN_contrapartes.cliente = LN_cliente_productos.cliente
INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_indicadores ON LN_cliente_productos.producto = LN_indicadores.producto
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_indicadores.clave_indicador = @p_clave_indicador
AND LN_familia_productos.activo = 1
AND LN_cliente_productos.activo = 1
GROUP BY LN_contrapartes.contraparte,
LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
LN_indicadores.producto,
LN_cliente_productos.ponderacion
end
END
IF (@accion = 'documentacion_pendiente') BEGIN
select clientes.nombre_cliente as 'CLIENTE',
pa.identificacion as CUIT, pa.nombre_persona as 'RAZON_SOCIAL',
td.nombre_tipo_doc as 'DOCUMENTO',
IIF(do.estado_doc='N','No ingresado','Rechazado') as 'ESTADO'
from LN_docs do
inner JOIN LN_contrapartes co on co.contraparte=do.contraparte
inner join clientes on co.cliente = clientes.cliente
INNER JOIN padrones pa on pa.id_padron=co.id_padron
INNER JOIN LN_tipos_doc td on do.tipo_doc=td.tipo_doc
INNER JOIN LN_gestiones on co.contraparte = LN_gestiones.contraparte
where do.cliente = @p_cliente
and estado_doc in ('N','R')
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
order by do.contraparte, td.nombre_tipo_doc
END
IF (@accion = 'cantidad_subcontratistas') BEGIN
/* grabar / actualizar el indicador de cantidad de subcontratistas de una contraparte */
DECLARE @ics int = null
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= getdate() AND hasta >= hasta
SELECT @ics = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'SUBCONT'
AND LN_contraparte_familias.contraparte = @p_contraparte
IF @gest IS NOT NULL and @ics IS NOT NULL BEGIN
declare @cant_subc int
EXEC LN_subcontratistas 'contar', @p_contraparte, null, null , @cant_subc output
if exists (SELECT contraparte, indicador
FROM LN_contraparte_indicadores
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ics)
UPDATE LN_contraparte_indicadores SET
valor_numerico = iif(@cant_subc > 0, @cant_subc, NULL),
visible = 1,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ics
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ics, iif(@cant_subc > 0, @cant_subc, NULL), 1, GETDATE(), @p_user_id)
SELECT @cant_subc as cantidad
END
END
/*** Indicadores homologación ***/
IF (@accion = 'homologacion_subcontratista') BEGIN
/* Dado un ID de contraparte, verifica que pueda calcularse
su estado de homologación final por la existencia de los
indicadores correspondientes al producto */
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join LN_contraparte_familias
ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
and LN_contrapartes.cliente = LN_cliente_productos.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_productos.visible = 1
AND LN_familias.visible = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest > 0) begin
/* check si está asociado a un producto que tenga el indicador de homologación */
DECLARE @ihom int = null
SELECT @ihom = LN_indicadores.indicador, @prod = LN_indicadores.producto
FROM LN_indicadores
INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
WHERE LN_indicadores.clave_indicador = 'HOMOLOG'
AND LN_contraparte_familias.contraparte = @p_contraparte
if (@ihom > 0) begin
/* busco los diferentes indicadores que conforman la homologación */
DECLARE @hindic int, @vn float, @canth int = 0, @cant0 int = 0, @cant1 int = 0
DECLARE Homolog CURSOR FOR
SELECT LN_contraparte_indicadores.indicador, ISNULL(LN_contraparte_indicadores.valor_numerico, 0)
FROM LN_contraparte_indicadores inner join LN_indicadores
ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
AND LN_contraparte_indicadores.gestion = @gest
AND LN_indicadores.clave_indicador IN ('CTRL_ETICO','CTRL_CALIDAD','CTRL_COMERCIAL')
OPEN Homolog
FETCH NEXT FROM Homolog INTO @hindic, @vn
WHILE @@FETCH_STATUS = 0 BEGIN
SET @canth = @canth + 1
IF (@vn = 0) SET @cant0 = @cant0 + 1
IF (@vn > 0) SET @cant1 = @cant1 + 1
FETCH NEXT FROM Homolog INTO @hindic, @vn
END
CLOSE Homolog
DEALLOCATE Homolog
if (@canth > 0) begin
/* Busco excepción activa */
SELECT @exc = LN_excepciones.excepcion,
@tipo_exc = LN_excepciones.tipo_excepcion
FROM LN_excepciones
WHERE LN_excepciones.contraparte = @p_contraparte
AND LN_excepciones.gestion = @gest
AND LN_excepciones.estado = 1
AND LN_excepciones.vigencia >= GETDATE()
if not exists (select valor_numerico
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ihom) begin
if (@cant0 > 0)
/* existencia de un rojo queda rojo, si no hay excepcion a verde */
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @ihom, iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)), GETDATE(), @p_user_id)
else
if (@cant1 > 0)
/* sin rojos todos verdes (1) queda verde si no hay excepcion a rojo */
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @ihom, iif(@exc is null, 1, iif(@tipo_exc = 'R', 0, 1)), GETDATE(), @p_user_id)
else
/* ver caso si no hay ni rojos ni verdes debería ser resultado rojo, si no hay excepcion a verde */
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @ihom, iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)), GETDATE(), @p_user_id)
end else begin
if (@cant0 > 0)
/* existencia de un rojo debe quedar rojo (0) si no hay excepcion a verde */
update LN_contraparte_indicadores SET
valor_numerico = iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)),
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ihom
else
if (@cant1 > 0)
/* sin rojos todos verdes (1) queda verde si no hay excepcion a rojo */
update LN_contraparte_indicadores SET
valor_numerico = iif(@exc is null, 1, iif(@tipo_exc = 'R', 0, 1)),
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ihom
else
/* caso ni rojos ni verdes debería quedar rojo (0) si no hay excepcion a verde */
update LN_contraparte_indicadores SET
valor_numerico = iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)),
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ihom
end
end else begin
/* si no hay valores no tiene sentido calcular la homologación : BORRO el posible registro existente */
DELETE FROM LN_contraparte_indicadores
WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
AND LN_contraparte_indicadores.gestion = @gest
AND LN_contraparte_indicadores.indicador = @ihom
end
end
end
END
IF (@accion = 'control_etico' or @accion = 'control_calidad') BEGIN
/* Registración del estado de control etico y control de calidad en función de valores
en las tablas LN_control_screening y LN_control_black_list respectivamente */
select @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,
@country = identificadores.country_code,
@cliente = LN_contrapartes.cliente
from LN_gestiones
inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest is not null) begin
DECLARE @ich int = null, @clave_ind varchar(50)
if (@accion = 'control_etico')
set @clave_ind = 'CTRL_ETICO'
else
set @clave_ind = 'CTRL_CALIDAD'
select @ich = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = @clave_ind
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@ich is not null) begin
declare @valor_anterior float = null, @valor_num float
/* EL VALOR A GUARDAR EN LA TABLA DE INDICADORES ES 1 = VERDE , 0 = ROJO */
if (@accion = 'control_etico') begin
/* Control de Etica utilizando la tabla LN_control_screening */
if exists (select identificacion
from LN_control_screening
where cliente = @cliente
/*and country_code = @country*/
and identificacion = @cuit
and visible = 1)
set @valor_num = 0
else
set @valor_num = 1
/* Si es de AR y no lo encontré en tabla lo busco como socio de sociedades en lista de ctrl etico */
if (@valor_num = 1 /*AND @country = 'AR'*/) begin
if exists (select socios.c01_cuit, socios.c01_cuit_soc
from socios
inner join LN_control_screening on socios.c01_cuit_soc = LN_control_screening.identificacion
inner join padrones on padrones.identificacion = socios.c01_cuit_soc and padrones.habilitado = 1
where socios.visible = 1
and socios.c01_cuit = @cuit
and isnull(socios.c04_ultimo,'') != 'N'
and LN_control_screening.visible = 1
/*and LN_control_screening.country_code = @country*/
and LN_control_screening.cliente = @cliente)
set @valor_num = 0
else
set @valor_num = 1
end
end else begin
/* Control de Calidad utilizando tabla LN_control_black_list */
if exists (select identificacion
from LN_control_black_list
where cliente = @cliente
and country_code = @country
and identificacion = @cuit
and visible = 1)
set @valor_num = 0
else
set @valor_num = 1
/* Si es de AR y no lo encontré en tabla lo busco como socio de sociedades en lista de ctrl de calidad */
if (@valor_num = 1 /*AND @country = 'AR'*/) begin
if exists (select socios.c01_cuit, socios.c01_cuit_soc
from socios
inner join LN_control_black_list on socios.c01_cuit_soc = LN_control_black_list.identificacion
inner join padrones on padrones.identificacion = socios.c01_cuit_soc and padrones.habilitado = 1
where socios.visible = 1
and socios.c01_cuit = @cuit
and LN_control_black_list.visible = 1
and isnull(socios.c04_ultimo,'') != 'N'
/*and LN_control_black_list.country_code = @country*/
and LN_control_black_list.cliente = @cliente)
set @valor_num = 0
else
set @valor_num = 1
end
end
select @valor_anterior = valor_numerico
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ich
if (@valor_anterior is null)
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @ich, @valor_num, GETDATE(), @p_user_id)
else
if (@valor_anterior <> @valor_num) begin
/* Actualizo sólo si cambia */
update LN_contraparte_indicadores set
valor_numerico = @valor_num,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ich
end
end
end
END
IF (@accion = 'CONTROL_COMERCIAL') BEGIN
select @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,
@country = identificadores.country_code,
@cliente = LN_contrapartes.cliente
from LN_gestiones
inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest is not null) begin
DECLARE @icc int = null
select @icc = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'CTRL_COMERCIAL'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@icc is not null) begin
declare @vcc_ant float = null, @vcc float = null
declare @juicios int
/* Búsqueda en Juicios Concursos y Quiebras */
SELECT @juicios = COUNT(*)
FROM juicios CYQ0
WHERE CYQ0.cuit_demandado = @cuit
AND ( CYQ0.id_tipo_causa IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 0)
OR CYQ0.cau_codigo IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 0) )
AND NOT EXISTS
(SELECT id_juicio
FROM juicios CYQ1
WHERE CYQ1.cuit_demandado = @cuit
AND ( CYQ1.id_tipo_causa IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 1)
OR CYQ0.cau_codigo IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 1) )
AND CYQ1.fecha_causa >= CYQ0.fecha_causa)
if (@juicios = 0)
set @vcc = 1
else
set @vcc = 0
select @vcc_ant = valor_numerico
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @icc
if (@vcc_ant is null)
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @icc, @vcc, GETDATE(), @p_user_id)
else
if (@vcc_ant <> @vcc) begin
/* Actualizo sólo si cambia */
update LN_contraparte_indicadores set
valor_numerico = @vcc,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @icc
end
end
end
END
/* Asentar el indicador de excepción de homologación para contraparte */
IF (@accion = 'excepcion') BEGIN
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join LN_contraparte_familias
ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
and LN_contrapartes.cliente = LN_cliente_productos.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
/*AND ISNULL(LN_familias.subfamilia, 0) = 1
AND LN_contrapartes.subcontratista = 1*/
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_productos.visible = 1
AND LN_familias.visible = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest is not null) begin
declare @ieh int = null
select @ieh = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'EXCEPCION'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@ieh is not null) begin
/* Busco excepción activa */
SELECT @exc = LN_excepciones.excepcion
FROM LN_excepciones
WHERE LN_excepciones.contraparte = @p_contraparte
AND LN_excepciones.gestion = @gest
AND LN_excepciones.estado = 1
AND LN_excepciones.vigencia >= GETDATE()
if @exc is not null
if NOT EXISTS (select contraparte
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ieh)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ieh, 1, 1, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = 1,
visible = 1,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ieh
end
end
END
/* fin excepcion */
/* desactivar excepcion elimina el registro del indicador de la contraparte y recalcula la homologacion */
IF (@accion = 'desactivar_excepcion') BEGIN
SELECT @gest = LN_gestiones.gestion
FROM LN_gestiones inner join LN_contrapartes ON
LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join LN_contraparte_familias
ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
and LN_contrapartes.cliente = LN_cliente_productos.cliente)
WHERE LN_contrapartes.contraparte = @p_contraparte
/*AND ISNULL(LN_familias.subfamilia, 0) = 1
AND LN_contrapartes.subcontratista = 1*/
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_productos.visible = 1
AND LN_familias.visible = 1
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
if (@gest is not null) begin
declare @ieh2 int = null
select @ieh2 = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'EXCEPCION'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@ieh2 is not null) begin
/* Elimino indicador de excepción activa */
DELETE FROM LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ieh2
end
end
END
/* fin desactivar excepcion */
/* Fin indicadores homologación */
/* Producto Alertas BCRA */
IF (@accion = 'alertas_cendeu') BEGIN
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
if (@gest > 0) begin
DECLARE @iac int = null
select @iac = LN_indicadores.indicador,
@producto_alertas = LN_indicadores.producto,
@cliente = ln_contrapartes.cliente
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'SITUACION_CD'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@iac is not null) begin
DECLARE @periodo varchar(6) = null, @situacion int = null
/*EXEC LN_alertas_cendeu @cuit, @periodo OUTPUT, @situacion OUTPUT*/
EXEC LN_alertas_cendeu_cliente @cuit, @cliente, @periodo OUTPUT, @situacion OUTPUT
/*if (@periodo is not null and @situacion is not null) begin*/
if not exists (select indicador from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @iac)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by)
VALUES
(@p_contraparte, @gest, @iac, @situacion, @periodo, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @situacion,
valor_texto = @periodo,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @iac
/*end*/
end
end
END
IF (@accion = 'alertas_cheques') BEGIN
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
if (@gest > 0) begin
DECLARE @iah int = null
select @iah = LN_indicadores.indicador,
@producto_alertas = LN_indicadores.producto,
@cliente = LN_contrapartes.cliente
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'CHEQUES_RECH'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@iah is not null) begin
DECLARE @ch_rechazados int = 0
/* EXEC LN_alertas_cheques @cuit, 360, @ch_rechazados output */
EXEC LN_alertas_cheques_cliente @cuit, @cliente, @ch_rechazados output
if not exists (select indicador from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @iah)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @iah, @ch_rechazados, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @ch_rechazados,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @iah
end
end
END
/* Si se recalculó alguno de los indicadores de Alertas, llamo al cálculo del score del producto alertas */
IF (@accion = 'alertas_cendeu' OR @accion = 'alertas_cheques') BEGIN
if (@producto_alertas is not null AND @gest > 0) begin
declare @indic_score_alertas int = null
select @indic_score_alertas = LN_indicadores.indicador
from LN_indicadores
where producto = @producto_alertas
and clave_indicador = 'SCORE_ALERTAS_BCRA'
SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1
if (@indic_score_alertas is not null and @familia IS NOT NULL) begin
declare @score_alertas decimal(10,2) = null
EXEC LN_score_alertas @familia, @p_contraparte, @score_alertas OUTPUT
if (@score_alertas is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_alertas)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @indic_score_alertas, @score_alertas, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_alertas,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @indic_score_alertas
end
end
end
END
/* Fin Producto Alertas BCRA */
IF (@accion = 'judicial') BEGIN
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
declare @indic_score_judicial int = null
select @indic_score_judicial = LN_indicadores.indicador
from LN_indicadores
where clave_indicador = 'SCORE_JUDICIAL'
if (@indic_score_judicial is not null) begin
declare @score_judicial decimal(10,2) = null
EXEC LN_score_judicial @p_contraparte, @score_judicial OUTPUT
if (@score_judicial is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_judicial)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @indic_score_judicial, @score_judicial, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_judicial,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @indic_score_judicial
end
end
END
/* Producto dependencia económica calculada en función de las tablas de compras y documento de ventas */
IF (@accion = 'dependencia_economica_calc') BEGIN
DECLARE @campo int = null
DECLARE @seccion int = null
DECLARE @tipo_campo varchar(1) = null
DECLARE @monto_ventas money = NULL
DECLARE @monto_iva money = NULL
DECLARE @monto_compras money = NULL
DECLARE @id_padron int = null
DECLARE @fecha_vigencia datetime = null
declare @graba_score char(1) = 'S'
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,
@cliente = LN_contrapartes.cliente,
@id_padron = LN_contrapartes.id_padron
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
if (@gest > 0) begin
/* Verifico el indicador Dependencia Económica Calculada */
DECLARE @idec int = null
DECLARE @producto_de int = NULL
select @idec = LN_indicadores.indicador,
@producto_de = LN_indicadores.producto
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'DEP_ECON_CALC'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@idec > 0) begin
/* Búsqueda de un documento de la contraparte cargado con información de ventas */
select @campo = LN_tipo_doc_campos.campo,
@seccion = LN_tipo_doc_campos.seccion,
@doc_id = LN_docs.doc_id,
@tipo_doc = LN_docs.tipo_doc,
@tipo_campo = LN_campos.tipo_campo,
@fecha_vigencia = LN_docs.fecha_vigencia
from LN_tipo_doc_campos
INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
where LN_docs.contraparte = @p_contraparte
and LN_docs.gestion = @gest
and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
and LN_docs.estado_doc = 'V'
if (@doc_id > 0 AND @fecha_vigencia is not null) begin
/* Existe el documento de ventas, busco las compras en un período anual */
select @campo = LN_tipo_doc_campos.campo,
@seccion = LN_tipo_doc_campos.seccion,
@doc_id = LN_docs.doc_id,
@tipo_doc = LN_docs.tipo_doc,
@tipo_campo = LN_campos.tipo_campo,
@fecha_vigencia = LN_docs.fecha_vigencia
from LN_tipo_doc_campos
INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
where LN_docs.contraparte = @p_contraparte
and LN_docs.gestion = @gest
and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
and LN_docs.estado_doc = 'V'
if exists ( select cliente
from LN_dep_econ_compras
where cliente = @cliente
and id_padron = @id_padron
and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
and hasta <= CONVERT(DATE, @fecha_vigencia) ) begin
SELECT @monto_compras = SUM(ISNULL(total_compras,0))
FROM LN_dep_econ_compras
where cliente = @cliente
and id_padron = @id_padron
and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
and hasta <= CONVERT(DATE, @fecha_vigencia)
/* Sumo las ventas, analizando si el campo que contiene el documento
es un valor simple o es una tabla, tomando en tal caso la columna 1 */
if (@tipo_campo != 'G') begin
SELECT @monto_ventas = ISNULL(valor_numerico,0)
FROM LN_doc_campos
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
end
else begin
/* ventas */
SELECT @monto_ventas = SUM(ISNULL(valor_numerico,0))
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 1
/* columna iva */
SELECT @monto_iva = SUM(ISNULL(valor_numerico,0))
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 2
end
/* Determinación de la alícuota de iva ingresada en el documento de las ventas anuales */
declare @alicuota_iva float, @aplica_iva_ventas float = 21, @pais varchar(2)
select
@alicuota_iva = isnull(LN_doc_campos.valor_numerico, 0),
@pais = LN_contrapartes.country_code
from LN_doc_campos
inner join LN_docs on LN_doc_campos.doc_id = LN_docs.doc_id
inner join LN_tipo_doc_campos on
(LN_doc_campos.campo = LN_tipo_doc_campos.campo
and LN_docs.tipo_doc = LN_tipo_doc_campos.tipo_doc)
inner join LN_contrapartes on LN_docs.contraparte = LN_contrapartes.contraparte
where LN_doc_campos.seccion = @seccion
and LN_doc_campos.doc_id = @doc_id
and LN_tipo_doc_campos.campo_id = 'ALICUOTA-IVA'
set @aplica_iva_ventas =
CASE
WHEN @pais = 'AR' THEN iif(@alicuota_iva = 10, 10.5, 21)
WHEN @pais = 'UY' THEN 22
WHEN @pais = 'PY' THEN iif(@alicuota_iva = 0, 10, iif(@alicuota_iva < 10, 5, 10))
END
if (@monto_compras > 0 AND (@monto_ventas > 0 OR @monto_iva > 0 AND @aplica_iva_ventas > 0)) begin
/* Calculo la dependencia económica preferentemente basado en el IVA ventas */
DECLARE @dep_econ_calc float
IF (@monto_iva > 0 AND @aplica_iva_ventas > 0)
SET @dep_econ_calc = CONVERT(float, @monto_compras / (@monto_iva/@aplica_iva_ventas*100) * 100)
ELSE
SET @dep_econ_calc = CONVERT(float, @monto_compras / @monto_ventas * 100)
set @graba_score = 'S'
if not exists (select indicador from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @idec)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @idec, @dep_econ_calc, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @dep_econ_calc,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @idec
end
end
end
else
begin
if exists (select indicador from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @idec)
begin
set @graba_score = 'S'
DELETE from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @idec
end
end
if (@graba_score = 'S') begin
/* Llamo al cálculo del score de dependencia económica, bajo el mismo producto */
declare @indic_score_dep_econ int = null
select @indic_score_dep_econ = LN_indicadores.indicador
from LN_indicadores
where producto = @producto_de
and clave_indicador = 'SCORE_DEP_ECON'
SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1
if (@indic_score_dep_econ is not null and @familia IS NOT NULL) begin
declare @score_dep_econ int = null
EXEC LN_score_dependencia_economica @familia, @p_contraparte, @score_dep_econ OUTPUT
if (@score_dep_econ is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_dep_econ)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @indic_score_dep_econ, @score_dep_econ, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @score_dep_econ,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @indic_score_dep_econ
end
else
begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_dep_econ)
delete from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic_score_dep_econ
end
end
/* fin calculo del score de dependencia económica */
end
end
end
END
/** Para asentar indicadores del producto Límite de Crédito **/
/* Indicadores numéricos que se ingresan en forma manual */
IF (@accion = 'monto_recomendado' OR @accion = 'monto_aprobado' OR @accion = 'monto_aprobado_usd' OR @accion = 'score_balance_lc' OR @accion = 'escenarios_futuros' OR @accion = 'ventas_limite_credito') BEGIN
IF (@p_contraparte > 0) BEGIN
DECLARE @ilc1 int = null
DECLARE @clave1 VARCHAR(50) = CASE
WHEN @accion = 'monto_recomendado' THEN 'LC_RECOMENDADO'
WHEN @accion = 'monto_aprobado' THEN 'LC_APROBADO'
WHEN @accion = 'monto_aprobado_usd' THEN 'LC_APROBADO_USD'
WHEN @accion = 'score_balance_lc' THEN 'LC_SCORE_BALANCE'
WHEN @accion = 'escenarios_futuros' THEN 'LC_ESCENARIOS_FUTUROS'
WHEN @accion = 'ventas_limite_credito' THEN 'LC_VENTAS'
END
select @ilc1 = LN_indicadores.indicador,
@gest = LN_gestiones.gestion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = @clave1
if (@ilc1 is not null AND @gest is not null) begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilc1)
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_valor_numerico,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilc1
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilc1, @p_valor_numerico, 1, GETDATE(), @p_user_id)
/* Caso especial si es se está asentando el score de balance para el límite de credito
hay que replicar dicho valor en otro indicador de score de balance de otro producto balance que
esté asociado a la contraparte con imputación manual */
if (@accion = 'score_balance_lc') begin
DECLARE @otroscore int = null
select @otroscore = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.producto_id = 'balances'
and LN_indicadores.clave_indicador = 'SCORE_BAL'
and LN_indicadores.valoracion = 'F'
and LN_familia_productos.activo = 1
and LN_contraparte_familias.activo = 1
and LN_productos.visible = 1
if (@otroscore is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @otroscore)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @otroscore, @p_valor_numerico, 1, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_valor_numerico,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @otroscore
end
end
/* fin actualizar otro score */
end
/* para ejecutar en forma particular y asentar fecha de recomendación o aprobación cuando se asienta el indicador del monto correspondiente */
if (@accion = 'monto_aprobado' OR @accion = 'monto_aprobado_usd' OR @accion = 'monto_recomendado') begin
DECLARE @ilcf int = null
select @ilcf = LN_indicadores.indicador,
@gest = LN_gestiones.gestion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = iif(@accion = 'monto_recomendado', 'LC_RECOMENDADO_FECHA', iif(@accion = 'monto_aprobado', 'LC_APROBADO_FECHA', 'LC_APROBADO_USD_FECHA'))
if (@ilcf is not null AND @gest is not null) begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilcf)
UPDATE LN_contraparte_indicadores SET
valor_fecha = iif(@p_valor_numerico is not null, GETDATE(), NULL),
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilcf
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_fecha, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilcf, iif(@p_valor_numerico is not null, GETDATE(), NULL), 1, GETDATE(), @p_user_id)
end
end
/**/
END
END
/* Indicadores texto de ingreso manual */
IF (@accion = 'tendencia_balance_lc' OR @accion = 'tendencia_escenarios' OR @accion = 'situacion_socios' OR @accion = 'tendencia_situacion' OR @accion = 'ventas_limite_credito_fecha') BEGIN
/* en el caso del indicador fecha de ventas se recibe texto y se convierte a fecha */
IF (@p_contraparte > 0) BEGIN
DECLARE @ilc2 int = null
DECLARE @clave2 VARCHAR(30) = CASE
WHEN @accion = 'tendencia_balance_lc' THEN 'LC_TEND_BALANCE'
WHEN @accion = 'tendencia_escenarios' THEN 'LC_ESCENARIOS_TENDENCIA'
WHEN @accion = 'situacion_socios' THEN 'LC_SITUACION_SOCIOS'
WHEN @accion = 'tendencia_situacion' THEN 'LC_SITUACION_TENDENCIA'
WHEN @accion = 'ventas_limite_credito_fecha' THEN 'LC_VENTAS_FECHA'
END
DECLARE @valor_fecha_lc DATE = NULL
if (@accion = 'ventas_limite_credito_fecha')
if (@p_valor_texto is not null)
set @valor_fecha_lc = DATEFROMPARTS(CONVERT(INT,SUBSTRING(@p_valor_texto,7,4)),CONVERT(INT,SUBSTRING(@p_valor_texto,4,2)),CONVERT(INT,SUBSTRING(@p_valor_texto,1,2)))
select @ilc2 = LN_indicadores.indicador,
@gest = LN_gestiones.gestion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = @clave2
if (@ilc2 is not null AND @gest is not null) begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilc2)
UPDATE LN_contraparte_indicadores SET
valor_texto = iif(@accion <> 'ventas_limite_credito_fecha', @p_valor_texto, NULL),
valor_fecha = iif(@accion <> 'ventas_limite_credito_fecha', NULL, @valor_fecha_lc),
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilc2
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, valor_fecha, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilc2,
iif(@accion <> 'ventas_limite_credito_fecha', @p_valor_texto, NULL),
iif(@accion <> 'ventas_limite_credito_fecha', NULL, @valor_fecha_lc),
1, GETDATE(), @p_user_id)
/* Caso especial si es se está asentando la tendencia del balance para el límite de credito
hay que replicar dicho valor en otro indicador de valoración de balance de otro producto balance que
esté asociado a la contraparte con imputación manual */
if (@accion = 'tendencia_balance_lc') begin
DECLARE @otravaloracion int = null
select @otravaloracion = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_productos.producto_id = 'balances'
and LN_indicadores.clave_indicador = 'VALORACION_BAL'
and LN_indicadores.valoracion = 'F'
and LN_familia_productos.activo = 1
and LN_contraparte_familias.activo = 1
and LN_productos.visible = 1
if (@otravaloracion is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @otravaloracion)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @otravaloracion, @p_valor_texto, 1, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @p_valor_texto,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @otravaloracion
end
end
/* fin actualizar otra valoracion */
end
END
END
/* Indicadores automáticos del límite de crédito */
IF (@accion = 'dias_deuda_ventas') BEGIN
IF (@p_contraparte > 0) BEGIN
DECLARE @ilcdv int = null
select @ilcdv = LN_indicadores.indicador,
@gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS'
if (@ilcdv is not null AND @gest is not null AND @cuit is not null) begin
/* obtengo el valor del indicador LC_VENTAS, debiendo ser mayor a cero para poder aplicar fórmula */
declare @indicador_ventas int = null
select @indicador_ventas = LN_indicadores.indicador
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = 'LC_VENTAS'
if (@indicador_ventas is not null) begin
declare @total_ventas bigint = NULL
select @total_ventas = CONVERT(BIGINT, ISNULL(valor_numerico, 0))
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indicador_ventas
if (@total_ventas > 0) begin
/* Ahora voy a obtener el total de la central de deudores con los máximos del último trimestre */
DECLARE @total_cendeu BIGINT = NULL
declare @p_cuit varchar(30) = @cuit
declare @p_5anios date = getdate() - (5*365)
declare @p_2anios date = getdate() - (5*365)
declare @p_3meses date = getdate() - (90)
declare @dtStart date, @dtEnd date, @dtEnd_cuit date, @dtEnd_cuit2 date, @periodo_maximo varchar(7),@fec_periodo_minimo varchar(11),@periodo_minimo varchar(7);
select @dtEnd = (select max(fecha_informacion) from fuentes_procesadas where visible = '1' and fuente = 'cendeu')
select @dtEnd_cuit = convert(date,isnull(max(cendeu.fec_inf),'200112')+'01') from cendeu where iden = @p_cuit and vigente = 1 and id_fuente = 2
select @dtEnd_cuit2 = convert(date,isnull(max(cendeu.fec_inf),'200112')+'01') from cendeu_temp cendeu where iden = @p_cuit and vigente = 1 and id_fuente = 2
if @dtEnd_cuit2 > @dtEnd_cuit begin
set @dtEnd_cuit = @dtEnd_cuit2
end
if (@dtEnd_cuit > @dtEnd) begin
set @dtEnd = @dtEnd_cuit
end
set @dtStart = dateadd(month,-23, @dtEnd)
set @periodo_maximo = replace(Convert(varchar(7),@dtEnd),'-','')
set @fec_periodo_minimo = @dtStart
set @periodo_minimo = replace(Convert(varchar(7),@dtStart),'-','')
set @dtStart = dateadd(month,-2, @dtEnd)
if(@periodo_maximo is not null) begin
set @fec_periodo_minimo = dateadd(MM, -2,convert(date,@periodo_maximo+'01'))
set @periodo_minimo = convert(varchar(4),DATEPART(yyyy,@fec_periodo_minimo))+right('0'+convert(varchar(2),DATEPART(mm,@fec_periodo_minimo)),2)
end
SELECT @total_cendeu = SUM(CENDEU_TRIMESTRAL.total)
FROM (
SELECT trimestral.nombre, trimestral.situacion, MAX(trimestral.total) as total
FROM (
select distinct
fec_inf,codigo_ent,
isnull(nombre_corto,nombre) as nombre,
convert(int,situacion) as situacion,
((prestamos+particip+garotor+o_cptos+deuda_total)) as total
from cendeu inner join EntidadesBancarias on
convert(int,cendeu.codigo_ent) = EntidadesBancarias.id_banco
where iden = @p_Cuit and cendeu.fec_inf between @periodo_minimo and @periodo_maximo
and vigente = 1
and not exists (select * from cendeu b where b.iden = cendeu.iden and cast(b.codigo_ent as int) = cast(cendeu.codigo_ent as int) and b.fec_inf = cendeu.fec_inf and b.vigente = 1 and b.id_fuente = 2 and b.id_cendeu != cendeu.id_cendeu)
and not exists (select * from cendeu c
where c.iden = cendeu.iden
and cast(c.codigo_ent as int) = cast(cendeu.codigo_ent as int)
and c.fec_inf = cendeu.fec_inf
and c.vigente = cendeu.vigente
and (isnull(c.id_fuente,1)) = (isnull(cendeu.id_fuente,1))
and c.id_cendeu < cendeu.id_cendeu)
and not (
(cast(fec_inf+'01' as date) < @p_5anios)
OR
(cast(fec_inf+'01' as date) < @p_2anios
and
--not (convert(date,created) > @p_3meses and convert(date,modified) > @p_3meses))
not exists (select * from cendeu_temp z where z.iden = cendeu.iden and cast(z.codigo_ent as int) = cast(cendeu.codigo_ent as int) and (convert(date,z.created) > @p_3meses)))
OR
(cast(fec_inf+'01' as date) < @p_2anios
and
exists (select * from cendeu_cancela c
where c.iden = cendeu.iden
and cast(c.codigo_ent as int) = cast(cendeu.codigo_ent as int)
and cast(fec_inf+'01' as date) between convert(date,c.fec_inf_desde) and convert(date,c.fec_inf_hasta)
and c.vigente = '1'))
)
union
select distinct
fec_inf,codigo_ent,
isnull(nombre_corto,nombre) as nombre,
convert(int,situacion) as situacion,
((prestamos+particip+garotor+o_cptos+deuda_total)) as total
from cendeu_temp inner join EntidadesBancarias on
convert(int,cendeu_temp.codigo_ent) = EntidadesBancarias.id_banco
where iden = @p_Cuit and cendeu_temp.fec_inf between @periodo_minimo and @periodo_maximo
and vigente = 1
and not exists (select * from cendeu b where b.iden = cendeu_temp.iden and cast(b.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int) and b.fec_inf = cendeu_temp.fec_inf and b.vigente = 1 and b.id_fuente = 2 and b.id_cendeu != cendeu_temp.id_cendeu)
and not exists (select * from cendeu_temp c
where c.iden = cendeu_temp.iden
and cast(c.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int)
and c.fec_inf = cendeu_temp.fec_inf
and c.vigente = cendeu_temp.vigente
and (isnull(c.id_fuente,1)) = (isnull(cendeu_temp.id_fuente,1))
and c.id_cendeu < cendeu_temp.id_cendeu)
and not (
(cast(fec_inf+'01' as date) < @p_5anios)
OR
(cast(fec_inf+'01' as date) < @p_2anios
and
--not (convert(date,created) > @p_3meses and convert(date,modified) > @p_3meses))
not exists (select * from cendeu_temp z where z.iden = cendeu_temp.iden and cast(z.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int) and (convert(date,z.created) > @p_3meses)))
OR
(cast(fec_inf+'01' as date) < @p_2anios
and
exists (select * from cendeu_cancela c
where c.iden = cendeu_temp.iden
and cast(c.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int)
and cast(fec_inf+'01' as date) between convert(date,c.fec_inf_desde) and convert(date,c.fec_inf_hasta)
and c.vigente = '1'))
)
) trimestral
GROUP BY nombre, situacion) CENDEU_TRIMESTRAL
if (@total_cendeu > 0) begin
/* Aplico la fórmula para obtener los días (divido ventas por 1000 porque en cendeu el total viene en miles de pesos */
DECLARE @dias_deuda_ventas int
SET @dias_deuda_ventas = @total_cendeu * 365 / (@total_ventas/1000)
/* Guardo el indicador */
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilcdv)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilcdv, @dias_deuda_ventas, 1, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @dias_deuda_ventas,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilcdv
end
end
end
end
END
END
IF (@accion = 'rentabilidad_operativa_lc' OR @accion = 'rentabilidad_operativa_lc_fecha') BEGIN
IF (@p_contraparte > 0) BEGIN
DECLARE @ilcr int = null
DECLARE @clave3 VARCHAR(30) = CASE
WHEN @accion = 'rentabilidad_operativa_lc' THEN 'LC_RENTABILIDAD'
WHEN @accion = 'rentabilidad_operativa_lc_fecha' THEN 'LC_RENTABILIDAD_FECHA'
END
select @ilcr = LN_indicadores.indicador,
@gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
and LN_productos.producto = LN_cliente_productos.producto)
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
where LN_contrapartes.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_contraparte_familias.activo = 1
and LN_indicadores.clave_indicador = @clave3
if (@ilcr is not null AND @gest is not null AND @cuit is not null) begin
DECLARE @fecha_bal date = NULL
DECLARE @rentab_bal decimal(20,2) = NULL
DECLARE @idbal int = null
DECLARE Balances CURSOR FOR
select TOP 1 balances_contables.id_balance
from balances_contables
where balances_contables.cuit = @cuit
and balances_contables.estado = 'PUBLICADO'
and isnull(balances_contables.visible,0) = 1
and datediff(year, balances_contables.fecha_balance, GETDATE()) < 6
order by balances_contables.fecha_balance DESC
OPEN Balances
FETCH NEXT FROM Balances INTO @idbal
CLOSE Balances
DEALLOCATE Balances
if (@idbal IS NOT NULL) begin
select @fecha_bal = balances_contables.fecha_balance,
@rentab_bal = iif(balances_contables.res_vtanet > 0, (ISNULL(balances_contables.ganancia, 0) + ISNULL(balances_contables.res_otrosegr, 0) - ISNULL(balances_contables.res_otrosing, 0)) / balances_contables.res_vtanet * 100, NULL)
from balances_contables
where balances_contables.id_balance = @idbal
if (@fecha_bal is not null AND @rentab_bal is not null) begin
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @ilcr)
UPDATE LN_contraparte_indicadores SET
valor_numerico = iif(@accion = 'rentabilidad_operativa_lc', @rentab_bal, NULL),
valor_fecha = iif(@accion = 'rentabilidad_operativa_lc_fecha', @fecha_bal, NULL),
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @ilcr
else
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_fecha, visible, created, created_by)
VALUES
(@p_contraparte, @gest, @ilcr, iif(@accion = 'rentabilidad_operativa_lc', @rentab_bal, NULL),
iif(@accion = 'rentabilidad_operativa_lc_fecha', @fecha_bal, NULL), 1, GETDATE(), @p_user_id)
end
end
end
END
END
/** FIN DE ASENTAR INDICADORES DEL PRODUCTO LIMITE DE CREDITO **/
/*** ASENTAR INDICES DE BALANCE COMO INDICADORES PARA UNA CONTRAPARTE TOMANDO DE LA SUSCRIPCION DE INDICES DEL CLIENTE ***/
IF (@accion = 'indices_balance') BEGIN
IF (@p_contraparte IS NOT NULL and @p_clave_indicador IS NOT NULL and @p_valor_numerico IS NOT NULL) BEGIN
SELECT @gest = gestion
FROM LN_gestiones
WHERE contraparte = @p_contraparte
AND desde <= GETDATE()
AND hasta >= GETDATE()
if (@gest is not null) begin
DECLARE @indicador_balance int = null
SELECT @indicador_balance = LN_indicadores.indicador
FROM LN_indicadores INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
INNER JOIN LN_familia_productos ON LN_productos.producto = LN_familia_productos.producto
INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
AND LN_contrapartes.cliente = LN_familias.cliente)
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_productos.producto = LN_cliente_productos.producto)
INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
WHERE LN_contrapartes.contraparte = @p_contraparte
AND LN_indicadores.clave_indicador = @p_clave_indicador
AND LN_familia_productos.activo = 1
AND LN_contraparte_familias.activo = 1
AND LN_cliente_productos.activo = 1
AND ISNULL(LN_productos.balance, 0) > 0
if (@indicador_balance is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indicador_balance)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
VALUES
(@p_contraparte, @gest, @indicador_balance, @p_valor_numerico, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_numerico = @p_valor_numerico,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indicador_balance
end
end
END
END
/**************************************************/
IF (@accion = 'GRAFICO_INFORME_COMERCIAL' or @accion = 'GRAFICO_SCORE_BALANCE' or @accion = 'GRAFICO_SCORE_FINAL' or @accion = 'GRAFICO_SCORE_DOCUMENTOS') BEGIN
DROP TABLE #rangos
END
END
GO
Depends On
48- dbo.LN_alertas_cendeu_cliente
- dbo.LN_alertas_cheques_cliente
- dbo.LN_score_alertas
- dbo.LN_score_dependencia_economica
- dbo.LN_score_judicial
- dbo.LN_subcontratistas
- dbo.balances
- dbo.balances_contables
- dbo.cendeu
- dbo.cendeu_cancela
- dbo.cendeu_temp
- dbo.clientes
- dbo.country
- dbo.docs
- dbo.EntidadesBancarias
- dbo.fuentes_procesadas
- dbo.identificadores
- dbo.juicios
- dbo.LN_campos
- dbo.LN_cliente_indicadores
- dbo.LN_cliente_nivel
- dbo.LN_cliente_productos
- dbo.LN_contraparte_familias
- dbo.LN_contraparte_indicadores
- dbo.LN_contrapartes
- dbo.LN_control_black_list
- dbo.LN_control_screening
- dbo.LN_demo_fidecheck
- dbo.LN_dep_econ_compras
- dbo.LN_doc_campos
- dbo.LN_doc_campos_col
- dbo.LN_docs
- dbo.LN_excepciones
- dbo.LN_familia_productos
- dbo.LN_familias
- dbo.LN_gestiones
- dbo.LN_indicadores
- dbo.LN_productos
- dbo.ln_score_detalle_killer
- dbo.LN_set_tipo_doc
- dbo.LN_tipo_doc_campos
- dbo.LN_tipos_doc
- dbo.monitoreos
- dbo.monitoreos_resultados
- dbo.padrones
- dbo.socios
- dbo.tipos_causas
- dbo.users
Used By
No items found