Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
6| 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 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
--exec LN_contrapartes_queue_ 'indicadores',NULL,66588
-- ============================================
--select * from LN_contrapartes_queue order by queue_id desc
/*
[LN_contrapartes_queue_new_] 'indicadores_anteriores', null, 95
[LN_contrapartes_queue_new_] 'indicadores_nuevos', null, 95
select * from ln_contraparte_indicadores_trazabilidad where contraparte = 95
*/
CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_queue_NEW_
-- 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
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
if (@accion = 'pending') begin
/* Si se corre entre las 0 y las 7 horas toma lotes de 5000
despues de las 7 am toma lotes de 200 */
declare @top int
declare @hora int = DATEPART(HOUR, getdate())
if (@hora >= 7)
set @top = 200
else
set @top = 5000
/* Modificado 22/01/2020 si es prepago y no existe pago aprobado no lo va a devolver para que procese */
select top (@top) LN_contrapartes_queue.*, LN_contrapartes.cliente, LN_contraparte_familias.familia,
IIF (ln_contrapartes.subcontratista = 1, 'S','C') as cs
from LN_contrapartes_queue
inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contrapartes_queue.contraparte
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes_queue.processed = 0
--and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
and LN_contraparte_familias.activo = 1
order by LN_contrapartes_queue.created desc
/*select * from LN_contrapartes_queue where processed = 0 and contraparte in (SELECT distinct contraparte FROM LN_gestiones WHERE cliente = 110864291) order by created desc */
end
if (@accion = 'insert') begin
if (@p_contraparte is not null)
begin
if not exists (select * from LN_contrapartes_queue where contraparte = @p_contraparte and processed = 0)
/* Modificado 22/01/2020 si es prepago y no existe pago aprobado no lo va a insertar para que procese */
insert into LN_contrapartes_queue (contraparte,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 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.id_padron in (select id_padron from padrones where identificacion = @p_cuit)
and not exists (select * from LN_contrapartes_queue b where b.contraparte = a.contraparte and b.processed = 0)
--and iif(a.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
--and not exists (select * from ln_contrapartes_queue c where c.contraparte = a.contraparte and c.processed = 1 and c.created >= dateadd(minute,(-60),getdate()))
end
end
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
end
if (@accion = 'indicadores') begin
if (@p_contraparte is not null)
select LN_indicadores.clave_indicador, 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
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
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)
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_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
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_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
*/
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,
detalle_killer,
detalle_puntos)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'A',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
killer.detalle_killer,
puntos.detalle
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)
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,
detalle_killer,
detalle_puntos)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
killer.detalle_killer,
puntos.detalle
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)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
union all
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
null,
null
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion in ('F','C')
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.modified >= getdate()-700
and not exists (select * from trazabilidad where contraparte = @p_contraparte
and id_plataforma = 'INDICADOR'
and accion = upper(LN_indicadores.clave_indicador)
and created >= LN_contraparte_indicadores.modified)
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
declare @created datetime = getdate()
insert into trazabilidad(texto, cliente, accion, id_plataforma, contraparte, user_id, created,
fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
detalle_killer_old,
detalle_puntos_old,
fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new,
detalle_killer_new,
detalle_puntos_new)
select 'Cambio ' + LN_indicadores.nombre_indicador as texto,
LN_contrapartes.cliente as cliente,
upper(LN_indicadores.clave_indicador) as accion,
'INDICADOR' as id_plataforma,
a.contraparte as contraparte,
null as user_id,
@created as created,
b.actualizado as fecha_old,
b.valor_numerico as valor_numerico_old,
b.valor_texto as valor_texto_old,
b.valor_memo as valor_memo_old,
b.valor_fecha as valor_fecha_old,
b.detalle_killer as detalle_killer_old,
b.detalle_puntos as detalle_puntos_old,
a.actualizado as fecha_new,
a.valor_numerico as valor_numerico_new,
a.valor_texto as valor_texto_new,
a.valor_memo as valor_memo_new,
a.valor_fecha as valor_fecha_new ,
a.detalle_killer as detalle_killer_new,
a.detalle_puntos as detalle_puntos_new
from [LN_contraparte_indicadores_trazabilidad] a -- nuevo
left join [LN_contraparte_indicadores_trazabilidad] b -- anterior
on (b.contraparte = a.contraparte
and b.gestion = a.gestion
and b.producto = a.producto
and b.indicador = a.indicador)
inner join LN_indicadores on LN_indicadores.indicador = a.indicador and LN_indicadores.producto = a.producto
inner join LN_contrapartes on LN_contrapartes.contraparte = a.contraparte
where a.contraparte = @p_contraparte
and a.anterior_nuevo = 'N'
and isnull(b.anterior_nuevo,'A') = 'A'
and (
((b.valor_numerico is not null and a.valor_numerico is null) or (b.valor_numerico is null and a.valor_numerico is not null) or b.valor_numerico != a.valor_numerico)
or
((b.valor_texto is not null and a.valor_texto is null) or (b.valor_texto is null and a.valor_texto is not null) or b.valor_texto != a.valor_texto)
or
((b.valor_fecha is not null and a.valor_fecha is null) or (b.valor_fecha is null and a.valor_fecha is not null) or b.valor_fecha != a.valor_fecha)
or
((b.valor_memo is not null and a.valor_memo is null) or (b.valor_memo is null and a.valor_memo is not null) or convert(varchar(max),b.valor_memo) != convert(varchar(max),a.valor_memo))
)
select 'ok' as estado,
ln_contrapartes.cliente,
padrones.identificacion as cuit,
texto as texto,
accion as accion,
convert(varchar,fecha_old, 103) as fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
detalle_killer_old,
detalle_puntos_old,
convert(varchar,fecha_new, 103) as fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new,
detalle_killer_new,
detalle_puntos_new
from trazabilidad
inner join LN_contrapartes on LN_contrapartes.contraparte = trazabilidad.contraparte
inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
where trazabilidad.contraparte = @p_contraparte
and trazabilidad.created = @created
and trazabilidad.id_plataforma = 'INDICADOR'
end
else
begin
select 'sin contraparte' as estado
end
end
-- Dada la contraparte, clave indicador, familia guarda en la tabla contraparte_indicadores el dato de la famillia a la que pertenecĂa al momento de ser calculado el indicador.
if(@accion = 'actualizar_familia') begin
if (@p_contraparte is not null AND @p_clave_indicador is not null AND @p_familia is not null) begin
update LN_contraparte_indicadores set familia = @p_familia
from LN_contraparte_indicadores
inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
inner join LN_gestiones on (LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
where LN_indicadores.clave_indicador = @p_clave_indicador
and LN_contraparte_indicadores.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
end
end
-- si en la tabla ln_contraparte_indicadores hay indicadores de calculo automatico que ya no le corresponden,
-- lo pasa como no visible
if(@accion = 'indicadores_novisibles' and @p_contraparte is not null ) begin
declare @gestion int = null
declare @indicador int = null
declare @indicadores table (clave_indicador varchar(100), producto int, indicador int, country_code varchar(10), pais_contratante varchar(100), actualizado datetime, dias int, show int)
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
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
--exec LN_contrapartes_queue_ 'indicadores',NULL,66588
-- ============================================
--select * from LN_contrapartes_queue order by queue_id desc
/*
[LN_contrapartes_queue_new_] 'indicadores_anteriores', null, 95
[LN_contrapartes_queue_new_] 'indicadores_nuevos', null, 95
select * from ln_contraparte_indicadores_trazabilidad where contraparte = 95
*/
CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_queue_NEW_
-- 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
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
if (@accion = 'pending') begin
/* Si se corre entre las 0 y las 7 horas toma lotes de 5000
despues de las 7 am toma lotes de 200 */
declare @top int
declare @hora int = DATEPART(HOUR, getdate())
if (@hora >= 7)
set @top = 200
else
set @top = 5000
/* Modificado 22/01/2020 si es prepago y no existe pago aprobado no lo va a devolver para que procese */
select top (@top) LN_contrapartes_queue.*, LN_contrapartes.cliente, LN_contraparte_familias.familia,
IIF (ln_contrapartes.subcontratista = 1, 'S','C') as cs
from LN_contrapartes_queue
inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contrapartes_queue.contraparte
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
where LN_contrapartes_queue.processed = 0
--and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
and LN_contraparte_familias.activo = 1
order by LN_contrapartes_queue.created desc
/*select * from LN_contrapartes_queue where processed = 0 and contraparte in (SELECT distinct contraparte FROM LN_gestiones WHERE cliente = 110864291) order by created desc */
end
if (@accion = 'insert') begin
if (@p_contraparte is not null)
begin
if not exists (select * from LN_contrapartes_queue where contraparte = @p_contraparte and processed = 0)
/* Modificado 22/01/2020 si es prepago y no existe pago aprobado no lo va a insertar para que procese */
insert into LN_contrapartes_queue (contraparte,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 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.id_padron in (select id_padron from padrones where identificacion = @p_cuit)
and not exists (select * from LN_contrapartes_queue b where b.contraparte = a.contraparte and b.processed = 0)
--and iif(a.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
--and not exists (select * from ln_contrapartes_queue c where c.contraparte = a.contraparte and c.processed = 1 and c.created >= dateadd(minute,(-60),getdate()))
end
end
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
end
if (@accion = 'indicadores') begin
if (@p_contraparte is not null)
select LN_indicadores.clave_indicador, 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
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
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)
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_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
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_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
*/
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,
detalle_killer,
detalle_puntos)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'A',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
killer.detalle_killer,
puntos.detalle
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)
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,
detalle_killer,
detalle_puntos)
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
killer.detalle_killer,
puntos.detalle
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)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion = 'A'
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
union all
select LN_contrapartes.contraparte,
ln_gestiones.gestion,
LN_indicadores.producto, LN_indicadores.indicador,
LN_indicadores.clave_indicador, 'N',
ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_memo,
LN_contraparte_indicadores.valor_fecha,
null,
null
from LN_contrapartes
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
and LN_cliente_productos.producto = LN_familia_productos.producto)
inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
where LN_contraparte_familias.contraparte = @p_contraparte
and LN_indicadores.valoracion in ('F','C')
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_familias.visible = 1
and LN_contraparte_familias.activo = 1
and LN_contraparte_indicadores.visible = 1
and LN_contraparte_indicadores.modified >= getdate()-700
and not exists (select * from trazabilidad where contraparte = @p_contraparte
and id_plataforma = 'INDICADOR'
and accion = upper(LN_indicadores.clave_indicador)
and created >= LN_contraparte_indicadores.modified)
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
declare @created datetime = getdate()
insert into trazabilidad(texto, cliente, accion, id_plataforma, contraparte, user_id, created,
fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
detalle_killer_old,
detalle_puntos_old,
fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new,
detalle_killer_new,
detalle_puntos_new)
select 'Cambio ' + LN_indicadores.nombre_indicador as texto,
LN_contrapartes.cliente as cliente,
upper(LN_indicadores.clave_indicador) as accion,
'INDICADOR' as id_plataforma,
a.contraparte as contraparte,
null as user_id,
@created as created,
b.actualizado as fecha_old,
b.valor_numerico as valor_numerico_old,
b.valor_texto as valor_texto_old,
b.valor_memo as valor_memo_old,
b.valor_fecha as valor_fecha_old,
b.detalle_killer as detalle_killer_old,
b.detalle_puntos as detalle_puntos_old,
a.actualizado as fecha_new,
a.valor_numerico as valor_numerico_new,
a.valor_texto as valor_texto_new,
a.valor_memo as valor_memo_new,
a.valor_fecha as valor_fecha_new ,
a.detalle_killer as detalle_killer_new,
a.detalle_puntos as detalle_puntos_new
from [LN_contraparte_indicadores_trazabilidad] a -- nuevo
left join [LN_contraparte_indicadores_trazabilidad] b -- anterior
on (b.contraparte = a.contraparte
and b.gestion = a.gestion
and b.producto = a.producto
and b.indicador = a.indicador)
inner join LN_indicadores on LN_indicadores.indicador = a.indicador and LN_indicadores.producto = a.producto
inner join LN_contrapartes on LN_contrapartes.contraparte = a.contraparte
where a.contraparte = @p_contraparte
and a.anterior_nuevo = 'N'
and isnull(b.anterior_nuevo,'A') = 'A'
and (
((b.valor_numerico is not null and a.valor_numerico is null) or (b.valor_numerico is null and a.valor_numerico is not null) or b.valor_numerico != a.valor_numerico)
or
((b.valor_texto is not null and a.valor_texto is null) or (b.valor_texto is null and a.valor_texto is not null) or b.valor_texto != a.valor_texto)
or
((b.valor_fecha is not null and a.valor_fecha is null) or (b.valor_fecha is null and a.valor_fecha is not null) or b.valor_fecha != a.valor_fecha)
or
((b.valor_memo is not null and a.valor_memo is null) or (b.valor_memo is null and a.valor_memo is not null) or convert(varchar(max),b.valor_memo) != convert(varchar(max),a.valor_memo))
)
select 'ok' as estado,
ln_contrapartes.cliente,
padrones.identificacion as cuit,
texto as texto,
accion as accion,
convert(varchar,fecha_old, 103) as fecha_old,
valor_numerico_old,
valor_texto_old,
valor_memo_old,
valor_fecha_old,
detalle_killer_old,
detalle_puntos_old,
convert(varchar,fecha_new, 103) as fecha_new,
valor_numerico_new,
valor_texto_new,
valor_memo_new,
valor_fecha_new,
detalle_killer_new,
detalle_puntos_new
from trazabilidad
inner join LN_contrapartes on LN_contrapartes.contraparte = trazabilidad.contraparte
inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
where trazabilidad.contraparte = @p_contraparte
and trazabilidad.created = @created
and trazabilidad.id_plataforma = 'INDICADOR'
end
else
begin
select 'sin contraparte' as estado
end
end
-- Dada la contraparte, clave indicador, familia guarda en la tabla contraparte_indicadores el dato de la famillia a la que pertenecĂa al momento de ser calculado el indicador.
if(@accion = 'actualizar_familia') begin
if (@p_contraparte is not null AND @p_clave_indicador is not null AND @p_familia is not null) begin
update LN_contraparte_indicadores set familia = @p_familia
from LN_contraparte_indicadores
inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
inner join LN_gestiones on (LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
where LN_indicadores.clave_indicador = @p_clave_indicador
and LN_contraparte_indicadores.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
end
end
-- si en la tabla ln_contraparte_indicadores hay indicadores de calculo automatico que ya no le corresponden,
-- lo pasa como no visible
if(@accion = 'indicadores_novisibles' and @p_contraparte is not null ) begin
declare @gestion int = null
declare @indicador int = null
declare @indicadores table (clave_indicador varchar(100), producto int, indicador int, country_code varchar(10), pais_contratante varchar(100), actualizado datetime, dias int, show int)
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
END
GO
Depends On
18- dbo.LN_contrapartes_queue_
- dbo.identificadores
- dbo.LN_cliente_productos
- dbo.LN_contraparte_familias
- dbo.LN_contraparte_indicadores
- dbo.LN_contraparte_indicadores_trazabilidad
- dbo.LN_contrapartes
- dbo.LN_contrapartes_queue
- dbo.LN_familia_productos
- dbo.LN_familias
- dbo.LN_gestiones
- dbo.LN_indicadores
- dbo.LN_productos
- dbo.ln_score_detalle_killer
- dbo.ln_score_detalle_puntos
- dbo.padrones
- dbo.pagos_transacciones
- dbo.trazabilidad
Used By
No items found