dbo.LN_contrapartes_queue_ID

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',NULL,66588

-- ============================================
--select * from LN_contrapartes_queue order by queue_id desc
/*
[LN_contrapartes_queue_]  'indicadores_anteriores', null, 608
[LN_contrapartes_queue_]  'indicadores_nuevos', null, 608

select * from ln_contraparte_indicadores_trazabilidad where contraparte = 95

*/

CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_queue_ID 
 -- 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

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 >= 5) 
  begin
      set @top = 20
   end
  else if (@hora >= 19) 
      begin
   set @top = 200
   end
  else 
   begin
   set @top = 50
   end
  

  

 if (@accion = 'pending') 
 begin
  update top (@top) LN_contrapartes_queue  set id_taken = @p_id_taken 
  where LN_contrapartes_queue.contraparte in (
  SELECT        TOP (500) LN_contrapartes_queue.contraparte
   from LN_contrapartes_queue 
   inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contrapartes_queue.contraparte
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
   where LN_contrapartes_queue.processed = 0 
   and LN_contraparte_familias.activo = 1
   and LN_contrapartes_queue.id_taken in (0,@p_id_taken) 
   order by LN_contrapartes_queue.created desc )
   and LN_contrapartes_queue.processed = 0 
   and LN_contrapartes_queue.id_taken = 0
   
     /* Si se corre entre las 0 y las 7 horas toma lotes de 5000 
         despues de las 7 am toma lotes de 200 */

  select LN_contrapartes_queue.*, LN_contrapartes.cliente, LN_contraparte_familias.familia,
     IIF (ln_contrapartes.subcontratista = 1, 'S','C') as cs
   from LN_contrapartes_queue 
   inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contrapartes_queue.contraparte
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
   where LN_contrapartes_queue.processed = 0 
   --and iif(LN_contrapartes.modalidad_pago = 'PP', iif(pagos_transacciones.status = 'approved', 1, 0), 1) = 1
   and LN_contraparte_familias.activo = 1
   and LN_contrapartes_queue.id_taken=@p_id_taken
   
   order by LN_contrapartes_queue.created desc  
   /*select * from LN_contrapartes_queue where processed = 0 and contraparte in (SELECT distinct contraparte FROM LN_gestiones WHERE cliente = 110864291) order by created desc */

 end

 if (@accion = 'insert') 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
   /* 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 */

 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 
  */


 
 declare @killer table (contraparte int, gestion int, detalle varchar(max))
 declare @puntos table (contraparte int, gestion int, detalle varchar(max))

 if (@accion = 'indicadores_anteriores') begin

  if (isnull(@p_contraparte,'0') != 0) 
  begin
   delete from @killer 
   delete from @puntos 
   insert into @killer exec LN_score_detalle_killer_ @p_contraparte
   insert into @puntos exec LN_score_detalle_puntos_ @p_contraparte

   --select * from @puntos 

   if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte)) 
   begin
    delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte
   end 
   insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
                 gestion,
                 producto,
                 indicador,
                 clave_indicador,
                 anterior_nuevo, 
                 actualizado,
                 valor_numerico,
                 valor_texto,
                 valor_memo,
                 valor_fecha,
                 detalle_killer,
                 detalle_puntos)

   select LN_contrapartes.contraparte, 
    ln_gestiones.gestion, 
    LN_indicadores.producto, LN_indicadores.indicador, 
       LN_indicadores.clave_indicador, 'A', 
    ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
    LN_contraparte_indicadores.valor_numerico,
    LN_contraparte_indicadores.valor_texto,
    LN_contraparte_indicadores.valor_memo,
    LN_contraparte_indicadores.valor_fecha, 
    /*killer.detalle_killer, 
     puntos.detalle
     */

    iif(LN_indicadores.clave_indicador='SCORE_FINAL',killerSF.detalle,killer.detalle_killer) as detalle_killer,
    iif(LN_indicadores.clave_indicador='SCORE_FINAL',puntosSF.detalle,puntos.detalle) as detalle
   from LN_contrapartes 
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_cliente_productos.producto = LN_familia_productos.producto)
   inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
   inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)
   inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador

   inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
          AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
          AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
   left join ln_score_detalle_killer killer on (killer.contraparte = ln_contrapartes.contraparte
                                                and 
               killer.gestion = ln_gestiones.gestion
               and 
               killer.indicador = LN_contraparte_indicadores.indicador
               and 
               killer.visible = 1) 
   left join ln_score_detalle_puntos puntos on (puntos.contraparte = ln_contrapartes.contraparte
                                                and 
               puntos.gestion = ln_gestiones.gestion
               and 
               puntos.indicador = LN_contraparte_indicadores.indicador
               and 
               puntos.visible = 1) 
   left join @killer killerSF on killerSF.contraparte = ln_contrapartes.contraparte
   left join @puntos puntosSF on puntosSF.contraparte = ln_contrapartes.contraparte


   where LN_contraparte_familias.contraparte = @p_contraparte
   and LN_indicadores.valoracion = 'A'
   and LN_cliente_productos.activo = 1
   and LN_familia_productos.activo = 1
   and LN_familias.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_contraparte_indicadores.visible = 1
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
   select 'ok' as estado
  end
  else 
  begin
   select 'sin contraparte' as estado
  end 
 end 

 if (@accion = 'indicadores_nuevos') begin
 
  if (isnull(@p_contraparte,'0') != 0) 
  begin
   delete from @killer 
   delete from @puntos 
   insert into @killer exec LN_score_detalle_killer_ @p_contraparte
   insert into @puntos exec LN_score_detalle_puntos_ @p_contraparte
   
   --select * from @puntos 

   if (exists (select * from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N')) 
   begin
    delete from [LN_contraparte_indicadores_trazabilidad] where contraparte = @p_contraparte and anterior_nuevo = 'N'
   end
   insert into [LN_contraparte_indicadores_trazabilidad] ( contraparte,
                 gestion,
                 producto,
                 indicador,
                 clave_indicador,
                 anterior_nuevo, 
                 actualizado,
                 valor_numerico,
                 valor_texto,
                 valor_memo,
                 valor_fecha,
                 detalle_killer,
                 detalle_puntos)

   select LN_contrapartes.contraparte, 
    ln_gestiones.gestion, 
    LN_indicadores.producto, LN_indicadores.indicador, 
       LN_indicadores.clave_indicador, 'N',
    ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
    LN_contraparte_indicadores.valor_numerico,
    LN_contraparte_indicadores.valor_texto,
    LN_contraparte_indicadores.valor_memo,
    LN_contraparte_indicadores.valor_fecha,
    /*killer.detalle_killer, 
     puntos.detalle
     */

    iif(LN_indicadores.clave_indicador='SCORE_FINAL',killerSF.detalle,killer.detalle_killer) as detalle_killer,
    iif(LN_indicadores.clave_indicador='SCORE_FINAL',puntosSF.detalle,puntos.detalle) as detalle


   from LN_contrapartes 
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_cliente_productos.producto = LN_familia_productos.producto)
   inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
   inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)
   inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador

   inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
          AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
          AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
            left join ln_score_detalle_killer killer on (killer.contraparte = ln_contrapartes.contraparte
                                                and 
               killer.gestion = ln_gestiones.gestion
               and 
               killer.indicador = LN_contraparte_indicadores.indicador
               and 
               killer.visible = 1) 
   left join ln_score_detalle_puntos puntos on (puntos.contraparte = ln_contrapartes.contraparte
                                                and 
               puntos.gestion = ln_gestiones.gestion
               and 
               puntos.indicador = LN_contraparte_indicadores.indicador
               and 
               puntos.visible = 1) 
   left join @killer killerSF on killerSF.contraparte = ln_contrapartes.contraparte
   left join @puntos puntosSF on puntosSF.contraparte = ln_contrapartes.contraparte

   where LN_contraparte_familias.contraparte = @p_contraparte
   and LN_indicadores.valoracion = 'A'
   and LN_cliente_productos.activo = 1
   and LN_familia_productos.activo = 1
   and LN_familias.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_contraparte_indicadores.visible = 1
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()

   union all 

   select LN_contrapartes.contraparte, 
    ln_gestiones.gestion, 
    LN_indicadores.producto, LN_indicadores.indicador, 
       LN_indicadores.clave_indicador, 'N',
    ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created) AS actualizado,
    LN_contraparte_indicadores.valor_numerico,
    LN_contraparte_indicadores.valor_texto,
    LN_contraparte_indicadores.valor_memo,
    LN_contraparte_indicadores.valor_fecha,
    null,
    null


   from LN_contrapartes 
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_cliente_productos.producto = LN_familia_productos.producto)
   inner join LN_indicadores on LN_familia_productos.producto = LN_indicadores.producto
   inner join LN_familias on (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)
   inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador

   inner join LN_contraparte_indicadores on (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
          AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador
          AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)

   where LN_contraparte_familias.contraparte = @p_contraparte
   and LN_indicadores.valoracion in ('F','C')
   and LN_cliente_productos.activo = 1
   and LN_familia_productos.activo = 1
   and LN_familias.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_contraparte_indicadores.visible = 1
   and LN_contraparte_indicadores.modified >= getdate()-700
   and not exists (select * from trazabilidad where contraparte = @p_contraparte 
                                                and id_plataforma = 'INDICADOR' 
               and accion = upper(LN_indicadores.clave_indicador)
               and created >= LN_contraparte_indicadores.modified)
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
   
   declare @created datetime = getdate()
   insert into trazabilidad(texto, cliente, accion, id_plataforma, contraparte, user_id, created, 
         fecha_old, 
         valor_numerico_old, 
         valor_texto_old, 
         valor_memo_old, 
         valor_fecha_old, 
         detalle_killer_old,
         detalle_puntos_old,
         fecha_new, 
         valor_numerico_new,
         valor_texto_new,
         valor_memo_new,
         valor_fecha_new,
         detalle_killer_new,
         detalle_puntos_new)
         
   select  'Cambio ' + LN_indicadores.nombre_indicador  as texto, 
     LN_contrapartes.cliente as cliente, 
     upper(LN_indicadores.clave_indicador) as accion, 
     'INDICADOR' as id_plataforma, 
     a.contraparte as contraparte, 
     null as user_id, 
     @created as created, 
     b.actualizado    as fecha_old, 
     b.valor_numerico as valor_numerico_old, 
     b.valor_texto    as valor_texto_old, 
     b.valor_memo     as valor_memo_old, 
     b.valor_fecha    as valor_fecha_old,
     b.detalle_killer as detalle_killer_old,
     b.detalle_puntos as detalle_puntos_old,
     a.actualizado    as fecha_new, 
     a.valor_numerico as valor_numerico_new,
     a.valor_texto    as valor_texto_new,
     a.valor_memo     as valor_memo_new,
     a.valor_fecha    as valor_fecha_new ,
     a.detalle_killer as detalle_killer_new,
     a.detalle_puntos as detalle_puntos_new

    from [LN_contraparte_indicadores_trazabilidad] a  -- nuevo
    left join [LN_contraparte_indicadores_trazabilidad] b -- anterior 
                  on (b.contraparte   = a.contraparte
                  and b.gestion   = a.gestion 
                  and b.producto  = a.producto 
                  and b.indicador = a.indicador) 
    inner join LN_indicadores on LN_indicadores.indicador = a.indicador and LN_indicadores.producto = a.producto 
    inner join LN_contrapartes on LN_contrapartes.contraparte = a.contraparte                
    where a.contraparte = @p_contraparte
      and a.anterior_nuevo = 'N' 
      and isnull(b.anterior_nuevo,'A') = 'A'
      and (
      ((b.valor_numerico is not null and a.valor_numerico is null) or (b.valor_numerico is null and a.valor_numerico is not null) or  b.valor_numerico != a.valor_numerico)
      or 
      ((b.valor_texto is not null and a.valor_texto is null) or (b.valor_texto is null and a.valor_texto is not null) or b.valor_texto != a.valor_texto)
      or 
      ((b.valor_fecha is not null and a.valor_fecha is null) or (b.valor_fecha is null and a.valor_fecha is not null) or b.valor_fecha != a.valor_fecha)
      or 
      ((b.valor_memo is not null and a.valor_memo is null) or (b.valor_memo is null and a.valor_memo is not null) or convert(varchar(max),b.valor_memo) != convert(varchar(max),a.valor_memo))
      )


    select 'ok' as estado, 
      ln_contrapartes.cliente, 
      padrones.identificacion as cuit, 
      texto as texto, 
      accion as accion,  
      convert(varchar,fecha_old, 103) as fecha_old, 
      valor_numerico_old, 
      valor_texto_old, 
      valor_memo_old, 
      valor_fecha_old, 
      detalle_killer_old,
      detalle_puntos_old,
      convert(varchar,fecha_new, 103) as fecha_new, 
      valor_numerico_new,
      valor_texto_new,
      valor_memo_new,
      valor_fecha_new,
      detalle_killer_new,
      detalle_puntos_new
     from trazabilidad
     inner join LN_contrapartes on LN_contrapartes.contraparte = trazabilidad.contraparte
     inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
     where trazabilidad.contraparte   =  @p_contraparte  
       and trazabilidad.created       = @created
       and trazabilidad.id_plataforma = 'INDICADOR'
  end
  else 
  begin
   select 'sin contraparte' as estado
  end 
 end 


 -- Dada la contraparte, clave indicador, familia guarda en la tabla contraparte_indicadores el dato de la famillia a la que pertenecĂ­a al momento de ser calculado el indicador.
 if(@accion = 'actualizar_familia') begin
  if (@p_contraparte is not null AND @p_clave_indicador is not null AND @p_familia is not null) begin
   update LN_contraparte_indicadores set familia = @p_familia
   from LN_contraparte_indicadores
   inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
   inner join LN_gestiones on (LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
          and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
   where LN_indicadores.clave_indicador = @p_clave_indicador
   and LN_contraparte_indicadores.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
  end
 end
 
 -- 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

Used By

No items found