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
-- exec LN_contrapartes_queue_ 'insert_masivo'
-- ============================================
--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',null,null,null,null,null,800
select * from ln_contraparte_indicadores_trazabilidad where contraparte = 95
EXEC LN_contrapartes_queue_ 'archivos_json_pendiente'
EXEC LN_contrapartes_queue_ 'indicadores_nuevos', NULL, 180111
*/
CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_queue_
-- 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 = 200
end
else if (@hora >= 19)
begin
set @top = 500
end
else
begin
set @top = 500
end
if (@accion = 'pending')
begin
----------------------------------------------------------------------------------------------------------------
-- 17/07/2024
-- Si se inactivó alguna contraparte, o se inactivó su familia, o el cliente no tiene el producto =>
-- las saco del queue poniendolas como procesadas (marcandolas con la fecha finished = '1901-01-01')
IF (select count(*) as no_procesables
from ln_contrapartes_queue Q
left join LN_contrapartes C on (C.contraparte = Q.contraparte)
left join ln_contraparte_familias CF on (CF.contraparte = Q.contraparte and isnull(CF.activo,1) = 1)
left join ln_familias F on (F.familia = CF.familia)
left join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = C.servicio_contratado)
where Q.id_taken = @p_id_taken and Q.processed = 0
and (isnull(C.activo,0) = 0 or isnull(F.visible,0) = 0 or isnull(CP.activo,0) = 0)) > 0
begin
update ln_contrapartes_queue set processed = 1, finished = '1901-01-01'
where queue_id in
(
select Q.queue_id
from ln_contrapartes_queue Q
left join LN_contrapartes C on (C.contraparte = Q.contraparte)
left join ln_contraparte_familias CF on (CF.contraparte = Q.contraparte and isnull(CF.activo,1) = 1)
left join ln_familias F on (F.familia = CF.familia)
left join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = C.servicio_contratado)
where Q.id_taken = @p_id_taken and Q.processed = 0
and (isnull(C.activo,0) = 0 or isnull(F.visible,0) = 0 or isnull(CP.activo,0) = 0))
end
----------------------------------------------------------------------------------------------------------------
set @top = 200
/* Si se corre entre las 0 y las 7 horas toma lotes de 500 despues de las 7 am toma lotes de 200 */
select top (@top)
LN_contrapartes_queue.*, LN_contrapartes.cliente, LN_contraparte_familias.familia,
IIF(ln_contrapartes.servicio_contratado = '10','V',
(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
inner join clientes_productos CP on (CP.cliente = LN_contrapartes.cliente and CP.id_producto in (47,73,10) and CP.activo = 1 and CP.id_producto = LN_contrapartes.servicio_contratado)
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes_queue.processed = 0
and LN_contraparte_familias.activo in (1,0)
and LN_contrapartes_queue.id_taken=@p_id_taken
order by CP.queue_prioridad asc, LN_contrapartes.cliente, LN_contrapartes_queue.created desc
end
if (@accion = 'archivos_json_pendiente')
begin
select distinct cliente from PANEL_CONTROL_JSON_TERMINADO
end
if (@accion = 'insert_masivo_NO')
begin
select top 10 C.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken,CP.queue_prioridad
from LN_contrapartes C
inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
inner join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = 47 and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where C.activo = 1 and C.servicio_contratado = 47 and C.subcontratista=0
end
DECLARE @vidreg int
DECLARE @Counter INT
declare @fech date = getdate()-1 --'2023-08-03 00:00:00'
if (@accion = 'insert_masivo_16072024')
begin
/*PRIMERO BORRAMOS TODO EL HISTORIAL DE LA TABLA DE JSON PARA CUANDO SE TENGA QUE GENERAR EL MISMO SEA EL REFLEJO DE LO ACTUAL */
--DECLARE @vidreg int
DECLARE C_TerminosTask CURSOR FOR
select count(idrow) / 100000 from PANEL_CONTROL_JSON where contraparte in (select distinct C.contraparte
from LN_contrapartes C
/* inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
*/ inner join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = 47 and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where /*C.activo = 1 and*/ C.servicio_contratado = 47 and C.subcontratista=0)
OPEN C_TerminosTask
FETCH NEXT FROM C_TerminosTask INTO @vidreg
WHILE @@fetch_status = 0
BEGIN
--DECLARE @Counter INT
SET @Counter=0
WHILE (@Counter <= @vidreg)
begin
select @Counter as cont,@vidreg as idreg
delete PANEL_CONTROL_JSON where idrow in (
select top 100000 idrow from PANEL_CONTROL_JSON where contraparte in (select distinct C.contraparte
from LN_contrapartes C
/* inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
*/ inner join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = 47 and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where/* C.activo = 1 and*/ C.servicio_contratado = 47 and C.subcontratista=0))
set @Counter = @Counter + 1
WAITFOR DELAY '00:00:02:000';
end
FETCH NEXT FROM C_TerminosTask INTO @vidreg
END
CLOSE C_TerminosTask
DEALLOCATE C_TerminosTask
/* FIN DE PRIMERO BORRAMOS TODO EL HISTORIAL DE LA TABLA DE JSON PARA CUANDO SE TENGA QUE GENERAR EL MISMO SEA EL REFLEJO DE LO ACTUAL */
SET @fech = getdate()-1 --'2023-08-03 00:00:00'
exec LN_Panel_Control_SAAS_file 515494256
/* 16/08/2023: va depurando esta tabla por dia, porque crece mucho y cuelga el queue,
pero dejamos los ultimos registros porque se usan para los mails de cambios de score */
delete from [LN_contraparte_indicadores_trazabilidad] where actualizado < getdate() -1
insert into ln_contrapartes_queue (contraparte,id_taken)
/* declare @fech date = getdate()-1 --'2023-08-03 00:00:00'*/
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from ln_contrapartes where activo = 1
and cliente in (515494256)
and id_padron in (select id_padron from padrones where identificacion
in (select distinct cuit from monitoreos_resultados where fecha = @fech
union
select distinct cuit from apocrifas where publicado between getdate()-30 and @fech
))
/* Manda al queue las contrapartes que no se mandaron y tienen cheques rechazados nuevos */
UNION
select distinct sel.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from
(select distinct contraparte
from LN_contrapartes c
inner join padrones p on p.id_padron = c.id_padron
inner join chequesbcra h on ((h.cuit_firmante = p.identificacion or h.Cuit_relacionado = p.identificacion) and h.visible = 1 and h.created > @fech)
where c.activo = 1 and c.subcontratista = 0
and c.cliente = 515494256
) sel
UNION
/* 3-11-2023 agregamos subcontratistas vigentes de amx */
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken from LN_contrapartes
where cliente = 5546348
and activo=1 and servicio_contratado=47 and subcontratista=1 and vigencia_desde <= getdate() and vigencia_hasta >= getdate() /*and contraparte not in (select distinct contraparte from ln_contrapartes_queue where finished > getdate()-1)*/
/**/
union
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contraparte_familias where contraparte in (SELECT LN_CONTRAPARTES.contraparte FROM LN_CONTRAPARTES
inner join ln_gestiones on ln_gestiones.contraparte = LN_contrapartes.contraparte
WHERE activo=1 and servicio_contratado=73 and subcontratista=0 and LN_gestiones.vigente = 1
)
union
/* 31/05/2024 se puso esto */
-- declare @fech date = getdate()-1 --'2023-08-03 00:00:00'
select C.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contrapartes C
inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
inner join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto in (47,73) and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where C.activo = 1 and C.servicio_contratado in (47,73) and C.subcontratista=0
/* and CP.queue_prioridad < 50
order by CP.queue_prioridad,C.cliente
*/
end
/* 16/07/2024: Sacamos los UNION para insertar en ln_contrapartes_queue, porque se deplicaba la misma contraparte
hacemos todos insert separados, controlando que no esté la misma contraparte con processed = 0 */
if (@accion = 'insert_masivo')
begin
/*PRIMERO BORRAMOS TODO EL HISTORIAL DE LA TABLA DE JSON PARA CUANDO SE TENGA QUE GENERAR EL MISMO SEA EL REFLEJO DE LO ACTUAL */
--DECLARE @vidreg int
DECLARE C_TerminosTask CURSOR FOR
select count(idrow) / 100000 from PANEL_CONTROL_JSON where contraparte in (select distinct C.contraparte
from LN_contrapartes C
/* inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
*/ inner join clientes_productos CP on (CP.cliente = C.cliente and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where /*C.activo = 1 and*/ C.servicio_contratado = 47 and C.subcontratista=0)
OPEN C_TerminosTask
FETCH NEXT FROM C_TerminosTask INTO @vidreg
WHILE @@fetch_status = 0
BEGIN
--DECLARE @Counter INT
SET @Counter=0
WHILE (@Counter <= @vidreg)
begin
select @Counter as cont,@vidreg as idreg
delete PANEL_CONTROL_JSON where idrow in (
select top 100000 idrow from PANEL_CONTROL_JSON where contraparte in (select distinct C.contraparte
from LN_contrapartes C
/* inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
*/ inner join clientes_productos CP on (CP.cliente = C.cliente and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where/* C.activo = 1 and*/ C.servicio_contratado = 47 and C.subcontratista=0))
set @Counter = @Counter + 1
WAITFOR DELAY '00:00:02:000';
end
FETCH NEXT FROM C_TerminosTask INTO @vidreg
END
CLOSE C_TerminosTask
DEALLOCATE C_TerminosTask
/* FIN DE PRIMERO BORRAMOS TODO EL HISTORIAL DE LA TABLA DE JSON PARA CUANDO SE TENGA QUE GENERAR EL MISMO SEA EL REFLEJO DE LO ACTUAL */
SET @fech = getdate()-1 --'2023-08-03 00:00:00'
exec LN_Panel_Control_SAAS_file 515494256
/* Subcontratistas AMX a enriquecer
Se puso acá en el insert_masivo, porque hay que correrlo todos los días
- se cargan las altas del dia anterior
- el dia 1 de cada mes se cargan los que cumplen 3 meses
*/
exec [Subcontratistas_enriquecer_] 'INSERT',5546348
/* 25/09/2024: Los dias 26 del mes carga todas las contrapartes con el producto mis_aportes en la tabla mis_aportes_procesar
Los demás días del mes, las contrapartes dadas de alta en las últimas 24 hs. */
exec mis_aportes_procesar_ 'insert'
/* 12/12/2024: Busca nuevas contrapartes o nuevos CUITs en monitoreos cargados en el dia de ayer para que entren en el proceso de buscar contancias */
exec [padron_constancia_] 'insert'
/* 30/10/2024: Busca las columnas que tiene que tener el excel de cada cliente
(por si hubo algun cambio de qué indicadores tiene, lo regenera todos los días) */
declare @cliente_excel int, @servicio_excel int
DECLARE C_titulos_excel CURSOR FOR
select distinct cliente, servicio from PANEL_CONTROL_EXCEL_TITULOS
OPEN C_titulos_excel
FETCH NEXT FROM C_titulos_excel INTO @cliente_excel, @servicio_excel
WHILE @@fetch_status = 0
BEGIN
exec [PANEL_CONTROL_EXCEL_] 'TITULOS', @cliente_excel, @servicio_excel,null,0,1
FETCH NEXT FROM C_titulos_excel INTO @cliente_excel, @servicio_excel
END
CLOSE C_titulos_excel
DEALLOCATE C_titulos_excel
/* 18/02/2025: Graba los controles de carga de edictos y concursos y quiebras */
declare @ayer date = GETDATE()-1
exec [Sp_control_cyq] @ayer, @ayer
exec [Sp_control_edictos] @ayer, @ayer
/* 16/08/2023: va depurando esta tabla por dia, porque crece mucho y cuelga el queue,
pero dejamos los ultimos registros porque se usan para los mails de cambios de score */
delete from [LN_contraparte_indicadores_trazabilidad] where actualizado < getdate() -1
insert into ln_contrapartes_queue (contraparte,id_taken)
select contraparte, 1.0 + floor(5 * RAND(convert(varbinary, newid()))) as id_taken
from ln_contrapartes where activo = 1
and cliente in (515494256)
and id_padron in (select id_padron from padrones where identificacion
in (select distinct cuit from monitoreos_resultados where fecha = @fech
union
select distinct cuit from apocrifas where publicado between getdate()-30 and @fech)
)
and not exists (select * from ln_contrapartes_queue q where q.contraparte = ln_contrapartes.contraparte and q.processed = 0)
/* 04/10/2024: Manda al queue las contrapartes de Coface que tienen aprobacion formal o fiscal rechazado,
para ver si ahora da aprobado (por ej. ya tiene mas de 2 años de antigüedad) */
insert into ln_contrapartes_queue (contraparte,id_taken)
select distinct ln_contrapartes.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from ln_contrapartes
inner join ln_gestiones on (ln_gestiones.contraparte = ln_contrapartes.contraparte and ln_gestiones.vigente = 1)
inner join ln_contraparte_indicadores
on (ln_contraparte_indicadores.gestion = ln_gestiones.gestion and ln_contraparte_indicadores.indicador in (245,246)
and ln_contraparte_indicadores.valor_numerico = -100)
where ln_contrapartes.activo = 1
and ln_contrapartes.cliente in (515494256)
and not exists (select * from ln_contrapartes_queue q where q.contraparte = ln_contrapartes.contraparte and q.processed = 0)
/* Manda al queue las contrapartes que no se mandaron y tienen cheques rechazados nuevos */
--
--UNION
insert into ln_contrapartes_queue (contraparte,id_taken)
select distinct sel.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from
(select distinct contraparte
from LN_contrapartes c
inner join padrones p on p.id_padron = c.id_padron
inner join chequesbcra h on ((h.cuit_firmante = p.identificacion or h.Cuit_relacionado = p.identificacion) and h.visible = 1 and h.created > @fech)
where c.activo = 1 and c.subcontratista = 0
and c.cliente = 515494256
and not exists (select * from ln_contrapartes_queue q where q.contraparte = c.contraparte and q.processed = 0)
) sel
--UNION
insert into ln_contrapartes_queue (contraparte,id_taken)
/* 3-11-2023 agregamos subcontratistas vigentes de amx */
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken from LN_contrapartes
where cliente = 5546348
and activo=1 and servicio_contratado=47 and subcontratista=1 and vigencia_desde <= getdate() and vigencia_hasta >= getdate() /*and contraparte not in (select distinct contraparte from ln_contrapartes_queue where finished > getdate()-1)*/
and not exists (select * from ln_contrapartes_queue q where q.contraparte = ln_contrapartes.contraparte and q.processed = 0)
/**/
--UNION
insert into ln_contrapartes_queue (contraparte,id_taken)
/* Contrapartes de imperium */
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contraparte_familias
where contraparte in (SELECT LN_CONTRAPARTES.contraparte FROM LN_CONTRAPARTES
inner join ln_gestiones on ln_gestiones.contraparte = LN_contrapartes.contraparte
inner join clientes_productos CP on (CP.cliente = LN_CONTRAPARTES.cliente and
CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = LN_CONTRAPARTES.servicio_contratado)
WHERE LN_CONTRAPARTES.activo=1 and LN_CONTRAPARTES.servicio_contratado=73 and
LN_CONTRAPARTES.subcontratista=0 and LN_gestiones.vigente = 1
and not exists (select * from ln_contrapartes_queue q where q.contraparte = ln_contrapartes.contraparte and q.processed = 0)
)
--UNION
insert into ln_contrapartes_queue (contraparte,id_taken)
/* 31/05/2024 se puso esto: Toma clientes ACTIVOS y que no tengan la marca de NO_QUEUE */
select C.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contrapartes C
inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
inner join clientes_productos CP on (CP.cliente = C.cliente and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where C.activo = 1 and C.servicio_contratado in (47,73) and C.subcontratista=0
and not exists (select * from ln_contrapartes_queue q where q.contraparte = c.contraparte and q.processed = 0)
/* and CP.queue_prioridad < 50
order by CP.queue_prioridad,C.cliente
*/
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
/* 07/12/2022 */
inner join clientes on (clientes.cliente = LN_contrapartes.cliente and clientes.estado_cliente = 'A'/* and clientes.cli_codigo in (1326,222,5776,2000,9659,1486,2301,5635, 5672,5673,12392,10314,3926,6084,4117)*/)
inner join clientes_productos on (clientes_productos.cliente = LN_contrapartes.cliente and clientes_productos.id_producto = LN_contrapartes.servicio_contratado and clientes_productos.activo = 1)
/**/
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)
/* 07/12/2022 */
/*and LN_contrapartes.servicio_contratado in (47,73)
and ln_contrapartes.cliente = 0 */
and LN_contrapartes.cliente not in (
110864291, --MONSANTO ARGENTINA S.A.
1313127297, --NOVARTIS ARGENTINA S.A
882192574, --SAPORITI S.A.
42014167, --BANCO INDUSTRIAL S.A.
1421956540, --MAPFRE ARGENTINA SEGUROS S.A.(P.L.A.)
1310336827, --SIEMENS S. A.
7667652, --ULMA ANDAMIOS Y ENCOFRADOS ARGENTINA S.A.
1328875763, --LA GAUCHITA S.A.
806892136, --ACCION SOCIAL DE EMPRESARIOS A.S.E
515494256, --COFACE SERVICIOS ARGENTINA S. A.
3920694, --CLIENTE DEMO
7855254, --VALID SOLUCIONES Y SERVICIOS DE SEGURIDAD EN MEDIOS DE PAGO E IDENTIFICACIÓN S.A.
5026361, --IRAM INSTITUTO ARG.DE NORMALIZACION Y CERTIFICACION
103974506, --USUARIO REMOTO - SIDI - MARIA SORIA
3282956, --GLOBAL DATA CENTER S.A.S.
5258149, --FRIC ROT S.A.I.C.
1836678, --Johnson Controls International Plc
2254875, --FIDELITAS SA
/*1853132042,*/ /*ROMIKIN S.A.*/
1837069565, --ALGODONERA ACONCAGUA S.A.
1811919445, --WORLDSYS S.A.
592432729, --CLIENTE DE CORTESIA
8484144, --EMPRESA MODELO
601116452, --ALEID RAMI
1745156, --MINERA AGUA RICA LLC (SUC ARGENTINA)
7075221 --Aval Digital
)
/**/
/* lo sacamos el 07/12/2022: en el not in de arriba dejamos afuera los clientes que no queremos
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 top 1 * 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,id_taken)
select LN_contrapartes.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contrapartes
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
and LN_contrapartes.activo = 1
--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,id_taken)
select a.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from ln_contrapartes a
left outer join pagos_transacciones on a.contraparte = pagos_transacciones.contraparte
where a.activo = 1
and a.id_padron in (select id_padron from padrones where identificacion = @p_cuit)
and not exists (select top 1 * 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
declare @cliente 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 @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 top 1 * from ln_cliente_productos where cliente = @cliente and producto = 2080 and activo = 1)
and exists (select top 1 * from ln_familia_productos where familia = @familia and producto = 2080 and activo = 1)
and exists (select top 1 * 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
/* 27/08/2024: Agregamos que tambien tome los 'D' Dependientes, porque cuando algo se actualiza por BD no calcula los indicadores dependientes */
and LN_indicadores.valoracion in ( 'A' , 'D' )
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 top 1 * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and visible = 1))
begin
--delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte
update [LN_contraparte_indicadores_trazabilidad] set visible = 0 where contraparte = @p_contraparte and visible = 1
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, visible)
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, 1
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 top 1 * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N' and visible = 1))
begin
--delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'
update [LN_contraparte_indicadores_trazabilidad] set visible = 0 where contraparte = @p_contraparte and anterior_nuevo = 'N' and visible = 1
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,
visible)
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, 1
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, 1
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 top 1 * 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 and b.visible = 1)
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 a.visible = 1
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))
)
/* 02/05/2023 PRUEBA!! */
--insert into LN_contrapartes_queue(contraparte) values (196593)
--if (@p_contraparte = 196593) set @created = '2023-03-14 16:36:38.987'
/* SACAR esto de arriba */
select distinct '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,
convert(varchar(max),valor_memo_old) as valo_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,
convert(varchar(max),valor_memo_new) as 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:
if exists(select top 1 * 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')
begin
--delete from LN_contraparte_indicadores
update LN_contraparte_indicadores set gestion = 0
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'
end
-- Que no sean de la familia actual:
-- update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
if exists(select top 1 * 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')
begin
--delete from LN_contraparte_indicadores
update LN_contraparte_indicadores set gestion = 0
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'
end
-- 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
update LN_contraparte_indicadores set gestion = 0
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
if(@accion = 'indicadores_autocompletar' and @p_contraparte is not null )
begin
declare @servicio_contratado int = null
select @cliente = cliente, @servicio_contratado = servicio_contratado
from LN_contrapartes where contraparte = @p_contraparte
if exists (select top 1 * from LN_indicadores_autocompletar i
where i.cliente = @cliente and i.servicio_contratado = @servicio_contratado)
begin
EXEC [LN_indicadores_autocompletar_] @p_contraparte
end
end
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- exec LN_contrapartes_queue_ 'indicadores_scores',NULL,147069
-- exec LN_contrapartes_queue_ 'insert_masivo'
-- ============================================
--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',null,null,null,null,null,800
select * from ln_contraparte_indicadores_trazabilidad where contraparte = 95
EXEC LN_contrapartes_queue_ 'archivos_json_pendiente'
EXEC LN_contrapartes_queue_ 'indicadores_nuevos', NULL, 180111
*/
CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_queue_
-- 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 = 200
end
else if (@hora >= 19)
begin
set @top = 500
end
else
begin
set @top = 500
end
if (@accion = 'pending')
begin
----------------------------------------------------------------------------------------------------------------
-- 17/07/2024
-- Si se inactivó alguna contraparte, o se inactivó su familia, o el cliente no tiene el producto =>
-- las saco del queue poniendolas como procesadas (marcandolas con la fecha finished = '1901-01-01')
IF (select count(*) as no_procesables
from ln_contrapartes_queue Q
left join LN_contrapartes C on (C.contraparte = Q.contraparte)
left join ln_contraparte_familias CF on (CF.contraparte = Q.contraparte and isnull(CF.activo,1) = 1)
left join ln_familias F on (F.familia = CF.familia)
left join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = C.servicio_contratado)
where Q.id_taken = @p_id_taken and Q.processed = 0
and (isnull(C.activo,0) = 0 or isnull(F.visible,0) = 0 or isnull(CP.activo,0) = 0)) > 0
begin
update ln_contrapartes_queue set processed = 1, finished = '1901-01-01'
where queue_id in
(
select Q.queue_id
from ln_contrapartes_queue Q
left join LN_contrapartes C on (C.contraparte = Q.contraparte)
left join ln_contraparte_familias CF on (CF.contraparte = Q.contraparte and isnull(CF.activo,1) = 1)
left join ln_familias F on (F.familia = CF.familia)
left join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = C.servicio_contratado)
where Q.id_taken = @p_id_taken and Q.processed = 0
and (isnull(C.activo,0) = 0 or isnull(F.visible,0) = 0 or isnull(CP.activo,0) = 0))
end
----------------------------------------------------------------------------------------------------------------
set @top = 200
/* Si se corre entre las 0 y las 7 horas toma lotes de 500 despues de las 7 am toma lotes de 200 */
select top (@top)
LN_contrapartes_queue.*, LN_contrapartes.cliente, LN_contraparte_familias.familia,
IIF(ln_contrapartes.servicio_contratado = '10','V',
(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
inner join clientes_productos CP on (CP.cliente = LN_contrapartes.cliente and CP.id_producto in (47,73,10) and CP.activo = 1 and CP.id_producto = LN_contrapartes.servicio_contratado)
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes_queue.processed = 0
and LN_contraparte_familias.activo in (1,0)
and LN_contrapartes_queue.id_taken=@p_id_taken
order by CP.queue_prioridad asc, LN_contrapartes.cliente, LN_contrapartes_queue.created desc
end
if (@accion = 'archivos_json_pendiente')
begin
select distinct cliente from PANEL_CONTROL_JSON_TERMINADO
end
if (@accion = 'insert_masivo_NO')
begin
select top 10 C.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken,CP.queue_prioridad
from LN_contrapartes C
inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
inner join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = 47 and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where C.activo = 1 and C.servicio_contratado = 47 and C.subcontratista=0
end
DECLARE @vidreg int
DECLARE @Counter INT
declare @fech date = getdate()-1 --'2023-08-03 00:00:00'
if (@accion = 'insert_masivo_16072024')
begin
/*PRIMERO BORRAMOS TODO EL HISTORIAL DE LA TABLA DE JSON PARA CUANDO SE TENGA QUE GENERAR EL MISMO SEA EL REFLEJO DE LO ACTUAL */
--DECLARE @vidreg int
DECLARE C_TerminosTask CURSOR FOR
select count(idrow) / 100000 from PANEL_CONTROL_JSON where contraparte in (select distinct C.contraparte
from LN_contrapartes C
/* inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
*/ inner join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = 47 and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where /*C.activo = 1 and*/ C.servicio_contratado = 47 and C.subcontratista=0)
OPEN C_TerminosTask
FETCH NEXT FROM C_TerminosTask INTO @vidreg
WHILE @@fetch_status = 0
BEGIN
--DECLARE @Counter INT
SET @Counter=0
WHILE (@Counter <= @vidreg)
begin
select @Counter as cont,@vidreg as idreg
delete PANEL_CONTROL_JSON where idrow in (
select top 100000 idrow from PANEL_CONTROL_JSON where contraparte in (select distinct C.contraparte
from LN_contrapartes C
/* inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
*/ inner join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto = 47 and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where/* C.activo = 1 and*/ C.servicio_contratado = 47 and C.subcontratista=0))
set @Counter = @Counter + 1
WAITFOR DELAY '00:00:02:000';
end
FETCH NEXT FROM C_TerminosTask INTO @vidreg
END
CLOSE C_TerminosTask
DEALLOCATE C_TerminosTask
/* FIN DE PRIMERO BORRAMOS TODO EL HISTORIAL DE LA TABLA DE JSON PARA CUANDO SE TENGA QUE GENERAR EL MISMO SEA EL REFLEJO DE LO ACTUAL */
SET @fech = getdate()-1 --'2023-08-03 00:00:00'
exec LN_Panel_Control_SAAS_file 515494256
/* 16/08/2023: va depurando esta tabla por dia, porque crece mucho y cuelga el queue,
pero dejamos los ultimos registros porque se usan para los mails de cambios de score */
delete from [LN_contraparte_indicadores_trazabilidad] where actualizado < getdate() -1
insert into ln_contrapartes_queue (contraparte,id_taken)
/* declare @fech date = getdate()-1 --'2023-08-03 00:00:00'*/
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from ln_contrapartes where activo = 1
and cliente in (515494256)
and id_padron in (select id_padron from padrones where identificacion
in (select distinct cuit from monitoreos_resultados where fecha = @fech
union
select distinct cuit from apocrifas where publicado between getdate()-30 and @fech
))
/* Manda al queue las contrapartes que no se mandaron y tienen cheques rechazados nuevos */
UNION
select distinct sel.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from
(select distinct contraparte
from LN_contrapartes c
inner join padrones p on p.id_padron = c.id_padron
inner join chequesbcra h on ((h.cuit_firmante = p.identificacion or h.Cuit_relacionado = p.identificacion) and h.visible = 1 and h.created > @fech)
where c.activo = 1 and c.subcontratista = 0
and c.cliente = 515494256
) sel
UNION
/* 3-11-2023 agregamos subcontratistas vigentes de amx */
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken from LN_contrapartes
where cliente = 5546348
and activo=1 and servicio_contratado=47 and subcontratista=1 and vigencia_desde <= getdate() and vigencia_hasta >= getdate() /*and contraparte not in (select distinct contraparte from ln_contrapartes_queue where finished > getdate()-1)*/
/**/
union
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contraparte_familias where contraparte in (SELECT LN_CONTRAPARTES.contraparte FROM LN_CONTRAPARTES
inner join ln_gestiones on ln_gestiones.contraparte = LN_contrapartes.contraparte
WHERE activo=1 and servicio_contratado=73 and subcontratista=0 and LN_gestiones.vigente = 1
)
union
/* 31/05/2024 se puso esto */
-- declare @fech date = getdate()-1 --'2023-08-03 00:00:00'
select C.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contrapartes C
inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
inner join clientes_productos CP on (CP.cliente = C.cliente and CP.id_producto in (47,73) and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where C.activo = 1 and C.servicio_contratado in (47,73) and C.subcontratista=0
/* and CP.queue_prioridad < 50
order by CP.queue_prioridad,C.cliente
*/
end
/* 16/07/2024: Sacamos los UNION para insertar en ln_contrapartes_queue, porque se deplicaba la misma contraparte
hacemos todos insert separados, controlando que no esté la misma contraparte con processed = 0 */
if (@accion = 'insert_masivo')
begin
/*PRIMERO BORRAMOS TODO EL HISTORIAL DE LA TABLA DE JSON PARA CUANDO SE TENGA QUE GENERAR EL MISMO SEA EL REFLEJO DE LO ACTUAL */
--DECLARE @vidreg int
DECLARE C_TerminosTask CURSOR FOR
select count(idrow) / 100000 from PANEL_CONTROL_JSON where contraparte in (select distinct C.contraparte
from LN_contrapartes C
/* inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
*/ inner join clientes_productos CP on (CP.cliente = C.cliente and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where /*C.activo = 1 and*/ C.servicio_contratado = 47 and C.subcontratista=0)
OPEN C_TerminosTask
FETCH NEXT FROM C_TerminosTask INTO @vidreg
WHILE @@fetch_status = 0
BEGIN
--DECLARE @Counter INT
SET @Counter=0
WHILE (@Counter <= @vidreg)
begin
select @Counter as cont,@vidreg as idreg
delete PANEL_CONTROL_JSON where idrow in (
select top 100000 idrow from PANEL_CONTROL_JSON where contraparte in (select distinct C.contraparte
from LN_contrapartes C
/* inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
*/ inner join clientes_productos CP on (CP.cliente = C.cliente and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where/* C.activo = 1 and*/ C.servicio_contratado = 47 and C.subcontratista=0))
set @Counter = @Counter + 1
WAITFOR DELAY '00:00:02:000';
end
FETCH NEXT FROM C_TerminosTask INTO @vidreg
END
CLOSE C_TerminosTask
DEALLOCATE C_TerminosTask
/* FIN DE PRIMERO BORRAMOS TODO EL HISTORIAL DE LA TABLA DE JSON PARA CUANDO SE TENGA QUE GENERAR EL MISMO SEA EL REFLEJO DE LO ACTUAL */
SET @fech = getdate()-1 --'2023-08-03 00:00:00'
exec LN_Panel_Control_SAAS_file 515494256
/* Subcontratistas AMX a enriquecer
Se puso acá en el insert_masivo, porque hay que correrlo todos los días
- se cargan las altas del dia anterior
- el dia 1 de cada mes se cargan los que cumplen 3 meses
*/
exec [Subcontratistas_enriquecer_] 'INSERT',5546348
/* 25/09/2024: Los dias 26 del mes carga todas las contrapartes con el producto mis_aportes en la tabla mis_aportes_procesar
Los demás días del mes, las contrapartes dadas de alta en las últimas 24 hs. */
exec mis_aportes_procesar_ 'insert'
/* 12/12/2024: Busca nuevas contrapartes o nuevos CUITs en monitoreos cargados en el dia de ayer para que entren en el proceso de buscar contancias */
exec [padron_constancia_] 'insert'
/* 30/10/2024: Busca las columnas que tiene que tener el excel de cada cliente
(por si hubo algun cambio de qué indicadores tiene, lo regenera todos los días) */
declare @cliente_excel int, @servicio_excel int
DECLARE C_titulos_excel CURSOR FOR
select distinct cliente, servicio from PANEL_CONTROL_EXCEL_TITULOS
OPEN C_titulos_excel
FETCH NEXT FROM C_titulos_excel INTO @cliente_excel, @servicio_excel
WHILE @@fetch_status = 0
BEGIN
exec [PANEL_CONTROL_EXCEL_] 'TITULOS', @cliente_excel, @servicio_excel,null,0,1
FETCH NEXT FROM C_titulos_excel INTO @cliente_excel, @servicio_excel
END
CLOSE C_titulos_excel
DEALLOCATE C_titulos_excel
/* 18/02/2025: Graba los controles de carga de edictos y concursos y quiebras */
declare @ayer date = GETDATE()-1
exec [Sp_control_cyq] @ayer, @ayer
exec [Sp_control_edictos] @ayer, @ayer
/* 16/08/2023: va depurando esta tabla por dia, porque crece mucho y cuelga el queue,
pero dejamos los ultimos registros porque se usan para los mails de cambios de score */
delete from [LN_contraparte_indicadores_trazabilidad] where actualizado < getdate() -1
insert into ln_contrapartes_queue (contraparte,id_taken)
select contraparte, 1.0 + floor(5 * RAND(convert(varbinary, newid()))) as id_taken
from ln_contrapartes where activo = 1
and cliente in (515494256)
and id_padron in (select id_padron from padrones where identificacion
in (select distinct cuit from monitoreos_resultados where fecha = @fech
union
select distinct cuit from apocrifas where publicado between getdate()-30 and @fech)
)
and not exists (select * from ln_contrapartes_queue q where q.contraparte = ln_contrapartes.contraparte and q.processed = 0)
/* 04/10/2024: Manda al queue las contrapartes de Coface que tienen aprobacion formal o fiscal rechazado,
para ver si ahora da aprobado (por ej. ya tiene mas de 2 años de antigüedad) */
insert into ln_contrapartes_queue (contraparte,id_taken)
select distinct ln_contrapartes.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from ln_contrapartes
inner join ln_gestiones on (ln_gestiones.contraparte = ln_contrapartes.contraparte and ln_gestiones.vigente = 1)
inner join ln_contraparte_indicadores
on (ln_contraparte_indicadores.gestion = ln_gestiones.gestion and ln_contraparte_indicadores.indicador in (245,246)
and ln_contraparte_indicadores.valor_numerico = -100)
where ln_contrapartes.activo = 1
and ln_contrapartes.cliente in (515494256)
and not exists (select * from ln_contrapartes_queue q where q.contraparte = ln_contrapartes.contraparte and q.processed = 0)
/* Manda al queue las contrapartes que no se mandaron y tienen cheques rechazados nuevos */
--
--UNION
insert into ln_contrapartes_queue (contraparte,id_taken)
select distinct sel.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from
(select distinct contraparte
from LN_contrapartes c
inner join padrones p on p.id_padron = c.id_padron
inner join chequesbcra h on ((h.cuit_firmante = p.identificacion or h.Cuit_relacionado = p.identificacion) and h.visible = 1 and h.created > @fech)
where c.activo = 1 and c.subcontratista = 0
and c.cliente = 515494256
and not exists (select * from ln_contrapartes_queue q where q.contraparte = c.contraparte and q.processed = 0)
) sel
--UNION
insert into ln_contrapartes_queue (contraparte,id_taken)
/* 3-11-2023 agregamos subcontratistas vigentes de amx */
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken from LN_contrapartes
where cliente = 5546348
and activo=1 and servicio_contratado=47 and subcontratista=1 and vigencia_desde <= getdate() and vigencia_hasta >= getdate() /*and contraparte not in (select distinct contraparte from ln_contrapartes_queue where finished > getdate()-1)*/
and not exists (select * from ln_contrapartes_queue q where q.contraparte = ln_contrapartes.contraparte and q.processed = 0)
/**/
--UNION
insert into ln_contrapartes_queue (contraparte,id_taken)
/* Contrapartes de imperium */
select contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contraparte_familias
where contraparte in (SELECT LN_CONTRAPARTES.contraparte FROM LN_CONTRAPARTES
inner join ln_gestiones on ln_gestiones.contraparte = LN_contrapartes.contraparte
inner join clientes_productos CP on (CP.cliente = LN_CONTRAPARTES.cliente and
CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = LN_CONTRAPARTES.servicio_contratado)
WHERE LN_CONTRAPARTES.activo=1 and LN_CONTRAPARTES.servicio_contratado=73 and
LN_CONTRAPARTES.subcontratista=0 and LN_gestiones.vigente = 1
and not exists (select * from ln_contrapartes_queue q where q.contraparte = ln_contrapartes.contraparte and q.processed = 0)
)
--UNION
insert into ln_contrapartes_queue (contraparte,id_taken)
/* 31/05/2024 se puso esto: Toma clientes ACTIVOS y que no tengan la marca de NO_QUEUE */
select C.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contrapartes C
inner join LN_gestiones G on (G.contraparte = C.contraparte and G.vigente = 1)
inner join ln_contraparte_familias CF on (CF.contraparte = C.contraparte and isnull(CF.activo,1) = 1)
inner join ln_familias F on (F.familia = CF.familia and isnull(F.visible,1) = 1)
inner join clientes CL on (CL.cliente = C.cliente and CL.estado_cliente='A')
inner join clientes_productos CP on (CP.cliente = C.cliente and CP.activo = 1 and CP.no_queue != 1 and CP.id_producto = C.servicio_contratado)
where C.activo = 1 and C.servicio_contratado in (47,73) and C.subcontratista=0
and not exists (select * from ln_contrapartes_queue q where q.contraparte = c.contraparte and q.processed = 0)
/* and CP.queue_prioridad < 50
order by CP.queue_prioridad,C.cliente
*/
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
/* 07/12/2022 */
inner join clientes on (clientes.cliente = LN_contrapartes.cliente and clientes.estado_cliente = 'A'/* and clientes.cli_codigo in (1326,222,5776,2000,9659,1486,2301,5635, 5672,5673,12392,10314,3926,6084,4117)*/)
inner join clientes_productos on (clientes_productos.cliente = LN_contrapartes.cliente and clientes_productos.id_producto = LN_contrapartes.servicio_contratado and clientes_productos.activo = 1)
/**/
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)
/* 07/12/2022 */
/*and LN_contrapartes.servicio_contratado in (47,73)
and ln_contrapartes.cliente = 0 */
and LN_contrapartes.cliente not in (
110864291, --MONSANTO ARGENTINA S.A.
1313127297, --NOVARTIS ARGENTINA S.A
882192574, --SAPORITI S.A.
42014167, --BANCO INDUSTRIAL S.A.
1421956540, --MAPFRE ARGENTINA SEGUROS S.A.(P.L.A.)
1310336827, --SIEMENS S. A.
7667652, --ULMA ANDAMIOS Y ENCOFRADOS ARGENTINA S.A.
1328875763, --LA GAUCHITA S.A.
806892136, --ACCION SOCIAL DE EMPRESARIOS A.S.E
515494256, --COFACE SERVICIOS ARGENTINA S. A.
3920694, --CLIENTE DEMO
7855254, --VALID SOLUCIONES Y SERVICIOS DE SEGURIDAD EN MEDIOS DE PAGO E IDENTIFICACIÓN S.A.
5026361, --IRAM INSTITUTO ARG.DE NORMALIZACION Y CERTIFICACION
103974506, --USUARIO REMOTO - SIDI - MARIA SORIA
3282956, --GLOBAL DATA CENTER S.A.S.
5258149, --FRIC ROT S.A.I.C.
1836678, --Johnson Controls International Plc
2254875, --FIDELITAS SA
/*1853132042,*/ /*ROMIKIN S.A.*/
1837069565, --ALGODONERA ACONCAGUA S.A.
1811919445, --WORLDSYS S.A.
592432729, --CLIENTE DE CORTESIA
8484144, --EMPRESA MODELO
601116452, --ALEID RAMI
1745156, --MINERA AGUA RICA LLC (SUC ARGENTINA)
7075221 --Aval Digital
)
/**/
/* lo sacamos el 07/12/2022: en el not in de arriba dejamos afuera los clientes que no queremos
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 top 1 * 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,id_taken)
select LN_contrapartes.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from LN_contrapartes
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes.contraparte = @p_contraparte
and LN_contrapartes.activo = 1
--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,id_taken)
select a.contraparte, 1.0 + floor(10 * RAND(convert(varbinary, newid()))) as id_taken
from ln_contrapartes a
left outer join pagos_transacciones on a.contraparte = pagos_transacciones.contraparte
where a.activo = 1
and a.id_padron in (select id_padron from padrones where identificacion = @p_cuit)
and not exists (select top 1 * 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
declare @cliente 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 @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 top 1 * from ln_cliente_productos where cliente = @cliente and producto = 2080 and activo = 1)
and exists (select top 1 * from ln_familia_productos where familia = @familia and producto = 2080 and activo = 1)
and exists (select top 1 * 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
/* 27/08/2024: Agregamos que tambien tome los 'D' Dependientes, porque cuando algo se actualiza por BD no calcula los indicadores dependientes */
and LN_indicadores.valoracion in ( 'A' , 'D' )
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 top 1 * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and visible = 1))
begin
--delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte
update [LN_contraparte_indicadores_trazabilidad] set visible = 0 where contraparte = @p_contraparte and visible = 1
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, visible)
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, 1
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 top 1 * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N' and visible = 1))
begin
--delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'
update [LN_contraparte_indicadores_trazabilidad] set visible = 0 where contraparte = @p_contraparte and anterior_nuevo = 'N' and visible = 1
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,
visible)
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, 1
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, 1
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 top 1 * 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 and b.visible = 1)
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 a.visible = 1
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))
)
/* 02/05/2023 PRUEBA!! */
--insert into LN_contrapartes_queue(contraparte) values (196593)
--if (@p_contraparte = 196593) set @created = '2023-03-14 16:36:38.987'
/* SACAR esto de arriba */
select distinct '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,
convert(varchar(max),valor_memo_old) as valo_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,
convert(varchar(max),valor_memo_new) as 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:
if exists(select top 1 * 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')
begin
--delete from LN_contraparte_indicadores
update LN_contraparte_indicadores set gestion = 0
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'
end
-- Que no sean de la familia actual:
-- update LN_contraparte_indicadores set visible = 0, modified = GETDATE()
if exists(select top 1 * 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')
begin
--delete from LN_contraparte_indicadores
update LN_contraparte_indicadores set gestion = 0
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'
end
-- 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
update LN_contraparte_indicadores set gestion = 0
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
if(@accion = 'indicadores_autocompletar' and @p_contraparte is not null )
begin
declare @servicio_contratado int = null
select @cliente = cliente, @servicio_contratado = servicio_contratado
from LN_contrapartes where contraparte = @p_contraparte
if exists (select top 1 * from LN_indicadores_autocompletar i
where i.cliente = @cliente and i.servicio_contratado = @servicio_contratado)
begin
EXEC [LN_indicadores_autocompletar_] @p_contraparte
end
end
END
GO
Depends On
39- dbo.LN_indicadores_autocompletar_
- dbo.LN_indicadores_manual_cliente
- dbo.LN_Panel_Control_SAAS_file
- dbo.LN_score_detalle_killer_
- dbo.LN_score_detalle_puntos_
- dbo.mis_aportes_procesar_
- dbo.padron_constancia_
- dbo.PANEL_CONTROL_EXCEL_
- dbo.Sp_control_cyq
- dbo.Sp_control_edictos
- dbo.Subcontratistas_enriquecer_
- dbo.apocrifas
- dbo.ChequesBCRA
- dbo.clientes
- dbo.clientes_productos
- 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_indicadores_autocompletar
- dbo.LN_productos
- dbo.ln_score_detalle_killer
- dbo.ln_score_detalle_puntos
- dbo.monitoreos_resultados
- dbo.padrones
- dbo.pagos_transacciones
- dbo.PANEL_CONTROL_EXCEL_TITULOS
- dbo.PANEL_CONTROL_JSON
- dbo.PANEL_CONTROL_JSON_TERMINADO
- dbo.trazabilidad