Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
7| Name | Data Type | Length | Description |
|---|---|---|---|
| @accion | varchar | 50 | |
| @p_queue_id | int | 4 | |
| @p_contraparte | int | 4 | |
| @p_cuit | varchar | 20 | |
| @p_clave_indicador | varchar | 50 | |
| @p_familia | int | 4 | |
| @p_id_taken | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
--exec LN_contrapartes_queue_ 'indicadores_scores',NULL,147069
-- ============================================
--select * from LN_contrapartes_queue order by queue_id desc
/*
[LN_contrapartes_queue_] 'indicadores_anteriores', null, 608
[LN_contrapartes_queue_] 'insert_masivo'
exec LN_contrapartes_queue_ 'pending'
select * from ln_contraparte_indicadores_trazabilidad where contraparte = 95
EXEC LN_contrapartes_queue_ 'indicadores_novisibles', NULL, 83726
*/
CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_queue_07122022
-- Add the parameters for the stored procedure here
@accion varchar(50),
@p_queue_id int = NULL,
@p_contraparte int = NULL,
@p_cuit varchar(20) = null,
@p_clave_indicador varchar(50) = null,
@p_familia int = null,
@p_id_taken int = 10
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @top int
declare @hora int = DATEPART(HOUR, getdate())
if (@hora >= 7)
begin
set @top = 100 /*200*/
end
else if (@hora >= 19)
begin
set @top = 100 /*500*/
end
else
begin
set @top = 100 /*500*/
end
if (@accion = 'pending')
begin
update top (@top) LN_contrapartes_queue set id_taken = @p_id_taken
where LN_contrapartes_queue.contraparte in (
SELECT TOP (100) LN_contrapartes_queue.contraparte
from LN_contrapartes_queue
inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contrapartes_queue.contraparte
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes_queue.processed = 0
and LN_contraparte_familias.activo = 1
and LN_contrapartes_queue.id_taken in (0,@p_id_taken)
order by LN_contrapartes_queue.created desc )
and LN_contrapartes_queue.processed = 0
and LN_contrapartes_queue.id_taken = 0
/* Si se corre entre las 0 y las 7 horas toma lotes de 5000
despues de las 7 am toma lotes de 200 */
select LN_contrapartes_queue.*, LN_contrapartes.cliente, LN_contraparte_familias.familia,
IIF(ln_contrapartes.servicio_contratado = '73', 'I',IIF (ln_contrapartes.subcontratista = 1, 'S','C')) as cs
from LN_contrapartes_queue
inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contrapartes_queue.contraparte
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes_queue.processed = 0
--and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
and LN_contraparte_familias.activo = 1
and LN_contrapartes_queue.id_taken=@p_id_taken
order by LN_contrapartes_queue.created desc
/*select * from LN_contrapartes_queue where processed = 0 and contraparte in (SELECT distinct contraparte FROM LN_gestiones WHERE cliente = 110864291) order by created desc */
end
if (@accion = 'insert_masivo') begin
insert into ln_contrapartes_queue (contraparte)
select distinct LN_contrapartes.contraparte
from LN_contrapartes
inner join ln_gestiones 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_familias.familia = LN_contraparte_familias.familia
INNER JOIN LN_cliente_productos ON LN_contrapartes.cliente = LN_cliente_productos.cliente
INNER JOIN LN_familia_productos ON LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_productos ON LN_productos.producto = LN_familia_productos.producto
INNER JOIN LN_indicadores ON (LN_indicadores.producto = LN_familia_productos.producto and ln_indicadores.valoracion = 'A')
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes.activo = 1
and ln_gestiones.desde <= getdate() and ln_gestiones.hasta >= getdate()
AND LN_contraparte_familias.activo = 1
and ln_familias.visible = 1
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
/* and LN_contrapartes.cliente NOT in (592432729,3920694,515494256,8484144) /* cliente demo, cortesía, coface,etc*/
and LN_contrapartes.cliente NOT in (806892136,639839799,110864291)
*/
/*--MONSANTO 110864291 --WHIRLPOOL 639839799 -- ASE 806892136 */
/*
and LN_contrapartes.cliente in (select distinct cliente from clientes where estado_cliente='A'
and cli_codigo in (1326,222,829,4117,5776,12345678,2000,10314,5797,12235,9659,5297,1486,5851,2301,2570,5635))
*/
and LN_contrapartes.cliente in (select distinct cliente from clientes where estado_cliente='A'
and cli_codigo in (1326,222,5776,2000,/*5797,*/9659,1486,2301,5635, 5672,5673,12392,10314,3926,6084,4117))
/*select * from clientes where cli_codigo in (1326,222,5776,2000,5797,9659,1486,2301,5635, 5672,5673,12392,10314,3926,6084,4117)*/
and ln_contrapartes.contraparte not in (select distinct contraparte from LN_contrapartes where cliente = 5546348 and servicio_contratado=73)
/*
select cli_codigo,* from clientes where cli_codigo in (1326,222,5776,2000,5797,9659,1486,2301,5635, 5672,5673,12392,10314,3926,2549,6084,4117)
*/
/* coface = ,5297 */
/*and LN_contrapartes.cliente not in (0)*/
/*select * from clientes where cli_codigo in (1326,222,829,4117,5776,12345678,2000,10314,5797,12235)*/
/*select cli_codigo,* from clientes where nombre_cliente like '%valid%'*/
delete ln_contrapartes_queue where processed = 0 and contraparte
in (
select contraparte from ln_contrapartes where cliente /*not in (5546348,2046807993) )*/
in (1226057645,528397,7855254,7048064,65327330,240155302,1659303046,6063454))
/* 07/06/2022: Generación del panel de control de coface. Lo ponemos acá para que se regenere todos los días a la madrugada */
--exec LN_Panel_Control_SAAS_datos 515494256
exec LN_Panel_Control_SAAS_file 515494256
end
if (@accion = 'insert') begin
if (@p_contraparte is not null)
begin
if not exists (select * from LN_contrapartes_queue where contraparte = @p_contraparte and processed = 0)
/* Modificado 22/01/2020 si es prepago y no existe pago aprobado no lo va a insertar para que procese */
insert into LN_contrapartes_queue (contraparte)
select LN_contrapartes.contraparte
from LN_contrapartes
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
--and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
end
if (@p_cuit is not null)
begin
/* Modificado 22/01/2020 si es prepago y no existe pago aprobado no lo va a insertar para que procese */
insert into LN_contrapartes_queue (contraparte)
select a.contraparte from ln_contrapartes a
left outer join pagos_transacciones on a.contraparte = pagos_transacciones.contraparte
where a.id_padron in (select id_padron from padrones where identificacion = @p_cuit)
and not exists (select * from LN_contrapartes_queue b where b.contraparte = a.contraparte and b.processed = 0)
--and iif(a.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
--and not exists (select * from ln_contrapartes_queue c where c.contraparte = a.contraparte and c.processed = 1 and c.created >= dateadd(minute,(-60),getdate()))
end
end
declare @gestion int
if (@accion = 'update') begin
if (@p_queue_id is not null)
update LN_contrapartes_queue set processed = 1, finished = getdate() where queue_id = @p_queue_id
/*
-- NOVIEMBRE 14 2021 NO REMOVER HASTA HABLAR CON ALEJANDRO
UPDATE ln_contraparte_indicadores SEt valor_texto='AA',valor_numerico=1 where indicador in (384) and valor_texto='AA'
UPDATE ln_contraparte_indicadores SEt valor_texto='PR',valor_numerico=2 where indicador in (384) and valor_texto='PR'
UPDATE ln_contraparte_indicadores SEt valor_texto='NA',valor_numerico=3 where indicador in (384) and valor_texto='NA'
UPDATE ln_contraparte_indicadores SEt valor_texto='XX',valor_numerico=4 where indicador in (384) and valor_texto='XX'
-- select * from ln_contraparte_indicadores where indicador in (324)
UPDATE ln_contraparte_indicadores SEt valor_texto='C',valor_numerico=20 where indicador in (324) and valor_texto IS NULL
UPDATE ln_contraparte_indicadores SEt valor_texto='D',valor_numerico=10 where indicador in (324) and valor_texto='10'
UPDATE ln_contraparte_indicadores SEt valor_texto='C',valor_numerico=20 where indicador in (324) and valor_texto='20'
UPDATE ln_contraparte_indicadores SEt valor_texto='D',valor_numerico=30 where indicador in (324) and valor_texto='30'
UPDATE ln_contraparte_indicadores SEt valor_texto='CCC',valor_numerico=40 where indicador in (324) and valor_texto='40'
UPDATE ln_contraparte_indicadores SEt valor_texto='B',valor_numerico=50 where indicador in (324) and valor_texto='50'
UPDATE ln_contraparte_indicadores SEt valor_texto='BB',valor_numerico=60 where indicador in (324) and valor_texto='60'
UPDATE ln_contraparte_indicadores SEt valor_texto='BBB',valor_numerico=70 where indicador in (324) and valor_texto='70'
UPDATE ln_contraparte_indicadores SEt valor_texto='A',valor_numerico=80 where indicador in (324) and valor_texto='80'
UPDATE ln_contraparte_indicadores SEt valor_texto='AA',valor_numerico=90 where indicador in (324) and valor_texto='90'
UPDATE ln_contraparte_indicadores SEt valor_texto='AAA',valor_numerico=100 where indicador in (324) and valor_texto='100'
-- NOVIEMBRE 14 2021 NO REMOVER HASTA HABLAR CON ALEJANDRO
*/
-- 17/11/2021:Si tiene el indicador DICTAMEN_VRM y esta en periodo de tolerancia, lo graba con valor -120 (en tolerancia)
-- (20/12/2021) Lo graba en tolerancia si esta vacio, sino deja el valor que ya tenia...
-- Cuando se pasa del periodo de tolerancia, lo pasa a NO APTO (si tiene el valor en tolerancia)
declare @contraparte int
declare @cliente int
declare @familia int
declare @carga_inicial bit
select @contraparte = contraparte from LN_contrapartes_queue where queue_id = @p_queue_id
select @cliente = cliente, @carga_inicial = carga_inicial from LN_contrapartes where contraparte = @contraparte
select @familia = familia from ln_contraparte_familias where contraparte = @contraparte
select @gestion = gestion from ln_gestiones where contraparte = @contraparte and vigente = 1 and desde <= getdate() and hasta >= getdate()
-- Veo si tiene el producto DICTAMEN_VRM y el indicador DICTAMEN_VRM
declare @numero int = null
declare @texto varchar(100) = null
declare @texto_largo varchar(max) = null
if exists (select * from ln_cliente_productos where cliente = @cliente and producto = 2080 and activo = 1)
and exists (select * from ln_familia_productos where familia = @familia and producto = 2080 and activo = 1)
and exists (select * from ln_cliente_indicadores where cliente = @cliente and indicador = 384 and activo = 1)
begin
-- esta en carga inicial?
if (@carga_inicial = 1)
begin
select @numero = desde, @texto = texto, @texto_largo = texto_largo
from ln_cliente_nivel where indicador = 384 and cliente = @cliente and texto = 'ET' -- En Tolerancia
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = 384)
begin
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created )
VALUES
(@contraparte, @gestion, '384',@numero,@texto,@texto_largo,GETDATE() )
exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','ET'
end
else
begin
--exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','ET'*/
-- (20/12/2021) Lo graba en tolerancia si esta vacio, sino deja el valor que ya tenia...
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = 384 and valor_numerico is null)
begin
exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','ET'
end
end
end
else
begin
-- no esta en carga inicial, y el indicador dice EN TOLERANCIA, lo pasa a NO APTO
select @numero = desde, @texto = texto, @texto_largo = texto_largo
from ln_cliente_nivel where indicador = 384 and cliente = @cliente and texto = 'NA' -- No apto
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = 384
and isnull(valor_texto,'ET') = 'ET')
begin
exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','NA'
end
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = 384)
begin
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created )
VALUES
(@contraparte, @gestion, '384',@numero,@texto,@texto_largo,GETDATE() )
exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','NA'
end
end
end
end
if (@accion = 'indicadores') begin
if (@p_contraparte is not null)
select LN_indicadores.clave_indicador, ln_productos.producto_id,
LN_indicadores.producto, LN_indicadores.indicador,
LN_productos.country_code, identificadores.country_code as pais_contraparte,
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
ISNULL( ISNULL(DATEDIFF(DAY, LN_contraparte_indicadores.modified, getdate()), DATEDIFF(DAY, LN_contraparte_indicadores.created, getdate())) , 100) AS dias,
show = iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0))
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
left outer join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
if (@accion = 'indicadores_scores') begin
if (@p_contraparte is not null)
select LN_contrapartes.contraparte, LN_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
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
--and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
-- and clave_indicador like 'SCORE%' and clave_indicador != 'SCORE_FINAL' and ponderacion != 0
-- 19/04/22:
and ((clave_indicador like 'SCORE%' and ponderacion != 0) OR clave_indicador = 'SCORE_FINAL' )
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
if (@accion = 'indicadores_vrm_score') begin
if (@p_contraparte is not null)
select LN_contrapartes.contraparte, LN_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
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
--and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
and clave_indicador like 'VRM_SCORE%' /*and ponderacion != 0*/
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
if (@accion = 'indicadores_scores_arcor') begin
if (@p_contraparte is not null)
select LN_contrapartes.contraparte, LN_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
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
--and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
and clave_indicador like 'ARCOR_%' /*and ponderacion != 0*/
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
/*
if (@accion = 'indicadores_anteriores') begin
if (isnull(@p_contraparte,'0') != 0)
begin
if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte))
begin
delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte
end
insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
gestion,
producto,
indicador,
clave_indicador,
anterior_nuevo,
actualizado,
valor_numerico,
valor_texto,
valor_memo,
valor_fecha)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'A',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
select 'ok' as estado
end
else
begin
select 'sin contraparte' as estado
end
end
if (@accion = 'indicadores_nuevos') begin
if (isnull(@p_contraparte,'0') != 0)
begin
if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'))
begin
delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'
end
insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
gestion,
producto,
indicador,
clave_indicador,
anterior_nuevo,
actualizado,
valor_numerico,
valor_texto,
valor_memo,
valor_fecha)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
declare @created datetime = getdate()
insert into trazabilidad(texto, cliente, accion, id_plataforma, contraparte, user_id, created,
fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new)
select 'Cambio ' + LN_indicadores.nombre_indicador as texto,
LN_contrapartes.cliente as cliente,
upper(LN_indicadores.clave_indicador) as accion,
'INDICADOR' as id_plataforma,
a.contraparte as contraparte,
null as user_id,
@created as created,
b.actualizado as fecha_old,
b.valor_numerico as valor_numerico_old,
b.valor_texto as valor_texto_old,
b.valor_memo as valor_memo_old,
b.valor_fecha as valor_fecha_old,
a.actualizado as fecha_new,
a.valor_numerico as valor_numerico_new,
a.valor_texto as valor_texto_new,
a.valor_memo as valor_memo_new,
a.valor_fecha as valor_fecha_new
from [LN_contraparte_indicadores_trazabilidad] a -- nuevo
inner join [LN_contraparte_indicadores_trazabilidad] b -- anterior
on (b.contraparte = a.contraparte
and b.gestion = a.gestion
and b.producto = a.producto
and b.indicador = a.indicador)
inner join LN_indicadores on LN_indicadores.indicador = a.indicador and LN_indicadores.producto = a.producto
inner join LN_contrapartes on LN_contrapartes.contraparte = a.contraparte
where a.contraparte = @p_contraparte
and a.anterior_nuevo = 'N'
and b.anterior_nuevo = 'A'
and (
((b.valor_numerico is not null and a.valor_numerico is null) or (b.valor_numerico is null and a.valor_numerico is not null) or b.valor_numerico != a.valor_numerico)
or
((b.valor_texto is not null and a.valor_texto is null) or (b.valor_texto is null and a.valor_texto is not null) or b.valor_texto != a.valor_texto)
or
((b.valor_fecha is not null and a.valor_fecha is null) or (b.valor_fecha is null and a.valor_fecha is not null) or b.valor_fecha != a.valor_fecha)
or
((b.valor_memo is not null and a.valor_memo is null) or (b.valor_memo is null and a.valor_memo is not null) or convert(varchar(max),b.valor_memo) != convert(varchar(max),a.valor_memo))
)
select 'ok' as estado,
ln_contrapartes.cliente,
padrones.identificacion as cuit,
texto as texto,
accion as accion,
convert(varchar,fecha_old, 103) as fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
convert(varchar,fecha_new, 103) as fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new
from trazabilidad
inner join LN_contrapartes on LN_contrapartes.contraparte = trazabilidad.contraparte
inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
where trazabilidad.contraparte = @p_contraparte
and trazabilidad.created = @created
and trazabilidad.id_plataforma = 'INDICADOR'
end
else
begin
select 'sin contraparte' as estado
end
end
*/
declare @killer table (contraparte int, gestion int, detalle varchar(max))
declare @puntos table (contraparte int, gestion int, detalle varchar(max))
if (@accion = 'indicadores_anteriores') begin
if (isnull(@p_contraparte,'0') != 0)
begin
delete from @killer
delete from @puntos
insert into @killer exec LN_score_detalle_killer_ @p_contraparte
insert into @puntos exec LN_score_detalle_puntos_ @p_contraparte
--select * from @puntos
if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte))
begin
delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte
end
insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
gestion,
producto,
indicador,
clave_indicador,
anterior_nuevo,
actualizado,
valor_numerico,
valor_texto,
valor_memo,
valor_fecha,
detalle_killer,
detalle_puntos)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'A',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
/*killer.detalle_killer,
puntos.detalle
*/
iif(LN_indicadores.clave_indicador='SCORE_FINAL',killerSF.detalle,killer.detalle_killer) as detalle_killer,
iif(LN_indicadores.clave_indicador='SCORE_FINAL',puntosSF.detalle,puntos.detalle) as detalle
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
left join ln_score_detalle_killer killer on (killer.contraparte = ln_contrapartes.contraparte
and
killer.gestion = ln_gestiones.gestion
and
killer.indicador = LN_contraparte_indicadores.indicador
and
killer.visible = 1)
left join ln_score_detalle_puntos puntos on (puntos.contraparte = ln_contrapartes.contraparte
and
puntos.gestion = ln_gestiones.gestion
and
puntos.indicador = LN_contraparte_indicadores.indicador
and
puntos.visible = 1)
left join @killer killerSF on killerSF.contraparte = ln_contrapartes.contraparte
left join @puntos puntosSF on puntosSF.contraparte = ln_contrapartes.contraparte
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
select 'ok' as estado
end
else
begin
select 'sin contraparte' as estado
end
end
if (@accion = 'indicadores_nuevos') begin
if (isnull(@p_contraparte,'0') != 0)
begin
delete from @killer
delete from @puntos
insert into @killer exec LN_score_detalle_killer_ @p_contraparte
insert into @puntos exec LN_score_detalle_puntos_ @p_contraparte
--select * from @puntos
if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'))
begin
delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'
end
insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
gestion,
producto,
indicador,
clave_indicador,
anterior_nuevo,
actualizado,
valor_numerico,
valor_texto,
valor_memo,
valor_fecha,
detalle_killer,
detalle_puntos)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
/*killer.detalle_killer,
puntos.detalle
*/
iif(LN_indicadores.clave_indicador='SCORE_FINAL',killerSF.detalle,killer.detalle_killer) as detalle_killer,
iif(LN_indicadores.clave_indicador='SCORE_FINAL',puntosSF.detalle,puntos.detalle) as detalle
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
left join ln_score_detalle_killer killer on (killer.contraparte = ln_contrapartes.contraparte
and
killer.gestion = ln_gestiones.gestion
and
killer.indicador = LN_contraparte_indicadores.indicador
and
killer.visible = 1)
left join ln_score_detalle_puntos puntos on (puntos.contraparte = ln_contrapartes.contraparte
and
puntos.gestion = ln_gestiones.gestion
and
puntos.indicador = LN_contraparte_indicadores.indicador
and
puntos.visible = 1)
left join @killer killerSF on killerSF.contraparte = ln_contrapartes.contraparte
left join @puntos puntosSF on puntosSF.contraparte = ln_contrapartes.contraparte
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
union all
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
null,
null
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion in ('F','C')
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.modified >= getdate()-700
and not exists (select * from trazabilidad where contraparte = @p_contraparte
and id_plataforma = 'INDICADOR'
and accion = upper(LN_indicadores.clave_indicador)
and created >= LN_contraparte_indicadores.modified)
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
declare @created datetime = getdate()
insert into trazabilidad(texto, cliente, accion, id_plataforma, contraparte, user_id, created,
fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
detalle_killer_old,
detalle_puntos_old,
fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new,
detalle_killer_new,
detalle_puntos_new)
select 'Cambio ' + LN_indicadores.nombre_indicador as texto,
LN_contrapartes.cliente as cliente,
upper(LN_indicadores.clave_indicador) as accion,
'INDICADOR' as id_plataforma,
a.contraparte as contraparte,
null as user_id,
@created as created,
b.actualizado as fecha_old,
b.valor_numerico as valor_numerico_old,
b.valor_texto as valor_texto_old,
b.valor_memo as valor_memo_old,
b.valor_fecha as valor_fecha_old,
b.detalle_killer as detalle_killer_old,
b.detalle_puntos as detalle_puntos_old,
a.actualizado as fecha_new,
a.valor_numerico as valor_numerico_new,
a.valor_texto as valor_texto_new,
a.valor_memo as valor_memo_new,
a.valor_fecha as valor_fecha_new ,
a.detalle_killer as detalle_killer_new,
a.detalle_puntos as detalle_puntos_new
from [LN_contraparte_indicadores_trazabilidad] a -- nuevo
left join [LN_contraparte_indicadores_trazabilidad] b -- anterior
on (b.contraparte = a.contraparte
and b.gestion = a.gestion
and b.producto = a.producto
and b.indicador = a.indicador)
inner join LN_indicadores on LN_indicadores.indicador = a.indicador and LN_indicadores.producto = a.producto
inner join LN_contrapartes on LN_contrapartes.contraparte = a.contraparte
where a.contraparte = @p_contraparte
and a.anterior_nuevo = 'N'
and isnull(b.anterior_nuevo,'A') = 'A'
and (
((b.valor_numerico is not null and a.valor_numerico is null) or (b.valor_numerico is null and a.valor_numerico is not null) or b.valor_numerico != a.valor_numerico)
or
((b.valor_texto is not null and a.valor_texto is null) or (b.valor_texto is null and a.valor_texto is not null) or b.valor_texto != a.valor_texto)
or
((b.valor_fecha is not null and a.valor_fecha is null) or (b.valor_fecha is null and a.valor_fecha is not null) or b.valor_fecha != a.valor_fecha)
or
((b.valor_memo is not null and a.valor_memo is null) or (b.valor_memo is null and a.valor_memo is not null) or convert(varchar(max),b.valor_memo) != convert(varchar(max),a.valor_memo))
)
select 'ok' as estado,
ln_contrapartes.cliente,
padrones.identificacion as cuit,
texto as texto,
accion as accion,
convert(varchar,fecha_old, 103) as fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
detalle_killer_old,
detalle_puntos_old,
convert(varchar,fecha_new, 103) as fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new,
detalle_killer_new,
detalle_puntos_new
from trazabilidad
inner join LN_contrapartes on LN_contrapartes.contraparte = trazabilidad.contraparte
inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
where trazabilidad.contraparte = @p_contraparte
and trazabilidad.created = @created
and trazabilidad.id_plataforma = 'INDICADOR'
end
else
begin
select 'sin contraparte' as estado
end
end
-- Dada la contraparte, clave indicador, familia guarda en la tabla contraparte_indicadores el dato de la famillia a la que pertenecía al momento de ser calculado el indicador.
if(@accion = 'actualizar_familia') begin
if (@p_contraparte is not null AND @p_clave_indicador is not null AND @p_familia is not null) begin
update LN_contraparte_indicadores set familia = @p_familia
from LN_contraparte_indicadores
inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
inner join LN_gestiones on (LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
where LN_indicadores.clave_indicador = @p_clave_indicador
and LN_contraparte_indicadores.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
end
end
declare @indicador int = null
declare @indicadores table (clave_indicador varchar(100),
prod varchar(50),
producto int,
indicador int, country_code varchar(10),
pais_contratante varchar(100), actualizado datetime,
dias int, show int)
/* 18/03/2022: Se agregan 2 acciones
'indicadores_manuales': Busca si la contraparte tienen indicadores no automáticos
'completa_indicadores': Si algún indicador que se muestra en el panel (en la tabla LN_indicadores visible = 1)
no está en la tabla ln_contraparte_indicadores lo inserta con los valores nulos
Esto es para que si aún no se puede calcular, el registro esté (y lo mostremos en el panel, como aún no calculado)
Si al calcularlo obtiene valor va a hacer el update de ese mismo registro
*/
if (@accion = 'indicadores_manuales' and @p_contraparte is not null ) begin
select LN_indicadores.clave_indicador, ln_productos.producto_id,
LN_indicadores.producto, LN_indicadores.indicador,
LN_productos.country_code, identificadores.country_code as pais_contraparte,
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
ISNULL( ISNULL(DATEDIFF(DAY, LN_contraparte_indicadores.modified, getdate()), DATEDIFF(DAY, LN_contraparte_indicadores.created, getdate())) , 100) AS dias,
show = iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0))
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
left outer join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion != 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
if(@accion = 'completa_indicadores' and @p_contraparte is not null ) begin
insert into @indicadores
exec LN_contrapartes_queue_ 'indicadores', NULL, @p_contraparte
insert into @indicadores
exec LN_contrapartes_queue_ 'indicadores_manuales', NULL, @p_contraparte
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, visible, created,familia)
select G.contraparte, G.gestion, I.indicador, 1, GETDATE(), F.familia
from LN_gestiones G
inner join @indicadores I on 1=1
inner join LN_contraparte_familias F on (F.contraparte = G.contraparte and F.activo = 1)
inner join LN_indicadores IND on (IND.indicador = I.indicador and IND.visible = 1)
where G.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE()
and G.vigente = 1
and not exists (SELECT indicador
FROM LN_contraparte_indicadores CI
WHERE CI.indicador = I.indicador
AND CI.contraparte = @p_contraparte
AND CI.gestion = G.gestion
AND CI.visible = 1)
end
/* Fin 18/03/2022 */
-- si en la tabla ln_contraparte_indicadores hay indicadores de calculo automatico que ya no le corresponden,
-- lo pasa como no visible
-- O si no son de la familia actual, lo pasa a no visible
if(@accion = 'indicadores_novisibles' and @p_contraparte is not null ) begin
-- Que no sean de la familia actual:
update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
where contraparte = @p_contraparte
and gestion in ( select G.gestion from LN_gestiones G
where G.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE())
and familia not in (select F.familia from ln_contraparte_familias F
where F.contraparte = @p_contraparte and F.activo = 1)
and (select valoracion from LN_indicadores
where indicador = ln_contraparte_indicadores.indicador) = 'A'
-- Que sean indicadores que ya no le corresponden:
insert into @indicadores
exec LN_contrapartes_queue_ 'indicadores', NULL, @p_contraparte
DECLARE C_Ind CURSOR FOR
select distinct CI.gestion, CI.indicador
from LN_contraparte_indicadores CI
inner join LN_gestiones G on (G.contraparte = CI.contraparte and G.gestion = CI.gestion)
inner join LN_Indicadores I on I.indicador = CI.indicador
where CI.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE()
and I.valoracion = 'A'
and CI.visible = 1
and CI.indicador not in (select indicador from @indicadores)
OPEN C_Ind
FETCH NEXT FROM C_Ind INTO @gestion, @indicador
WHILE @@fetch_status = 0
BEGIN
update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
where contraparte = @p_contraparte
and gestion = @gestion
and indicador = @indicador
FETCH NEXT FROM C_Ind INTO @gestion, @indicador
END
CLOSE C_Ind
DEALLOCATE C_Ind
end
-- si en la tabla ln_contraparte_indicadores hay indicadores de calculo automatico que ya no le corresponden,
-- lo borra
-- O si no son de la familia actual, tambien los borra
-- Si tiene indicadores que estaban en visible = 0, tambien los borra
-- Los borramos para que llegado el caso que haya que calcularlos nuevamente,
-- no de conficto de clave duplicada por contraparte - gestion - indicador
if(@accion = 'indicadores_delete' and @p_contraparte is not null ) begin
-- Que esten como no visibles:
delete from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion in ( select G.gestion from LN_gestiones G
where G.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE())
and visible = 0
and (select valoracion from LN_indicadores
where indicador = ln_contraparte_indicadores.indicador) = 'A'
-- Que no sean de la familia actual:
-- update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
delete from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion in ( select G.gestion from LN_gestiones G
where G.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE())
and familia not in (select F.familia from ln_contraparte_familias F
where F.contraparte = @p_contraparte and F.activo = 1)
and (select valoracion from LN_indicadores
where indicador = ln_contraparte_indicadores.indicador) = 'A'
-- Que sean indicadores que ya no le corresponden:
insert into @indicadores
exec LN_contrapartes_queue_ 'indicadores', NULL, @p_contraparte
DECLARE C_Ind CURSOR FOR
select distinct CI.gestion, CI.indicador
from LN_contraparte_indicadores CI
inner join LN_gestiones G on (G.contraparte = CI.contraparte and G.gestion = CI.gestion)
inner join LN_Indicadores I on I.indicador = CI.indicador
where CI.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE()
and I.valoracion = 'A'
and CI.visible = 1
and CI.indicador not in (select indicador from @indicadores)
OPEN C_Ind
FETCH NEXT FROM C_Ind INTO @gestion, @indicador
WHILE @@fetch_status = 0
BEGIN
--update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
delete from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gestion
and indicador = @indicador
FETCH NEXT FROM C_Ind INTO @gestion, @indicador
END
CLOSE C_Ind
DEALLOCATE C_Ind
end
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
--exec LN_contrapartes_queue_ 'indicadores_scores',NULL,147069
-- ============================================
--select * from LN_contrapartes_queue order by queue_id desc
/*
[LN_contrapartes_queue_] 'indicadores_anteriores', null, 608
[LN_contrapartes_queue_] 'insert_masivo'
exec LN_contrapartes_queue_ 'pending'
select * from ln_contraparte_indicadores_trazabilidad where contraparte = 95
EXEC LN_contrapartes_queue_ 'indicadores_novisibles', NULL, 83726
*/
CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_queue_07122022
-- Add the parameters for the stored procedure here
@accion varchar(50),
@p_queue_id int = NULL,
@p_contraparte int = NULL,
@p_cuit varchar(20) = null,
@p_clave_indicador varchar(50) = null,
@p_familia int = null,
@p_id_taken int = 10
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @top int
declare @hora int = DATEPART(HOUR, getdate())
if (@hora >= 7)
begin
set @top = 100 /*200*/
end
else if (@hora >= 19)
begin
set @top = 100 /*500*/
end
else
begin
set @top = 100 /*500*/
end
if (@accion = 'pending')
begin
update top (@top) LN_contrapartes_queue set id_taken = @p_id_taken
where LN_contrapartes_queue.contraparte in (
SELECT TOP (100) LN_contrapartes_queue.contraparte
from LN_contrapartes_queue
inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contrapartes_queue.contraparte
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes_queue.processed = 0
and LN_contraparte_familias.activo = 1
and LN_contrapartes_queue.id_taken in (0,@p_id_taken)
order by LN_contrapartes_queue.created desc )
and LN_contrapartes_queue.processed = 0
and LN_contrapartes_queue.id_taken = 0
/* Si se corre entre las 0 y las 7 horas toma lotes de 5000
despues de las 7 am toma lotes de 200 */
select LN_contrapartes_queue.*, LN_contrapartes.cliente, LN_contraparte_familias.familia,
IIF(ln_contrapartes.servicio_contratado = '73', 'I',IIF (ln_contrapartes.subcontratista = 1, 'S','C')) as cs
from LN_contrapartes_queue
inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contrapartes_queue.contraparte
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes_queue.processed = 0
--and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
and LN_contraparte_familias.activo = 1
and LN_contrapartes_queue.id_taken=@p_id_taken
order by LN_contrapartes_queue.created desc
/*select * from LN_contrapartes_queue where processed = 0 and contraparte in (SELECT distinct contraparte FROM LN_gestiones WHERE cliente = 110864291) order by created desc */
end
if (@accion = 'insert_masivo') begin
insert into ln_contrapartes_queue (contraparte)
select distinct LN_contrapartes.contraparte
from LN_contrapartes
inner join ln_gestiones 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_familias.familia = LN_contraparte_familias.familia
INNER JOIN LN_cliente_productos ON LN_contrapartes.cliente = LN_cliente_productos.cliente
INNER JOIN LN_familia_productos ON LN_familia_productos.familia = LN_contraparte_familias.familia
INNER JOIN LN_productos ON LN_productos.producto = LN_familia_productos.producto
INNER JOIN LN_indicadores ON (LN_indicadores.producto = LN_familia_productos.producto and ln_indicadores.valoracion = 'A')
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes.activo = 1
and ln_gestiones.desde <= getdate() and ln_gestiones.hasta >= getdate()
AND LN_contraparte_familias.activo = 1
and ln_familias.visible = 1
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
/* and LN_contrapartes.cliente NOT in (592432729,3920694,515494256,8484144) /* cliente demo, cortesía, coface,etc*/
and LN_contrapartes.cliente NOT in (806892136,639839799,110864291)
*/
/*--MONSANTO 110864291 --WHIRLPOOL 639839799 -- ASE 806892136 */
/*
and LN_contrapartes.cliente in (select distinct cliente from clientes where estado_cliente='A'
and cli_codigo in (1326,222,829,4117,5776,12345678,2000,10314,5797,12235,9659,5297,1486,5851,2301,2570,5635))
*/
and LN_contrapartes.cliente in (select distinct cliente from clientes where estado_cliente='A'
and cli_codigo in (1326,222,5776,2000,/*5797,*/9659,1486,2301,5635, 5672,5673,12392,10314,3926,6084,4117))
/*select * from clientes where cli_codigo in (1326,222,5776,2000,5797,9659,1486,2301,5635, 5672,5673,12392,10314,3926,6084,4117)*/
and ln_contrapartes.contraparte not in (select distinct contraparte from LN_contrapartes where cliente = 5546348 and servicio_contratado=73)
/*
select cli_codigo,* from clientes where cli_codigo in (1326,222,5776,2000,5797,9659,1486,2301,5635, 5672,5673,12392,10314,3926,2549,6084,4117)
*/
/* coface = ,5297 */
/*and LN_contrapartes.cliente not in (0)*/
/*select * from clientes where cli_codigo in (1326,222,829,4117,5776,12345678,2000,10314,5797,12235)*/
/*select cli_codigo,* from clientes where nombre_cliente like '%valid%'*/
delete ln_contrapartes_queue where processed = 0 and contraparte
in (
select contraparte from ln_contrapartes where cliente /*not in (5546348,2046807993) )*/
in (1226057645,528397,7855254,7048064,65327330,240155302,1659303046,6063454))
/* 07/06/2022: Generación del panel de control de coface. Lo ponemos acá para que se regenere todos los días a la madrugada */
--exec LN_Panel_Control_SAAS_datos 515494256
exec LN_Panel_Control_SAAS_file 515494256
end
if (@accion = 'insert') begin
if (@p_contraparte is not null)
begin
if not exists (select * from LN_contrapartes_queue where contraparte = @p_contraparte and processed = 0)
/* Modificado 22/01/2020 si es prepago y no existe pago aprobado no lo va a insertar para que procese */
insert into LN_contrapartes_queue (contraparte)
select LN_contrapartes.contraparte
from LN_contrapartes
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
--and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
end
if (@p_cuit is not null)
begin
/* Modificado 22/01/2020 si es prepago y no existe pago aprobado no lo va a insertar para que procese */
insert into LN_contrapartes_queue (contraparte)
select a.contraparte from ln_contrapartes a
left outer join pagos_transacciones on a.contraparte = pagos_transacciones.contraparte
where a.id_padron in (select id_padron from padrones where identificacion = @p_cuit)
and not exists (select * from LN_contrapartes_queue b where b.contraparte = a.contraparte and b.processed = 0)
--and iif(a.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
--and not exists (select * from ln_contrapartes_queue c where c.contraparte = a.contraparte and c.processed = 1 and c.created >= dateadd(minute,(-60),getdate()))
end
end
declare @gestion int
if (@accion = 'update') begin
if (@p_queue_id is not null)
update LN_contrapartes_queue set processed = 1, finished = getdate() where queue_id = @p_queue_id
/*
-- NOVIEMBRE 14 2021 NO REMOVER HASTA HABLAR CON ALEJANDRO
UPDATE ln_contraparte_indicadores SEt valor_texto='AA',valor_numerico=1 where indicador in (384) and valor_texto='AA'
UPDATE ln_contraparte_indicadores SEt valor_texto='PR',valor_numerico=2 where indicador in (384) and valor_texto='PR'
UPDATE ln_contraparte_indicadores SEt valor_texto='NA',valor_numerico=3 where indicador in (384) and valor_texto='NA'
UPDATE ln_contraparte_indicadores SEt valor_texto='XX',valor_numerico=4 where indicador in (384) and valor_texto='XX'
-- select * from ln_contraparte_indicadores where indicador in (324)
UPDATE ln_contraparte_indicadores SEt valor_texto='C',valor_numerico=20 where indicador in (324) and valor_texto IS NULL
UPDATE ln_contraparte_indicadores SEt valor_texto='D',valor_numerico=10 where indicador in (324) and valor_texto='10'
UPDATE ln_contraparte_indicadores SEt valor_texto='C',valor_numerico=20 where indicador in (324) and valor_texto='20'
UPDATE ln_contraparte_indicadores SEt valor_texto='D',valor_numerico=30 where indicador in (324) and valor_texto='30'
UPDATE ln_contraparte_indicadores SEt valor_texto='CCC',valor_numerico=40 where indicador in (324) and valor_texto='40'
UPDATE ln_contraparte_indicadores SEt valor_texto='B',valor_numerico=50 where indicador in (324) and valor_texto='50'
UPDATE ln_contraparte_indicadores SEt valor_texto='BB',valor_numerico=60 where indicador in (324) and valor_texto='60'
UPDATE ln_contraparte_indicadores SEt valor_texto='BBB',valor_numerico=70 where indicador in (324) and valor_texto='70'
UPDATE ln_contraparte_indicadores SEt valor_texto='A',valor_numerico=80 where indicador in (324) and valor_texto='80'
UPDATE ln_contraparte_indicadores SEt valor_texto='AA',valor_numerico=90 where indicador in (324) and valor_texto='90'
UPDATE ln_contraparte_indicadores SEt valor_texto='AAA',valor_numerico=100 where indicador in (324) and valor_texto='100'
-- NOVIEMBRE 14 2021 NO REMOVER HASTA HABLAR CON ALEJANDRO
*/
-- 17/11/2021:Si tiene el indicador DICTAMEN_VRM y esta en periodo de tolerancia, lo graba con valor -120 (en tolerancia)
-- (20/12/2021) Lo graba en tolerancia si esta vacio, sino deja el valor que ya tenia...
-- Cuando se pasa del periodo de tolerancia, lo pasa a NO APTO (si tiene el valor en tolerancia)
declare @contraparte int
declare @cliente int
declare @familia int
declare @carga_inicial bit
select @contraparte = contraparte from LN_contrapartes_queue where queue_id = @p_queue_id
select @cliente = cliente, @carga_inicial = carga_inicial from LN_contrapartes where contraparte = @contraparte
select @familia = familia from ln_contraparte_familias where contraparte = @contraparte
select @gestion = gestion from ln_gestiones where contraparte = @contraparte and vigente = 1 and desde <= getdate() and hasta >= getdate()
-- Veo si tiene el producto DICTAMEN_VRM y el indicador DICTAMEN_VRM
declare @numero int = null
declare @texto varchar(100) = null
declare @texto_largo varchar(max) = null
if exists (select * from ln_cliente_productos where cliente = @cliente and producto = 2080 and activo = 1)
and exists (select * from ln_familia_productos where familia = @familia and producto = 2080 and activo = 1)
and exists (select * from ln_cliente_indicadores where cliente = @cliente and indicador = 384 and activo = 1)
begin
-- esta en carga inicial?
if (@carga_inicial = 1)
begin
select @numero = desde, @texto = texto, @texto_largo = texto_largo
from ln_cliente_nivel where indicador = 384 and cliente = @cliente and texto = 'ET' -- En Tolerancia
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = 384)
begin
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created )
VALUES
(@contraparte, @gestion, '384',@numero,@texto,@texto_largo,GETDATE() )
exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','ET'
end
else
begin
--exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','ET'*/
-- (20/12/2021) Lo graba en tolerancia si esta vacio, sino deja el valor que ya tenia...
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = 384 and valor_numerico is null)
begin
exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','ET'
end
end
end
else
begin
-- no esta en carga inicial, y el indicador dice EN TOLERANCIA, lo pasa a NO APTO
select @numero = desde, @texto = texto, @texto_largo = texto_largo
from ln_cliente_nivel where indicador = 384 and cliente = @cliente and texto = 'NA' -- No apto
if exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = 384
and isnull(valor_texto,'ET') = 'ET')
begin
exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','NA'
end
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @contraparte
and gestion = @gestion
and visible = 1
and indicador = 384)
begin
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created )
VALUES
(@contraparte, @gestion, '384',@numero,@texto,@texto_largo,GETDATE() )
exec [LN_indicadores_manual_cliente] @contraparte, 'UPDATE','384','NA'
end
end
end
end
if (@accion = 'indicadores') begin
if (@p_contraparte is not null)
select LN_indicadores.clave_indicador, ln_productos.producto_id,
LN_indicadores.producto, LN_indicadores.indicador,
LN_productos.country_code, identificadores.country_code as pais_contraparte,
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
ISNULL( ISNULL(DATEDIFF(DAY, LN_contraparte_indicadores.modified, getdate()), DATEDIFF(DAY, LN_contraparte_indicadores.created, getdate())) , 100) AS dias,
show = iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0))
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
left outer join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
if (@accion = 'indicadores_scores') begin
if (@p_contraparte is not null)
select LN_contrapartes.contraparte, LN_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
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
--and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
-- and clave_indicador like 'SCORE%' and clave_indicador != 'SCORE_FINAL' and ponderacion != 0
-- 19/04/22:
and ((clave_indicador like 'SCORE%' and ponderacion != 0) OR clave_indicador = 'SCORE_FINAL' )
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
if (@accion = 'indicadores_vrm_score') begin
if (@p_contraparte is not null)
select LN_contrapartes.contraparte, LN_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
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
--and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
and clave_indicador like 'VRM_SCORE%' /*and ponderacion != 0*/
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
if (@accion = 'indicadores_scores_arcor') begin
if (@p_contraparte is not null)
select LN_contrapartes.contraparte, LN_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
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
--and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
and clave_indicador like 'ARCOR_%' /*and ponderacion != 0*/
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
/*
if (@accion = 'indicadores_anteriores') begin
if (isnull(@p_contraparte,'0') != 0)
begin
if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte))
begin
delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte
end
insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
gestion,
producto,
indicador,
clave_indicador,
anterior_nuevo,
actualizado,
valor_numerico,
valor_texto,
valor_memo,
valor_fecha)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'A',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
select 'ok' as estado
end
else
begin
select 'sin contraparte' as estado
end
end
if (@accion = 'indicadores_nuevos') begin
if (isnull(@p_contraparte,'0') != 0)
begin
if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'))
begin
delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'
end
insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
gestion,
producto,
indicador,
clave_indicador,
anterior_nuevo,
actualizado,
valor_numerico,
valor_texto,
valor_memo,
valor_fecha)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
declare @created datetime = getdate()
insert into trazabilidad(texto, cliente, accion, id_plataforma, contraparte, user_id, created,
fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new)
select 'Cambio ' + LN_indicadores.nombre_indicador as texto,
LN_contrapartes.cliente as cliente,
upper(LN_indicadores.clave_indicador) as accion,
'INDICADOR' as id_plataforma,
a.contraparte as contraparte,
null as user_id,
@created as created,
b.actualizado as fecha_old,
b.valor_numerico as valor_numerico_old,
b.valor_texto as valor_texto_old,
b.valor_memo as valor_memo_old,
b.valor_fecha as valor_fecha_old,
a.actualizado as fecha_new,
a.valor_numerico as valor_numerico_new,
a.valor_texto as valor_texto_new,
a.valor_memo as valor_memo_new,
a.valor_fecha as valor_fecha_new
from [LN_contraparte_indicadores_trazabilidad] a -- nuevo
inner join [LN_contraparte_indicadores_trazabilidad] b -- anterior
on (b.contraparte = a.contraparte
and b.gestion = a.gestion
and b.producto = a.producto
and b.indicador = a.indicador)
inner join LN_indicadores on LN_indicadores.indicador = a.indicador and LN_indicadores.producto = a.producto
inner join LN_contrapartes on LN_contrapartes.contraparte = a.contraparte
where a.contraparte = @p_contraparte
and a.anterior_nuevo = 'N'
and b.anterior_nuevo = 'A'
and (
((b.valor_numerico is not null and a.valor_numerico is null) or (b.valor_numerico is null and a.valor_numerico is not null) or b.valor_numerico != a.valor_numerico)
or
((b.valor_texto is not null and a.valor_texto is null) or (b.valor_texto is null and a.valor_texto is not null) or b.valor_texto != a.valor_texto)
or
((b.valor_fecha is not null and a.valor_fecha is null) or (b.valor_fecha is null and a.valor_fecha is not null) or b.valor_fecha != a.valor_fecha)
or
((b.valor_memo is not null and a.valor_memo is null) or (b.valor_memo is null and a.valor_memo is not null) or convert(varchar(max),b.valor_memo) != convert(varchar(max),a.valor_memo))
)
select 'ok' as estado,
ln_contrapartes.cliente,
padrones.identificacion as cuit,
texto as texto,
accion as accion,
convert(varchar,fecha_old, 103) as fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
convert(varchar,fecha_new, 103) as fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new
from trazabilidad
inner join LN_contrapartes on LN_contrapartes.contraparte = trazabilidad.contraparte
inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
where trazabilidad.contraparte = @p_contraparte
and trazabilidad.created = @created
and trazabilidad.id_plataforma = 'INDICADOR'
end
else
begin
select 'sin contraparte' as estado
end
end
*/
declare @killer table (contraparte int, gestion int, detalle varchar(max))
declare @puntos table (contraparte int, gestion int, detalle varchar(max))
if (@accion = 'indicadores_anteriores') begin
if (isnull(@p_contraparte,'0') != 0)
begin
delete from @killer
delete from @puntos
insert into @killer exec LN_score_detalle_killer_ @p_contraparte
insert into @puntos exec LN_score_detalle_puntos_ @p_contraparte
--select * from @puntos
if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte))
begin
delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte
end
insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
gestion,
producto,
indicador,
clave_indicador,
anterior_nuevo,
actualizado,
valor_numerico,
valor_texto,
valor_memo,
valor_fecha,
detalle_killer,
detalle_puntos)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'A',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
/*killer.detalle_killer,
puntos.detalle
*/
iif(LN_indicadores.clave_indicador='SCORE_FINAL',killerSF.detalle,killer.detalle_killer) as detalle_killer,
iif(LN_indicadores.clave_indicador='SCORE_FINAL',puntosSF.detalle,puntos.detalle) as detalle
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
left join ln_score_detalle_killer killer on (killer.contraparte = ln_contrapartes.contraparte
and
killer.gestion = ln_gestiones.gestion
and
killer.indicador = LN_contraparte_indicadores.indicador
and
killer.visible = 1)
left join ln_score_detalle_puntos puntos on (puntos.contraparte = ln_contrapartes.contraparte
and
puntos.gestion = ln_gestiones.gestion
and
puntos.indicador = LN_contraparte_indicadores.indicador
and
puntos.visible = 1)
left join @killer killerSF on killerSF.contraparte = ln_contrapartes.contraparte
left join @puntos puntosSF on puntosSF.contraparte = ln_contrapartes.contraparte
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
select 'ok' as estado
end
else
begin
select 'sin contraparte' as estado
end
end
if (@accion = 'indicadores_nuevos') begin
if (isnull(@p_contraparte,'0') != 0)
begin
delete from @killer
delete from @puntos
insert into @killer exec LN_score_detalle_killer_ @p_contraparte
insert into @puntos exec LN_score_detalle_puntos_ @p_contraparte
--select * from @puntos
if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'))
begin
delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'
end
insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
gestion,
producto,
indicador,
clave_indicador,
anterior_nuevo,
actualizado,
valor_numerico,
valor_texto,
valor_memo,
valor_fecha,
detalle_killer,
detalle_puntos)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
/*killer.detalle_killer,
puntos.detalle
*/
iif(LN_indicadores.clave_indicador='SCORE_FINAL',killerSF.detalle,killer.detalle_killer) as detalle_killer,
iif(LN_indicadores.clave_indicador='SCORE_FINAL',puntosSF.detalle,puntos.detalle) as detalle
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
left join ln_score_detalle_killer killer on (killer.contraparte = ln_contrapartes.contraparte
and
killer.gestion = ln_gestiones.gestion
and
killer.indicador = LN_contraparte_indicadores.indicador
and
killer.visible = 1)
left join ln_score_detalle_puntos puntos on (puntos.contraparte = ln_contrapartes.contraparte
and
puntos.gestion = ln_gestiones.gestion
and
puntos.indicador = LN_contraparte_indicadores.indicador
and
puntos.visible = 1)
left join @killer killerSF on killerSF.contraparte = ln_contrapartes.contraparte
left join @puntos puntosSF on puntosSF.contraparte = ln_contrapartes.contraparte
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
union all
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
null,
null
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion in ('F','C')
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.modified >= getdate()-700
and not exists (select * from trazabilidad where contraparte = @p_contraparte
and id_plataforma = 'INDICADOR'
and accion = upper(LN_indicadores.clave_indicador)
and created >= LN_contraparte_indicadores.modified)
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
declare @created datetime = getdate()
insert into trazabilidad(texto, cliente, accion, id_plataforma, contraparte, user_id, created,
fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
detalle_killer_old,
detalle_puntos_old,
fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new,
detalle_killer_new,
detalle_puntos_new)
select 'Cambio ' + LN_indicadores.nombre_indicador as texto,
LN_contrapartes.cliente as cliente,
upper(LN_indicadores.clave_indicador) as accion,
'INDICADOR' as id_plataforma,
a.contraparte as contraparte,
null as user_id,
@created as created,
b.actualizado as fecha_old,
b.valor_numerico as valor_numerico_old,
b.valor_texto as valor_texto_old,
b.valor_memo as valor_memo_old,
b.valor_fecha as valor_fecha_old,
b.detalle_killer as detalle_killer_old,
b.detalle_puntos as detalle_puntos_old,
a.actualizado as fecha_new,
a.valor_numerico as valor_numerico_new,
a.valor_texto as valor_texto_new,
a.valor_memo as valor_memo_new,
a.valor_fecha as valor_fecha_new ,
a.detalle_killer as detalle_killer_new,
a.detalle_puntos as detalle_puntos_new
from [LN_contraparte_indicadores_trazabilidad] a -- nuevo
left join [LN_contraparte_indicadores_trazabilidad] b -- anterior
on (b.contraparte = a.contraparte
and b.gestion = a.gestion
and b.producto = a.producto
and b.indicador = a.indicador)
inner join LN_indicadores on LN_indicadores.indicador = a.indicador and LN_indicadores.producto = a.producto
inner join LN_contrapartes on LN_contrapartes.contraparte = a.contraparte
where a.contraparte = @p_contraparte
and a.anterior_nuevo = 'N'
and isnull(b.anterior_nuevo,'A') = 'A'
and (
((b.valor_numerico is not null and a.valor_numerico is null) or (b.valor_numerico is null and a.valor_numerico is not null) or b.valor_numerico != a.valor_numerico)
or
((b.valor_texto is not null and a.valor_texto is null) or (b.valor_texto is null and a.valor_texto is not null) or b.valor_texto != a.valor_texto)
or
((b.valor_fecha is not null and a.valor_fecha is null) or (b.valor_fecha is null and a.valor_fecha is not null) or b.valor_fecha != a.valor_fecha)
or
((b.valor_memo is not null and a.valor_memo is null) or (b.valor_memo is null and a.valor_memo is not null) or convert(varchar(max),b.valor_memo) != convert(varchar(max),a.valor_memo))
)
select 'ok' as estado,
ln_contrapartes.cliente,
padrones.identificacion as cuit,
texto as texto,
accion as accion,
convert(varchar,fecha_old, 103) as fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
detalle_killer_old,
detalle_puntos_old,
convert(varchar,fecha_new, 103) as fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new,
detalle_killer_new,
detalle_puntos_new
from trazabilidad
inner join LN_contrapartes on LN_contrapartes.contraparte = trazabilidad.contraparte
inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
where trazabilidad.contraparte = @p_contraparte
and trazabilidad.created = @created
and trazabilidad.id_plataforma = 'INDICADOR'
end
else
begin
select 'sin contraparte' as estado
end
end
-- Dada la contraparte, clave indicador, familia guarda en la tabla contraparte_indicadores el dato de la famillia a la que pertenecía al momento de ser calculado el indicador.
if(@accion = 'actualizar_familia') begin
if (@p_contraparte is not null AND @p_clave_indicador is not null AND @p_familia is not null) begin
update LN_contraparte_indicadores set familia = @p_familia
from LN_contraparte_indicadores
inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
inner join LN_gestiones on (LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
where LN_indicadores.clave_indicador = @p_clave_indicador
and LN_contraparte_indicadores.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
end
end
declare @indicador int = null
declare @indicadores table (clave_indicador varchar(100),
prod varchar(50),
producto int,
indicador int, country_code varchar(10),
pais_contratante varchar(100), actualizado datetime,
dias int, show int)
/* 18/03/2022: Se agregan 2 acciones
'indicadores_manuales': Busca si la contraparte tienen indicadores no automáticos
'completa_indicadores': Si algún indicador que se muestra en el panel (en la tabla LN_indicadores visible = 1)
no está en la tabla ln_contraparte_indicadores lo inserta con los valores nulos
Esto es para que si aún no se puede calcular, el registro esté (y lo mostremos en el panel, como aún no calculado)
Si al calcularlo obtiene valor va a hacer el update de ese mismo registro
*/
if (@accion = 'indicadores_manuales' and @p_contraparte is not null ) begin
select LN_indicadores.clave_indicador, ln_productos.producto_id,
LN_indicadores.producto, LN_indicadores.indicador,
LN_productos.country_code, identificadores.country_code as pais_contraparte,
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
ISNULL( ISNULL(DATEDIFF(DAY, LN_contraparte_indicadores.modified, getdate()), DATEDIFF(DAY, LN_contraparte_indicadores.created, getdate())) , 100) AS dias,
show = iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0))
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
-- 6/1/2021
-- Puede ser que la familia no tenga el producto, pero que el producto sea OBLIGATARIO para todas las familias,
-- por eso usamos left join, y despues lo controlamos en el where
left join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_cliente_productos.producto = LN_indicadores.producto
--inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
-- AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
left outer join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
/*Agregado para que tenga en cuenta la suscripcion*/
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
) SUSC
ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador)
/**/
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion != 'A'
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
-- 6/1/2021
AND (LN_familia_productos.activo = 1 or LN_productos.todas_familias = 1)
-- Que la familia tenga el producto, o que el producto sea OBLIGATARIO para todas las familias
/*Agregado para que tenga en cuenta la suscripcion*/
and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
or ISNULL(LN_productos.suscribe_indicadores, 0) = 0)
/**/
and iif(LN_productos.country_code IS NULL, 1, iif(LN_productos.country_code = identificadores.country_code, 1, 0)) = 1
order by LN_cliente_productos.orden_producto, LN_indicadores.orden
end
if(@accion = 'completa_indicadores' and @p_contraparte is not null ) begin
insert into @indicadores
exec LN_contrapartes_queue_ 'indicadores', NULL, @p_contraparte
insert into @indicadores
exec LN_contrapartes_queue_ 'indicadores_manuales', NULL, @p_contraparte
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, visible, created,familia)
select G.contraparte, G.gestion, I.indicador, 1, GETDATE(), F.familia
from LN_gestiones G
inner join @indicadores I on 1=1
inner join LN_contraparte_familias F on (F.contraparte = G.contraparte and F.activo = 1)
inner join LN_indicadores IND on (IND.indicador = I.indicador and IND.visible = 1)
where G.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE()
and G.vigente = 1
and not exists (SELECT indicador
FROM LN_contraparte_indicadores CI
WHERE CI.indicador = I.indicador
AND CI.contraparte = @p_contraparte
AND CI.gestion = G.gestion
AND CI.visible = 1)
end
/* Fin 18/03/2022 */
-- si en la tabla ln_contraparte_indicadores hay indicadores de calculo automatico que ya no le corresponden,
-- lo pasa como no visible
-- O si no son de la familia actual, lo pasa a no visible
if(@accion = 'indicadores_novisibles' and @p_contraparte is not null ) begin
-- Que no sean de la familia actual:
update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
where contraparte = @p_contraparte
and gestion in ( select G.gestion from LN_gestiones G
where G.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE())
and familia not in (select F.familia from ln_contraparte_familias F
where F.contraparte = @p_contraparte and F.activo = 1)
and (select valoracion from LN_indicadores
where indicador = ln_contraparte_indicadores.indicador) = 'A'
-- Que sean indicadores que ya no le corresponden:
insert into @indicadores
exec LN_contrapartes_queue_ 'indicadores', NULL, @p_contraparte
DECLARE C_Ind CURSOR FOR
select distinct CI.gestion, CI.indicador
from LN_contraparte_indicadores CI
inner join LN_gestiones G on (G.contraparte = CI.contraparte and G.gestion = CI.gestion)
inner join LN_Indicadores I on I.indicador = CI.indicador
where CI.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE()
and I.valoracion = 'A'
and CI.visible = 1
and CI.indicador not in (select indicador from @indicadores)
OPEN C_Ind
FETCH NEXT FROM C_Ind INTO @gestion, @indicador
WHILE @@fetch_status = 0
BEGIN
update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
where contraparte = @p_contraparte
and gestion = @gestion
and indicador = @indicador
FETCH NEXT FROM C_Ind INTO @gestion, @indicador
END
CLOSE C_Ind
DEALLOCATE C_Ind
end
-- si en la tabla ln_contraparte_indicadores hay indicadores de calculo automatico que ya no le corresponden,
-- lo borra
-- O si no son de la familia actual, tambien los borra
-- Si tiene indicadores que estaban en visible = 0, tambien los borra
-- Los borramos para que llegado el caso que haya que calcularlos nuevamente,
-- no de conficto de clave duplicada por contraparte - gestion - indicador
if(@accion = 'indicadores_delete' and @p_contraparte is not null ) begin
-- Que esten como no visibles:
delete from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion in ( select G.gestion from LN_gestiones G
where G.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE())
and visible = 0
and (select valoracion from LN_indicadores
where indicador = ln_contraparte_indicadores.indicador) = 'A'
-- Que no sean de la familia actual:
-- update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
delete from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion in ( select G.gestion from LN_gestiones G
where G.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE())
and familia not in (select F.familia from ln_contraparte_familias F
where F.contraparte = @p_contraparte and F.activo = 1)
and (select valoracion from LN_indicadores
where indicador = ln_contraparte_indicadores.indicador) = 'A'
-- Que sean indicadores que ya no le corresponden:
insert into @indicadores
exec LN_contrapartes_queue_ 'indicadores', NULL, @p_contraparte
DECLARE C_Ind CURSOR FOR
select distinct CI.gestion, CI.indicador
from LN_contraparte_indicadores CI
inner join LN_gestiones G on (G.contraparte = CI.contraparte and G.gestion = CI.gestion)
inner join LN_Indicadores I on I.indicador = CI.indicador
where CI.contraparte = @p_contraparte
and G.desde <= GETDATE()
and G.hasta >= GETDATE()
and I.valoracion = 'A'
and CI.visible = 1
and CI.indicador not in (select indicador from @indicadores)
OPEN C_Ind
FETCH NEXT FROM C_Ind INTO @gestion, @indicador
WHILE @@fetch_status = 0
BEGIN
--update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
delete from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gestion
and indicador = @indicador
FETCH NEXT FROM C_Ind INTO @gestion, @indicador
END
CLOSE C_Ind
DEALLOCATE C_Ind
end
END
GO
Depends On
25- dbo.LN_contrapartes_queue_
- dbo.LN_indicadores_manual_cliente
- dbo.LN_Panel_Control_SAAS_file
- dbo.LN_score_detalle_killer_
- dbo.LN_score_detalle_puntos_
- dbo.clientes
- dbo.identificadores
- dbo.LN_cliente_indicadores
- dbo.LN_cliente_nivel
- dbo.LN_cliente_productos
- dbo.LN_contraparte_familias
- dbo.LN_contraparte_indicadores
- dbo.LN_contraparte_indicadores_trazabilidad
- dbo.LN_contrapartes
- dbo.LN_contrapartes_queue
- dbo.LN_familia_productos
- dbo.LN_familias
- dbo.LN_gestiones
- dbo.LN_indicadores
- dbo.LN_productos
- dbo.ln_score_detalle_killer
- dbo.ln_score_detalle_puntos
- dbo.padrones
- dbo.pagos_transacciones
- dbo.trazabilidad
Used By
No items found