dbo.LN_dashboard_cliente_13052020

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

15
Name Data Type Length Description
@accion varchar 50
@p_cliente int 4
@p_country_code varchar 2
@p_familia int 4
@p_contraparte int 4
@p_clave_indicador varchar 50
@p_score float 8
@p_valor_numerico float 8
@p_valor_texto varchar 100
@p_valor_memo text -1
@p_user_id int 4
@p_visible tinyint 1
@p_valor_fecha date 3
@p_es_subcontratista bit 1
@p_fecha_gestion varchar 10

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>

/*
CAMBIADO
exec ln_dashboard_cliente 'PRODUCTOS_GRILLA',5546348,null,null,107

*/

-- Description: <Description,,>
-- =============================================
/*
exec LN_dashboard_cliente 'VALORES_GRILLA_EXT', '2254875', null,null, null
exec LN_dashboard_cliente 'cumplimiento_documentos','5546348','AR','29','219'
exec LN_dashboard_cliente  'valor_final_anterior', null, null, null, 84
exec LN_dashboard_cliente 'SCORE_ALERTAS_BCRA', null, null, null, '85507'
EXEC LN_dashboard_cliente 'dependencia_economica_calc', null, null, null,339
EXEC LN_dashboard_cliente 'score_final_contraparte', null, null, null,85507

exec LN_dashboard_cliente 'grafico_score_documentos', 3920694, null,null, null


exec LN_dashboard_cliente 'grafico_control_ingreso', '3920694', null,null, null


exec LN_dashboard_cliente 'comex_expo', 592432729, 'AR',null, 67336
select * from ln_contraparte_indicadores where contraparte = 67336
select * from ln_contrapartes where cliente = 592432729
select * from clientes where cliente = 2046807993

exec LN_dashboard_cliente 'inicio', 5546348, null,null, null

*/

CREATE OR ALTER PROCEDURE dbo.LN_dashboard_cliente_13052020 
 -- Add the parameters for the stored procedure here
 @accion          varchar(50),
 @p_cliente         int,
 @p_country_code        varchar(2),
 @p_familia         int,
 @p_contraparte        int,

 /* Este parámetro opcional para obtener por clave un indicador específico de una contraparte
  cuando @accion = 'indicadores_contraparte' */

 @p_clave_indicador       varchar(50) = NULL,

 /* Parámetro para asentar el score manual o cuando se consulta mediante API */
 @p_score         float = NULL,

 /* Estos tres parámetros para asentar indicadores varios en tabla LN_contraparte_indicadores */
 @p_valor_numerico       float = null,
 @p_valor_texto        varchar(100) = null,
 @p_valor_memo        text = null,
 @p_user_id         int = null,
 @p_visible         tinyint = 1,
 @p_valor_fecha        date = null, 
 @p_es_subcontratista bit = 0, 
 @p_fecha_gestion varchar(10) = null 
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 declare @fecha_gestion date 
 if (isnull(@p_fecha_gestion,'') = '') 
 begin
  set @fecha_gestion = getdate()
 end 
 else
 begin 
  set @fecha_gestion = convert(date, @p_fecha_gestion) 
 end 


 declare @pais_contraparte varchar(2)
 declare @excluir_informe_comercial int

    -- Insert statements for procedure here

 IF (@accion = 'GRAFICO_INFORME_COMERCIAL' or @accion = 'GRAFICO_SCORE_BALANCE' or @accion = 'GRAFICO_SCORE_FINAL' or @accion = 'GRAFICO_SCORE_DOCUMENTOS' or @accion='GRAFICO_SCORE_DOSSIER' or @accion = 'GRAFICO_DEPENDENCIA_ECONOMICA') BEGIN


  create table #rangos (
   rango     varchar(2),
   etiqueta    varchar(10),
   etiqueta_texto   varchar(100) NULL,
   color     varchar(6),
   total     int,
   desde     float,
   hasta     float)


  IF (@accion = 'GRAFICO_DEPENDENCIA_ECONOMICA') BEGIN

   insert into #rangos VALUES ('R3','71-100', NULL, 'A72B2A',0, 71, 100)
   insert into #rangos VALUES ('R2','51-70', NULL, 'FFB81C',0, 51, 70)
   insert into #rangos VALUES ('R1','0-50', NULL, '63b68c',0, 0, 50)

  END 


  ELSE BEGIN

   IF (@accion = 'GRAFICO_SCORE_FINAL') BEGIN

    IF EXISTS (select LN_cliente_nivel.desde, LN_cliente_nivel.hasta, LN_cliente_nivel.color_fondo, LN_cliente_nivel.texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and (LN_cliente_nivel.desde >= 0 OR LN_cliente_nivel.hasta >= 0)
        and LN_indicadores.clave_indicador = 'SCORE_FINAL') BEGIN

     -- Generar rangos custom del Score Final
     declare @rango varchar(2)
     declare @desde int, @hasta int
     declare @texto varchar(100)
     declare @etiqueta varchar(10)
     declare @color varchar(6)
     declare @ix int = 0

     declare config cursor for

     select LN_cliente_nivel.desde, LN_cliente_nivel.hasta, LN_cliente_nivel.color_fondo, LN_cliente_nivel.texto
     from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
     where LN_cliente_nivel.cliente = @p_cliente 
     and (LN_cliente_nivel.desde >= 0 OR LN_cliente_nivel.hasta >= 0)
     and LN_indicadores.clave_indicador = 'SCORE_FINAL'
     order by LN_cliente_nivel.desde desc 

     open config

     fetch next from config into @desde, @hasta, @color, @texto
     while @@FETCH_STATUS=0 begin
      set @ix = @ix + 1
      insert into #rangos (rango, etiqueta, etiqueta_texto, color, total, desde, hasta)
      values ('R'+ltrim(rtrim(convert(varchar,@ix))), iif(@desde >= 0, ltrim(rtrim(convert(varchar,@desde))), '0')+'-'+iif(@hasta <= 100, ltrim(rtrim(convert(varchar,@hasta))), '100'),@texto,@color,0, @desde, @hasta)

      fetch next from config into @desde, @hasta, @color, @texto
     end

     close config
     deallocate config


    END ELSE BEGIN

     insert into #rangos VALUES ('R5','0-20', NULL,'A72B2A',0, 0, 20)
     insert into #rangos VALUES ('R4','21-40', NULL,'d37123',0, 21, 40)
     insert into #rangos VALUES ('R3','41-60', NULL,'FFB81C',0, 41, 60)
     insert into #rangos VALUES ('R2','61-80', NULL,'cbc367',0, 61, 80)
     insert into #rangos VALUES ('R1','81-100', NULL,'63b68c',0, 81, 100)

    END

   END ELSE BEGIN   

    insert into #rangos VALUES ('R5','0-20', NULL,'A72B2A',0, 0, 20)
    insert into #rangos VALUES ('R4','21-40', NULL,'d37123',0, 21, 40)
    insert into #rangos VALUES ('R3','41-60', NULL,'FFB81C',0, 41, 60)
    insert into #rangos VALUES ('R2','61-80', NULL,'cbc367',0, 61, 80)
    insert into #rangos VALUES ('R1','81-100', NULL,'63b68c',0, 81, 100)

   END

  END


  
  /* VERSION ANTERIOR
  
   create table #rangos (
   rango varchar(2),
   etiqueta varchar(10),
   color varchar(6),
   total int)
  
  
   IF (@accion = 'GRAFICO_DEPENDENCIA_ECONOMICA') BEGIN
  
   insert into #rangos VALUES ('R3','71-100','A72B2A',0)
   insert into #rangos VALUES ('R2','51-70','FFB81C',0)
   insert into #rangos VALUES ('R1','0-50','63b68c',0)
  
   END 
   ELSE BEGIN
  
   insert into #rangos VALUES ('R5','0-20','A72B2A',0)
   insert into #rangos VALUES ('R4','21-40','d37123',0)
   insert into #rangos VALUES ('R3','41-60','FFB81C',0)
   insert into #rangos VALUES ('R2','61-80','cbc367',0)
   insert into #rangos VALUES ('R1','81-100','63b68c',0)
  
   END */


 END


 /*************************************************************/



 DECLARE @contrap int, @gest int = NULL, @indic int, @pond tinyint, @valor float, @prod int, @exc int = null, @tipo_exc varchar(1) = NULL
 DECLARE @doc_id int, @tipo_doc int, @estado_doc varchar(1), @vers int, @familia int = null
 DECLARE @cantidad int = 0, @cumplidos int = 0, @cantidad_verificados int = 0
 DECLARE @producto_alertas int = null

 DECLARE @inicial      tinyint
 DECLARE @carga_inicial     tinyint
 DECLARE @limite_carga_inicial   datetime

 DECLARE @has_killer bit = 0, @killer bit = 0, 
         @has_sin_calcular bit = 0, 
   @has_no_verificados bit = 0, @has_no_ingresados bit = 0, @has_rechazados bit = 0
 declare @valor_sin_calcular int = 0

 declare @cuit varchar(50) = null
 declare @country varchar(2) = null
 declare @cliente int = null



 /**********************************************/

 IF (@accion = 'PAISES') BEGIN

  SELECT  cc.country_code, cc.country_name
  from country cc
  inner join LN_contrapartes on cc.country_code = LN_contrapartes.country_code
  where LN_contrapartes.cliente = @p_cliente
  group by cc.country_code, cc.country_name


 
 END


 IF (@accion = 'CONTRAPARTES') BEGIN

  if (@p_country_code is null AND @p_familia is null) begin

   SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
    identificadores.country_code, country.country_name, padrones.nombre_persona,
    identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
    LN_contraparte_familias.codigo_agrupacion,
    LN_contraparte_familias.estado_homologacion,
    LN_contraparte_familias.activo,
    LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
    LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
    LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
    CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
    CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
    users.first_name + ' ' + users.last_name AS created_by_user,
    users1.first_name + ' ' + users1.last_name AS modified_by_user


   FROM LN_contrapartes
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
   INNER JOIN country ON identificadores.country_code = country.country_code
   INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
   INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
   INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
   LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
   where LN_contrapartes.cliente = @p_cliente
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.subcontratista = 0

   ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona

  end else

   if (@p_country_code is not null and @p_familia is null) begin

    SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
     identificadores.country_code, country.country_name, padrones.nombre_persona,
     identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
     LN_contraparte_familias.codigo_agrupacion,
     LN_contraparte_familias.estado_homologacion,
     LN_contraparte_familias.activo,
     LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
     LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
     LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
     CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
     CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
     users.first_name + ' ' + users.last_name AS created_by_user,
     users1.first_name + ' ' + users1.last_name AS modified_by_user


    FROM LN_contrapartes
    INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
    INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
    INNER JOIN country ON identificadores.country_code = country.country_code
    INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
    INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
    INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
    LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
    where LN_contrapartes.cliente = @p_cliente
    AND country.country_code = @p_country_code
    AND LN_contrapartes.activo = 1
    AND LN_contrapartes.subcontratista = 0

    ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona

   end else

    if (@p_country_code is null AND @p_familia is not null) begin     

     SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
      identificadores.country_code, country.country_name, padrones.nombre_persona,
      identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
      LN_contraparte_familias.codigo_agrupacion,
      LN_contraparte_familias.estado_homologacion,
      LN_contraparte_familias.activo,
      LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
      LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
      LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
      CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
      CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
      users.first_name + ' ' + users.last_name AS created_by_user,
      users1.first_name + ' ' + users1.last_name AS modified_by_user


     FROM LN_contrapartes
     INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
     INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
     INNER JOIN country ON identificadores.country_code = country.country_code
     INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
     INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
     INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
     INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
     LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
     where LN_contrapartes.cliente = @p_cliente
     AND LN_contraparte_familias.familia = @p_familia
     AND LN_contrapartes.activo = 1
     AND LN_contrapartes.subcontratista = 0

     ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona

    end else 

     SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
      identificadores.country_code, country.country_name, padrones.nombre_persona,
      identificadores.abreviatura, padrones.identificador, padrones.identificacion as numero, clientes.nombre_cliente,
      LN_contraparte_familias.codigo_agrupacion,
      LN_contraparte_familias.estado_homologacion,
      LN_contraparte_familias.activo,
      LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
      LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
      LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
      CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
      CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
      users.first_name + ' ' + users.last_name AS created_by_user,
      users1.first_name + ' ' + users1.last_name AS modified_by_user


     FROM LN_contrapartes
     INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
     INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
     INNER JOIN country ON identificadores.country_code = country.country_code
     INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
     INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
     INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
     INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
     LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
     where LN_contrapartes.cliente = @p_cliente
     AND country.country_code = @p_country_code
     AND LN_contraparte_familias.familia = @p_familia
     AND LN_contrapartes.activo = 1
     AND LN_contrapartes.subcontratista = 0

     ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
     
 END 
  
 
 IF (@accion = 'PRODUCTOS_GRILLA') BEGIN

  if (@p_contraparte is null)

   /* productos del panel de control del cliente vinculados por familias principales */

   SELECT LN_productos.producto, 
    ISNULL(LN_cliente_productos.etiqueta_personalizada, LN_productos.nombre_producto) AS nombre_producto, 
    LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name, LN_cliente_productos.orden_producto,
    LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
    LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
    LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
    LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_familias.visible = 1
   AND ISNULL(LN_familias.subfamilia, 0) = 0
   GROUP BY LN_productos.producto,  LN_cliente_productos.etiqueta_personalizada,
    LN_productos.nombre_producto, LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name, LN_cliente_productos.orden_producto,
    LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
    LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
    LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
    LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso
   ORDER BY LN_cliente_productos.orden_producto

  else begin

   --- TENEMOS que diferenciar el producto informe comercial de argentina del del exterior
   --- a partir del hecho que ahora las familias no tienen contrapartes de un único país 
   --- y por suscripción de productos la famillia debería tener ambos informes comerciales asociados.
   select @pais_contraparte = identificadores.country_code 
   from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   where LN_contrapartes.contraparte = @p_contraparte

   if (@pais_contraparte = 'AR')
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code IS NULL
   else
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code = 'AR'


   if (@p_user_id is null) begin

    SELECT LN_productos.producto, 
     ISNULL(LN_cliente_productos.etiqueta_personalizada, LN_productos.nombre_producto) AS nombre_producto, 
     LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas, 1 as acceso

    FROM LN_productos 
    INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
    INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
    INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
    LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
    WHERE LN_cliente_productos.cliente = @p_cliente
    AND LN_productos.visible = 1
    AND LN_cliente_productos.activo = 1
    AND LN_familia_productos.activo = 1
    AND LN_contraparte_familias.contraparte = @p_contraparte
    AND LN_contraparte_familias.activo = 1
    AND LN_productos.producto NOT IN (@excluir_informe_comercial)
    GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
     LN_productos.nombre_producto, LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
    ORDER BY LN_cliente_productos.orden_producto


   end else

   begin
    -- cuando pasamos el USER_ID se devuelve una columna adicional 'acceso' que indica el permiso del usuario para visibilizar el conenido de la solapa de detalle de la contraparte
    -- basado en el contenido de la tabla LN_usuarios_productos . Si la tabla está vacía para el usuario, entonces ve todos los productos del cliente, sino sólo los especificados

    if NOT EXISTS (select LN_usuarios_productos.producto
        from LN_usuarios_productos inner join clientes_usuarios on LN_usuarios_productos.user_id = clientes_usuarios.user_id
        inner join LN_cliente_productos on (clientes_usuarios.cliente = LN_cliente_productos.cliente
                 and LN_usuarios_productos.producto = LN_cliente_productos.producto
                 and LN_cliente_productos.activo = 1)
        where LN_usuarios_productos.user_id = @p_user_id)
        
     -- todos los productos
     SELECT LN_productos.producto, 
      ISNULL(LN_cliente_productos.etiqueta_personalizada, LN_productos.nombre_producto) AS nombre_producto, 
      LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas, 1 as acceso

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
     INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
     LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     AND LN_contraparte_familias.contraparte = @p_contraparte
     AND LN_contraparte_familias.activo = 1
     AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
     ORDER BY LN_cliente_productos.orden_producto

    else

     -- la columna acceso tendrá 1 ó 0, pero debe devolver la misma cantidad de registros
     SELECT LN_productos.producto, 
      ISNULL(LN_cliente_productos.etiqueta_personalizada, LN_productos.nombre_producto) AS nombre_producto, 
      LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas, iif(productos_usuario.producto IS NOT NULL, 1, 0) AS acceso

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
     INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
     LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code

     LEFT OUTER JOIN (select LN_usuarios_productos.producto
         from LN_usuarios_productos inner join clientes_usuarios on LN_usuarios_productos.user_id = clientes_usuarios.user_id
         inner join LN_cliente_productos on (clientes_usuarios.cliente = LN_cliente_productos.cliente
                  and LN_usuarios_productos.producto = LN_cliente_productos.producto
                  and LN_cliente_productos.activo = 1)
         where LN_usuarios_productos.user_id = @p_user_id) productos_usuario ON LN_productos.producto = productos_usuario.producto

     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     AND LN_contraparte_familias.contraparte = @p_contraparte
     AND LN_contraparte_familias.activo = 1
     AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas, productos_usuario.producto
     ORDER BY LN_cliente_productos.orden_producto





   end

  end


 END


 IF (@accion = 'PRODUCTOS_GRILLA_2') BEGIN

  /* Sólo los productos que deben aparecer en las solapas de vista de contrapartes */

  if (@p_contraparte is null)

   SELECT LN_productos.producto, 
    ISNULL(LN_cliente_productos.etiqueta_personalizada, LN_productos.nombre_producto) AS nombre_producto, 
    LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name,
    LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
    LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
    LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
    LN_productos.documentos, LN_productos.subcontratistas

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_productos.visible_brief = 1
   ORDER BY LN_cliente_productos.producto

  else begin

   --- TENEMOS que diferenciar el producto informe comercial de argentina del del exterior
   --- a partir del hecho que ahora las familias no tienen contrapartes de un único país 
   --- y por suscripción de productos la famillia debería tener ambos informes comerciales asociados.
   select @pais_contraparte = identificadores.country_code 
   from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   where LN_contrapartes.contraparte = @p_contraparte

   if (@pais_contraparte = 'AR')
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code IS NULL
   else
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code = 'AR'

   if (@p_user_id IS NULL) begin

    SELECT LN_productos.producto, 
     ISNULL(LN_cliente_productos.etiqueta_personalizada, LN_productos.nombre_producto) AS nombre_producto, 
     LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_productos.documentos, LN_productos.subcontratistas, 1 AS acceso

    FROM LN_productos 
    INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
    INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
    INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
    LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
    WHERE LN_cliente_productos.cliente = @p_cliente
    AND LN_productos.visible = 1
    AND LN_cliente_productos.activo = 1
    AND LN_familia_productos.activo = 1
    AND LN_contraparte_familias.contraparte = @p_contraparte
    AND LN_contraparte_familias.activo = 1
    AND LN_productos.visible_brief = 1
    AND LN_productos.producto NOT IN (@excluir_informe_comercial)
    GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
     LN_productos.nombre_producto, LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_productos.documentos, LN_productos.subcontratistas
    ORDER BY LN_productos.producto

   end else

   begin
    -- cuando pasamos el USER_ID se devuelve una columna adicional 'acceso' que indica el permiso del usuario para visibilizar el conenido de la solapa de detalle de la contraparte
    -- basado en el contenido de la tabla LN_usuarios_productos . Si la tabla está vacía para el usuario, entonces ve todos los productos del cliente, sino sólo los especificados

    if NOT EXISTS (select LN_usuarios_productos.producto
        from LN_usuarios_productos inner join clientes_usuarios on LN_usuarios_productos.user_id = clientes_usuarios.user_id
        inner join LN_cliente_productos on (clientes_usuarios.cliente = LN_cliente_productos.cliente
                 and LN_usuarios_productos.producto = LN_cliente_productos.producto
                 and LN_cliente_productos.activo = 1)
        where LN_usuarios_productos.user_id = @p_user_id)
        
     -- todos los productos
     SELECT LN_productos.producto, 
      ISNULL(LN_cliente_productos.etiqueta_personalizada, LN_productos.nombre_producto) AS nombre_producto, 
      LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_productos.documentos, LN_productos.subcontratistas, 1 AS acceso

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
     INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
     LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     AND LN_contraparte_familias.contraparte = @p_contraparte
     AND LN_contraparte_familias.activo = 1
     AND LN_productos.visible_brief = 1
     AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_productos.documentos, LN_productos.subcontratistas
     ORDER BY LN_productos.producto


    else

     -- la columna acceso tendrá 1 ó 0, pero debe devolver la misma cantidad de registros
     SELECT LN_productos.producto, 
      ISNULL(LN_cliente_productos.etiqueta_personalizada, LN_productos.nombre_producto) AS nombre_producto, 
      LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_productos.documentos, LN_productos.subcontratistas, iif(productos_usuario.producto IS NOT NULL, 1, 0) AS acceso

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
     INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
     LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code

     LEFT OUTER JOIN (select LN_usuarios_productos.producto
         from LN_usuarios_productos inner join clientes_usuarios on LN_usuarios_productos.user_id = clientes_usuarios.user_id
         inner join LN_cliente_productos on (clientes_usuarios.cliente = LN_cliente_productos.cliente
                  and LN_usuarios_productos.producto = LN_cliente_productos.producto
                  and LN_cliente_productos.activo = 1)
         where LN_usuarios_productos.user_id = @p_user_id) productos_usuario ON LN_productos.producto = productos_usuario.producto

     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     AND LN_contraparte_familias.contraparte = @p_contraparte
     AND LN_contraparte_familias.activo = 1
     AND LN_productos.visible_brief = 1
     AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_productos.documentos, LN_productos.subcontratistas, productos_usuario.producto
     ORDER BY LN_productos.producto


   end

  end

 END


 IF (@accion = 'PRODUCTOS_INDICADORES') BEGIN

  /*SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
   LN_cliente_productos.visibilidad_default, LN_productos.visible,
   country.country_code, country.country_name,
   LN_productos.etiqueta, LN_productos.class_icon, ISNULL(LN_productos.balance, 0) AS balance,
   LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
   LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
   LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
   LN_indicadores.clave_indicador,
   LN_cliente_productos.orden_producto, LN_indicadores.orden
  
   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
   AND LN_cliente_productos.cliente = LN_familias.cliente)
  
   INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto
  
  
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
  
  
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_familias.visible = 1
   AND ISNULL(LN_familias.subfamilia, 0) = 0
   AND LN_indicadores.visible = 1
  
   GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
   LN_cliente_productos.visibilidad_default, LN_productos.visible,
   country.country_code, country.country_name,
   LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance,
   LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
   LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
   LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
   LN_indicadores.clave_indicador,
   LN_cliente_productos.orden_producto, LN_indicadores.orden
  
   ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden*/

   

  /* para el panel de control, basado en los productos asociados a familias de contrapartes principales
  
   Este select reemplazará al de más arriba cuando esté implementado la suscripción de indicadores de balance por cliente */


  SELECT DATA.* FROM
   
   (SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name,
    LN_productos.etiqueta, LN_productos.class_icon, 
    ISNULL(LN_productos.balance, 0) AS balance,
    ISNULL(LN_productos.dossier, 0) AS dossier, 
    ISNULL(LN_productos.suscribe_indicadores, 0) AS suscribe_indicadores, 
    LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
    LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
    LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
    LN_indicadores.clave_indicador,
    LN_cliente_productos.orden_producto, LN_indicadores.orden,
    SUSC.indicador AS indicador_susc,
    
    show_panel = CASE 
      /*
       WHEN ISNULL(LN_productos.balance, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0) 
       WHEN ISNULL(LN_productos.dossier, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
       WHEN ln_indicadores.clave_indicador = 'INICIO_GESTION' THEN iif(SUSC.indicador IS NOT NULL, 1, 0) 
       */

      WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
     ELSE 1 END
    

       

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)

   INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto

   LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
       WHERE cliente = @p_cliente) SUSC
    ON (LN_cliente_productos.cliente = SUSC.cliente AND LN_indicadores.indicador = SUSC.indicador)


   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code


   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_familias.visible = 1
   AND ISNULL(LN_familias.subfamilia, 0) = @p_es_subcontratista
   AND LN_indicadores.visible = 1

   GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name,
    LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance, LN_productos.dossier, LN_productos.suscribe_indicadores, 
    LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
    LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
    LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
    LN_indicadores.clave_indicador,
    LN_cliente_productos.orden_producto, LN_indicadores.orden,
    SUSC.indicador 

   --ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden
   ) DATA


  WHERE DATA.show_panel = 1
  ORDER BY DATA.orden_producto, DATA.orden

 END

 IF (@accion = 'PRODUCTOS_INDICADORES_SUBCONTRATITAS') BEGIN


  SELECT DATA.* FROM
   
   (SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name,
    LN_productos.etiqueta, LN_productos.class_icon, 
    ISNULL(LN_productos.balance, 0) AS balance,
    ISNULL(LN_productos.dossier, 0) AS dossier,
    ISNULL(LN_productos.suscribe_indicadores, 0) AS suscribe_indicadores,
    LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
    LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
    LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
    LN_indicadores.clave_indicador,
    LN_cliente_productos.orden_producto, LN_indicadores.orden,
    SUSC.indicador AS indicador_susc,

    show_panel = CASE 
      /*
       WHEN ISNULL(LN_productos.balance, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0) 
       WHEN ISNULL(LN_productos.dossier, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
       WHEN ln_indicadores.clave_indicador = 'INICIO_GESTION' THEN iif(SUSC.indicador IS NOT NULL, 1, 0) 
       */

      WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
     ELSE 1 END
       

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)

   INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto

   LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
       WHERE cliente = @p_cliente) SUSC
    ON (LN_cliente_productos.cliente = SUSC.cliente AND LN_indicadores.indicador = SUSC.indicador)


   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code


   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_familias.visible = 1
   AND ISNULL(LN_familias.subfamilia, 0) = 1
   AND LN_indicadores.visible = 1

   GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name,
    LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance, LN_productos.dossier, LN_productos.suscribe_indicadores, 
    LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
    LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
    LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
    LN_indicadores.clave_indicador,
    LN_cliente_productos.orden_producto, LN_indicadores.orden,
    SUSC.indicador 

   --ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden
   ) DATA


  WHERE DATA.show_panel = 1
  ORDER BY DATA.orden_producto, DATA.orden

 END





    IF (@accion = 'VALORES_GRILLA') BEGIN
        /* Para obtener valores de indicadores de la grilla panel de control, sólo tomo
                    indicadores que puedan ser visibles en grilla LN_indicadores.visible = 1 */


        SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
                LN_indicadores.clave_indicador,

        case        
            when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
            when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
            when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null, 
                                                        REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'), 
                                                        null)
            when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null, 
                                                        /*REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'), */
              format(LN_contraparte_indicadores.valor_numerico, '#############.##'),
                                                        null)
/*
                when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
                when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
*/

            when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
            when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
            else null
        end as valor,

  case        
            when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
            when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
            when LN_indicadores.tipo_dato = 'I' then convert(varchar,convert(bigint,LN_contraparte_indicadores.valor_numerico))
            when LN_indicadores.tipo_dato = 'F' then convert(varchar,convert(bigint,LN_contraparte_indicadores.valor_numerico))
            when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
            when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
            else null
        end as valor_sin_formato,

        /** COLOR **/
        CASE
            WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC' OR LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
                case
                    /*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
                                        when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
                                        when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
                                        when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
                                        when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/

                    when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
                    when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
                    when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
                    else NULL
                end

            WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
                case
                    when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
                    when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
                    when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
                    when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
                    else NULL
                end

            WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
                case
                    when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
                    when LN_contraparte_indicadores.valor_texto = 'E' then 'FF5C1C'
                    when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
                    when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
                    else NULL
                end

            WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
                case 
                    when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
                    when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
                    else null
                end

            WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
                case
                    when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
                    when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
                    when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
                    when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
                    when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
                    else null
                end

   WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
    case
     when LN_contraparte_indicadores.valor_numerico = 1 then '96CAB0'
     when LN_contraparte_indicadores.valor_numerico = 2 then 'FFFFBA'
     when LN_contraparte_indicadores.valor_numerico = 3 then 'FDC689'
     when LN_contraparte_indicadores.valor_numerico = 4 then 'FD676E'
     when LN_contraparte_indicadores.valor_numerico = 5 then 'C55B5B'
     when LN_contraparte_indicadores.valor_numerico = 6 then 'C55B5B'
     else null
    end

            ELSE
                case
                    when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
                    when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
                    when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
                    when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
                    when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
                    else NULL 
                end
                                
        END AS color,

        /** COLOR TEXTO **/
        CASE
            WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
                case
                    when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
                    else '000000'
                end

            WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
                case
                    when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
                    when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
     when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
                    when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
                    else NULL
                end       

            WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
                case
                    when LN_contraparte_indicadores.valor_texto = 'P' then 'FFFFFF'
                    when LN_contraparte_indicadores.valor_texto = 'R' then 'FFFFFF'
                    when LN_contraparte_indicadores.valor_texto = 'E' then 'FFFFFF'
                    when LN_contraparte_indicadores.valor_texto = 'N' then 'FFFFFF'
                    else NULL
                end       

            WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
                case 
                    when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
                    else '000000'
                end

            ELSE
                case
                    when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
                    else '000000' 
                end        
        END AS textcolor,

  CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
    ELSE null
  END AS color_personalizado, 

  CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.color_texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
    ELSE null
  END AS textcolor_personalizado, 

  CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+LN_cliente_nivel.color_fondo+';" /></svg>'
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
   ELSE NULL
  END AS svg_data_personalizado,


        /** SVG **/
        CASE
            WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
                case
                    when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027  c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445  c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239  c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z   M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069  c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069  c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
                    else null
                end

            WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
                case
                    when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
                    else null
                end

            WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
                case
                    when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
                    when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
                    when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
                    when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
                    else NULL
                end

            WHEN (LN_indicadores.clave_indicador = 'FIDECHECK') THEN
                case
                    when LN_contraparte_indicadores.valor_texto = 'P' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#A72B2A" /></svg>'
                    when LN_contraparte_indicadores.valor_texto = 'E' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#FF5C1C" /></svg>'
                    when LN_contraparte_indicadores.valor_texto = 'R' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#FFB81C" /></svg>'
                    when LN_contraparte_indicadores.valor_texto = 'N' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#63b68c" /></svg>'
                    else NULL
                end

            WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC' OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
                case
                    when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
                    else NULL
                end

            WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
                case
                    /*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
                                        when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
                                        when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
                                        when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
                                        when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/

     when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
                    else NULL
                end

            WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
                case
                    when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
                    <g>
                     <path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
                    </g>
                    </svg>'

     when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602   c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602   C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94   L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
     </g>
     </svg>'
 
     when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953   s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56   l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
     </g>
     </svg>'

     when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711   c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405   l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
     </g>
     </svg>'

     when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
     </g>
     </svg>'

     else NULL
    end


   WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
    case
     when LN_contraparte_indicadores.valor_numerico = 1 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#96CAB0;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#000000;" d="M278.767,145.419c-3.126-4.003-7.276-6.006-12.451-6.006c-4.591,0-7.716,0.879-9.375,2.637
       c-1.662,1.758-5.226,6.445-10.693,14.063c-5.47,7.617-11.744,14.502-18.823,20.654c-7.082,6.152-16.53,12.012-28.345,17.578
       c-7.91,3.712-13.429,6.738-16.553,9.082c-3.126,2.344-4.688,6.006-4.688,10.986c0,4.298,1.586,8.082,4.761,11.353
       c3.172,3.273,6.812,4.907,10.913,4.907c8.592,0,25.292-9.521,50.098-28.564V335.41c0,7.814,1.806,13.722,5.42,17.725
       c3.612,4.003,8.397,6.006,14.355,6.006c13.378,0,20.068-9.814,20.068-29.443V161.972
       C283.455,154.941,281.892,149.425,278.767,145.419z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 2 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#FFFFBA;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#000000;" d="M319.783,325.595c-4.005-3.124-9.814-4.688-17.432-4.688h-76.465c2.44-3.71,4.834-6.885,7.178-9.521
       c5.468-6.64,15.55-15.967,30.249-27.979c14.696-12.012,25.17-20.824,31.421-26.44c6.249-5.614,12.378-13.378,18.384-23.291
       c6.006-9.911,9.009-20.922,9.009-33.032c0-7.713-1.442-15.161-4.321-22.339c-2.882-7.178-6.91-13.5-12.085-18.97
       c-5.177-5.468-11.183-9.764-18.018-12.891c-10.547-4.688-23.291-7.031-38.232-7.031c-12.403,0-23.218,1.831-32.446,5.493
       s-16.846,8.473-22.852,14.429c-6.006,5.958-10.524,12.598-13.55,19.922c-3.028,7.324-4.541,14.355-4.541,21.094
       c0,5.566,1.611,9.961,4.834,13.184s7.274,4.834,12.158,4.834c5.566,0,9.789-1.758,12.671-5.273
       c2.879-3.516,5.468-8.544,7.764-15.088c2.293-6.542,3.93-10.547,4.907-12.012c7.324-11.229,17.381-16.846,30.176-16.846
       c6.054,0,11.646,1.369,16.772,4.102c5.127,2.735,9.178,6.569,12.158,11.499c2.978,4.933,4.468,10.524,4.468,16.772
       c0,5.763-1.392,11.646-4.175,17.651s-6.837,11.865-12.158,17.578c-5.324,5.713-11.989,11.403-19.995,17.065
       c-4.493,3.028-11.964,9.352-22.412,18.97c-10.451,9.62-22.169,21.167-35.156,34.644c-3.126,3.321-6.006,7.887-8.643,13.696
       c-2.637,5.812-3.955,10.474-3.955,13.989c0,5.47,2.051,10.231,6.152,14.282c4.102,4.054,9.814,6.079,17.139,6.079H306.6
       c6.445,0,11.254-1.659,14.429-4.98c3.172-3.319,4.761-7.372,4.761-12.158C325.789,332.97,323.786,328.722,319.783,325.595z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 3 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#FDC689;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#000000;" d="M319.637,269.711c-2.637-6.395-6.569-12.231-11.792-17.505c-5.226-5.273-11.646-9.961-19.263-14.063
       c7.91-6.64,13.989-13.451,18.237-20.435c4.248-6.981,6.372-15.355,6.372-25.122c0-7.42-1.465-14.355-4.395-20.801
       s-7.276-12.108-13.037-16.992c-5.763-4.882-12.55-8.617-20.361-11.206c-7.814-2.586-16.457-3.882-25.928-3.882
       c-10.84,0-20.654,1.538-29.443,4.614s-16.139,7.155-22.046,12.231c-5.91,5.079-10.4,10.426-13.477,16.04
       c-3.076,5.617-4.614,10.963-4.614,16.04c0,5.273,1.634,9.499,4.907,12.671c3.271,3.175,6.859,4.761,10.767,4.761
       c3.319,0,6.249-0.586,8.789-1.758c2.538-1.172,4.296-2.783,5.273-4.834c1.659-3.809,3.49-7.86,5.493-12.158
       c2-4.296,4.125-7.812,6.372-10.547c2.245-2.733,5.296-4.93,9.155-6.592c3.856-1.659,8.764-2.49,14.722-2.49
       c8.789,0,15.77,2.71,20.947,8.13c5.175,5.42,7.764,11.891,7.764,19.409c0,9.865-3.248,17.432-9.741,22.705
       c-6.496,5.273-14.234,7.91-23.218,7.91h-6.006c-6.935,0-12.158,1.442-15.674,4.321c-3.516,2.882-5.273,6.665-5.273,11.353
       c0,4.786,1.465,8.521,4.395,11.206c2.93,2.687,7.079,4.028,12.451,4.028c1.172,0,3.809-0.194,7.91-0.586
       c4.102-0.389,7.127-0.586,9.082-0.586c11.133,0,19.823,3.248,26.074,9.741c6.249,6.496,9.375,15.454,9.375,26.88
       c0,7.716-1.831,14.502-5.493,20.361s-8.302,10.279-13.916,13.257c-5.617,2.98-11.451,4.468-17.505,4.468
       c-10.547,0-18.727-3.296-24.536-9.888c-5.812-6.592-11.256-16.674-16.333-30.249c-0.783-2.245-2.442-4.175-4.98-5.786
       c-2.541-1.611-5.177-2.417-7.91-2.417c-5.47,0-10.034,1.735-13.696,5.2c-3.662,3.468-5.493,8.034-5.493,13.696
       c0,4.395,1.538,9.961,4.614,16.699s7.617,13.257,13.623,19.556s13.646,11.549,22.925,15.747c9.276,4.198,19.775,6.299,31.494,6.299
       c11.522,0,22.046-1.831,31.567-5.493s17.748-8.739,24.683-15.234c6.933-6.493,12.181-13.891,15.747-22.192
       c3.563-8.299,5.347-16.894,5.347-25.781C323.592,283.018,322.273,276.109,319.637,269.711z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 4 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#FD676E;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#FFFFFF;" d="M324.983,279.892c-4.541-2.051-10.572-3.076-18.091-3.076h-6.299V163.437
       c0-16.992-7.423-25.488-22.266-25.488c-4.591,0-8.521,1.538-11.792,4.614c-3.273,3.076-7.448,8.034-12.524,14.868l-77.637,103.857
       c-2.149,2.833-3.955,5.226-5.42,7.178c-1.465,1.955-2.882,3.98-4.248,6.079c-1.369,2.101-2.394,4.102-3.076,6.006
       c-0.685,1.904-1.025,3.786-1.025,5.64c0,7.228,2.318,12.941,6.958,17.139c4.637,4.2,11.595,6.299,20.874,6.299h73.535v27.246
       c0,7.324,1.685,12.868,5.054,16.626s7.787,5.64,13.257,5.64c5.566,0,10.009-1.831,13.33-5.493c3.319-3.662,4.98-9.251,4.98-16.772
       V309.63h8.936c7.42,0,12.987-1.293,16.699-3.882c3.71-2.586,5.566-6.713,5.566-12.378
       C331.795,286.436,329.524,281.943,324.983,279.892z M263.973,276.816h-62.988l62.988-85.107V276.816z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 5 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#FFFFFF;" d="M320.516,255.136c-3.516-8.496-8.35-15.843-14.502-22.046c-6.152-6.2-13.307-11.06-21.46-14.575
       c-8.155-3.516-16.919-5.273-26.294-5.273c-11.719,0-24.513,3.712-38.379,11.133l8.35-47.461h69.58
       c7.226,0,12.694-1.561,16.406-4.688c3.71-3.124,5.566-7.226,5.566-12.305c0-11.62-7.617-17.432-22.852-17.432h-77.344
       c-8.4,0-14.454,1.904-18.164,5.713c-3.712,3.809-6.251,9.913-7.617,18.311l-12.304,70.166c-1.076,6.152-1.611,9.474-1.611,9.961
       c0,4.395,1.854,8.327,5.566,11.792c3.71,3.468,7.958,5.2,12.744,5.2c4.395,0,9.984-2.563,16.772-7.69
       c6.786-5.127,11.986-8.716,15.601-10.767c3.612-2.051,9.618-3.076,18.018-3.076c6.834,0,13.037,1.637,18.604,4.907
       c5.566,3.273,10.009,8.229,13.33,14.868c3.319,6.642,4.98,14.648,4.98,24.023c0,8.693-1.538,16.457-4.614,23.291
       c-3.076,6.837-7.448,12.208-13.11,16.113c-5.665,3.907-12.257,5.859-19.775,5.859c-8.203,0-15.626-2.417-22.266-7.251
       c-6.642-4.834-11.916-11.595-15.82-20.288c-4.005-9.471-10.107-14.209-18.311-14.209c-4.786,0-8.766,1.71-11.938,5.127
       c-3.175,3.419-4.761,7.031-4.761,10.84c0,6.251,2.271,13.55,6.812,21.899s12.254,15.747,23.145,22.192
       c10.888,6.445,25.072,9.668,42.554,9.668c15.624,0,29.418-3.419,41.382-10.254c11.961-6.834,21.117-16.063,27.466-27.686
       c6.347-11.62,9.521-24.511,9.521-38.672C325.789,272.765,324.031,263.632,320.516,255.136z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 6 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#FFFFFF;" d="M321.248,258.652c-3.223-8.69-7.789-16.234-13.696-22.632c-5.91-6.395-12.794-11.327-20.654-14.795
       c-7.862-3.465-16.432-5.2-25.708-5.2c-9.668,0-18.409,1.904-26.221,5.713c-7.814,3.809-15.04,9.668-21.68,17.578
       c1.268-26.562,5.468-45.019,12.598-55.371c3.516-5.077,7.837-9.105,12.964-12.085c5.127-2.978,10.277-4.468,15.454-4.468
       c6.445,0,12.108,1.783,16.992,5.347c4.882,3.566,8.446,8.276,10.693,14.136c1.659,4.591,4.248,8.18,7.764,10.767
       c3.516,2.589,7.324,3.882,11.426,3.882c4.688,0,8.544-1.634,11.572-4.907c3.026-3.271,4.541-6.908,4.541-10.913
       c0-6.64-2.417-13.573-7.251-20.801c-4.834-7.226-12.012-13.28-21.533-18.164c-9.521-4.882-20.533-7.324-33.032-7.324
       c-12.989,0-24.562,2.442-34.717,7.324c-10.158,4.884-18.8,12.11-25.928,21.68c-7.13,9.572-12.598,21.632-16.406,36.182
       c-3.809,14.552-5.713,31.055-5.713,49.512c0,22.657,3.149,41.821,9.448,57.495s15.404,27.516,27.319,35.522
       c11.913,8.009,26.074,12.012,42.48,12.012c14.257,0,27.026-3.149,38.306-9.448s20.068-15.063,26.367-26.294
       c6.299-11.229,9.448-23.73,9.448-37.5C326.082,276.427,324.471,267.345,321.248,258.652z M277.303,318.198
       c-6.445,8.057-14.601,12.085-24.463,12.085c-10.353,0-18.947-4.395-25.781-13.184c-6.837-8.789-10.254-19.775-10.254-32.959
       c0-8.203,1.685-15.355,5.054-21.46c3.369-6.102,7.812-10.767,13.33-13.989c5.516-3.223,11.302-4.834,17.358-4.834
       c6.347,0,12.158,1.685,17.432,5.054c5.274,3.369,9.423,8.253,12.451,14.648c3.026,6.397,4.541,14.04,4.541,22.925
       C286.971,299.571,283.748,310.141,277.303,318.198z"/>
       </svg>'


     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS' OR LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS_PPB') THEN
    case
     when LN_contraparte_indicadores.valor_numerico >= 181 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 121 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 91 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
     else null
    end

   ELSE NULL
  END AS svg_data,


  /** TEXT CAPTION **/
  CASE
   WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
     when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
     when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro' 
     when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente' 
     when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
     else NULL
    end

   WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
     when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
     when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
     when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
     else null
    end

   WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then 'Positive'
     when LN_contraparte_indicadores.valor_texto = 'E' then 'PEP'
     when LN_contraparte_indicadores.valor_texto = 'R' then 'Related'
     when LN_contraparte_indicadores.valor_texto = 'N' then 'Negative'
     else null
    end

   WHEN LN_indicadores.clave_indicador = 'SITUACION_CD' THEN
    iif (LN_contraparte_indicadores.valor_numerico is not null, 'Situación ' + Convert(varchar,LN_contraparte_indicadores.valor_numerico)+' - Período: '+LN_contraparte_indicadores.valor_texto, null) 

   WHEN LN_indicadores.clave_indicador = 'EXCEPCION' THEN
    iif (excepciones.tipo_excepcion = 'V', 'Excepción para PERMITIR ingreso', iif(excepciones.tipo_excepcion = 'R', 'Excepción para RECHAZAR ingreso', NULL))
   
   ELSE NULL

      
  END AS textcaption,
  
  /** TEXTOS **/
  CASE
   WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
     ELSE NULL
  END AS texto, 

  /** PUNTO **/
  CASE      
   WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
   WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
   WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
   ELSE 0 
  END AS punto,

  ln_contraparte_indicadores.valor_memo


  FROM LN_contrapartes 
  INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte

  INNER JOIN LN_contraparte_indicadores ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
               and LN_contraparte_indicadores.gestion = LN_gestiones.gestion) 
  INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador

  INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
  INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
           AND LN_indicadores.producto = LN_familia_productos.producto)


  LEFT OUTER JOIN
   (SELECT LN_docs.contraparte, COUNT(*) AS ingresados
   FROM LN_docs 
   INNER JOIN LN_gestiones ON LN_docs.gestion = LN_gestiones.gestion

   INNER JOIN
    (select LN_docs.contraparte, LN_docs.tipo_doc, max(doc_version) as ultima
    from LN_docs
    inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion 
           AND LN_docs.contraparte = LN_gestiones.contraparte)
    where LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
    group by LN_docs.contraparte, LN_docs.tipo_doc) ultimas_versiones 

   ON (LN_docs.tipo_doc = ultimas_versiones.tipo_doc 
    AND ln_docs.contraparte = ultimas_versiones.contraparte 
    AND LN_docs.doc_version = ultimas_versiones.ultima)


   WHERE LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   AND LN_docs.estado_doc = 'I'
   GROUP BY LN_docs.contraparte) PENDIENTES_VERIFICAR ON LN_contrapartes.contraparte = PENDIENTES_VERIFICAR.contraparte

  LEFT OUTER JOIN
   (select LN_excepciones.contraparte, LN_excepciones.tipo_excepcion, LN_excepciones.gestion
   from LN_contrapartes inner join LN_excepciones
   on LN_contrapartes.contraparte = LN_excepciones.contraparte
   where LN_contrapartes.cliente = @p_cliente
   and LN_excepciones.estado = 1
   and LN_excepciones.vigencia >= GETDATE()) excepciones ON 
                                (LN_contrapartes.contraparte = excepciones.contraparte
                     and excepciones.gestion = ln_gestiones.gestion) 
  WHERE LN_contrapartes.cliente = @p_cliente
  AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
  AND LN_indicadores.visible = 1
  AND LN_contrapartes.activo = 1
  /* LN_contrapartes.subcontratista = 0 */
  /* Si no se pidio una contraparte trae todas las que no son subcontratistas 
   (o es subcontratista si se mando el parametro p_es_subcontratista = 1*/

  and (@p_contraparte = LN_contrapartes.contraparte or 
      (@p_contraparte is null and LN_contrapartes.subcontratista = @p_es_subcontratista))
  AND LN_contraparte_familias.activo = 1
  AND LN_familia_productos.activo = 1

 END


 IF (@accion = 'VALORES_GRILLA_EXT') BEGIN

  SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
    LN_indicadores.clave_indicador, LN_productos.producto_id,
  case        
   when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
   when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
   when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null, 
              REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'), 
              null)
   when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null, 
              /*REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'), */
              format(LN_contraparte_indicadores.valor_numerico, '#############.##'),
              null)
/*
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null, convert(varchar, round(isnull(LN_contraparte_indicadores.valor_numerico,0),0)), null)
*/

   when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, right('00'+cast(month(LN_contraparte_indicadores.valor_fecha) as varchar),2) + '-' + cast(right(year(LN_contraparte_indicadores.valor_fecha),2) as varchar), NULL) --convert(varchar, LN_contraparte_indicadores.valor_fecha, 103)
   when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
   else null
  end as valor,

  /** COLOR **/
  CASE
   WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
    case
     /*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/

     when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
     when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
     when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
     else NULL
    end

   WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
     when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
     when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
     when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
     else NULL
    end

   WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'E' then 'FF5C1C'
     when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
     when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
     when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
     else NULL
    end


   WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
    case 
     when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
     when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
     else null
    end

   WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
     when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
     when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
     when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
     when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
     else null
    end

   WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
    case
     when LN_contraparte_indicadores.valor_numerico = 1 then '96CAB0'
     when LN_contraparte_indicadores.valor_numerico = 2 then 'FFFFBA'
     when LN_contraparte_indicadores.valor_numerico = 3 then 'FDC689'
     when LN_contraparte_indicadores.valor_numerico = 4 then 'FD676E'
     when LN_contraparte_indicadores.valor_numerico = 5 then 'C55B5B'
     when LN_contraparte_indicadores.valor_numerico = 6 then 'C55B5B'
     else null
    end

   WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS' OR LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS_PPB') THEN
    case
     when LN_contraparte_indicadores.valor_numerico >= 181 then 'A72B2A'
     when LN_contraparte_indicadores.valor_numerico >= 121 then 'd37123'
     when LN_contraparte_indicadores.valor_numerico >= 91 then 'FFB81C'
     when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
     when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
     else null
    end

   ELSE
    case
     when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
     when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
     when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
     when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
     when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
     else NULL 
    end
        
  END AS color,


  /** COLOR TEXTO **/
  CASE
   WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC' or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
    case
     when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
     else '000000'
    end

   WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
     when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
     when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
     when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
     else NULL
    end       

   WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
     when LN_contraparte_indicadores.valor_texto = 'E' then 'FF5C1C'
     when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
     when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
    case 
     when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
     else '000000'
    end

   ELSE
    case
     when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
     else '000000' 
    end        
  END AS textcolor,

  CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
    ELSE null
  END AS color_personalizado, 

  CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.color_texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
    ELSE null
  END AS textcolor_personalizado, 

  CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+LN_cliente_nivel.color_fondo+';" /></svg>'
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
   ELSE NULL
  END AS svg_data_personalizado,

  /** SVG **/
  CASE
   WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
    case
     when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027  c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445  c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239  c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z   M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069  c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069  c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
     else null
    end

   WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
    case
     when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
     else null
    end

   WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'FIDECHECK') THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#A72B2A" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'E' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#FF5C1C" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'R' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#FFB81C" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'N' then '<svg height="20" width="20"><circle cx="8" cy="8" r="7" stroke="black" stroke-width="0" fill="#63b68c" /></svg>'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC'  OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
    case
     when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC' or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
    case
     /*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/

     when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
                    when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
     </g>
     </svg>'

     when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602   c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602   C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94   L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
     </g>
     </svg>'
 
     when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953   s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56   l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
     </g>
     </svg>'

     when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711   c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405   l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
     </g>
     </svg>'

     when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
     <g>
      <path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
     </g>
     </svg>'

     else NULL
    end


   WHEN (LN_indicadores.clave_indicador = 'SITUACION_CD') THEN
    case
     when LN_contraparte_indicadores.valor_numerico = 1 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#96CAB0;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#000000;" d="M278.767,145.419c-3.126-4.003-7.276-6.006-12.451-6.006c-4.591,0-7.716,0.879-9.375,2.637
       c-1.662,1.758-5.226,6.445-10.693,14.063c-5.47,7.617-11.744,14.502-18.823,20.654c-7.082,6.152-16.53,12.012-28.345,17.578
       c-7.91,3.712-13.429,6.738-16.553,9.082c-3.126,2.344-4.688,6.006-4.688,10.986c0,4.298,1.586,8.082,4.761,11.353
       c3.172,3.273,6.812,4.907,10.913,4.907c8.592,0,25.292-9.521,50.098-28.564V335.41c0,7.814,1.806,13.722,5.42,17.725
       c3.612,4.003,8.397,6.006,14.355,6.006c13.378,0,20.068-9.814,20.068-29.443V161.972
       C283.455,154.941,281.892,149.425,278.767,145.419z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 2 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#FFFFBA;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#000000;" d="M319.783,325.595c-4.005-3.124-9.814-4.688-17.432-4.688h-76.465c2.44-3.71,4.834-6.885,7.178-9.521
       c5.468-6.64,15.55-15.967,30.249-27.979c14.696-12.012,25.17-20.824,31.421-26.44c6.249-5.614,12.378-13.378,18.384-23.291
       c6.006-9.911,9.009-20.922,9.009-33.032c0-7.713-1.442-15.161-4.321-22.339c-2.882-7.178-6.91-13.5-12.085-18.97
       c-5.177-5.468-11.183-9.764-18.018-12.891c-10.547-4.688-23.291-7.031-38.232-7.031c-12.403,0-23.218,1.831-32.446,5.493
       s-16.846,8.473-22.852,14.429c-6.006,5.958-10.524,12.598-13.55,19.922c-3.028,7.324-4.541,14.355-4.541,21.094
       c0,5.566,1.611,9.961,4.834,13.184s7.274,4.834,12.158,4.834c5.566,0,9.789-1.758,12.671-5.273
       c2.879-3.516,5.468-8.544,7.764-15.088c2.293-6.542,3.93-10.547,4.907-12.012c7.324-11.229,17.381-16.846,30.176-16.846
       c6.054,0,11.646,1.369,16.772,4.102c5.127,2.735,9.178,6.569,12.158,11.499c2.978,4.933,4.468,10.524,4.468,16.772
       c0,5.763-1.392,11.646-4.175,17.651s-6.837,11.865-12.158,17.578c-5.324,5.713-11.989,11.403-19.995,17.065
       c-4.493,3.028-11.964,9.352-22.412,18.97c-10.451,9.62-22.169,21.167-35.156,34.644c-3.126,3.321-6.006,7.887-8.643,13.696
       c-2.637,5.812-3.955,10.474-3.955,13.989c0,5.47,2.051,10.231,6.152,14.282c4.102,4.054,9.814,6.079,17.139,6.079H306.6
       c6.445,0,11.254-1.659,14.429-4.98c3.172-3.319,4.761-7.372,4.761-12.158C325.789,332.97,323.786,328.722,319.783,325.595z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 3 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#FDC689;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#000000;" d="M319.637,269.711c-2.637-6.395-6.569-12.231-11.792-17.505c-5.226-5.273-11.646-9.961-19.263-14.063
       c7.91-6.64,13.989-13.451,18.237-20.435c4.248-6.981,6.372-15.355,6.372-25.122c0-7.42-1.465-14.355-4.395-20.801
       s-7.276-12.108-13.037-16.992c-5.763-4.882-12.55-8.617-20.361-11.206c-7.814-2.586-16.457-3.882-25.928-3.882
       c-10.84,0-20.654,1.538-29.443,4.614s-16.139,7.155-22.046,12.231c-5.91,5.079-10.4,10.426-13.477,16.04
       c-3.076,5.617-4.614,10.963-4.614,16.04c0,5.273,1.634,9.499,4.907,12.671c3.271,3.175,6.859,4.761,10.767,4.761
       c3.319,0,6.249-0.586,8.789-1.758c2.538-1.172,4.296-2.783,5.273-4.834c1.659-3.809,3.49-7.86,5.493-12.158
       c2-4.296,4.125-7.812,6.372-10.547c2.245-2.733,5.296-4.93,9.155-6.592c3.856-1.659,8.764-2.49,14.722-2.49
       c8.789,0,15.77,2.71,20.947,8.13c5.175,5.42,7.764,11.891,7.764,19.409c0,9.865-3.248,17.432-9.741,22.705
       c-6.496,5.273-14.234,7.91-23.218,7.91h-6.006c-6.935,0-12.158,1.442-15.674,4.321c-3.516,2.882-5.273,6.665-5.273,11.353
       c0,4.786,1.465,8.521,4.395,11.206c2.93,2.687,7.079,4.028,12.451,4.028c1.172,0,3.809-0.194,7.91-0.586
       c4.102-0.389,7.127-0.586,9.082-0.586c11.133,0,19.823,3.248,26.074,9.741c6.249,6.496,9.375,15.454,9.375,26.88
       c0,7.716-1.831,14.502-5.493,20.361s-8.302,10.279-13.916,13.257c-5.617,2.98-11.451,4.468-17.505,4.468
       c-10.547,0-18.727-3.296-24.536-9.888c-5.812-6.592-11.256-16.674-16.333-30.249c-0.783-2.245-2.442-4.175-4.98-5.786
       c-2.541-1.611-5.177-2.417-7.91-2.417c-5.47,0-10.034,1.735-13.696,5.2c-3.662,3.468-5.493,8.034-5.493,13.696
       c0,4.395,1.538,9.961,4.614,16.699s7.617,13.257,13.623,19.556s13.646,11.549,22.925,15.747c9.276,4.198,19.775,6.299,31.494,6.299
       c11.522,0,22.046-1.831,31.567-5.493s17.748-8.739,24.683-15.234c6.933-6.493,12.181-13.891,15.747-22.192
       c3.563-8.299,5.347-16.894,5.347-25.781C323.592,283.018,322.273,276.109,319.637,269.711z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 4 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#FD676E;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#FFFFFF;" d="M324.983,279.892c-4.541-2.051-10.572-3.076-18.091-3.076h-6.299V163.437
       c0-16.992-7.423-25.488-22.266-25.488c-4.591,0-8.521,1.538-11.792,4.614c-3.273,3.076-7.448,8.034-12.524,14.868l-77.637,103.857
       c-2.149,2.833-3.955,5.226-5.42,7.178c-1.465,1.955-2.882,3.98-4.248,6.079c-1.369,2.101-2.394,4.102-3.076,6.006
       c-0.685,1.904-1.025,3.786-1.025,5.64c0,7.228,2.318,12.941,6.958,17.139c4.637,4.2,11.595,6.299,20.874,6.299h73.535v27.246
       c0,7.324,1.685,12.868,5.054,16.626s7.787,5.64,13.257,5.64c5.566,0,10.009-1.831,13.33-5.493c3.319-3.662,4.98-9.251,4.98-16.772
       V309.63h8.936c7.42,0,12.987-1.293,16.699-3.882c3.71-2.586,5.566-6.713,5.566-12.378
       C331.795,286.436,329.524,281.943,324.983,279.892z M263.973,276.816h-62.988l62.988-85.107V276.816z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 5 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#FFFFFF;" d="M320.516,255.136c-3.516-8.496-8.35-15.843-14.502-22.046c-6.152-6.2-13.307-11.06-21.46-14.575
       c-8.155-3.516-16.919-5.273-26.294-5.273c-11.719,0-24.513,3.712-38.379,11.133l8.35-47.461h69.58
       c7.226,0,12.694-1.561,16.406-4.688c3.71-3.124,5.566-7.226,5.566-12.305c0-11.62-7.617-17.432-22.852-17.432h-77.344
       c-8.4,0-14.454,1.904-18.164,5.713c-3.712,3.809-6.251,9.913-7.617,18.311l-12.304,70.166c-1.076,6.152-1.611,9.474-1.611,9.961
       c0,4.395,1.854,8.327,5.566,11.792c3.71,3.468,7.958,5.2,12.744,5.2c4.395,0,9.984-2.563,16.772-7.69
       c6.786-5.127,11.986-8.716,15.601-10.767c3.612-2.051,9.618-3.076,18.018-3.076c6.834,0,13.037,1.637,18.604,4.907
       c5.566,3.273,10.009,8.229,13.33,14.868c3.319,6.642,4.98,14.648,4.98,24.023c0,8.693-1.538,16.457-4.614,23.291
       c-3.076,6.837-7.448,12.208-13.11,16.113c-5.665,3.907-12.257,5.859-19.775,5.859c-8.203,0-15.626-2.417-22.266-7.251
       c-6.642-4.834-11.916-11.595-15.82-20.288c-4.005-9.471-10.107-14.209-18.311-14.209c-4.786,0-8.766,1.71-11.938,5.127
       c-3.175,3.419-4.761,7.031-4.761,10.84c0,6.251,2.271,13.55,6.812,21.899s12.254,15.747,23.145,22.192
       c10.888,6.445,25.072,9.668,42.554,9.668c15.624,0,29.418-3.419,41.382-10.254c11.961-6.834,21.117-16.063,27.466-27.686
       c6.347-11.62,9.521-24.511,9.521-38.672C325.789,272.765,324.031,263.632,320.516,255.136z"/>
       </svg>'


     when LN_contraparte_indicadores.valor_numerico = 6 then

      '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px"
        viewBox="0 0 496.158 496.158" style="enable-background:new 0 0 496.158 496.158;" xml:space="preserve">
       <path style="fill:#C55B5B;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
       c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
       <path style="fill:#FFFFFF;" d="M321.248,258.652c-3.223-8.69-7.789-16.234-13.696-22.632c-5.91-6.395-12.794-11.327-20.654-14.795
       c-7.862-3.465-16.432-5.2-25.708-5.2c-9.668,0-18.409,1.904-26.221,5.713c-7.814,3.809-15.04,9.668-21.68,17.578
       c1.268-26.562,5.468-45.019,12.598-55.371c3.516-5.077,7.837-9.105,12.964-12.085c5.127-2.978,10.277-4.468,15.454-4.468
       c6.445,0,12.108,1.783,16.992,5.347c4.882,3.566,8.446,8.276,10.693,14.136c1.659,4.591,4.248,8.18,7.764,10.767
       c3.516,2.589,7.324,3.882,11.426,3.882c4.688,0,8.544-1.634,11.572-4.907c3.026-3.271,4.541-6.908,4.541-10.913
       c0-6.64-2.417-13.573-7.251-20.801c-4.834-7.226-12.012-13.28-21.533-18.164c-9.521-4.882-20.533-7.324-33.032-7.324
       c-12.989,0-24.562,2.442-34.717,7.324c-10.158,4.884-18.8,12.11-25.928,21.68c-7.13,9.572-12.598,21.632-16.406,36.182
       c-3.809,14.552-5.713,31.055-5.713,49.512c0,22.657,3.149,41.821,9.448,57.495s15.404,27.516,27.319,35.522
       c11.913,8.009,26.074,12.012,42.48,12.012c14.257,0,27.026-3.149,38.306-9.448s20.068-15.063,26.367-26.294
       c6.299-11.229,9.448-23.73,9.448-37.5C326.082,276.427,324.471,267.345,321.248,258.652z M277.303,318.198
       c-6.445,8.057-14.601,12.085-24.463,12.085c-10.353,0-18.947-4.395-25.781-13.184c-6.837-8.789-10.254-19.775-10.254-32.959
       c0-8.203,1.685-15.355,5.054-21.46c3.369-6.102,7.812-10.767,13.33-13.989c5.516-3.223,11.302-4.834,17.358-4.834
       c6.347,0,12.158,1.685,17.432,5.054c5.274,3.369,9.423,8.253,12.451,14.648c3.026,6.397,4.541,14.04,4.541,22.925
       C286.971,299.571,283.748,310.141,277.303,318.198z"/>
       </svg>'


     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS' OR LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS_PPB') THEN
    case
     when LN_contraparte_indicadores.valor_numerico >= 181 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 121 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 91 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
     else null
    end

   ELSE NULL
  END AS svg_data,


  /** TEXT CAPTION **/
  CASE
   WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
     when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
     when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro' 
     when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente' 
     when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
     else NULL
    end

   WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
     when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
     when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
     when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
     else null
    end

   WHEN LN_indicadores.clave_indicador = 'FIDECHECK' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then 'Positive'
     when LN_contraparte_indicadores.valor_texto = 'E' then 'PEP'
     when LN_contraparte_indicadores.valor_texto = 'R' then 'Related'
     when LN_contraparte_indicadores.valor_texto = 'N' then 'Negative'
     else null
    end

   WHEN LN_indicadores.clave_indicador = 'SITUACION_CD' THEN
    iif (LN_contraparte_indicadores.valor_numerico is not null, 'Situación ' + Convert(varchar,LN_contraparte_indicadores.valor_numerico)+' - Período: '+LN_contraparte_indicadores.valor_texto, null) 

   WHEN LN_indicadores.clave_indicador = 'EXCEPCION' THEN
    iif (excepciones.tipo_excepcion = 'V', 'Excepción para PERMITIR ingreso', iif(excepciones.tipo_excepcion = 'R', 'Excepción para RECHAZAR ingreso', NULL))
   
   WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
    LN_contraparte_indicadores.valor_texto
        
   ELSE NULL
  END AS textcaption,

  /** TEXTOS **/
  CASE
   WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
     ELSE NULL
  END AS texto, 



  /** PUNTO **/
  CASE      
   WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
   WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
   WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
   ELSE 0 
  END AS punto


  FROM LN_contrapartes 
  INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
  INNER JOIN LN_contraparte_indicadores ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
             and LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
  INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
  INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto

  INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
  INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
           AND LN_indicadores.producto = LN_familia_productos.producto)
  INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
           AND LN_indicadores.producto = LN_cliente_productos.producto)

  LEFT OUTER JOIN
   (SELECT LN_docs.contraparte, COUNT(*) AS ingresados
   FROM LN_docs 
   INNER JOIN LN_gestiones ON LN_docs.gestion = LN_gestiones.gestion

   INNER JOIN
    (select LN_docs.contraparte, LN_docs.tipo_doc, max(doc_version) as ultima
    from LN_docs
    inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion 
           AND LN_docs.contraparte = LN_gestiones.contraparte)
    where LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
    group by LN_docs.contraparte, LN_docs.tipo_doc) ultimas_versiones 

   ON (LN_docs.tipo_doc = ultimas_versiones.tipo_doc 
    AND ln_docs.contraparte = ultimas_versiones.contraparte 
    AND LN_docs.doc_version = ultimas_versiones.ultima)


   WHERE LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   AND LN_docs.estado_doc = 'I'
   GROUP BY LN_docs.contraparte) PENDIENTES_VERIFICAR ON LN_contrapartes.contraparte = PENDIENTES_VERIFICAR.contraparte


  LEFT OUTER JOIN
   (select LN_excepciones.contraparte, LN_excepciones.tipo_excepcion, LN_excepciones.gestion
   from LN_contrapartes inner join LN_excepciones
   on LN_contrapartes.contraparte = LN_excepciones.contraparte
   where LN_contrapartes.cliente = @p_cliente
   and LN_excepciones.estado = 1
   and LN_excepciones.vigencia >= GETDATE()) excepciones ON 
                                  (LN_contrapartes.contraparte = excepciones.contraparte and 
              excepciones.gestion = ln_gestiones.gestion)
  WHERE LN_contrapartes.cliente = @p_cliente
  AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
  AND LN_indicadores.visible = 1
  AND LN_contrapartes.activo = 1
  /* LN_contrapartes.subcontratista = 0 */
  /* Si no se pidio una contraparte trae todas las que no son subcontratistas */
  and (@p_contraparte = LN_contrapartes.contraparte or 
      (@p_contraparte is null and LN_contrapartes.subcontratista = 0))

  AND LN_contraparte_familias.activo = 1
  AND LN_familia_productos.activo = 1
  AND LN_cliente_productos.activo = 1

 END
 
 /*** GRAFICOS DASHBOARD ***/
 IF (@accion = 'GRAFICO_INFORME_COMERCIAL') BEGIN


  DECLARE @cant INT 
  SELECT @cant = COUNT(*)
  FROM LN_contrapartes inner join LN_gestiones
   on LN_contrapartes.contraparte = LN_gestiones.contraparte
  WHERE LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
  AND LN_contrapartes.activo = 1
  AND LN_contrapartes.cliente = @p_cliente

  SELECT ISNULL(totales.clave_indicador,'SCORE_IC') as clave_indicador, #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
  FROM #rangos
  LEFT OUTER JOIN (

  SELECT SCOREIC.clave_indicador, rango, 
   CASE
     when rango = 'R1' then '81-100'
     when rango = 'R2' then '61-80'
     when rango = 'R3' then '41-60'
     when rango = 'R4' then '21-40'
     when rango = 'R5' then '0-20'
   END AS etiqueta,
   CASE
     when rango = 'R1' then '63b68c'
     when rango = 'R2' then 'cbc367'
     when rango = 'R3' then 'FFB81C'
     when rango = 'R4' then 'd37123'
     when rango = 'R5' then 'A72B2A'
   END AS color, COUNT(*) AS total
  FROM ( 
    select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
     LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
     case 
      when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
      when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
     else NULL END AS rango
    from LN_contraparte_indicadores 
    inner join LN_contrapartes ON
     LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
    inner join LN_indicadores ON 
     (LN_cliente_productos.producto = LN_indicadores.producto
     AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
    inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_indicadores.producto = LN_familia_productos.producto)
    inner join LN_familias on LN_contraparte_familias.familia = LN_familias.familia

    WHERE LN_indicadores.clave_indicador = 'SCORE_IC'
    and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
    and LN_contrapartes.activo = 1
    and LN_familia_productos.activo = 1
    and LN_familias.visible = 1
    and LN_cliente_productos.activo = 1
    AND LN_contrapartes.subcontratista = 0
    and LN_contrapartes.cliente = @p_cliente) SCOREIC

  GROUP BY SCOREIC.clave_indicador, rango) totales ON #rangos.rango = totales.rango
  ORDER BY #rangos.rango
 END    
  

 IF (@accion = 'GRAFICO_SCORE_BALANCE') BEGIN

  SELECT ISNULL(totales.clave_indicador,'SCORE_BAL') as clave_indicador, #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
  FROM #rangos
  LEFT OUTER JOIN (

  SELECT SCOREBAL.clave_indicador, rango, 
   CASE
     when rango = 'R1' then '81-100'
     when rango = 'R2' then '61-80'
     when rango = 'R3' then '41-60'
     when rango = 'R4' then '21-40'
     when rango = 'R5' then '0-20'
   END AS etiqueta,
   CASE
     when rango = 'R1' then '63b68c'
     when rango = 'R2' then 'cbc367'
     when rango = 'R3' then 'FFB81C'
     when rango = 'R4' then 'd37123'
     when rango = 'R5' then 'A72B2A'
   END AS color, COUNT(*) AS total
  FROM (
    select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
     LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
     case 
      when LN_contraparte_indicadores.valor_numerico >= 80.1 and LN_contraparte_indicadores.valor_numerico <= 100 then 'R1'
      when LN_contraparte_indicadores.valor_numerico >= 60.1 and LN_contraparte_indicadores.valor_numerico <= 80 then 'R2'
      when LN_contraparte_indicadores.valor_numerico >= 40.1 and LN_contraparte_indicadores.valor_numerico <= 60 then 'R3'
      when LN_contraparte_indicadores.valor_numerico >= 20.1 and LN_contraparte_indicadores.valor_numerico <= 40 then 'R4'
      when LN_contraparte_indicadores.valor_numerico >= 0 and LN_contraparte_indicadores.valor_numerico <= 20 then 'R5'
     else NULL END AS rango
    from LN_contraparte_indicadores 
    inner join LN_contrapartes ON
     LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
    inner join LN_indicadores ON 
     (LN_cliente_productos.producto = LN_indicadores.producto
     AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
    inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_indicadores.producto = LN_familia_productos.producto)
    inner join LN_familias on LN_contraparte_familias.familia = LN_familias.familia

    WHERE LN_indicadores.clave_indicador = 'SCORE_BAL'
    and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
    and LN_contrapartes.activo = 1
    and LN_familia_productos.activo = 1
    and LN_familias.visible = 1
    and LN_cliente_productos.activo = 1
    AND LN_contrapartes.subcontratista = 0
    and LN_contrapartes.cliente = @p_cliente) SCOREBAL
  GROUP BY SCOREBAL.clave_indicador, rango) totales ON #rangos.rango = totales.rango
  ORDER BY #rangos.rango

 END

 IF (@accion = 'GRAFICO_SCORE_FINAL') BEGIN


  SELECT ISNULL(totales.clave_indicador,'SCORE_FINAL') as clave_indicador, #rangos.rango, #rangos.etiqueta, 
    #rangos.etiqueta_texto, #rangos.color, ISNULL(totales.total,0) as total,
    #rangos.desde, #rangos.hasta
  FROM #rangos
  LEFT OUTER JOIN (

   SELECT SF.clave_indicador, SF.rango, SF.etiqueta, SF.etiqueta_texto, SF.color, COUNT(*) AS total
   FROM
    (select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
      LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
      (select rango from #rangos where LN_contraparte_indicadores.valor_numerico >= desde and LN_contraparte_indicadores.valor_numerico < hasta+1) as rango,
      (select etiqueta from #rangos where LN_contraparte_indicadores.valor_numerico >= desde and LN_contraparte_indicadores.valor_numerico < hasta+1) as etiqueta,
      (select etiqueta_texto from #rangos where LN_contraparte_indicadores.valor_numerico >= desde and LN_contraparte_indicadores.valor_numerico < hasta+1) as etiqueta_texto,
      (select color from #rangos where LN_contraparte_indicadores.valor_numerico >= desde and LN_contraparte_indicadores.valor_numerico < hasta+1) as color
    from LN_contraparte_indicadores 
    inner join LN_contrapartes on LN_contraparte_indicadores.contraparte = LN_contrapartes.contraparte
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
    inner join LN_indicadores ON 
     (LN_cliente_productos.producto = LN_indicadores.producto
     AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
    inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_indicadores.producto = LN_familia_productos.producto)
    inner join LN_familias on LN_contraparte_familias.familia = LN_familias.familia

    where LN_contrapartes.cliente = @p_cliente
    and LN_indicadores.clave_indicador = 'SCORE_FINAL'
    and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
    and LN_contrapartes.activo = 1
    and LN_familia_productos.activo = 1
    and LN_familias.visible = 1
    and LN_cliente_productos.activo = 1
    AND LN_contrapartes.subcontratista = 0) SF

   GROUP BY SF.clave_indicador, SF.rango, SF.etiqueta, SF.etiqueta_texto, SF.color
  ) totales ON #rangos.rango = totales.rango
  ORDER BY #rangos.rango



  /* VERSION ANTERIOR 
   SELECT ISNULL(totales.clave_indicador,'SCORE_FINAL') as clave_indicador, #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
   FROM #rangos
   LEFT OUTER JOIN (
  
   SELECT SCOREFIN.clave_indicador, rango, 
   CASE
   when rango = 'R1' then '81-100'
   when rango = 'R2' then '61-80'
   when rango = 'R3' then '41-60'
   when rango = 'R4' then '21-40'
   when rango = 'R5' then '0-20'
   END AS etiqueta,
   CASE
   when rango = 'R1' then '63b68c'
   when rango = 'R2' then 'cbc367'
   when rango = 'R3' then 'FFB81C'
   when rango = 'R4' then 'd37123'
   when rango = 'R5' then 'A72B2A'
   END AS color, COUNT(*) AS total
   FROM (
   select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
   LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
   case 
   when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
   when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
   when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
   when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
   when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
   when LN_contraparte_indicadores.valor_numerico < 0 then 'R5'
   else NULL END AS rango
   from LN_contraparte_indicadores 
   inner join LN_contrapartes ON
   LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_indicadores ON 
   (LN_cliente_productos.producto = LN_indicadores.producto
   AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
   and LN_indicadores.producto = LN_familia_productos.producto)
  
   WHERE LN_indicadores.clave_indicador = 'SCORE_FINAL'
   and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
   and LN_contrapartes.activo = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   AND LN_contrapartes.subcontratista = 0
   and LN_contrapartes.cliente = @p_cliente) SCOREFIN
   GROUP BY SCOREFIN.clave_indicador, rango) totales ON #rangos.rango = totales.rango
   ORDER BY #rangos.rango*/
 

 END

 IF (@accion = 'GRAFICO_SCORE_DOCUMENTOS') BEGIN

  SELECT ISNULL(totales.clave_indicador,'SCORE_DOC') as clave_indicador, #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
  FROM #rangos
  LEFT OUTER JOIN (

  SELECT SCOREDOC.clave_indicador, rango, 
   CASE
     when rango = 'R1' then '81-100'
     when rango = 'R2' then '61-80'
     when rango = 'R3' then '41-60'
     when rango = 'R4' then '21-40'
     when rango = 'R5' then '0-20'
   END AS etiqueta,
   CASE
     when rango = 'R1' then '63b68c'
     when rango = 'R2' then 'cbc367'
     when rango = 'R3' then 'FFB81C'
     when rango = 'R4' then 'd37123'
     when rango = 'R5' then 'A72B2A'
   END AS color, COUNT(*) AS total
  FROM (
    select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
     LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
     case 
      when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
      when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
      when LN_contraparte_indicadores.valor_numerico < 0 then 'R5'
     else NULL END AS rango
    from LN_contraparte_indicadores 
    inner join LN_contrapartes ON
     LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
    inner join LN_indicadores ON 
     (LN_cliente_productos.producto = LN_indicadores.producto
     AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
    inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_indicadores.producto = LN_familia_productos.producto)
    inner join LN_familias on LN_contraparte_familias.familia = LN_familias.familia

    WHERE LN_indicadores.clave_indicador = 'SCORE_DOC'
    and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
    and LN_contrapartes.activo = 1
    and LN_familia_productos.activo = 1
    and LN_familias.visible = 1
    and LN_cliente_productos.activo = 1
    AND LN_contrapartes.subcontratista = 0
    and LN_contrapartes.cliente = @p_cliente) SCOREDOC
  GROUP BY SCOREDOC.clave_indicador, rango) totales ON #rangos.rango = totales.rango
  ORDER BY #rangos.rango
 END          
         

 IF (@accion = 'GRAFICO_FIDECHECK') BEGIN

  create table #rangospep (
   rango     varchar(2),
   etiqueta    varchar(20),
   color     varchar(6),
   total     int)
  
  insert into #rangospep VALUES ('R4','Positivo','A72B2A',0)
  insert into #rangospep VALUES ('R3','PEP','FF5C1C',0)
  insert into #rangospep VALUES ('R2','Relacionado','FFB81C',0)           
  insert into #rangospep VALUES ('R1','Negativo','63b68c',0)

  SELECT ISNULL(totales.clave_indicador,'FIDECHECK') as clave_indicador, totales.valor_texto, #rangospep.rango, #rangospep.etiqueta, #rangospep.color, ISNULL(totales.total,0) as total
  FROM #rangospep
  LEFT OUTER JOIN (

  SELECT FIDECHECK.clave_indicador,rango, FIDECHECK.valor_texto,
   CASE
     when rango = 'R1' then 'Negativo'
     when rango = 'R2' then 'Relacionado'
     when rango = 'R3' then 'PEP'
     when rango = 'R4' then 'Positivo'

   END AS etiqueta,
   CASE
     when rango = 'R1' then '63b68c'
     when rango = 'R2' then 'FFB81C'
     when rango = 'R3' then 'FF5C1C'
     when rango = 'R4' then 'A72B2A'
   END AS color, COUNT(*) AS total
  FROM (
    select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
     LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
     LN_contraparte_indicadores.valor_texto,
     case 
      when LN_contraparte_indicadores.valor_texto = 'N' then 'R1'
      when LN_contraparte_indicadores.valor_texto = 'R' then 'R2'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'R3'
      when LN_contraparte_indicadores.valor_texto = 'P' then 'R4'

     else NULL END AS rango
    from LN_contraparte_indicadores 
    inner join LN_contrapartes ON
     LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
    inner join LN_indicadores ON 
     (LN_cliente_productos.producto = LN_indicadores.producto
     AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
    inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_indicadores.producto = LN_familia_productos.producto)
    inner join LN_familias on LN_contraparte_familias.familia = LN_familias.familia

    WHERE LN_indicadores.clave_indicador = 'FIDECHECK'
    and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
    and LN_contrapartes.activo = 1
    and LN_familia_productos.activo = 1
    and LN_familias.visible = 1
    and LN_cliente_productos.activo = 1
    AND LN_contrapartes.subcontratista = 0
    and LN_contrapartes.cliente = @p_cliente) FIDECHECK
  GROUP BY FIDECHECK.clave_indicador, rango, FIDECHECK.valor_texto) totales ON #rangospep.rango = totales.rango
  ORDER BY #rangospep.rango

  DROP TABLE #rangospep

 END

    IF (@accion = 'GRAFICO_SCORE_DOSSIER') BEGIN
        SELECT ISNULL(totales.clave_indicador,'SCORE_DOSSIER') as clave_indicador, #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
  FROM #rangos
  LEFT OUTER JOIN (

  SELECT SCOREDOSSIER.clave_indicador, rango, 
   CASE
     when rango = 'R1' then '81-100'
     when rango = 'R2' then '61-80'
     when rango = 'R3' then '41-60'
     when rango = 'R4' then '21-40'
     when rango = 'R5' then '0-20'
   END AS etiqueta,
   CASE
     when rango = 'R1' then '63b68c'
     when rango = 'R2' then 'cbc367'
     when rango = 'R3' then 'FFB81C'
     when rango = 'R4' then 'd37123'
     when rango = 'R5' then 'A72B2A'
   END AS color, COUNT(*) AS total
  FROM (
    select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
     LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
     case 
      when LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
      when LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
      when LN_contraparte_indicadores.valor_numerico < 0 then 'R5'
     else NULL END AS rango
    from LN_contraparte_indicadores 
    inner join LN_contrapartes ON
     LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
    inner join LN_indicadores ON 
     (LN_cliente_productos.producto = LN_indicadores.producto
     AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
    inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_indicadores.producto = LN_familia_productos.producto)
    inner join LN_familias on LN_contraparte_familias.familia = LN_familias.familia

    WHERE LN_indicadores.clave_indicador = 'SCORE_DOSSIER'
    and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
    and LN_contrapartes.activo = 1
    and LN_familia_productos.activo = 1
    and LN_familias.visible = 1
    and LN_cliente_productos.activo = 1
    AND LN_contrapartes.subcontratista = 0
    and LN_contrapartes.cliente = @p_cliente) SCOREDOSSIER
  GROUP BY SCOREDOSSIER.clave_indicador, rango) totales ON #rangos.rango = totales.rango
  ORDER BY #rangos.rango

        /*
         select LN_contraparte_indicadores.indicador,LN_indicadores.clave_indicador
         from LN_contraparte_indicadores
         inner join LN_contrapartes ON
         LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
         inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
         inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
         inner join LN_indicadores ON 
         (LN_cliente_productos.producto = LN_indicadores.producto
         AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
         WHERE LN_indicadores.clave_indicador = 'SCORE_DOSSIER'
         and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
         and LN_contrapartes.activo = 1
         AND LN_contrapartes.subcontratista = 0
         and LN_contrapartes.cliente = @p_cliente
                */

 END


    IF (@accion = 'GRAFICO_DEPENDENCIA_ECONOMICA') BEGIN

  SELECT ISNULL(totales.clave_indicador,'SCORE_DEP_ECON') as clave_indicador, #rangos.rango, #rangos.etiqueta, #rangos.color, ISNULL(totales.total,0) as total
  FROM #rangos
  LEFT OUTER JOIN (

  SELECT DEPECON.clave_indicador, rango, 
   CASE
     when rango = 'R3' then '71-100'
     when rango = 'R2' then '51-70'
     when rango = 'R1' then '0-50'
   END AS etiqueta,
   CASE
     when rango = 'R3' then 'A72B2A'
     when rango = 'R2' then 'FFB81C'
     when rango = 'R1' then '63b68c'
   END AS color, COUNT(*) AS total
  FROM ( 
    select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
     LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.valor_numerico,
     case 
      when LN_contraparte_indicadores.valor_numerico >= 71 then 'R3'
      when LN_contraparte_indicadores.valor_numerico >= 51 then 'R2'
      when LN_contraparte_indicadores.valor_numerico >= 0 then 'R1'
     else NULL END AS rango
    from LN_contraparte_indicadores 
    inner join LN_contrapartes ON
     LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
    inner join LN_indicadores ON 
     (LN_cliente_productos.producto = LN_indicadores.producto
     AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
    inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_indicadores.producto = LN_familia_productos.producto)
    inner join LN_familias on LN_contraparte_familias.familia = LN_familias.familia

    WHERE LN_indicadores.clave_indicador = 'DEP_ECON_CALC'
    and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
    and LN_contrapartes.activo = 1
    and LN_familia_productos.activo = 1
    and LN_familias.visible = 1
    and LN_cliente_productos.activo = 1
    AND LN_contrapartes.subcontratista = 0
    and LN_contrapartes.cliente = @p_cliente) DEPECON

  GROUP BY DEPECON.clave_indicador, rango) totales ON #rangos.rango = totales.rango
  ORDER BY #rangos.rango
 END


 IF (@accion = 'GRAFICO_CONTROL_INGRESO') BEGIN

  DECLARE @contrapartes_excepcion varchar(max) = '0'
  DECLARE @total_excepciones int = 0
  DECLARE Excepciones CURSOR FOR


  select LN_excepciones.contraparte
  from LN_excepciones
  inner join LN_gestiones on (LN_excepciones.contraparte = LN_gestiones.contraparte
         and LN_excepciones.gestion = LN_gestiones.gestion)
  inner join LN_contraparte_indicadores on (LN_gestiones.contraparte = LN_contraparte_indicadores.contraparte
            and LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
  inner join LN_contrapartes on LN_excepciones.contraparte = LN_contrapartes.contraparte
  inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
  where LN_contrapartes.cliente = @p_cliente
  and LN_gestiones.desde <= GETDATE()
  and LN_gestiones.hasta >= GETDATE()
  and LN_indicadores.clave_indicador = 'EXCEPCION'
  --and LN_excepciones.estado = 1
  and LN_contraparte_indicadores.visible = 1
  and LN_excepciones.vigencia >= GETDATE()
  group by LN_excepciones.contraparte

  OPEN Excepciones

  FETCH NEXT FROM Excepciones INTO @contrap
  WHILE @@FETCH_STATUS = 0 BEGIN
   SET @total_excepciones = @total_excepciones + 1
   SET @contrapartes_excepcion = @contrapartes_excepcion + ',' + convert(varchar(10),@contrap)
   FETCH NEXT FROM Excepciones INTO @contrap
  END

  CLOSE Excepciones
  DEALLOCATE Excepciones


  SELECT CASE
    WHEN rango != 'R2' then indicador
    ELSE (select indicador from LN_indicadores where clave_indicador = 'EXCEPCION')
    END AS indicador, 
  
    rango, valor_numerico as valor, 
    case
     when rango = 'R1' then '63b68c'
     when rango = 'R2' then 'FFB81C'
     when rango = 'R3' then 'A72B2A'
    end as color,
    count(*) as total,
    case
     when rango = 'R1' then 'Aprobado'
     when rango = 'R2' then 'Excepción'
     when rango = 'R3' then 'Rechazado'
    end as etiqueta

  from (
   select LN_contraparte_indicadores.indicador, LN_indicadores.clave_indicador,
    LN_contraparte_indicadores.contraparte, 
    iif (excepcion.Item is null, LN_contraparte_indicadores.valor_numerico, 1) as valor_numerico,
    iif (excepcion.Item is null,
     case 
      when LN_contraparte_indicadores.valor_numerico > 0 then 'R1'
      when LN_contraparte_indicadores.valor_numerico = 0 then 'R3'
     else NULL end,
     'R2') AS rango

   from LN_contraparte_indicadores 
   inner join LN_contrapartes ON
    LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_indicadores ON 
    (LN_cliente_productos.producto = LN_indicadores.producto
    AND LN_contraparte_indicadores.indicador = LN_indicadores.indicador)
   left outer join dbo.DelimitedSplit8K(@contrapartes_excepcion, ',') excepcion ON LN_contrapartes.contraparte = convert(int, excepcion.Item)

   WHERE LN_indicadores.clave_indicador = 'HOMOLOG'
   and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
   and LN_contrapartes.activo = 1
   and LN_contrapartes.cliente = @p_cliente) data
  group by indicador, rango, valor_numerico

 END

 /*** FIN GRAFICOS DASHBOARD ***/


 /*** INDICADORES DEL DASHBOARD ***/
 IF (@accion = 'indicadores_contraparte') BEGIN

  /* Traer todos los scores de una contraparte en la gestión activa */
  select @cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
  IF (@p_clave_indicador IS NULL)

   SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.etiqueta as etiqueta_indicador,
     LN_indicadores.producto, LN_productos.nombre_producto,
     LN_productos.producto_id, 
     LN_cliente_productos.ponderacion, LN_productos.etiqueta,
     LN_contraparte_indicadores.visible,

   case when LN_indicadores.tipo_dato <> 'S'
    then CONVERT(VARCHAR, ROUND(LN_contraparte_indicadores.valor_numerico,0))
    else LN_contraparte_indicadores.valor_texto end as valor,

   /** COLOR **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      /*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
       when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
       when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
       when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
       when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/

      when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
      else NULL
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
      when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
      when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case 
      when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
      when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
      when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
      when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
      when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
      else null
     end

    ELSE
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
      when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
      else NULL 
     end
        
   END AS color,


   /** COLOR TEXTO **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
      else '000000'
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
      when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
      when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
      else NULL
     end       

    WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case 
      when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
      else '000000'
     end

    ELSE
     case
      when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
      else '000000' 
     end        
   END AS textcolor,


   /** SVG **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
     case
      when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027  c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445  c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239  c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z   M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069  c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069  c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case
      when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC'  OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC' or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      /*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/

      when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602   c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602   C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94   L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
       </g>
       </svg>'
 
      when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953   s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56   l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711   c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405   l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
       </g>
       </svg>'

      else NULL
     end

    ELSE NULL
   END AS svg_data,


   /** TEXT CAPTION **/
   CASE
    WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
      when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro' 
      when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente' 
      when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
      else NULL
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
      when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
      when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
      when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
      else null
     end
    ELSE NULL
   END AS textcaption,

   CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
          (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
    ELSE null
   END AS color_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.color_texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
     ELSE null
   END AS textcolor_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+LN_cliente_nivel.color_fondo+';" /></svg>'
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
    ELSE NULL
   END AS svg_data_personalizado,

   /** TEXTOS **/
   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
   ELSE NULL
   END AS texto,

   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.titulo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
   ELSE NULL
   END AS titulo_texto,
   


   /** PUNTO
    CASE
    WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
    WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
    WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
    ELSE 0 
    END AS punto, **/


   ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
   DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion

   FROM LN_contrapartes 
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN LN_contraparte_indicadores
    ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
     AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
   INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto

   INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
            AND LN_productos.producto = LN_familia_productos.producto)

   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND LN_cliente_productos.activo = 1
   AND LN_contraparte_familias.activo = 1
   AND LN_familia_productos.activo = 1
   --AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   AND LN_gestiones.desde <= @fecha_gestion AND LN_gestiones.hasta >= @fecha_gestion
   AND LN_indicadores.clave_indicador LIKE 'SCORE%'
   AND LN_indicadores.visible = 1
   GROUP BY LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.etiqueta,
     LN_indicadores.producto, LN_productos.nombre_producto,
     LN_productos.producto_id, 
     LN_cliente_productos.orden_producto, 
     LN_cliente_productos.ponderacion, 
     LN_productos.etiqueta,
     LN_indicadores.tipo_dato, 
     LN_contraparte_indicadores.valor_fecha, 
     LN_contraparte_indicadores.valor_numerico,
     LN_contraparte_indicadores.valor_texto,
     LN_contraparte_indicadores.visible,
     LN_contraparte_indicadores.created,
     LN_contraparte_indicadores.modified

   ORDER BY LN_cliente_productos.orden_producto

  ELSE
   /* Para un indicador específico (tipo_dato = I / F / B son valores numéricos) */

   SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.etiqueta as etiqueta_indicador,
     LN_indicadores.producto, LN_productos.nombre_producto,
     LN_productos.producto_id, 
     LN_cliente_productos.ponderacion, LN_productos.etiqueta, LN_cliente_productos.etiqueta_personalizada,
     LN_contraparte_indicadores.visible,

   case 
    when LN_indicadores.tipo_dato = 'I' OR LN_indicadores.tipo_dato = 'F' OR LN_indicadores.tipo_dato = 'B'
      then CONVERT(VARCHAR,ROUND(LN_contraparte_indicadores.valor_numerico,0))
    when LN_indicadores.tipo_dato = 'S'
      then LN_contraparte_indicadores.valor_texto 
    else CONVERT(VARCHAR(MAX), LN_contraparte_indicadores.valor_memo) 
   end as valor,

   /** COLOR **/
   CASE

    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      /*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
       when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
       when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
       when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
       when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/

      when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
      else NULL
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
      when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
      when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case 
      when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
      when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
      when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
      when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
      when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS' OR LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS_PPB') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 181 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 121 then 'd37123'
      when LN_contraparte_indicadores.valor_numerico >= 91 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
      else null
     end

    ELSE
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
      when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
      else NULL 
     end
        
   END AS color,


   /** COLOR TEXTO **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
      else '000000'
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
      when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
      when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
      else NULL
     end       

    WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case 
      when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
      else '000000'
     end

    ELSE
     case
      when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
      else '000000' 
     end        
   END AS textcolor,


   /** SVG **/
   CASE
             
    WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
     case
      when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027  c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445  c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239  c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z   M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069  c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069  c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case
      when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC'  OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC' or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      /*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/

      when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602   c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602   C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94   L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
       </g>
       </svg>'
 
      when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953   s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56   l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711   c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405   l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
       </g>
       </svg>'

      else NULL
     end


    ELSE NULL
   END AS svg_data,


   /** TEXT CAPTION **/
   CASE
    WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
      when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro' 
      when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente' 
      when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
      else NULL
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
      when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
      when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
      when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
      else null
     end
    ELSE NULL
   END AS textcaption,

   
   CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
               (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

       WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
               (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')


    ELSE null
   END AS color_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
       (select LN_cliente_nivel.color_texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

     WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
       (select LN_cliente_nivel.color_texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')

     ELSE null
   END AS textcolor_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
     (select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+LN_cliente_nivel.color_fondo+';" /></svg>'
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

     WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
     (select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+LN_cliente_nivel.color_fondo+';" /></svg>'
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')

    ELSE NULL
   END AS svg_data_personalizado,

   /** TEXTOS **/
   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
     (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

    WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
     (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')

   ELSE NULL
   END AS texto,

   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
     (select LN_cliente_nivel.titulo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

    WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
     (select LN_cliente_nivel.titulo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')

   ELSE NULL
   END AS titulo_texto,


   /** PUNTO **/
   CASE      
    /*WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)*/
    WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
    WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
    ELSE 0 
   END AS punto,
   LN_contraparte_indicadores.valor_memo,
   LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_numerico, CONVERT(VARCHAR,LN_contraparte_indicadores.valor_fecha,103) AS valor_fecha,

   ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
   DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion

   FROM LN_contrapartes 
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN LN_contraparte_indicadores
    ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
     AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
   INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto

   INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
            AND LN_productos.producto = LN_familia_productos.producto)

   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND LN_cliente_productos.activo = 1
   AND LN_contraparte_familias.activo = 1
   AND LN_familia_productos.activo = 1
   --AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   AND LN_gestiones.desde <= @fecha_gestion AND LN_gestiones.hasta >= @fecha_gestion
   AND LN_indicadores.clave_indicador = @p_clave_indicador

   ORDER BY LN_cliente_productos.orden_producto

 END


 /* idem accion anterior para todos los indicadores, ni uno específico ni solo SCORES */
 IF (@accion = 'indicadores_contraparte_full') BEGIN

  SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
    LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
    LN_indicadores.etiqueta as etiqueta_indicador,
    LN_indicadores.producto, LN_productos.nombre_producto,
    LN_productos.producto_id, 
    LN_cliente_productos.ponderacion, LN_productos.etiqueta,
    LN_contraparte_indicadores.visible,

  case 
   when LN_indicadores.tipo_dato = 'I' OR LN_indicadores.tipo_dato = 'F' OR LN_indicadores.tipo_dato = 'B'
     then CONVERT(VARCHAR,ROUND(LN_contraparte_indicadores.valor_numerico,0))
   when LN_indicadores.tipo_dato = 'S'
     then LN_contraparte_indicadores.valor_texto 
   else CONVERT(VARCHAR(MAX), LN_contraparte_indicadores.valor_memo) 
  end as valor,

  /** COLOR **/
  CASE

   WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC' or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
    case
     /*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/

     when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
     when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
     when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
     else NULL
    end

   WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
     when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
     when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
     when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
    case 
     when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
     when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
     else null
    end

   WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
     when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
     when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
     when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
     when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
     else null
    end

   ELSE
    case
     when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
     when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
     when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
     when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
     when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
     else NULL 
    end
        
  END AS color,


  /** COLOR TEXTO **/
  CASE
   WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
    case
     when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
     else '000000'
    end

   WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
     when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
     when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
     when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
     else NULL
    end       

   WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
    case 
     when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
     else '000000'
    end

   ELSE
    case
     when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
     else '000000' 
    end        
  END AS textcolor,


  /** SVG **/
  CASE
             
   WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
    case
     when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027  c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445  c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239  c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z   M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069  c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069  c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
     else null
    end

   WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
    case
     when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
     else null
    end

   WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
     when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC'  OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
    case
     when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
    case
     /*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/

     when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
     when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
     else NULL
    end

   WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
      <g>
      <path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
      </g>
      </svg>'

     when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
      <g>
      <path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602   c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602   C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94   L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
      </g>
      </svg>'
 
     when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
      <g>
      <path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953   s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56   l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
      </g>
      </svg>'

     when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
      <g>
      <path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711   c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405   l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
      </g>
      </svg>'

     when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
      <g>
      <path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
      </g>
      </svg>'

     else NULL
    end

   ELSE NULL
  END AS svg_data,


  /** TEXT CAPTION **/
  CASE
   WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
     when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
     when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro' 
     when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente' 
     when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
     else NULL
    end

   WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
    case
     when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
     when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
     when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
     when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
     else null
    end
   ELSE NULL
  END AS textcaption,


  /** PUNTO **/
  CASE      
   /*WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)*/
   WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
   WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
   ELSE 0 
  END AS punto,

  LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_numerico, CONVERT(VARCHAR,LN_contraparte_indicadores.valor_fecha,103) AS valor_fecha,

  ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
  DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion

  FROM LN_contrapartes 
  INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
  INNER JOIN LN_contraparte_indicadores
   ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
  INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
  INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
           AND LN_indicadores.producto = LN_cliente_productos.producto)
  INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto

  INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
  INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
           AND LN_productos.producto = LN_familia_productos.producto)

  WHERE LN_contrapartes.contraparte = @p_contraparte
  AND LN_cliente_productos.activo = 1
  AND LN_contraparte_familias.activo = 1
  AND LN_familia_productos.activo = 1
  AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
  
  ORDER BY LN_cliente_productos.orden_producto, LN_indicadores.orden

 END

 IF (@accion = 'score_final_contraparte') BEGIN

  /* Calcula y actualiza score final */

  DECLARE @sf decimal(4,1)=null, @isf int = NULL,
    @cantidad_scores int = 0,
    @suma_scores int = 0,
    @suma_pond int = 0,
    @tiene_docs tinyint = 0, 
    @modalidad_pago varchar(10) = null 


  SELECT @carga_inicial = ISNULL(carga_inicial, 0),
    @limite_carga_inicial = limite_carga_inicial, 
    @modalidad_pago = modalidad_pago

  FROM LN_contrapartes
  WHERE contraparte = @p_contraparte


  /*SELECT @gest = LN_gestiones.gestion
   FROM LN_gestiones
   WHERE contraparte = @p_contraparte
   AND desde <= getdate() AND hasta >= hasta*/


  SELECT  @isf = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion
  FROM LN_indicadores 
  INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
  INNER JOIN LN_familia_productos ON LN_productos.producto = LN_familia_productos.producto
  INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
  INNER JOIN LN_gestiones ON LN_contraparte_familias.contraparte = LN_gestiones.contraparte
  WHERE LN_indicadores.clave_indicador = 'SCORE_FINAL'
  AND LN_contraparte_familias.contraparte = @p_contraparte
  AND LN_productos.visible = 1
  AND LN_indicadores.visible = 1
  AND LN_contraparte_familias.activo = 1
  AND LN_familia_productos.activo = 1
  AND LN_gestiones.desde <= getdate()
  AND LN_gestiones.hasta >= getdate()



  SELECT @tiene_docs = COUNT(*)
  FROM LN_familia_productos
  INNER JOIN LN_productos 
   on LN_familia_productos.producto = LN_productos.producto
  INNER JOIN LN_contraparte_familias
   on LN_familia_productos.familia = LN_contraparte_familias.familia
  INNER JOIN LN_familias
   on LN_contraparte_familias.familia = LN_familias.familia

  /*INNER JOIN LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   INNER JOIN LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
   AND LN_productos.producto = LN_cliente_productos.producto
   AND LN_cliente_productos.activo = 1)*/


  -- agregado para que tenga en cuenta solo documentos con aplica = 1
  INNER JOIN LN_set_tipo_doc on LN_familias.set_doc = LN_set_tipo_doc.set_doc
  inner join ln_docs on (ln_docs.contraparte = @p_contraparte 
                        and ln_docs.aplica = 1 and ln_docs.estado_doc != 'X' 
                        and ln_docs.tipo_doc = ln_set_tipo_doc.tipo_doc)
  --
  WHERE LN_contraparte_familias.contraparte = @p_contraparte
  and LN_productos.documentos = 1
  and LN_familias.set_doc IS NOT NULL



  IF @gest IS NOT NULL and @isf IS NOT NULL BEGIN
   
  DECLARE @producto     int,
    @nombre_producto   varchar(100),
    @total_documentos   int,
    @pendientes     int,
    @ingresados     int,
    @rechazados     int,
    @verificados    int,
    @ponderar     bit = 0,
    @esdoc      bit 
      
  /* PREPAGOS 
   Si tiene pago pendiente o atrasado   --> sf = -150 / -160
   Si esta en periodo carga y esta pago --> sf = -160 
   y no recorre nada mas para calcular el score final
   */

  declare @calcular_sf bit = 1

  SELECT @cliente = cliente
        FROM LN_contrapartes
       WHERE contraparte = @p_contraparte

  if (@cliente = 5546348 and @carga_inicial = 1) 
  begin
    set @sf = -120 -- SIN CALCULAR (Documentos Pendientes)
    set @calcular_sf = 0
  end

  if (@modalidad_pago = 'PP') 
  begin 
   if exists (select * from pagos_transacciones
               where contraparte = @p_contraparte 
        and status = 'pending' 
        and DATEADD(DD,7,convert(date,created)) >= convert(date,GETDATE()))
   begin
    set @sf = -150 -- PAGO PENDIENTE
    set @calcular_sf = 0
   end 
   if exists (select * from pagos_transacciones 
               where contraparte = @p_contraparte 
      and status = 'pending' 
      and DATEADD(DD,7,convert(date,created)) < convert(date,GETDATE())
      and DATEADD(DD,30,convert(date,created)) >= convert(date,GETDATE())
      )
   begin
    set @sf = -160 -- PAGO ATRASADO (entre 8 y 30 dias)
    set @calcular_sf = 0
   end 

   if exists (select * from pagos_transacciones 
               where contraparte = @p_contraparte 
      and status = 'pending' 
      and DATEADD(DD,30,convert(date,created)) < convert(date,GETDATE()))
   begin
    set @sf = -170 -- PAGO RECHAZADO (mas de 30 dias)
    set @calcular_sf = 0
   end 

   if (@carga_inicial = 1) 
    and exists (select * from pagos_transacciones where contraparte = @p_contraparte and status = 'approved')
   begin
    set @sf = -140 -- PAGO APROBADO
    set @calcular_sf = 0
   end 
  end
  
  if (@carga_inicial = 1 /*or @limite_carga_inicial > getdate()*/) and (@tiene_docs != 0) 
      begin set @calcular_sf = 0 end

  IF (@calcular_sf = 1) 
  BEGIN
            
   DECLARE Scores CURSOR FOR
            
   /*SELECT LN_contraparte_indicadores.indicador,
    ISNULL(LN_cliente_productos.ponderacion,0) AS ponderacion,
    ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico
   
    FROM LN_contrapartes 
    INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
    INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
    INNER JOIN LN_contraparte_indicadores
    ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
    INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
    INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
    AND LN_indicadores.producto = LN_cliente_productos.producto)
    INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
   
    WHERE LN_contrapartes.contraparte = @p_contraparte
    AND LN_contraparte_familias.activo = 1
    AND LN_familia_productos.activo = 1
    AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
    AND LN_cliente_productos.ponderacion > 0
    AND LN_indicadores.clave_indicador LIKE 'SCORE%'
    GROUP BY LN_contrapartes.contraparte, 
    LN_gestiones.gestion,
    LN_contraparte_indicadores.indicador,
    LN_cliente_productos.ponderacion,
    LN_contraparte_indicadores.valor_numerico*/


   /*
    obtengo los scores de la contraparte junto con información de
    documentación asociada a cada producto para aplicar la lógica
    de reponderación.
    Si el producto incluye documentos y el score es 0 sólo hay que
    tomarlo en cuenta cuando haya existido alguna acción con los 
    mismos. Por ejemplo un 0 en score de documentos no pesa si tiene
    todos los documentos pendientes de ingresar.
    */


   /* cambiado 29/04/2019 para que tome solo los documentos con aplica = 1 
   
    SELECT LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,
    ISNULL(producto_docs.total_docs, 0) AS total_docs,
    ISNULL(docs_pendientes.pendientes, 0) AS pendientes,
    ISNULL(docs_ingresados.ingresados, 0) AS ingresados,
    ISNULL(docs_rechazados.rechazados, 0) AS rechazados,
    ISNULL(docs_verificados.verificados, 0) AS verificados,
    ISNULL(LN_cliente_productos.ponderacion,0) AS ponderacion,
    ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico
   
    FROM LN_contrapartes 
    INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
    INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
    INNER JOIN LN_contraparte_indicadores
    ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
    AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion
    /*AND ISNULL(LN_contraparte_indicadores.balance_preexiste, 0) = 0*/
)
    INNER JOIN LN_indicadores ON (LN_contraparte_indicadores.indicador = LN_indicadores.indicador
    AND LN_familia_productos.producto = LN_indicadores.producto)
    INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
    AND LN_indicadores.producto = LN_cliente_productos.producto)
    INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
   
   
   
    LEFT OUTER JOIN (select LN_productos.producto, count(*) as total_docs
    from LN_familia_productos
    INNER JOIN LN_productos 
    on LN_familia_productos.producto = LN_productos.producto
    INNER JOIN LN_contraparte_familias
    on LN_familia_productos.familia = LN_contraparte_familias.familia
    INNER JOIN LN_familias
    on LN_contraparte_familias.familia = LN_familias.familia
    INNER JOIN LN_set_tipo_doc 
    on LN_familias.set_doc = LN_set_tipo_doc.set_doc
    WHERE LN_contraparte_familias.contraparte = @p_contraparte
    and LN_productos.documentos = 1
    and LN_set_tipo_doc.activo = 1
    GROUP BY LN_productos.producto) producto_docs ON LN_productos.producto = producto_docs.producto
   
   
   
   
    LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS pendientes
    FROM LN_docs 
    INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
    INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
    INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
    AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
    INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
    INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
    WHERE LN_docs.estado_doc = 'N'
    AND LN_contraparte_familias.contraparte = @p_contraparte
    AND LN_set_tipo_doc.activo = 1
    AND LN_productos.documentos = 1
    GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_pendientes ON 
    (LN_productos.producto = docs_pendientes.producto
    and LN_contrapartes.contraparte = docs_pendientes.contraparte
    and LN_gestiones.gestion = docs_pendientes.gestion)
   
    LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS ingresados
    FROM LN_docs 
    INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
    INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
    INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
    AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
    INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
    INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
    WHERE LN_docs.estado_doc = 'I'
    AND LN_contraparte_familias.contraparte = @p_contraparte
    AND LN_set_tipo_doc.activo = 1
    AND LN_productos.documentos = 1
    GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_ingresados ON 
    (LN_productos.producto = docs_ingresados.producto
    and LN_contrapartes.contraparte = docs_ingresados.contraparte
    and LN_gestiones.gestion = docs_ingresados.gestion)
   
   
    LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS rechazados
    FROM LN_docs 
    INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
    INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
    INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
    AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
    INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
    INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
    WHERE LN_docs.estado_doc = 'R'
    AND LN_contraparte_familias.contraparte = @p_contraparte
    AND LN_set_tipo_doc.activo = 1
    AND LN_productos.documentos = 1
    GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_rechazados ON 
    (LN_productos.producto = docs_rechazados.producto
    and LN_contrapartes.contraparte = docs_rechazados.contraparte
    and LN_gestiones.gestion = docs_rechazados.gestion)
   
    LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS verificados
    FROM LN_docs 
    INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
    INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
    INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
    AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
    INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
    INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
    WHERE LN_docs.estado_doc = 'V'
    AND LN_contraparte_familias.contraparte = @p_contraparte
    AND LN_set_tipo_doc.activo = 1
    AND LN_productos.documentos = 1
    GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_verificados ON 
    (LN_productos.producto = docs_verificados.producto
    and LN_contrapartes.contraparte = docs_verificados.contraparte
    and LN_gestiones.gestion = docs_verificados.gestion)
   
   
   
    WHERE LN_contrapartes.contraparte = @p_contraparte
    AND LN_contraparte_familias.activo = 1
    AND LN_familia_productos.activo = 1
    AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
    AND LN_cliente_productos.ponderacion > 0
    AND LN_indicadores.clave_indicador LIKE 'SCORE%'
    GROUP BY LN_contrapartes.contraparte, 
    LN_gestiones.gestion,
    LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,
    producto_docs.total_docs,
    docs_pendientes.pendientes,
    docs_ingresados.ingresados,
    docs_rechazados.rechazados,
    docs_verificados.verificados,
    LN_cliente_productos.ponderacion,
    LN_contraparte_indicadores.valor_numerico
    */


   /* cambiado 29/04/2019 para que tome solo los documentos con aplica = 1
    se cambio por esto:
    en total_doc, antes contaba los documentos de la familia, ahora se fija tambien que en ln_docs tenga aplica = 1
    y si la contraparte no tienen ningun documento que aplique, entonces, no tiene que ponderar documentos
    - para pendientes, ingresados, verificados, rechazados, toma solo los aplica = 1
    */

     
   SELECT LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,LN_productos.documentos, 
      ISNULL(producto_docs.total_docs, 0) AS total_docs,
      ISNULL(docs_pendientes.pendientes, 0) AS pendientes,
      ISNULL(docs_ingresados.ingresados, 0) AS ingresados,
      ISNULL(docs_rechazados.rechazados, 0) AS rechazados,
      ISNULL(docs_verificados.verificados, 0) AS verificados,
      -- si estamos en documentos, y total_doc esta en cero, no toma la ponderacion de documentos para esta contraparte
      iif(ln_productos.documentos=1 and ISNULL(producto_docs.total_docs,0)=0,0,ISNULL(LN_cliente_productos.ponderacion,0)) AS ponderacion,
      /*LN_cliente_productos.activo,*/
      ISNULL(LN_contraparte_indicadores.valor_numerico,0) AS valor_numerico

    FROM LN_contrapartes 
    INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    INNER JOIN LN_familia_productos ON LN_contraparte_familias.familia = LN_familia_productos.familia
    INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
    INNER JOIN LN_contraparte_indicadores
      ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
       AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
    INNER JOIN LN_indicadores ON (LN_contraparte_indicadores.indicador = LN_indicadores.indicador
           AND LN_familia_productos.producto = LN_indicadores.producto)
    INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
             AND LN_indicadores.producto = LN_cliente_productos.producto)
    INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto

    LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
       ) SUSC
                ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador) 

    LEFT OUTER JOIN (select LN_productos.producto, count(*) as total_docs
        from LN_familia_productos
        INNER JOIN LN_productos 
        on LN_familia_productos.producto = LN_productos.producto 
        INNER JOIN LN_contraparte_familias
        on LN_familia_productos.familia = LN_contraparte_familias.familia
        INNER JOIN LN_familias
        on LN_contraparte_familias.familia = LN_familias.familia
        INNER JOIN LN_set_tipo_doc 
        on LN_familias.set_doc = LN_set_tipo_doc.set_doc
        -- esto se agrego para que tome los documentos que aplica = 1 
        inner join ln_docs on 
        (ln_docs.contraparte = @p_contraparte and ln_docs.aplica = 1 
        and ln_docs.estado_doc != 'X' and ln_docs.tipo_doc = ln_set_tipo_doc.tipo_doc)
        --
        WHERE LN_contraparte_familias.contraparte = @p_contraparte 
        and LN_productos.documentos = 1
        and LN_set_tipo_doc.activo = 1
        GROUP BY LN_productos.producto) producto_docs ON LN_productos.producto = producto_docs.producto




    LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS pendientes
        FROM LN_docs 
        INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
        INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
        INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
                  AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
        INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
        INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
        WHERE LN_docs.estado_doc = 'N'
        AND LN_contraparte_familias.contraparte = @p_contraparte
        AND LN_set_tipo_doc.activo = 1
        AND LN_productos.documentos = 1
        and ln_docs.aplica = 1
        GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_pendientes ON                  
                     (LN_productos.producto = docs_pendientes.producto
                     and LN_contrapartes.contraparte = docs_pendientes.contraparte
                     and LN_gestiones.gestion = docs_pendientes.gestion)

    LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS ingresados
        FROM LN_docs 
        INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
        INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
        INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
                  AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
        INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
        INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
        WHERE LN_docs.estado_doc = 'I'
        AND LN_contraparte_familias.contraparte = @p_contraparte
        AND LN_set_tipo_doc.activo = 1
        AND LN_productos.documentos = 1
        and ln_docs.aplica = 1
        GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_ingresados ON                  
                     (LN_productos.producto = docs_ingresados.producto
                     and LN_contrapartes.contraparte = docs_ingresados.contraparte
                     and LN_gestiones.gestion = docs_ingresados.gestion)


    LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS rechazados
        FROM LN_docs 
        INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
        INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
        INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
                  AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
        INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
        INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
        WHERE LN_docs.estado_doc = 'R'
        AND LN_contraparte_familias.contraparte = @p_contraparte
        AND LN_set_tipo_doc.activo = 1
        AND LN_productos.documentos = 1
        and ln_docs.aplica = 1
        GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_rechazados ON                  
                     (LN_productos.producto = docs_rechazados.producto
                     and LN_contrapartes.contraparte = docs_rechazados.contraparte
                     and LN_gestiones.gestion = docs_rechazados.gestion)

    LEFT OUTER JOIN (SELECT LN_productos.producto, LN_docs.contraparte, LN_docs.gestion, COUNT(*) AS verificados
        FROM LN_docs 
        INNER JOIN LN_set_tipo_doc ON LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
        INNER JOIN LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
        INNER JOIN LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
                  AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
        INNER JOIN LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
        INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
        WHERE LN_docs.estado_doc = 'V'
        AND LN_contraparte_familias.contraparte = @p_contraparte
        AND LN_set_tipo_doc.activo = 1
        AND LN_productos.documentos = 1
        and ln_docs.aplica = 1
        GROUP BY LN_productos.producto, LN_docs.contraparte, LN_docs.gestion) docs_verificados ON                  
                     (LN_productos.producto = docs_verificados.producto
                     and LN_contrapartes.contraparte = docs_verificados.contraparte
                     and LN_gestiones.gestion = docs_verificados.gestion)



    WHERE LN_contrapartes.contraparte = @p_contraparte
    AND LN_contraparte_familias.activo = 1
    AND LN_familia_productos.activo = 1
    AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
    AND LN_cliente_productos.ponderacion > 0
    /*AND LN_cliente_productos.activo > 0*/
    AND LN_indicadores.clave_indicador LIKE 'SCORE%'

    /* En caso de tener Informe Comercial de Argentina e Informe Comercial del exterior, 
        solo tomará el score que le corresponde por el país de la cotraparte */

    AND ((ln_indicadores.clave_indicador = 'SCORE_IC' and 
      (LN_contrapartes.country_code = 'AR' and LN_productos.country_code = 'AR')
      or 
      (LN_contrapartes.country_code != 'AR' and LN_productos.country_code is null)
         ) or ln_indicadores.clave_indicador != 'SCORE_IC')
       /**/

    /* Verifica que el indicador no sea por suscripcion, o si es por suscripcion que esté suscripto) */
    and ((ISNULL(LN_productos.suscribe_indicadores, 0) > 0 and SUSC.indicador IS NOT NULL)
          or ISNULL(LN_productos.suscribe_indicadores, 0) = 0 )
       /**/ 
    GROUP BY LN_contrapartes.contraparte, 
      LN_gestiones.gestion,
      LN_contraparte_indicadores.indicador, LN_indicadores.producto, LN_productos.nombre_producto,LN_productos.documentos,
      producto_docs.total_docs,
      docs_pendientes.pendientes,
      docs_ingresados.ingresados,
      docs_rechazados.rechazados,
      docs_verificados.verificados,
      LN_cliente_productos.ponderacion,
      /*LN_cliente_productos.activo,*/
      LN_contraparte_indicadores.valor_numerico

   
   OPEN Scores

   FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto, 
          @esdoc, -- agregado
          @total_documentos, @pendientes,
          @ingresados, @rechazados, @verificados,
          @pond, @valor

   WHILE @@FETCH_STATUS = 0 BEGIN
   --select @indic indicador, @producto producto, @nombre_producto nombre,   CONVERT(DECIMAL(4,1),@pond) pond, CONVERT(DECIMAL(4,1),@valor) valor
    /*SET @sf = isnull(@sf,0) + convert(decimal(4,1),@pond) / 100 * convert(decimal(4,1),@valor)*/

    /* Si el score es 0, entonces tengo que ver si tiene documentos. Si tiene documentos,
     sólo voy a hacer pesar el 0 si hubo acción de rechazo sobre los mismos.
     Si tiene 
todo pendiente de ingresar y/o de verificar, no se debe tener en cuenta */

    /* Control de Killer */
    if (@valor = -100) begin
     if (@has_killer = 0)
      set @has_killer = 1
    end
    /* fin control de killer */

    /* Control Sin Calcular */
    /* Si hay mas de una causa que dieron Sin calcular, deja que da menor valor */ 
    if (@valor < -100) begin
        set @has_sin_calcular = 1
     if (@valor < @valor_sin_calcular) 
      set @valor_sin_calcular = @valor 
    end
    /* fin control Sin Calcular */

    IF (@total_documentos > 0)
     SET @ponderar = iif(@carga_inicial = 0 , 1, 0)
    ELSE
     SET @ponderar = 1               

    /*IF (@carga_inicial = 0)
     SET @ponderar = iif(@total_documentos > 0, 1, 0)
     ELSE
     SET @ponderar = iif(@valor = 0, iif(@total_documentos > 0, iif(@rechazados > 0, 1, 0) , 1), 1)*/


    if (@ponderar = 1) begin
     SET @cantidad_scores = @cantidad_scores + 1
     SET @suma_pond = @suma_pond + @pond
    end

    FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
           @esdoc, --agregado
           @total_documentos, @pendientes,
           @ingresados, @rechazados, @verificados,
           @pond, @valor
   END

   CLOSE Scores

   
   /* Primero sumé los pesos a ponderar, ahora aplico fórmula volviendo a recorrer el cursor excepto que haya un killer */
   IF (@has_killer = 0 and @has_sin_calcular = 0) BEGIN
    if (@suma_pond > 0) begin

     OPEN Scores

     FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
            @esdoc, --agregado
            @total_documentos, @pendientes,
            @ingresados, @rechazados, @verificados,
            @pond, @valor

     WHILE @@FETCH_STATUS = 0 BEGIN


      IF (@total_documentos > 0)
       SET @ponderar = iif(@carga_inicial = 0 , 1, 0)
      ELSE
       SET @ponderar = 1               

      /*IF (@carga_inicial = 0)
       SET @ponderar = iif(@total_documentos > 0, 1, 0)
       ELSE
       SET @ponderar = iif(@valor = 0, iif(@total_documentos > 0, iif(@rechazados > 0, 1, 0) , 1), 1)*/


      if (@ponderar = 1) begin
       SET @sf = isnull(@sf,0) + CONVERT(DECIMAL(4,1),@pond) *  CONVERT(DECIMAL(4,1),@valor) / @suma_pond
      end

      FETCH NEXT FROM Scores INTO @indic, @producto, @nombre_producto,
             @esdoc, --agregado
             @total_documentos, @pendientes,
             @ingresados, @rechazados, @verificados,
             @pond, @valor
     END

     CLOSE Scores

    end
   END
   ELSE 
   BEGIN
    if (@has_killer = 1) SET @sf = -100
    else 
    if (@has_sin_calcular = 1) set @sf = @valor_sin_calcular
   END

   DEALLOCATE Scores
  END /* cacular_sf = 1 */

   /*Actualizo Score final*/

   SELECT @cliente = cliente
        FROM LN_contrapartes
       WHERE contraparte = @p_contraparte

   declare @score_txt    varchar(100) = null
   declare @score_color varchar(100) = null

   select @score_txt = texto, @score_color = color_fondo 
    from ln_cliente_nivel where cliente = @cliente 
        and desde <= @sf and hasta > @sf

   if not exists (select indicador
       FROM LN_contraparte_indicadores
       WHERE indicador = @isf
       AND contraparte = @p_contraparte
       AND gestion = @gest)

    INSERT INTO LN_contraparte_indicadores
    (contraparte, gestion, indicador, created, valor_numerico, valor_texto, valor_memo)
    VALUES
    (@p_contraparte, @gest, @isf, GETDATE(), @sf, @score_txt, @score_color)

   else

    UPDATE LN_contraparte_indicadores SET 
     valor_numerico = round(@sf,0),
     valor_texto = @score_txt, 
     valor_memo  = @score_color,
     modified = GETDATE()
    WHERE indicador = @isf
    AND contraparte = @p_contraparte
    AND gestion = @gest


   select valor_numerico as score, valor_texto as score_texto
   from LN_contraparte_indicadores
   WHERE indicador = @isf
   AND contraparte = @p_contraparte
   AND gestion = @gest



  END /* gest not null , indicador not null */
 
 END
 
 IF (@accion = 'score_documentos') BEGIN

  /* Calcula y actualiza score de documentos */

  /* 
   Se fija si tiene la condicion doc_no_verificados_killer, doc_no_ingresado_killer o de doc_rechazado_killer en 1:
   Si tiene alguna de esas condiciones, y tiene documentos en ese estado ==> respuesta del Score: SIN CALCULAR
   */

  SELECT @cliente = cliente
        FROM LN_contrapartes
       WHERE contraparte = @p_contraparte
  declare @doc_no_verificados_killer bit = 0
  declare @doc_no_ingresado_killer bit = 0
  declare @doc_rechazado_killer bit = 0
  if (select COUNT(*) from ln_cliente_productos 
    where cliente = @cliente 
      and doc_no_verificados_killer = 1) > 0
   set @doc_no_verificados_killer = 1 
  if (select COUNT(*) from ln_cliente_productos 
    where cliente = @cliente 
      and doc_no_ingresado_killer = 1) > 0
   set @doc_no_ingresado_killer = 1 
  if (select COUNT(*) from ln_cliente_productos 
    where cliente = @cliente 
      and doc_rechazado_killer = 1) > 0
   set @doc_rechazado_killer = 1 

  DECLARE @sd decimal(5,2) = 0, 
          @isd int = NULL, 
    @suma_pesos_set decimal(10,2) = null,  
    @peso_doc decimal(5,2), 
    @suma_docs decimal(10,2) = null,
    @detalle varchar(max) = null, 
    @detallep varchar(max) = null, 
    @documento varchar(100) = '', 
    @etiqueta_doc varchar(100) = null


  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= getdate()

  DECLARE Familias CURSOR FOR
  select familia from LN_contraparte_familias where contraparte = @p_contraparte and activo = 1

  OPEN Familias
  FETCH NEXT FROM Familias INTO @familia
  WHILE @@FETCH_STATUS = 0 BEGIN

   /* Obtengo el indicador de score de documentos que le corresponde según la familia */
   SELECT @isd = LN_indicadores.indicador, @prod = LN_indicadores.producto, 
          @etiqueta_doc = ln_productos.etiqueta
   FROM LN_indicadores
   INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
   INNER JOIN LN_productos on LN_indicadores.producto = LN_productos.producto
   INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   WHERE LN_indicadores.clave_indicador = 'SCORE_DOC'
   AND LN_contraparte_familias.contraparte = @p_contraparte
   AND LN_contraparte_familias.familia = @familia

   IF @gest IS NOT NULL and @isd IS NOT NULL BEGIN

    SET @cantidad = null

    declare @anio varchar(4)

    DECLARE Documentos CURSOR FOR
    
    SELECT LN_set_tipo_doc.tipo_doc, LN_set_tipo_doc.killer,
      ISNULL(LN_set_tipo_doc.peso_score, 0) as peso_score,
      DOCS.estado_doc, DOCS.vigencia as vigencia 
    FROM LN_set_tipo_doc
    INNER JOIN LN_familias ON LN_set_tipo_doc.set_doc = LN_familias.set_doc
    LEFT OUTER JOIN
     (select LN_docs.tipo_doc, LN_docs.estado_doc, versiones.vers, datepart(year,versiones.fecha_vigencia) as vigencia
      from LN_docs
      inner join
       (
       -- de los que no son balances, se toma la ultima versión del documento
       select contraparte, gestion,
        LN_docs.tipo_doc, max(doc_version) as vers, null as fecha_vigencia 
       from LN_docs
       inner join LN_tipos_doc on LN_tipos_doc.tipo_doc = LN_docs.tipo_doc and LN_tipos_doc.es_balance = 0
       where contraparte = @p_contraparte
       and gestion = @gest
       and aplica = 1 and estado_doc != 'X'
       group by contraparte, gestion, LN_docs.tipo_doc
       union 
       -- de los balances toma todas las versiones 
       select contraparte, gestion,
        LN_docs.tipo_doc, doc_version as vers, LN_docs.fecha_vigencia as fecha_vigencia 
       from LN_docs
       inner join LN_tipos_doc on LN_tipos_doc.tipo_doc = LN_docs.tipo_doc and LN_tipos_doc.es_balance = 1
       where contraparte = @p_contraparte
       and gestion = @gest
       and aplica = 1 and estado_doc != 'X'
       ) versiones
      on (LN_docs.contraparte = versiones.contraparte
       and LN_docs.gestion = versiones.gestion
       and LN_docs.tipo_doc = versiones.tipo_doc
       and LN_docs.doc_version = versiones.vers)
     where LN_docs.estado_doc <> 'X'
     and LN_docs.aplica = 1) DOCS ON LN_set_tipo_doc.tipo_doc = DOCS.tipo_doc

    WHERE LN_familias.familia = @familia
                AND LN_set_tipo_doc.activo = 1
    AND DOCS.estado_doc IS NOT NULL
    
       
    OPEN Documentos

    FETCH NEXT FROM Documentos INTO @tipo_doc, @killer, @peso_doc, @estado_doc, @anio

    WHILE @@FETCH_STATUS = 0 BEGIN
     if (@cantidad is null) 
     begin
      set @cantidad = 0
      set @suma_pesos_set = 0
      set @suma_docs = 0
     end 

     SET @suma_pesos_set = @suma_pesos_set + @peso_doc

     SET @cantidad = @cantidad + 1

     IF (@estado_doc = 'V') BEGIN
      SET @cantidad_verificados = @cantidad_verificados + 1
      
      SET @suma_docs = @suma_docs + @peso_doc
     
     END ELSE BEGIN
         IF (@estado_doc in('N','R')) BEGIN
      /* Si el documento no está ingresado entonces hay que fijarse si es killer del score */
       IF (@killer = 1) BEGIN
        /* Agregado para guardar el detalle de los killer */
           select @documento = nombre_tipo_doc from LN_tipos_doc where tipo_doc = @tipo_doc
        if (@detalle is null) set @detalle = 'Documento no presentado: ' + replace(@documento,';',',') 
           else set @detalle = @detalle + '; Documento no presentado: ' + replace(@documento,';',',') 
           if (@anio is not null)  set @detalle = @detalle  + ' (' + @anio + ')'
        IF (@has_killer = 0)
         SET @has_killer = 1
       END 
       else
       BEGIN
           /* Agregado para guardar el detalle de los puntajes */
           select @documento = nombre_tipo_doc from LN_tipos_doc where tipo_doc = @tipo_doc
        if (@detallep is null) set @detallep = 'Documento no presentado: ' + replace(@documento,';',',') 
           else set @detallep = @detallep + '; Documento no presentado: ' + replace(@documento,';',',') 
           if (@anio is not null)  set @detallep = @detallep  + ' (' + @anio + ')'
       END 
      END 
      /* Casos que dan Score = SIN CALCULAR */
      if (@estado_doc = 'I' and @doc_no_verificados_killer = 1 ) BEGIN 
           /* select @documento = nombre_tipo_doc from LN_tipos_doc where tipo_doc = @tipo_doc
            if (@detalle is null) set @detalle = 'Documento no verificado: ' + replace(@documento,';',',')
                else set @detalle = @detalle + '; Documento no verificado: ' + replace(@documento,';',',') 
                if (@anio is not null)  set @detalle = @detalle  + ' (' + @anio + ')'
            --IF (@has_killer = 0) SET @has_killer = 1*/

        SET @has_sin_calcular = 1 
        SET @has_no_verificados = 1 

       END   
      if (@estado_doc = 'N' and @doc_no_ingresado_killer = 1 ) BEGIN 
        SET @has_sin_calcular = 1 
        SET @has_no_ingresados = 1 

       END  
      if (@estado_doc = 'R' and @doc_rechazado_killer = 1 ) BEGIN 
        SET @has_sin_calcular = 1 
        SET @has_rechazados = 1 
       END  
      /**/
     END

     FETCH NEXT FROM Documentos INTO @tipo_doc, @killer, @peso_doc, @estado_doc, @anio
    END

    CLOSE Documentos
    DEALLOCATE Documentos

   

     /* Mientras esté en carga inicial no se calcula score de documentos a menos que 
      tenga el 100% de verificados, con lo cual se debe sacar de carga inicial */

     DECLARE @guardar_score     tinyint = 1

     SELECT @carga_inicial = ISNULL(carga_inicial, 0),
       @limite_carga_inicial = limite_carga_inicial,
       @cliente = cliente

     FROM LN_contrapartes
     WHERE contraparte = @p_contraparte
    if (@cantidad > 0) begin
     SET @guardar_score = iif(@carga_inicial = 1, iif(@cantidad = @cantidad_verificados, 1, 0), 1)

     if (@carga_inicial = 1) begin
      if (@cantidad = @cantidad_verificados) begin
       UPDATE LN_contrapartes SET carga_inicial = 0
       WHERE contraparte = @p_contraparte
      end
     end
    end 
     /*** EXCEPCION SOLICITADA PARA AMX, QUE CALCULE SIEMPRE EL SCORE, ESTÉ O NO EN CARGA INICIAL ***/
     /*
      if (@cliente = 5546348) begin
      SET @guardar_score = 1
      end
      */

     /*****/
     IF (@guardar_score = 0) BEGIN
      if exists (select *
          FROM LN_contraparte_indicadores
          WHERE indicador = @isd
          AND contraparte = @p_contraparte
          AND gestion = @gest)
       DELETE FROM LN_contraparte_indicadores 
       WHERE indicador = @isd
         AND contraparte = @p_contraparte
         AND gestion = @gest
      if exists (select * From ln_score_detalle_killer
          where contraparte = @p_contraparte 
            and gestion = @gest 
            and indicador = @isd
            and visible = 1)
       UPDATE ln_score_detalle_killer
          set visible = 0, 
              modified = GETDATE()
         where contraparte = @p_contraparte 
        and gestion = @gest 
        and indicador = @isd
        and visible = 1
     END 

     IF (@guardar_score = 1) BEGIN

      /*
       if (@has_killer = 1)
       set @sd = - 100
       else
       set @sd = iif (@suma_pesos_set > 0, ROUND(@suma_docs / @suma_pesos_set * 100, 0), NULL)
       */

      if (@has_killer = 1 or @has_sin_calcular = 1) 
      begin
       if (@has_killer = 1)
       begin
        set @sd = -100
       end 
       else
       begin
        if (@has_sin_calcular = 1) 
        begin
         -- queda el que da menos puntos 
         if (@has_no_verificados = 1) set @sd = -110
         if (@has_no_ingresados = 1)  set @sd = -120
         if (@has_rechazados = 1)    set @sd = -130
        end 
       end 
      end 
      else 
      begin
       set @sd = iif (@suma_pesos_set > 0, ROUND(@suma_docs / @suma_pesos_set * 100, 0), NULL)
      end 

      select @p_contraparte AS contraparte, @isd as indicador, ROUND(@sd,0) AS score

      if not exists (select indicador
          FROM LN_contraparte_indicadores
          WHERE indicador = @isd
          AND contraparte = @p_contraparte
          AND gestion = @gest)

       INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, created, valor_numerico)
       VALUES
       (@p_contraparte, @gest, @isd, GETDATE(), ROUND(@sd,0))

      else

       UPDATE LN_contraparte_indicadores SET 
        valor_numerico = round(@sd,0),
        modified = GETDATE()
       WHERE indicador = @isd
       AND contraparte = @p_contraparte
       AND gestion = @gest
       
      /* Detalle de los killer */
      if exists (select * From ln_score_detalle_killer
          where contraparte = @p_contraparte 
            and gestion = @gest 
            and indicador = @isd
            and detalle_killer != isnull(@detalle,'')
            and visible = 1)
        UPDATE LN_score_detalle_killer
           set visible = 0, modified = getdate()
         where contraparte = @p_contraparte 
           and gestion = @gest 
           and indicador = @isd
 
       if (@detalle is not null) 
       begin
        if not exists (select * From ln_score_detalle_killer
           where contraparte = @p_contraparte 
             and gestion = @gest 
             and indicador = @isd
             and detalle_killer = isnull(@detalle,'')
             and visible = 1)

           insert into ln_score_detalle_killer
           (contraparte, gestion, indicador, detalle_killer, visible, created)
           values (@p_contraparte, @gest, @isd, @detalle, 1, getdate()) 
       end

       /* Detalle de los puntos */
       if (@detallep is not null) 
           set @detallep = isnull(@etiqueta_doc,'') + ': '+ @detallep
       if exists (select * From ln_score_detalle_puntos
          where contraparte = @p_contraparte 
            and gestion = @gest 
            and indicador = @isd
            and detalle != isnull(@detallep,'')
            and visible = 1)
        UPDATE LN_score_detalle_puntos
           set visible = 0, modified = getdate()
         where contraparte = @p_contraparte 
           and gestion = @gest 
           and indicador = @isd
 
       if (@detallep is not null) 
       begin
        if not exists (select * From ln_score_detalle_puntos
           where contraparte = @p_contraparte 
             and gestion = @gest 
             and indicador = @isd
             and detalle = isnull(@detallep,'')
             and visible = 1)

           insert into ln_score_detalle_puntos
           (contraparte, gestion, indicador, detalle, visible, created)
           values (@p_contraparte, @gest, @isd, @detallep, 1, getdate()) 
       end
     END

   END



   FETCH NEXT FROM Familias INTO @familia
  END
  CLOSE Familias
  DEALLOCATE Familias
  
 END


 IF (@accion = 'cumplimiento_documentos') BEGIN

  /* Calcula y actualiza indice de cumplimiento de documentos */

  DECLARE @cd decimal(4,1)=0, @icd int = NULL

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= getdate()

  SELECT @icd = LN_indicadores.indicador, @prod = LN_indicadores.producto
  FROM LN_indicadores
  INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
  INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
  WHERE LN_indicadores.clave_indicador = 'CUMPL_DOC'
  AND LN_contraparte_familias.contraparte = @p_contraparte



  IF @gest IS NOT NULL and @icd IS NOT NULL BEGIN

   set @cantidad = null
   set @cumplidos = null
   if (SELECT COUNT(*)
    FROM LN_docs
    where contraparte = @p_contraparte
    and LN_docs.estado_doc <> 'X'
    and LN_docs.gestion = @gest
    AND LN_docs.aplica = 1) > 0 
   begin 
    SET @cantidad = 0
    SET @cumplidos = 0
   end 

   DECLARE Documentos CURSOR FOR
              
   /*SELECT LN_docs.doc_id, LN_docs.tipo_doc, LN_docs.estado_doc, versiones.vers
    FROM LN_docs
    INNER JOIN
    (select contraparte, gestion,
    tipo_doc, max(doc_version) as vers
    from LN_docs
    where contraparte = @p_contraparte
    and gestion = @gest
    group by contraparte, gestion, tipo_doc) versiones
    ON (LN_docs.contraparte = versiones.contraparte
    AND LN_docs.gestion = versiones.gestion
    AND LN_docs.tipo_doc = versiones.tipo_doc
    AND LN_docs.doc_version = versiones.vers)
    WHERE LN_docs.estado_doc <> 'X'*/


   SELECT LN_docs.doc_id, LN_docs.tipo_doc, LN_docs.estado_doc, LN_docs.doc_version
   FROM LN_docs
            INNER JOIN LN_contraparte_familias ON LN_docs.contraparte = LN_contraparte_familias.contraparte
            INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
            INNER JOIN LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                                            AND LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
                                            AND LN_set_tipo_doc.activo = 1)   
            WHERE LN_docs.contraparte = @p_contraparte
   AND LN_docs.estado_doc <> 'X'
   AND LN_docs.gestion = @gest
   AND LN_docs.aplica = 1



   OPEN Documentos

   FETCH NEXT FROM Documentos INTO @doc_id, @tipo_doc, @estado_doc, @vers

   WHILE @@FETCH_STATUS = 0 BEGIN

    SET @cantidad = @cantidad + 1

    IF (@estado_doc = 'I' OR @estado_doc = 'V') BEGIN
     if @estado_doc = 'V' begin
      SET @cantidad_verificados = @cantidad_verificados + 1
     end

     SET @cumplidos = @cumplidos + 1
    END

    FETCH NEXT FROM Documentos INTO @doc_id, @tipo_doc, @estado_doc, @vers
   END

   CLOSE Documentos
   DEALLOCATE Documentos


   

    /* Mientras esté en carga inicial no se calcula cumplimineto de documentos a menos que 
     tenga el 100% de verificados, con lo cual se debe sacar de carga inicial */

    DECLARE @guardar_cump     tinyint = 1
    SELECT @carga_inicial = ISNULL(carga_inicial, 0),
      @limite_carga_inicial = limite_carga_inicial,
      @cliente = cliente
    FROM LN_contrapartes
    WHERE contraparte = @p_contraparte

   if (@cantidad > 0) begin
    SET @guardar_cump = iif(@carga_inicial = 1, iif(@cantidad = @cantidad_verificados, 1, 0), 1)
   
    if (@carga_inicial = 1) begin
     if (@cantidad = @cantidad_verificados) begin
      UPDATE LN_contrapartes SET carga_inicial = 0
      WHERE contraparte = @p_contraparte
     end
    end
   end 
   
    /*** EXCEPCION SOLICITADA PARA AMX, QUE CALCULE SIEMPRE EL CUMPLIMIENTO, ESTÉ O NO EN CARGA INICIAL ***/
    if (@cliente = 5546348) begin
     SET @guardar_cump = 1
    end
    /*****/
    
    IF (@guardar_cump = 1) BEGIN

     SET @cd = convert(float, @cumplidos) / convert(float, @cantidad) * 100

     select @p_contraparte AS contraparte, @icd AS indicador, ROUND(@cd,0) AS score

     if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @icd
         AND contraparte = @p_contraparte
         AND gestion = @gest)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, valor_numerico)
      VALUES
      (@p_contraparte, @gest, @icd, GETDATE(), ROUND(@cd,0))

     else

      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = round(@cd,0),
       modified = GETDATE()
      WHERE indicador = @icd
      AND contraparte = @p_contraparte
      AND gestion = @gest

    END

   

  END

 END


 IF (@accion = 'score_balance') BEGIN

  /* guarda el score de balance pasado como parámetro */

  IF (@p_score >= 0) begin

   DECLARE @isb int = null

   SELECT @gest = LN_gestiones.gestion
   FROM LN_gestiones
   WHERE contraparte = @p_contraparte
   AND desde <= getdate() AND hasta >= getdate()

   SELECT @isb = LN_indicadores.indicador, @prod = LN_indicadores.producto
   FROM LN_indicadores
   INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   INNER JOIN LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   INNER JOIN LN_cliente_productos on (LN_familia_productos.producto = LN_cliente_productos.producto
            AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
            AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
   WHERE LN_indicadores.clave_indicador = 'SCORE_BAL'
   AND LN_contraparte_familias.contraparte = @p_contraparte
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1


   /*select @gest, @isb*/

   IF @gest IS NOT NULL and @isb IS NOT NULL BEGIN
                 
    /*EXEC LN_validar_carga_inicial @p_contraparte, @inicial OUTPUT
    
     if (@inicial = 0) begin*/


     /* Determino si el Score de Balance que se va a guardar corresponde a un documento LED
      verificado cuyo correspondiente registro en balances_contables está visible y PUBLICADO.
      Debería tomar el último ejercicio */


     DECLARE @fecha_ultimo_balance date, @id_ultimo_balance int

     SELECT TOP 1 
       @fecha_ultimo_balance = fecha_balance, 
       @id_ultimo_balance = id_balance
     FROM balances_contables
     INNER JOIN padrones ON balances_contables.cuit = padrones.identificacion
     INNER JOIN LN_contrapartes ON padrones.id_padron = LN_contrapartes.id_padron
     WHERE LN_contrapartes.contraparte = @p_contraparte
     AND balances_contables.estado = 'PUBLICADO'
     AND ISNULL(balances_contables.visible, 0) = 1
     ORDER BY balances_contables.fecha_balance DESC

                  
     DECLARE @fecha_ultimo_ejercicio date, @id_ultimo_ejercicio int, @estado_ultimo_ejercicio varchar(1)

     SELECT TOP 1
       @fecha_ultimo_ejercicio = convert(date, fin_ejercicio),
       @id_ultimo_ejercicio = id_externo,
       @estado_ultimo_ejercicio = estado_doc
     FROM LN_docs
     WHERE contraparte = @p_contraparte
     AND gestion = @gest
     AND es_balance = 1
     order by fin_ejercicio desc


     /* Comparamos para determinar si se calculó el score con un balance existente 
      o basado en lo que proveyó la contraparte. Deben coincidir y estar
      publicdo y verificado el documento en LED */

     DECLARE @preexiste tinyint = 1

     if (@fecha_ultimo_balance = @fecha_ultimo_ejercicio
      AND @id_ultimo_balance = @id_ultimo_ejercicio
      AND @estado_ultimo_ejercicio = 'V') begin

      SET @preexiste = 0
     end

             

     if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @isb
         AND contraparte = @p_contraparte
         AND gestion = @gest) begin

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, valor_numerico, balance_preexiste)
      VALUES
      (@p_contraparte, @gest, @isb, GETDATE(), @p_score, @preexiste)

     end else begin

      /*select @gest, @isb, @p_score, @p_contraparte*/

      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @p_score,
       balance_preexiste = @preexiste,
       modified = GETDATE()
      WHERE indicador = @isb
      AND contraparte = @p_contraparte
      AND gestion = @gest
     end

    /*end*/
                

   END

  end


 END


 IF (@accion = 'score_comercial') BEGIN

  /* guarda el score de informe comercial pasado como parámetro */

  IF (@p_score >= 0) begin

   DECLARE @isc int = null
   DECLARE @pais_contrap varchar(2) = null

   SELECT @gest = LN_gestiones.gestion,
     @pais_contrap = identificadores.country_code
   FROM LN_gestiones    
   INNER JOIN LN_contrapartes on LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones on LN_contrapartes.id_padron = padrones.id_padron
   INNER JOIN identificadores on padrones.identificador = identificadores.identificador
   WHERE LN_gestiones.contraparte = @p_contraparte
   AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= hasta

   if (@pais_contrap = 'AR')
     
    -- cuando la contraparte es de argentina busco el indicador de informe comercial de Argentina
    SELECT @isc = LN_indicadores.indicador, @prod = LN_indicadores.producto
    FROM LN_indicadores
    INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
    INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
    INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    INNER JOIN LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    INNER JOIN padrones on LN_contrapartes.id_padron = padrones.id_padron
    INNER JOIN identificadores on padrones.identificador = identificadores.identificador
    WHERE LN_indicadores.clave_indicador = 'SCORE_IC'
    AND LN_productos.country_code = 'AR'
    AND LN_contraparte_familias.contraparte = @p_contraparte

   else

    -- cuando la contraparte NO es de Argentina busco el indicador de un informe comercial del Exterior (el producto tiene country en null)
    SELECT @isc = LN_indicadores.indicador, @prod = LN_indicadores.producto
    FROM LN_indicadores
    INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
    INNER JOIN LN_productos on LN_familia_productos.producto = LN_productos.producto
    INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    INNER JOIN LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    INNER JOIN padrones on LN_contrapartes.id_padron = padrones.id_padron
    INNER JOIN identificadores on padrones.identificador = identificadores.identificador
    WHERE LN_indicadores.clave_indicador = 'SCORE_IC'
    AND LN_productos.country_code IS NULL
    AND LN_contraparte_familias.contraparte = @p_contraparte


   IF @gest IS NOT NULL and @isc IS NOT NULL BEGIN

    if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @isc
        AND contraparte = @p_contraparte
        AND gestion = @gest)

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, created, valor_numerico)
     VALUES
     (@p_contraparte, @gest, @isc, GETDATE(), @p_score)

    else

     UPDATE LN_contraparte_indicadores SET 
      valor_numerico = @p_score,
      modified = GETDATE()
     WHERE indicador = @isc
     AND contraparte = @p_contraparte
     AND gestion = @gest
   

   END

  end

 END


 IF (@accion = 'valoracion_balance') BEGIN
  /* guarda la valoración de balance pasada como valor numérico en el parámetro score 
   la valoración es un indicador string en tabla, por lo tanto se convierte el número
   según regla preestablecida
   */


  if (@p_score >= 0) begin

   DECLARE @ivb int = null

   SELECT @gest = LN_gestiones.gestion
   FROM LN_gestiones
   WHERE contraparte = @p_contraparte
   AND desde <= getdate() AND hasta >= hasta
                   
   SELECT @ivb = LN_indicadores.indicador, @prod = LN_indicadores.producto
   FROM LN_indicadores
   INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   WHERE LN_indicadores.clave_indicador = 'VALORACION_BAL'
   AND LN_contraparte_familias.contraparte = @p_contraparte

   IF @gest IS NOT NULL and @ivb IS NOT NULL BEGIN

    DECLARE @val varchar(1)
    if (@p_score <= 2) set @val = 'N'
    else if (@p_score <= 4) set @val = 'D'
     else if (@p_score <= 6) set @val = 'E'
      else if (@p_score <= 8) set @val = 'U'
       else set @val = 'P'

    if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @ivb
        AND contraparte = @p_contraparte
        AND gestion = @gest)

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, created, valor_texto, valor_numerico, visible)
     VALUES
     (@p_contraparte, @gest, @ivb, GETDATE(), @val, @p_score, @p_visible)

    else

     UPDATE LN_contraparte_indicadores SET 
      valor_texto = @val,
      valor_numerico = @p_score,
      modified = GETDATE(),
      visible = @p_visible
     WHERE indicador = @ivb
     AND contraparte = @p_contraparte
     AND gestion = @gest              

   END
  end

 END


 IF (@accion = 'analisis_balance') BEGIN
  /* guarda el texto de análisis de balance pasado en el parámetro @p_valor_memo */

  DECLARE @iab int = null

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= hasta
                  
  SELECT @iab = LN_indicadores.indicador, @prod = LN_indicadores.producto
  FROM LN_indicadores
  INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
  INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
  WHERE LN_indicadores.clave_indicador = 'ANALISIS_BAL'
  AND LN_contraparte_familias.contraparte = @p_contraparte

  IF @gest IS NOT NULL and @iab IS NOT NULL BEGIN
   if not exists (select indicador
       FROM LN_contraparte_indicadores
       WHERE indicador = @iab
       AND contraparte = @p_contraparte
       AND gestion = @gest)

    INSERT INTO LN_contraparte_indicadores
    (contraparte, gestion, indicador, created, created_by, valor_memo, visible)
    VALUES
    (@p_contraparte, @gest, @iab, GETDATE(), @p_user_id, @p_valor_memo, @p_visible)

   else

    UPDATE LN_contraparte_indicadores SET 
     valor_memo = @p_valor_memo,
     visible = @p_visible,
     modified = GETDATE(),
     modified_by = @p_user_id
    WHERE indicador = @iab
    AND contraparte = @p_contraparte
    AND gestion = @gest              

  END

 END

 IF (@accion = 'score_dossier' or @accion = 'score_br') BEGIN

  /* guarda el score de DOSSIER o de BUSINESS REPORT pasado como parámetro */

  IF (@p_score >= 0) begin

   DECLARE @isdd int = null
            /*
             SELECT @gest = LN_gestiones.gestion
             FROM LN_gestiones
             WHERE contraparte = @p_contraparte
             AND desde <= getdate() AND hasta >= hasta
             */

            
            IF(@gest = null)
            begin
                SELECT @gest = LN_gestiones.gestion
                FROM LN_gestiones
                WHERE contraparte = @p_contraparte
                AND desde <= getdate() AND hasta >= hasta
   end

   SELECT @isdd = LN_indicadores.indicador, @prod = LN_indicadores.producto
   FROM LN_indicadores
   INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   WHERE LN_indicadores.clave_indicador = iif(@accion = 'score_dossier', 'SCORE_DOSSIER', 'SCORE_BR')
   AND LN_contraparte_familias.contraparte = @p_contraparte
   AND LN_familia_productos.activo = 1
   AND LN_contraparte_familias.activo = 1 
   AND LN_cliente_productos.activo = 1

   IF @gest IS NOT NULL and @isdd IS NOT NULL BEGIN

    if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @isdd
        AND contraparte = @p_contraparte
        AND gestion = @gest)

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, created, valor_numerico)
     VALUES
     (@p_contraparte, @gest, @isdd, GETDATE(), @p_score)

    else

     UPDATE LN_contraparte_indicadores SET 
      valor_numerico = @p_score,
      modified = GETDATE()
     WHERE indicador = @isdd
     AND contraparte = @p_contraparte
     AND gestion = @gest


   END

  END
  
 END

 IF (@accion = 'nivel_riesgo') BEGIN

  /* Guarda el indicador nivel de riesgo del DOSSIER para una contraparte */
  if (@p_valor_texto is not null or @p_valor_numerico is not null) begin

   DECLARE @inr int = null
            
            SELECT @gest = LN_gestiones.gestion,
        @cliente = LN_contrapartes.cliente
            FROM LN_contrapartes
      inner join LN_gestiones ON 
         LN_gestiones.contraparte = LN_contrapartes.contraparte
            WHERE LN_contrapartes.contraparte = @p_contraparte
            AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
           
             
   SELECT @inr = LN_indicadores.indicador, @prod = LN_indicadores.producto
   FROM LN_indicadores
   INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   WHERE LN_indicadores.clave_indicador = 'NIVEL_RIESGO'
   AND LN_contraparte_familias.contraparte = @p_contraparte
   AND LN_familia_productos.activo = 1
   AND LN_contraparte_familias.activo = 1 
   AND LN_cliente_productos.activo = 1

   IF (@gest IS NOT NULL and @inr IS NOT NULL) BEGIN
    if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @inr
        AND contraparte = @p_contraparte
        AND gestion = @gest)

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, created, valor_texto)
     VALUES
     (@p_contraparte, @gest, @inr, GETDATE(), @p_valor_texto)

    else

     UPDATE LN_contraparte_indicadores SET 
      valor_texto = @p_valor_texto,
      valor_numerico = null,
      modified = GETDATE()
     WHERE indicador = @inr
     AND contraparte = @p_contraparte
     AND gestion = @gest
   END
  end

 END

 IF (@accion = 'score_nivel_riesgo') BEGIN

  DECLARE @inr1 int = null
  DECLARE @inr2 int = null

        SELECT @gest = LN_gestiones.gestion,
      @cliente = LN_contrapartes.cliente
        FROM LN_contrapartes
  inner join LN_gestiones ON 
     LN_gestiones.contraparte = LN_contrapartes.contraparte
        WHERE LN_contrapartes.contraparte = @p_contraparte
        AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
           
  SELECT @inr1 = LN_indicadores.indicador, @prod = LN_indicadores.producto
  FROM LN_indicadores
  INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
  INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
  INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
  INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
           AND LN_indicadores.producto = LN_cliente_productos.producto)
  WHERE LN_indicadores.clave_indicador = 'NIVEL_RIESGO'
  AND LN_contraparte_familias.contraparte = @p_contraparte
  AND LN_familia_productos.activo = 1
  AND LN_contraparte_familias.activo = 1 
  AND LN_cliente_productos.activo = 1
   
  SELECT @inr2 = LN_indicadores.indicador, @prod = LN_indicadores.producto
  FROM LN_indicadores
  INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
  INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
  INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
  INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
           AND LN_indicadores.producto = LN_cliente_productos.producto)
  WHERE LN_indicadores.clave_indicador = 'SCORE_NIVEL_RIESGO'
  AND LN_contraparte_familias.contraparte = @p_contraparte
  AND LN_familia_productos.activo = 1
  AND LN_contraparte_familias.activo = 1 
  AND LN_cliente_productos.activo = 1

  IF (@gest IS NOT NULL and @inr2 IS NOT NULL and @inr1 IS NULL ) 
  begin
      if exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @inr2
        AND contraparte = @p_contraparte
        and visible = 1 
        AND gestion = @gest)
     update LN_contraparte_indicadores set visible = 0
        WHERE indicador = @inr2
        AND contraparte = @p_contraparte
        AND gestion = @gest

  end 
  IF (@gest IS NOT NULL and @inr2 IS NOT NULL and @inr1 IS NOT NULL ) 
  BEGIN
        select @p_valor_texto = valor_texto 
      from ln_contraparte_indicadores
      where contraparte = @p_contraparte
      and gestion = @gest
      and visible = 1
      and indicador = @inr1

    if (@p_valor_texto is null)
    begiN
      if exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @inr2
        AND contraparte = @p_contraparte
        and visible = 1 
        AND gestion = @gest)
      update LN_contraparte_indicadores set visible = 0
        WHERE indicador = @inr2
        AND contraparte = @p_contraparte
        AND gestion = @gest
    end 

    if (@p_valor_texto is not null)
    begin
     select @p_valor_numerico = puntos 
       from ln_dias_alertas 
      where cliente = @cliente
           and tabla = 'nivel_riesgo' 
        and contenido = @p_valor_texto
     if (@p_valor_numerico is null) 
        begin
           if (@p_valor_texto = 'BR') set @p_valor_numerico = 100
           if (@p_valor_texto = 'SR') set @p_valor_numerico = 60
           if (@p_valor_texto = 'MR') set @p_valor_numerico = 40
           if (@p_valor_texto = 'AR') set @p_valor_numerico = 10
        end 
    
       if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @inr2
        AND contraparte = @p_contraparte
        and visible = 1
        AND gestion = @gest)

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, created, valor_texto, valor_numerico)
     VALUES
     (@p_contraparte, @gest, @inr2, GETDATE(), @p_valor_texto, @p_valor_numerico)

       else

     UPDATE LN_contraparte_indicadores SET 
      valor_texto = @p_valor_texto,
      valor_numerico = @p_valor_numerico,
      modified = GETDATE()
     WHERE indicador = @inr2
     AND contraparte = @p_contraparte
     AND gestion = @gest
     AND visible = 1 
    END
   END
 END


 IF (@accion = 'dependencia_economica') BEGIN

  /* Guarda el valor para el indicador dependencia económica del Dossier de una contraparte */
  if (@p_valor_numerico is not null) begin

   DECLARE @ide int = null
            IF(@gest = NULL)
            begin
                SELECT @gest = LN_gestiones.gestion
                FROM LN_gestiones
                WHERE contraparte = @p_contraparte
                AND desde <= getdate() AND hasta >= hasta
            end 
            /*
             SELECT @gest = LN_gestiones.gestion
             FROM LN_gestiones
             WHERE contraparte = @p_contraparte
             AND desde <= getdate() AND hasta >= hasta
             */
            
   SELECT @ide = LN_indicadores.indicador, @prod = LN_indicadores.producto
   FROM LN_indicadores
   INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   WHERE LN_indicadores.clave_indicador = 'DEP_ECON'
   AND LN_contraparte_familias.contraparte = @p_contraparte
   AND LN_familia_productos.activo = 1
   AND LN_contraparte_familias.activo = 1 
   AND LN_cliente_productos.activo = 1


   IF @gest IS NOT NULL and @ide IS NOT NULL BEGIN

    if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @ide
        AND contraparte = @p_contraparte
        AND gestion = @gest)

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, created, valor_numerico)
     VALUES
     (@p_contraparte, @gest, @ide, GETDATE(), CONVERT(float, @p_valor_numerico))

    else

     UPDATE LN_contraparte_indicadores SET 
      valor_numerico = CONVERT(float, @p_valor_numerico),
      modified = GETDATE()
     WHERE indicador = @ide
     AND contraparte = @p_contraparte
     AND gestion = @gest


   END
   

  end
  
 END

 IF (@accion = 'fidecheck') BEGIN
  /* Calcula el estado de fidecheck negativo/relacionado/positivo */

  DECLARE @ifc int = null, @vf varchar(1) = null

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= hasta
              
  SELECT @ifc = LN_indicadores.indicador, @prod = LN_indicadores.producto
  FROM LN_indicadores
  INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
  INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
  WHERE LN_indicadores.clave_indicador = 'FIDECHECK'
  AND LN_contraparte_familias.contraparte = @p_contraparte                    

  IF @gest IS NOT NULL and @ifc IS NOT NULL BEGIN

   IF (select count(*) from LN_demo_fidecheck
    where contraparte = @p_contraparte and visible = 1 
    and fidecheck = 'P') > 0 begin

    SET @vf = 'P'

   end ELSE 

    IF (select count(*) from LN_demo_fidecheck
    where contraparte = @p_contraparte and visible = 1 
    and fidecheck = 'E') > 0 begin

    SET @vf = 'E'

   end ELSE 

    IF (select count(*) from LN_demo_fidecheck
     where contraparte = @p_contraparte and visible = 1 
     and fidecheck = 'R') > 0 begin

     SET @vf = 'R'

    end ELSE begin

     IF (select count(*) from LN_demo_fidecheck
      where contraparte = @p_contraparte and visible = 1 
      and fidecheck = 'N') > 0

      SET @vf = 'N'

     end



   if not exists (select indicador
       FROM LN_contraparte_indicadores
       WHERE indicador = @ifc
       AND contraparte = @p_contraparte
       AND gestion = @gest)

    INSERT INTO LN_contraparte_indicadores
    (contraparte, gestion, indicador, created, valor_texto)
    VALUES
    (@p_contraparte, @gest, @ifc, GETDATE(), @vf)

   else

    UPDATE LN_contraparte_indicadores SET 
     valor_texto = @vf,
     modified = GETDATE()
    WHERE indicador = @ifc
    AND contraparte = @p_contraparte
    AND gestion = @gest

  END

 END

 IF (@accion = 'score_fidecheck') BEGIN
 
   set @gest = 0
   SELECT @gest = LN_gestiones.gestion
     FROM LN_gestiones 
   INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
     AND LN_gestiones.hasta >= GETDATE()
     AND LN_contrapartes.activo = 1
     AND LN_contrapartes.contraparte = @p_contraparte

   declare @indic_fide int = null
   select @indic_fide = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = 'SCORE_FIDECHECK'

   if (@indic_fide is not null and @gest > 0) begin

    declare @score_fide decimal(10,2) = null
    EXEC LN_score_fidecheck @p_contraparte, @score_fide OUTPUT

    if (@score_fide is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_fide)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_fide, @score_fide, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_fide,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_fide

    end
    else 
    begin
     if  exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_fide)
     delete from LN_contraparte_indicadores
            where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @indic_fide

    end 

   end


  

 END


                  
 IF (@accion = 'ultima_novedad_contraparte') BEGIN
  /* guarda en la tabla de indicadores la fecha de la última novedad de monitoreo
   Exceptuamos novedades de la sección 7 (Contables) */



  DECLARE @iun int = null

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= hasta
             
  SELECT @iun = LN_indicadores.indicador, @prod = LN_indicadores.producto
  FROM LN_indicadores
  INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
  INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
  WHERE LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD'
  AND LN_contraparte_familias.contraparte = @p_contraparte

  DECLARE @valor_fecha smalldatetime = NULL

  IF @gest IS NOT NULL and @iun IS NOT NULL BEGIN                  

   SELECT @valor_fecha = MAX(monitoreos_resultados.fecha)
   FROM monitoreos_resultados
   INNER JOIN monitoreos ON monitoreos_resultados.cuit = monitoreos.cuit
   INNER JOIN padrones ON monitoreos_resultados.cuit = padrones.identificacion
   INNER JOIN LN_contrapartes ON (padrones.id_padron = LN_contrapartes.id_padron
           AND monitoreos.cliente = LN_contrapartes.cliente)
   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND monitoreos_resultados.seccion_mantenimiento <> 7


   if (@valor_fecha IS NOT NULL) begin

    if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @iun
        AND contraparte = @p_contraparte
        AND gestion = @gest) 

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, created, created_by, valor_fecha)
     SELECT @p_contraparte as contraparte, @gest as gestion,
       @iun as indicador, GETDATE() AS created, @p_user_id as created_by,
       MAX(monitoreos_resultados.fecha)
     FROM monitoreos_resultados
     INNER JOIN monitoreos ON monitoreos_resultados.cuit = monitoreos.cuit
     INNER JOIN padrones ON monitoreos_resultados.cuit = padrones.identificacion
     INNER JOIN LN_contrapartes ON (padrones.id_padron = LN_contrapartes.id_padron
             AND monitoreos.cliente = LN_contrapartes.cliente)
     WHERE LN_contrapartes.contraparte = @p_contraparte
     AND monitoreos_resultados.seccion_mantenimiento <> 7

    else

     UPDATE LN_contraparte_indicadores SET 
      valor_fecha = @valor_fecha,
      modified = GETDATE(),
      modified_by = @p_user_id
     WHERE LN_contraparte_indicadores.indicador = @iun
     AND LN_contraparte_indicadores.contraparte = @p_contraparte
     AND LN_contraparte_indicadores.gestion = @gest

   end


   SELECT CONVERT(VARCHAR, @valor_fecha, 23) AS fecha
 

  END

                 
 END

 IF (@accion = 'novedades_monitoreo') BEGIN

  select TOP 50 nov.contraparte, padrones.nombre_persona, padrones.identificador, padrones.identificacion, nov.ultima_novedad
  from padrones INNER JOIN 
   (select monitoreos_resultados.cuit, LN_contrapartes.contraparte, max(monitoreos_resultados.fecha) as ultima_novedad
   from monitoreos_resultados
   inner join padrones ON monitoreos_resultados.cuit = padrones.identificacion 
   inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
   where LN_contrapartes.cliente = @p_cliente
   and LN_contrapartes.activo = 1
   and monitoreos_resultados.seccion_mantenimiento <> 7
   group by monitoreos_resultados.cuit, LN_contrapartes.contraparte) nov ON padrones.identificacion = nov.cuit
  order by nov.ultima_novedad DESC, padrones.nombre_persona

 END

 IF (@accion = 'verifica_indicador') BEGIN

  /* dado un ID de contraparte y una clave de indicador verifica 
   si el producto está asociado al cliente y corresponde calcular 
   el valor del indicador */


  if (@p_contraparte > 0 AND @p_clave_indicador IS NOT NULL) begin


   SELECT LN_contrapartes.contraparte, 
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.producto, 
     LN_cliente_productos.ponderacion

   FROM LN_contrapartes 
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN LN_cliente_productos ON LN_contrapartes.cliente = LN_cliente_productos.cliente
   INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   INNER JOIN LN_indicadores ON LN_cliente_productos.producto = LN_indicadores.producto

   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   AND LN_indicadores.clave_indicador = @p_clave_indicador
   AND LN_familia_productos.activo = 1
   AND LN_cliente_productos.activo = 1
   AND LN_indicadores.valoracion = 'A'
   GROUP BY LN_contrapartes.contraparte, 
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.producto, 
     LN_cliente_productos.ponderacion




  end

 END

 IF (@accion = 'documentacion_pendiente') BEGIN

  select clientes.nombre_cliente as 'CLIENTE',
  pa.identificacion as CUIT, pa.nombre_persona as 'RAZON_SOCIAL', 
  td.nombre_tipo_doc as 'DOCUMENTO', 
  IIF(do.estado_doc='N','No ingresado','Rechazado') as 'ESTADO'
  from LN_docs do
  inner JOIN LN_contrapartes co on co.contraparte=do.contraparte
  inner join clientes on co.cliente = clientes.cliente
  INNER JOIN padrones pa on pa.id_padron=co.id_padron
  INNER JOIN LN_tipos_doc td on do.tipo_doc=td.tipo_doc
  INNER JOIN LN_gestiones on co.contraparte = LN_gestiones.contraparte
  where do.cliente = @p_cliente
  and estado_doc in ('N','R')
  and LN_gestiones.desde <= GETDATE()
  and LN_gestiones.hasta >= GETDATE()
  order by do.contraparte, td.nombre_tipo_doc

 END

 IF (@accion = 'cantidad_subcontratistas') BEGIN
  /* grabar / actualizar el indicador de cantidad de subcontratistas de una contraparte */

  DECLARE @ics int = null

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= hasta
         
  SELECT @ics = LN_indicadores.indicador, @prod = LN_indicadores.producto
  FROM LN_indicadores
  INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
  INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
  WHERE LN_indicadores.clave_indicador = 'SUBCONT'
  AND LN_contraparte_familias.contraparte = @p_contraparte

  IF @gest IS NOT NULL and @ics IS NOT NULL BEGIN

   declare @cant_subc int
   EXEC LN_subcontratistas 'contar', @p_contraparte, null, null , @cant_subc output

   if exists (SELECT contraparte, indicador
      FROM LN_contraparte_indicadores
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @ics)

    UPDATE LN_contraparte_indicadores SET
      valor_numerico = iif(@cant_subc > 0, @cant_subc, NULL),
      visible = 1,
      modified = GETDATE(),
      modified_by = @p_user_id
    WHERE contraparte = @p_contraparte
    AND gestion = @gest
    AND indicador = @ics


   else

    INSERT INTO LN_contraparte_indicadores
    (contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
    VALUES
    (@p_contraparte, @gest, @ics, iif(@cant_subc > 0, @cant_subc, NULL), 1, GETDATE(), @p_user_id)


   SELECT @cant_subc as cantidad

  END

 END



 /*** Indicadores homologación ***/
 IF (@accion = 'homologacion_subcontratista') BEGIN
  /* Dado un ID de contraparte, verifica que pueda calcularse
   su estado de homologación final por la existencia de los
   indicadores correspondientes al producto */



  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones inner join LN_contrapartes ON
  LN_gestiones.contraparte = LN_contrapartes.contraparte
  inner join LN_contraparte_familias
  ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
  inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
         and LN_contrapartes.cliente = LN_familias.cliente)
  inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
  inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
  inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
           and LN_contrapartes.cliente = LN_cliente_productos.cliente)
  WHERE LN_contrapartes.contraparte = @p_contraparte
  AND LN_cliente_productos.activo = 1
  AND LN_familia_productos.activo = 1
  AND LN_productos.visible = 1
  AND LN_familias.visible = 1
  AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()

  if (@gest > 0) begin

   /* check si está asociado a un producto que tenga el indicador de homologación */

   DECLARE @ihom int = null

   SELECT @ihom = LN_indicadores.indicador, @prod = LN_indicadores.producto
   FROM LN_indicadores
   INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   WHERE LN_indicadores.clave_indicador = 'HOMOLOG'
   AND LN_contraparte_familias.contraparte = @p_contraparte


   if (@ihom > 0) begin

    /* busco los diferentes indicadores que conforman la homologación */

    DECLARE @hindic int, @vn float, @canth int = 0, @cant0 int = 0, @cant1 int = 0

    DECLARE Homolog CURSOR FOR

    SELECT LN_contraparte_indicadores.indicador, ISNULL(LN_contraparte_indicadores.valor_numerico, 0)
    FROM LN_contraparte_indicadores inner join LN_indicadores
     ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
    WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
    AND LN_contraparte_indicadores.gestion = @gest
    AND LN_indicadores.clave_indicador IN ('CTRL_ETICO','CTRL_CALIDAD','CTRL_COMERCIAL')

    OPEN Homolog

    FETCH NEXT FROM Homolog INTO @hindic, @vn

    WHILE @@FETCH_STATUS = 0 BEGIN
     SET @canth = @canth + 1

     IF (@vn = 0) SET @cant0 = @cant0 + 1
     IF (@vn > 0) SET @cant1 = @cant1 + 1

     FETCH NEXT FROM Homolog INTO @hindic, @vn
    END

    CLOSE Homolog
    DEALLOCATE Homolog


    if (@canth > 0) begin                         

     /* Busco excepción activa */
     SELECT @exc = LN_excepciones.excepcion,
       @tipo_exc = LN_excepciones.tipo_excepcion
     FROM LN_excepciones
     WHERE LN_excepciones.contraparte = @p_contraparte
     AND LN_excepciones.gestion = @gest
     AND LN_excepciones.estado = 1
     AND LN_excepciones.vigencia >= GETDATE()


     if not exists (select valor_numerico
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ihom) begin

      if (@cant0 > 0)
   
       /* existencia de un rojo queda rojo, si no hay excepcion a verde */
       insert into LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
       (@p_contraparte, @gest, @ihom, iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)), GETDATE(), @p_user_id)                             

      else

       if (@cant1 > 0)

        /* sin rojos todos verdes (1) queda verde si no hay excepcion a rojo */
        insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
        values
        (@p_contraparte, @gest, @ihom, iif(@exc is null, 1, iif(@tipo_exc = 'R', 0, 1)), GETDATE(), @p_user_id)

       else
    
        /* ver caso si no hay ni rojos ni verdes debería ser resultado rojo, si no hay excepcion a verde */
        insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
        values
        (@p_contraparte, @gest, @ihom, iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)), GETDATE(), @p_user_id)


   

     end else begin

      if (@cant0 > 0)

       /* existencia de un rojo debe quedar rojo (0) si no hay excepcion a verde */
       update LN_contraparte_indicadores SET 
       valor_numerico = iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)),
       modified = GETDATE(),
       modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @ihom

      else
  
       if (@cant1 > 0)

        /* sin rojos todos verdes (1) queda verde si no hay excepcion a rojo */
        update LN_contraparte_indicadores SET 
        valor_numerico = iif(@exc is null, 1, iif(@tipo_exc = 'R', 0, 1)),
        modified = GETDATE(),
        modified_by = @p_user_id
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ihom

       else

        /* caso ni rojos ni verdes debería quedar rojo (0) si no hay excepcion a verde */
        update LN_contraparte_indicadores SET 
        valor_numerico = iif(@exc is null, 0, iif(@tipo_exc = 'V', 1, 0)),
        modified = GETDATE(),
        modified_by = @p_user_id
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ihom

    


     end

    end else begin

     /* si no hay valores no tiene sentido calcular la homologación : BORRO el posible registro existente */
     DELETE FROM LN_contraparte_indicadores
     WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
     AND LN_contraparte_indicadores.gestion = @gest
     AND LN_contraparte_indicadores.indicador = @ihom

    end

   end

  end


 END

 IF (@accion = 'control_etico' or @accion = 'control_calidad') BEGIN

  /* Registración del estado de control etico y control de calidad en función de valores
    en las tablas LN_control_screening y LN_control_black_list respectivamente */


  select @gest = LN_gestiones.gestion,
    @cuit = padrones.identificacion,
    @country = identificadores.country_code,
    @cliente = LN_contrapartes.cliente
  from LN_gestiones 
  inner join LN_contrapartes ON 
     LN_gestiones.contraparte = LN_contrapartes.contraparte
  inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
  inner join identificadores on padrones.identificador = identificadores.identificador
  where LN_contrapartes.contraparte = @p_contraparte
  and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()



  if (@gest is not null) begin

   DECLARE @ich int = null, @clave_ind varchar(50)

   if (@accion = 'control_etico')
    set @clave_ind = 'CTRL_ETICO'
   else
    set @clave_ind = 'CTRL_CALIDAD'


   select @ich = LN_indicadores.indicador
   from LN_indicadores inner join LN_productos on 
    LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on
    LN_productos.producto = LN_familia_productos.producto
   inner join LN_familias on
    LN_familia_productos.familia = LN_familias.familia
   inner join LN_contraparte_familias on
    LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on
    (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    AND LN_familias.cliente = LN_contrapartes.cliente)
   inner join LN_cliente_productos on
    (LN_productos.producto = LN_cliente_productos.producto
    AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_indicadores.clave_indicador = @clave_ind
   and LN_familias.visible = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1


   if (@ich is not null) begin

    declare @valor_anterior float = null, @valor_num float

    /* EL VALOR A GUARDAR EN LA TABLA DE INDICADORES ES 1 = VERDE , 0 = ROJO */

    if (@accion = 'control_etico') begin

     /* Control de Etica utilizando la tabla LN_control_screening */
     if exists (select identificacion
        from LN_control_screening
        where cliente = @cliente
        /*and country_code = @country*/
        and identificacion = @cuit
        and visible = 1)

      set @valor_num = 0
     else
      set @valor_num = 1


     /* Si es de AR y no lo encontré en tabla lo busco como socio de sociedades en lista de ctrl etico */
     if (@valor_num = 1 /*AND @country = 'AR'*/) begin

      if exists (select socios.c01_cuit, socios.c01_cuit_soc
         from socios
         inner join LN_control_screening on socios.c01_cuit_soc = LN_control_screening.identificacion 
         inner join padrones on padrones.identificacion = socios.c01_cuit_soc and padrones.habilitado = 1 
         where socios.visible = 1
         and socios.c01_cuit = @cuit
         and isnull(socios.c04_ultimo,'') != 'N'
         and LN_control_screening.visible = 1
         /*and LN_control_screening.country_code = @country*/
         and LN_control_screening.cliente = @cliente)

       set @valor_num = 0
      else
       set @valor_num = 1



     end


     end else begin

     /* Control de Calidad utilizando tabla LN_control_black_list */

     if exists (select identificacion
        from LN_control_black_list
        where cliente = @cliente
        and country_code = @country
        and identificacion = @cuit
        and visible = 1)

      set @valor_num = 0
     else
      set @valor_num = 1


     /* Si es de AR y no lo encontré en tabla lo busco como socio de sociedades en lista de ctrl de calidad */
     if (@valor_num = 1 /*AND @country = 'AR'*/) begin

      if exists (select socios.c01_cuit, socios.c01_cuit_soc
         from socios
         inner join LN_control_black_list on socios.c01_cuit_soc = LN_control_black_list.identificacion
         inner join padrones on padrones.identificacion = socios.c01_cuit_soc and padrones.habilitado = 1 
         where socios.visible = 1
         and socios.c01_cuit = @cuit
         and LN_control_black_list.visible = 1
         and isnull(socios.c04_ultimo,'') != 'N'
         /*and LN_control_black_list.country_code = @country*/
         and LN_control_black_list.cliente = @cliente)

       set @valor_num = 0
      else
       set @valor_num = 1



     end


    end
 

    select @valor_anterior = valor_numerico
    from LN_contraparte_indicadores
    where contraparte = @p_contraparte
    and gestion = @gest
    and indicador = @ich


    if (@valor_anterior is null)

     insert into LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, created, created_by)
     values
     (@p_contraparte, @gest, @ich, @valor_num, GETDATE(), @p_user_id)

    else

     if (@valor_anterior <> @valor_num) begin
      /* Actualizo sólo si cambia */

      update LN_contraparte_indicadores set
       valor_numerico = @valor_num,
       modified = GETDATE(),
       modified_by = @p_user_id
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @ich
     end

   end

  end

 END


 IF (@accion = 'CONTROL_COMERCIAL') BEGIN

  select @gest = LN_gestiones.gestion,
    @cuit = padrones.identificacion,
    @country = identificadores.country_code,
    @cliente = LN_contrapartes.cliente
  from LN_gestiones 
  inner join LN_contrapartes ON 
     LN_gestiones.contraparte = LN_contrapartes.contraparte
  inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
  inner join identificadores on padrones.identificador = identificadores.identificador
  where LN_contrapartes.contraparte = @p_contraparte
  and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()


  if (@gest is not null) begin

   DECLARE @icc int = null

   select @icc = LN_indicadores.indicador
   from LN_indicadores inner join LN_productos on 
    LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on
    LN_productos.producto = LN_familia_productos.producto
   inner join LN_familias on
    LN_familia_productos.familia = LN_familias.familia
   inner join LN_contraparte_familias on
    LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on
    (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    AND LN_familias.cliente = LN_contrapartes.cliente)
   inner join LN_cliente_productos on
    (LN_productos.producto = LN_cliente_productos.producto
    AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_indicadores.clave_indicador = 'CTRL_COMERCIAL'
   and LN_familias.visible = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1


   if (@icc is not null) begin

    declare @vcc_ant float = null, @vcc float = null

    declare @juicios int

    /* Búsqueda en Juicios Concursos y Quiebras */
    SELECT @juicios = COUNT(*) 
    FROM juicios CYQ0
    WHERE CYQ0.cuit_demandado = @cuit
    AND ( CYQ0.id_tipo_causa IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 0)
      OR CYQ0.cau_codigo IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 0) )
    AND NOT EXISTS
     (SELECT id_juicio
     FROM juicios CYQ1
     WHERE CYQ1.cuit_demandado = @cuit
     AND ( CYQ1.id_tipo_causa IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 1)
       OR CYQ0.cau_codigo IN (SELECT id_tipo_causa FROM tipos_causas WHERE control_comercial = 1) )
     AND CYQ1.fecha_causa >= CYQ0.fecha_causa)

    if (@juicios = 0)
     set @vcc = 1
    else
     set @vcc = 0


    select @vcc_ant = valor_numerico
    from LN_contraparte_indicadores
    where contraparte = @p_contraparte
    and gestion = @gest
    and indicador = @icc


    if (@vcc_ant is null)

     insert into LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, created, created_by)
     values
     (@p_contraparte, @gest, @icc, @vcc, GETDATE(), @p_user_id)

    else

     if (@vcc_ant <> @vcc) begin
      /* Actualizo sólo si cambia */

      update LN_contraparte_indicadores set
       valor_numerico = @vcc,
       modified = GETDATE(),
       modified_by = @p_user_id
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @icc
     end


   end

  end

 END


 /* Asentar el indicador de excepción de homologación para contraparte */
 IF (@accion = 'excepcion') BEGIN
 /*
  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones 
  inner join LN_contrapartes ON
  LN_gestiones.contraparte = LN_contrapartes.contraparte
  inner join LN_contraparte_familias
  ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
  inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
  and LN_contrapartes.cliente = LN_familias.cliente)
  inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
  inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
  inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
  and LN_contrapartes.cliente = LN_cliente_productos.cliente)
  WHERE LN_contrapartes.contraparte = @p_contraparte
  /*AND ISNULL(LN_familias.subfamilia, 0) = 1
  AND LN_contrapartes.subcontratista = 1*/

  AND LN_cliente_productos.activo = 1
  AND LN_familia_productos.activo = 1
  AND LN_productos.visible = 1
  AND LN_familias.visible = 1
  AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
 */

  
  select @gest = LN_gestiones.gestion
  from LN_gestiones 
  inner join LN_contrapartes ON 
     LN_gestiones.contraparte = LN_contrapartes.contraparte
  inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
  inner join identificadores on padrones.identificador = identificadores.identificador
  where LN_contrapartes.contraparte = @p_contraparte
  and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()


  if (@gest is not null) begin

   declare @ieh int = null

   select @ieh = LN_indicadores.indicador
   from LN_indicadores inner join LN_productos on 
    LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on
    LN_productos.producto = LN_familia_productos.producto
   inner join LN_familias on
    LN_familia_productos.familia = LN_familias.familia
   inner join LN_contraparte_familias on
    LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on
    (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    AND LN_familias.cliente = LN_contrapartes.cliente)
   inner join LN_cliente_productos on
    (LN_productos.producto = LN_cliente_productos.producto
    AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_indicadores.clave_indicador = 'EXCEPCION'
   and LN_familias.visible = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1

   if (@ieh is not null) begin

    /* Busco excepción activa */
    SELECT @exc = LN_excepciones.excepcion
    FROM LN_excepciones
    WHERE LN_excepciones.contraparte = @p_contraparte
    AND LN_excepciones.gestion = @gest
    AND LN_excepciones.estado = 1
    AND LN_excepciones.vigencia >= GETDATE()

    if @exc is not null 

     if NOT EXISTS (select contraparte
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @ieh)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
      VALUES
      (@p_contraparte, @gest, @ieh, 1, 1, GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = 1,
       visible = 1,
       modified = GETDATE(),
       modified_by = @p_user_id
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @ieh



   end

  end

 END
 /* fin excepcion */


 /* desactivar excepcion elimina el registro del indicador de la contraparte y recalcula la homologacion */
 IF (@accion = 'desactivar_excepcion') BEGIN

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones inner join LN_contrapartes ON
  LN_gestiones.contraparte = LN_contrapartes.contraparte
  inner join LN_contraparte_familias
  ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
  inner join LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
         and LN_contrapartes.cliente = LN_familias.cliente)
  inner join LN_familia_productos ON LN_familias.familia = LN_familia_productos.familia
  inner join LN_productos ON LN_familia_productos.producto = LN_productos.producto
  inner join LN_cliente_productos ON (LN_productos.producto = LN_cliente_productos.producto
           and LN_contrapartes.cliente = LN_cliente_productos.cliente)
  WHERE LN_contrapartes.contraparte = @p_contraparte
  /*AND ISNULL(LN_familias.subfamilia, 0) = 1
   AND LN_contrapartes.subcontratista = 1*/

  AND LN_cliente_productos.activo = 1
  AND LN_familia_productos.activo = 1
  AND LN_productos.visible = 1
  AND LN_familias.visible = 1
  AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()

  if (@gest is not null) begin

   declare @ieh2 int = null

   select @ieh2 = LN_indicadores.indicador
   from LN_indicadores inner join LN_productos on 
    LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on
    LN_productos.producto = LN_familia_productos.producto
   inner join LN_familias on
    LN_familia_productos.familia = LN_familias.familia
   inner join LN_contraparte_familias on
    LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on
    (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    AND LN_familias.cliente = LN_contrapartes.cliente)
   inner join LN_cliente_productos on
    (LN_productos.producto = LN_cliente_productos.producto
    AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_indicadores.clave_indicador = 'EXCEPCION'
   and LN_familias.visible = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1

   if (@ieh2 is not null) begin

    /* Elimino indicador de excepción activa */

    DELETE FROM LN_contraparte_indicadores
    where contraparte = @p_contraparte
    and gestion = @gest
    and indicador = @ieh2


   end

  end




 END
 /* fin desactivar excepcion */

 /* Fin indicadores homologación */


 /* Producto Alertas BCRA */

 IF (@accion = 'alertas_cendeu') BEGIN

  SELECT @gest = LN_gestiones.gestion,
    @cuit = padrones.identificacion
  FROM LN_gestiones INNER JOIN LN_contrapartes
  ON LN_gestiones.contraparte = LN_contrapartes.contraparte
  INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
  WHERE LN_gestiones.desde <= GETDATE()
  AND LN_gestiones.hasta >= GETDATE()
  AND LN_contrapartes.activo = 1
  AND LN_contrapartes.contraparte = @p_contraparte

  if (@gest > 0) begin

   DECLARE @iac int = null

   select @iac = LN_indicadores.indicador,
     @producto_alertas = LN_indicadores.producto,
     @cliente = ln_contrapartes.cliente
   from LN_indicadores inner join LN_productos on 
    LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on
    LN_productos.producto = LN_familia_productos.producto
   inner join LN_familias on
    LN_familia_productos.familia = LN_familias.familia
   inner join LN_contraparte_familias on
    LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on
    (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    AND LN_familias.cliente = LN_contrapartes.cliente)
   inner join LN_cliente_productos on
    (LN_productos.producto = LN_cliente_productos.producto
    AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_indicadores.clave_indicador = 'SITUACION_CD'
   and LN_familias.visible = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1


   if (@iac is not null) begin

    DECLARE @periodo varchar(6) = null, @situacion int = null

    /*EXEC LN_alertas_cendeu @cuit, @periodo OUTPUT, @situacion OUTPUT*/
         EXEC LN_alertas_cendeu_cliente @cuit, @cliente, @periodo OUTPUT, @situacion OUTPUT


    /*if (@periodo is not null and @situacion is not null) begin*/

     if not exists (select indicador from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @iac)
      begin
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by)
      VALUES
      (@p_contraparte, @gest, @iac, @situacion, @periodo, GETDATE(), @p_user_id)
      end 
     else
      begin
      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @situacion,
       valor_texto = @periodo,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @iac
      end 
    /*end*/

   end

  end

 END


 IF (@accion = 'alertas_cheques') BEGIN

  SELECT @gest = LN_gestiones.gestion,
    @cuit = padrones.identificacion
  FROM LN_gestiones INNER JOIN LN_contrapartes
  ON LN_gestiones.contraparte = LN_contrapartes.contraparte
  INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
  WHERE LN_gestiones.desde <= GETDATE()
  AND LN_gestiones.hasta >= GETDATE()
  AND LN_contrapartes.activo = 1
  AND LN_contrapartes.contraparte = @p_contraparte

  if (@gest > 0) begin

   DECLARE @iah int = null

   select @iah = LN_indicadores.indicador,
     @producto_alertas = LN_indicadores.producto, 
        @cliente = LN_contrapartes.cliente
   from LN_indicadores inner join LN_productos on 
    LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on
    LN_productos.producto = LN_familia_productos.producto
   inner join LN_familias on
    LN_familia_productos.familia = LN_familias.familia
   inner join LN_contraparte_familias on
    LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on
    (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    AND LN_familias.cliente = LN_contrapartes.cliente)
   inner join LN_cliente_productos on
    (LN_productos.producto = LN_cliente_productos.producto
    AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_indicadores.clave_indicador = 'CHEQUES_RECH'
   and LN_familias.visible = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1


   if (@iah is not null) begin

    DECLARE @ch_rechazados int = 0

/* EXEC LN_alertas_cheques @cuit, 360, @ch_rechazados output */
    EXEC LN_alertas_cheques_cliente @cuit, @cliente, @ch_rechazados output 


    if not exists (select indicador from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @iah)
     begin
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, created, created_by)
     VALUES
     (@p_contraparte, @gest, @iah, @ch_rechazados, GETDATE(), @p_user_id)
     end 
    else
     begin
     UPDATE LN_contraparte_indicadores SET
      valor_numerico = @ch_rechazados,
      modified = GETDATE(),
      modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
     AND gestion = @gest
     AND indicador = @iah   
     end 
   end

  end

 END

 /* Si se recalculó alguno de los indicadores de Alertas, llamo al cálculo del score del producto alertas */
 --IF (@accion = 'alertas_cendeu' OR @accion = 'alertas_cheques') BEGIN
 IF (@accion = 'SCORE_ALERTAS_BCRA' OR @accion = 'SCORE_CENDEU' OR @accion = 'SCORE_CHEQUES') BEGIN
  --if (@producto_alertas is not null AND @gest > 0) begin
  
  SELECT @gest = LN_gestiones.gestion,
    @cuit = padrones.identificacion
  FROM LN_gestiones INNER JOIN LN_contrapartes
  ON LN_gestiones.contraparte = LN_contrapartes.contraparte
  INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
  WHERE LN_gestiones.desde <= GETDATE()
  AND LN_gestiones.hasta >= GETDATE()
  AND LN_contrapartes.activo = 1
  AND LN_contrapartes.contraparte = @p_contraparte
  
  if (@gest > 0) begin

   declare @indic_score_alertas int = null
   declare @indic_score_cendeu  int = null
   declare @indic_score_ch      int = null

   select @indic_score_alertas = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador = 'SCORE_ALERTAS_BCRA'

   select @indic_score_cendeu = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador = 'SCORE_CENDEU'

   select @indic_score_ch = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador = 'SCORE_CHEQUES'

   SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1

   if ((@indic_score_alertas is not null or @indic_score_cendeu is not null or @indic_score_ch  is not null) and @familia IS NOT NULL) begin

    declare @score_alertas   decimal(10,2) = null
    declare @score_cendeu   decimal(10,2) = null
    declare @score_ch       decimal(10,2) = null


    EXEC LN_score_alertas @familia, @p_contraparte, @score_alertas OUTPUT,  @score_cendeu output, @score_ch output 


    if (@score_alertas is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_score_alertas)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_alertas, @score_alertas, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_alertas,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_score_alertas

    end

    if (@score_cendeu is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_score_cendeu)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_cendeu, @score_cendeu, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_cendeu,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_score_cendeu

    end


    if (@score_ch is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_score_ch)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_ch, @score_ch, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_ch,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_score_ch

    end

   end


  end

 END


 /* Fin Producto Alertas BCRA */

 IF (@accion = 'score_datos_aportados') BEGIN
 
   set @gest = 0
   SELECT @gest = LN_gestiones.gestion
     FROM LN_gestiones 
   INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
     AND LN_gestiones.hasta >= GETDATE()
     AND LN_contrapartes.activo = 1
     AND LN_contrapartes.contraparte = @p_contraparte


   declare @indic_datos int = null
   select @indic_datos = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = 'SCORE_DATOS'

   if (@indic_datos is not null and @gest > 0) begin

    declare @score_datos decimal(10,2) = null

    EXEC LN_score_datos @p_contraparte, @score_datos OUTPUT

    if (@score_datos is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_datos)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_datos, @score_datos, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_datos,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_datos

    end
    else 
    begin
     if  exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_datos)
     delete from LN_contraparte_indicadores
            where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @indic_datos

    end 

   end


  

 END



 IF (@accion = 'judicial') BEGIN

   SELECT @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion
   FROM LN_gestiones INNER JOIN LN_contrapartes
   ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_score_judicial int = null
   select @indic_score_judicial = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador = 'SCORE_JUDICIAL'

   if (@indic_score_judicial is not null) begin

    declare @score_judicial decimal(10,2) = null
    EXEC LN_score_judicial @p_contraparte, @score_judicial OUTPUT

    if (@score_judicial is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_score_judicial)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_judicial, @score_judicial, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @score_judicial,
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_score_judicial

    end

   end

 END

 
 IF (@accion = 'score_arba_sircreb') BEGIN

   SELECT @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion
   FROM LN_gestiones INNER JOIN LN_contrapartes
   ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_score_as int = null
   select @indic_score_as = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador = 'SCORE_ARBA_SIRCREB'

   if (@indic_score_as is not null) begin

    declare @score_as decimal(10,2) = null
    EXEC LN_score_arba_sircreb @p_contraparte, @score_as OUTPUT

    if (@score_as is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_score_as)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_as, @score_as, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @score_as,
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_score_as

    end

   end
   --select @indic_score_as, @score_as

 END

 IF (@accion = 'inicio_gestion') BEGIN
   declare @inicio_gestion date 
   SELECT @gest = LN_gestiones.gestion,
       @inicio_gestion = desde
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.desde <= GETDATE()
      AND LN_gestiones.hasta >= GETDATE()
      AND LN_contrapartes.activo = 1
      AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_gestion int = null
   select @indic_gestion = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = 'INICIO_GESTION'

   if (@indic_gestion is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_gestion)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_fecha, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_gestion, @inicio_gestion, GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
          valor_fecha = @inicio_gestion,
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_gestion

    end

 END

 IF (@accion = 'FECHA_PAGO') BEGIN
   declare @fecha_pago date = null 
   select @fecha_pago = max(fecha_transaccion) from pagos_transacciones a
       where a.contraparte = @p_contraparte 
    and a.status = 'approved'
    and not exists (select * from pagos_transacciones b
        where b.contraparte = @p_contraparte 
        and b.status = 'pending'
        and b.created > a.fecha_transaccion)

   
   SELECT @gest = LN_gestiones.gestion
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.desde <= GETDATE()
      AND LN_gestiones.hasta >= GETDATE()
      AND LN_contrapartes.activo = 1
      AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_fp int = null
   select @indic_fp = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = 'FECHA_PAGO'

   if (@indic_fp is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and visible = 1 
         and indicador = @indic_fp)
     
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_fecha, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_fp, @fecha_pago, GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
          valor_fecha = @fecha_pago,
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_fp
        and visible = 1

    end

 END



 /* Producto dependencia económica calculada en función de las tablas de compras y documento de ventas */
 IF (@accion = 'dependencia_economica_calc') BEGIN

  DECLARE @campo      int = null
  DECLARE @seccion     int = null
  DECLARE @tipo_campo     varchar(1) = null
  DECLARE @monto_ventas    money = NULL
  DECLARE @monto_iva     money = NULL
  DECLARE @monto_compras    money = NULL
  DECLARE @id_padron     int = null
  DECLARE @fecha_vigencia    datetime = null
  declare @graba_score char(1) = 'S'


  SELECT @gest = LN_gestiones.gestion,
    @cuit = padrones.identificacion,
    @cliente = LN_contrapartes.cliente,
    @id_padron = LN_contrapartes.id_padron
  FROM LN_gestiones INNER JOIN LN_contrapartes
  ON LN_gestiones.contraparte = LN_contrapartes.contraparte
  INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
  WHERE LN_gestiones.desde <= GETDATE()
  AND LN_gestiones.hasta >= GETDATE()
  AND LN_contrapartes.activo = 1
  AND LN_contrapartes.contraparte = @p_contraparte

  if (@gest > 0) begin

   /* Verifico el indicador Dependencia Económica Calculada */

   DECLARE @idec int = null
   DECLARE @producto_de int = NULL

   select @idec = LN_indicadores.indicador,
     @producto_de = LN_indicadores.producto
   from LN_indicadores inner join LN_productos on 
    LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on
    LN_productos.producto = LN_familia_productos.producto
   inner join LN_familias on
    LN_familia_productos.familia = LN_familias.familia
   inner join LN_contraparte_familias on
    LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on
    (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    AND LN_familias.cliente = LN_contrapartes.cliente)
   inner join LN_cliente_productos on
    (LN_productos.producto = LN_cliente_productos.producto
    AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_indicadores.clave_indicador = 'DEP_ECON_CALC'
   and LN_familias.visible = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1

   if (@idec > 0) begin

    /* Búsqueda de un documento de la contraparte cargado con información de ventas */

    select @campo = LN_tipo_doc_campos.campo, 
      @seccion = LN_tipo_doc_campos.seccion,
      @doc_id = LN_docs.doc_id, 
      @tipo_doc = LN_docs.tipo_doc,
      @tipo_campo = LN_campos.tipo_campo,
      @fecha_vigencia = LN_docs.fecha_vigencia

    from LN_tipo_doc_campos
    INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
    INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
    where LN_docs.contraparte = @p_contraparte
    and LN_docs.gestion = @gest
    and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
    and LN_docs.estado_doc = 'V'

    /* Buscamos: el ultimo año cargado en las declaraciones de iva - ventas, 
                  para comparar con las compras del mismo año */


    select @fecha_vigencia = convert(date,convert(char(4),max(year(valor_fecha))) + '-12-31')
      FROM LN_doc_campos_col
     WHERE doc_id = @doc_id
      AND seccion = @seccion
      AND campo = @campo
      AND col = 0

    if (@doc_id > 0 AND @fecha_vigencia is not null) begin

     /* Existe el documento de ventas, busco las compras en un período anual */
     select @campo = LN_tipo_doc_campos.campo, 
       @seccion = LN_tipo_doc_campos.seccion,
       @doc_id = LN_docs.doc_id, 
       @tipo_doc = LN_docs.tipo_doc,
       @tipo_campo = LN_campos.tipo_campo,
       @fecha_vigencia = LN_docs.fecha_vigencia

     from LN_tipo_doc_campos
     INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
     INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
     where LN_docs.contraparte = @p_contraparte
     and LN_docs.gestion = @gest
     and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
     and LN_docs.estado_doc = 'V'
    /* Buscamos: el ultimo año cargado en las declaraciones de iva - ventas, 
                  para comparar con las compras del mismo año */


    select @fecha_vigencia = convert(date,convert(char(4),max(year(valor_fecha))) + '-12-31')
      FROM LN_doc_campos_col
     WHERE doc_id = @doc_id
      AND seccion = @seccion
      AND campo = @campo
      AND col = 0


     if exists ( select cliente 
        from LN_dep_econ_compras
        where cliente = @cliente
        and id_padron = @id_padron
        /*and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
         and hasta <= CONVERT(DATE, @fecha_vigencia)*/

        and hasta = CONVERT(DATE, @fecha_vigencia)
        ) begin

      --SELECT @monto_compras = SUM(ISNULL(total_compras,0))
      -- No lo sumamos porque cada trimestre se informa el monto total acumulado desde principio de año
      SELECT @monto_compras = ISNULL(total_compras,0)
      FROM LN_dep_econ_compras
      where cliente = @cliente
      and id_padron = @id_padron
      /*and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
       and hasta <= CONVERT(DATE, @fecha_vigencia)*/

      and hasta = CONVERT(DATE, @fecha_vigencia)
     

      /* Sumo las ventas, analizando si el campo que contiene el documento 
       es un valor simple o es una tabla, tomando en tal caso la columna 1 */


      if (@tipo_campo != 'G') begin

       SELECT @monto_ventas = ISNULL(valor_numerico,0)
       FROM LN_doc_campos
       WHERE doc_id = @doc_id
       AND seccion = @seccion
       AND campo = @campo
      
      end
      else begin

       /* ventas */
       SELECT @monto_ventas = SUM(ISNULL(valor_numerico,0))
       FROM LN_doc_campos_col
       WHERE doc_id = @doc_id
       AND seccion = @seccion
       AND campo = @campo
       AND col = 1

       /* columna iva */
       SELECT @monto_iva = SUM(ISNULL(valor_numerico,0))
       FROM LN_doc_campos_col
       WHERE doc_id = @doc_id
       AND seccion = @seccion
       AND campo = @campo
       AND col = 2

      end


      /* Determinación de la alícuota de iva ingresada en el documento de las ventas anuales */
      declare @alicuota_iva float, @aplica_iva_ventas float = 21, @pais varchar(2)
      select 
        @alicuota_iva = isnull(LN_doc_campos.valor_numerico, 0),
        @pais = LN_contrapartes.country_code
      from LN_doc_campos 
      inner join LN_docs on LN_doc_campos.doc_id = LN_docs.doc_id
      inner join LN_tipo_doc_campos on
       (LN_doc_campos.campo = LN_tipo_doc_campos.campo
       and LN_docs.tipo_doc = LN_tipo_doc_campos.tipo_doc)
      inner join LN_contrapartes on LN_docs.contraparte = LN_contrapartes.contraparte
      where LN_doc_campos.seccion = @seccion
      and LN_doc_campos.doc_id = @doc_id
      and LN_tipo_doc_campos.campo_id = 'ALICUOTA-IVA'

      
      set @aplica_iva_ventas = 
       CASE
        WHEN @pais = 'AR' THEN iif(@alicuota_iva = 10, 10.5, 21)
        WHEN @pais = 'UY' THEN 22
        WHEN @pais = 'PY' THEN iif(@alicuota_iva = 0, 10, iif(@alicuota_iva < 10, 5, 10))
       END
        
      
      if (@monto_compras > 0 AND (@monto_ventas > 0 OR @monto_iva > 0 AND @aplica_iva_ventas > 0)) begin

       /* Calculo la dependencia económica preferentemente basado en el IVA ventas */
       DECLARE @dep_econ_calc float

       IF (@monto_iva > 0 AND @aplica_iva_ventas > 0)
        SET @dep_econ_calc = CONVERT(float, @monto_compras / (@monto_iva/@aplica_iva_ventas*100) * 100)
       ELSE
        SET @dep_econ_calc = CONVERT(float, @monto_compras / @monto_ventas * 100)

       --select @monto_ventas as ventas, @monto_compras as compras, @dep_econ_calc as dep_econ
       set @graba_score = 'S'
       if not exists (select indicador from LN_contraparte_indicadores
           where contraparte = @p_contraparte
           and gestion = @gest
           and indicador = @idec)

        INSERT INTO LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
        VALUES
        (@p_contraparte, @gest, @idec, @dep_econ_calc, GETDATE(), @p_user_id)

       else

        UPDATE LN_contraparte_indicadores SET
         valor_numerico = @dep_econ_calc,
         modified = GETDATE(),
         modified_by = @p_user_id
        WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @idec
      end

     end
      

    end
    else 
    begin
         if exists (select indicador from LN_contraparte_indicadores
            where contraparte = @p_contraparte
              and gestion = @gest
              and indicador = @idec)
      begin
      set @graba_score = 'S'
      DELETE from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @idec
      end 
    end 

    if (@graba_score = 'S') begin
       /* Llamo al cálculo del score de dependencia económica, bajo el mismo producto */
       declare @indic_score_dep_econ int = null

       select @indic_score_dep_econ = LN_indicadores.indicador
       from LN_indicadores
       where producto = @producto_de
       and clave_indicador = 'SCORE_DEP_ECON'

       SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1

       if (@indic_score_dep_econ is not null and @familia IS NOT NULL) begin

        declare @score_dep_econ   int = null

        EXEC LN_score_dependencia_economica @familia, @p_contraparte, @score_dep_econ OUTPUT

        if (@score_dep_econ is not null) begin

         if not exists (select contraparte, gestion, indicador
             from LN_contraparte_indicadores
             where contraparte = @p_contraparte
             and gestion = @gest
             and indicador = @indic_score_dep_econ)

          INSERT INTO LN_contraparte_indicadores
          (contraparte, gestion, indicador, valor_numerico, created, created_by)
          VALUES
          (@p_contraparte, @gest, @indic_score_dep_econ, @score_dep_econ, GETDATE(), @p_user_id)


         else

          UPDATE LN_contraparte_indicadores SET
           valor_numerico = @score_dep_econ,
           modified = GETDATE(),
           modified_by = @p_user_id
          WHERE contraparte = @p_contraparte
          AND gestion = @gest
          AND indicador = @indic_score_dep_econ

        end

        else
        begin
        if  exists (select contraparte, gestion, indicador
             from LN_contraparte_indicadores
             where contraparte = @p_contraparte
             and gestion = @gest
             and indicador = @indic_score_dep_econ)
         delete from LN_contraparte_indicadores
           where contraparte = @p_contraparte
           and gestion = @gest
           and indicador = @indic_score_dep_econ
             
        end 



       end
       /* fin calculo del score de dependencia económica */



    end

     




   end


  end

 END


 /** Para asentar indicadores del producto Límite de Crédito **/

 /* Indicadores numéricos que se ingresan en forma manual */

 IF (@accion = 'monto_recomendado' OR @accion = 'monto_aprobado' OR @accion = 'monto_aprobado_usd' OR @accion = 'score_balance_lc' OR @accion = 'escenarios_futuros' OR @accion = 'ventas_limite_credito' OR @accion = 'ventas_ppb_limite_credito') BEGIN

  IF (@p_contraparte > 0) BEGIN

   DECLARE @ilc1 int = null

   DECLARE @clave1 VARCHAR(50) = CASE
    WHEN @accion = 'monto_recomendado' THEN 'LC_RECOMENDADO'
    WHEN @accion = 'monto_aprobado' THEN 'LC_APROBADO'
    WHEN @accion = 'monto_aprobado_usd' THEN 'LC_APROBADO_USD'
    WHEN @accion = 'score_balance_lc' THEN 'LC_SCORE_BALANCE'
    WHEN @accion = 'escenarios_futuros' THEN 'LC_ESCENARIOS_FUTUROS'
    WHEN @accion = 'ventas_limite_credito' THEN 'LC_VENTAS'
    WHEN @accion = 'ventas_ppb_limite_credito' THEN 'LC_VENTAS_PPB'
   END

   select @ilc1 = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = @clave1


   if (@ilc1 is not null AND @gest is not null) begin

    if exists (select contraparte, gestion, indicador
       from LN_contraparte_indicadores
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @ilc1)

     UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @p_valor_numerico,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @ilc1

    else

     INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
     VALUES
      (@p_contraparte, @gest, @ilc1, @p_valor_numerico, 1, GETDATE(), @p_user_id)



    /* Caso especial si es se está asentando el score de balance para el límite de credito
     hay que replicar dicho valor en otro indicador de score de balance de otro producto balance que 
     esté asociado a la contraparte con imputación manual */

    if (@accion = 'score_balance_lc') begin

     DECLARE @otroscore int = null
    
     select @otroscore = LN_indicadores.indicador
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
     inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
     inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
     where LN_contraparte_familias.contraparte = @p_contraparte
     and LN_productos.producto_id = 'balances'
     and LN_indicadores.clave_indicador = 'SCORE_BAL'
     and LN_indicadores.valoracion = 'F'
     and LN_familia_productos.activo = 1
     and LN_contraparte_familias.activo = 1
     and LN_productos.visible = 1

     if (@otroscore is not null) begin

      if not exists (select contraparte, gestion, indicador
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @otroscore)

       INSERT INTO LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
       VALUES
        (@p_contraparte, @gest, @otroscore, @p_valor_numerico, 1, GETDATE(), @p_user_id)

      else

       UPDATE LN_contraparte_indicadores SET 
         valor_numerico = @p_valor_numerico,
         modified = GETDATE(),
         modified_by = @p_user_id
       WHERE contraparte = @p_contraparte
         AND gestion = @gest
         AND indicador = @otroscore

     end
    end
    /* fin actualizar otro score */


   end

   /* para ejecutar en forma particular y asentar fecha de recomendación o aprobación cuando se asienta el indicador del monto correspondiente */
   if (@accion = 'monto_aprobado' OR @accion = 'monto_aprobado_usd' OR @accion = 'monto_recomendado') begin

    DECLARE @ilcf int = null

    select @ilcf = LN_indicadores.indicador,
      @gest = LN_gestiones.gestion
    from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
             and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
    and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
    and LN_familia_productos.activo = 1
    and LN_cliente_productos.activo = 1
    and LN_productos.visible = 1
    and LN_contraparte_familias.activo = 1
    and LN_indicadores.clave_indicador = iif(@accion = 'monto_recomendado', 'LC_RECOMENDADO_FECHA', iif(@accion = 'monto_aprobado', 'LC_APROBADO_FECHA', 'LC_APROBADO_USD_FECHA'))

    if (@ilcf is not null AND @gest is not null) begin

     if exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ilcf)

      UPDATE LN_contraparte_indicadores SET 
        valor_fecha = iif(@p_valor_numerico is not null, GETDATE(), NULL),
        modified = GETDATE(),
        modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @ilcf

     else

      INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_fecha, visible, created, created_by)
      VALUES
       (@p_contraparte, @gest, @ilcf, iif(@p_valor_numerico is not null, GETDATE(), NULL), 1, GETDATE(), @p_user_id)


    end



   end
   /**/



  END

 END

 /* Indicadores texto de ingreso manual */

 IF (@accion = 'tendencia_balance_lc' OR @accion = 'tendencia_escenarios' OR @accion = 'situacion_socios' OR @accion = 'tendencia_situacion' OR @accion = 'ventas_limite_credito_fecha') BEGIN

  /* en el caso del indicador fecha de ventas se recibe texto y se convierte a fecha */

  IF (@p_contraparte > 0) BEGIN

   DECLARE @ilc2 int = null

   DECLARE @clave2 VARCHAR(30) = CASE
    WHEN @accion = 'tendencia_balance_lc' THEN 'LC_TEND_BALANCE'
    WHEN @accion = 'tendencia_escenarios' THEN 'LC_ESCENARIOS_TENDENCIA'
    WHEN @accion = 'situacion_socios' THEN 'LC_SITUACION_SOCIOS'
    WHEN @accion = 'tendencia_situacion' THEN 'LC_SITUACION_TENDENCIA'
    WHEN @accion = 'ventas_limite_credito_fecha' THEN 'LC_VENTAS_FECHA'
   END

   DECLARE @valor_fecha_lc DATE = NULL
   if (@accion = 'ventas_limite_credito_fecha')
    if (@p_valor_texto is not null)
     set @valor_fecha_lc = DATEFROMPARTS(CONVERT(INT,SUBSTRING(@p_valor_texto,7,4)),CONVERT(INT,SUBSTRING(@p_valor_texto,4,2)),CONVERT(INT,SUBSTRING(@p_valor_texto,1,2)))

   select @ilc2 = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = @clave2


   if (@ilc2 is not null AND @gest is not null) begin   
   
    if exists (select contraparte, gestion, indicador
       from LN_contraparte_indicadores
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @ilc2)
       
     UPDATE LN_contraparte_indicadores SET 
       valor_texto = iif(@accion <> 'ventas_limite_credito_fecha', @p_valor_texto, NULL),
       valor_fecha = iif(@accion <> 'ventas_limite_credito_fecha', NULL, @valor_fecha_lc),
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @ilc2
       
    else
    
     INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_texto, valor_fecha, visible, created, created_by)
     VALUES
      (@p_contraparte, @gest, @ilc2, 
      iif(@accion <> 'ventas_limite_credito_fecha', @p_valor_texto, NULL),
      iif(@accion <> 'ventas_limite_credito_fecha', NULL, @valor_fecha_lc),
      1, GETDATE(), @p_user_id)
      



    /* Caso especial si es se está asentando la tendencia del balance para el límite de credito
     hay que replicar dicho valor en otro indicador de valoración de balance de otro producto balance que 
     esté asociado a la contraparte con imputación manual */


    if (@accion = 'tendencia_balance_lc') begin

     DECLARE @otravaloracion int = null
    
     select @otravaloracion = LN_indicadores.indicador
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
     inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
     inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
     where LN_contraparte_familias.contraparte = @p_contraparte
     and LN_productos.producto_id = 'balances'
     and LN_indicadores.clave_indicador = 'VALORACION_BAL'
     and LN_indicadores.valoracion = 'F'
     and LN_familia_productos.activo = 1
     and LN_contraparte_familias.activo = 1
     and LN_productos.visible = 1

     if (@otravaloracion is not null) begin

      if not exists (select contraparte, gestion, indicador
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @otravaloracion)

       INSERT INTO LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_texto, visible, created, created_by)
       VALUES
        (@p_contraparte, @gest, @otravaloracion, @p_valor_texto, 1, GETDATE(), @p_user_id)

      else

       UPDATE LN_contraparte_indicadores SET 
         valor_texto = @p_valor_texto,
         modified = GETDATE(),
         modified_by = @p_user_id
       WHERE contraparte = @p_contraparte
         AND gestion = @gest
         AND indicador = @otravaloracion

     end
    end
    /* fin actualizar otra valoracion */

    
   end

  END

 END


 /* Indicadores automáticos del límite de crédito */

 IF (@accion = 'dias_deuda_ventas' OR @accion = 'dias_deuda_ventas_ppb') BEGIN

  IF (@p_contraparte > 0) BEGIN

   DECLARE @ilcdv int = null, 
     @clave_indicador_dias varchar(50) = iif(@accion = 'dias_deuda_ventas', 'LC_DIAS_VENTAS', 'LC_DIAS_VENTAS_PPB'),
     @clave_indicador_ventas varchar(50) = iif(@accion = 'dias_deuda_ventas', 'LC_VENTAS', 'LC_VENTAS_PPB')
   
   select @ilcdv = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = @clave_indicador_dias


   if (@ilcdv is not null AND @gest is not null AND @cuit is not null) begin

    /* obtengo el valor del indicador LC_VENTAS (o LC_VENTAS_PPB), debiendo ser mayor a cero para poder aplicar fórmula */
    declare @indicador_ventas int = null

    select @indicador_ventas = LN_indicadores.indicador
    from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
             and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
    where LN_contrapartes.contraparte = @p_contraparte
    and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
    and LN_familia_productos.activo = 1
    and LN_cliente_productos.activo = 1
    and LN_productos.visible = 1
    and LN_contraparte_familias.activo = 1
    and LN_indicadores.clave_indicador = @clave_indicador_ventas

    if (@indicador_ventas is not null) begin

     declare @total_ventas bigint = NULL

     select @total_ventas = CONVERT(BIGINT, ISNULL(valor_numerico, 0))
     from LN_contraparte_indicadores
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @indicador_ventas


     if (@total_ventas > 0) begin

      /* Ahora voy a obtener el total de la central de deudores con los máximos del último trimestre */
      DECLARE @total_cendeu BIGINT = NULL


      declare @p_cuit varchar(30) = @cuit

      declare @p_5anios date = getdate() - (5*365)

      declare @p_2anios date = getdate() - (5*365)

      declare @p_3meses date = getdate() - (90) 

      declare @dtStart date, @dtEnd date, @dtEnd_cuit date, @dtEnd_cuit2 date, @periodo_maximo varchar(7),@fec_periodo_minimo varchar(11),@periodo_minimo varchar(7);
 
      select @dtEnd = (select max(fecha_informacion) from fuentes_procesadas where visible = '1' and fuente = 'cendeu')
 
      select @dtEnd_cuit  = convert(date,isnull(max(cendeu.fec_inf),'200112')+'01') from cendeu where iden = @p_cuit  and vigente = 1 and id_fuente = 2
      select @dtEnd_cuit2 = convert(date,isnull(max(cendeu.fec_inf),'200112')+'01') from cendeu_temp cendeu where iden = @p_cuit  and vigente = 1 and id_fuente = 2

      if @dtEnd_cuit2 > @dtEnd_cuit begin
       set @dtEnd_cuit = @dtEnd_cuit2
      end 


      if (@dtEnd_cuit > @dtEnd) begin 
       set @dtEnd = @dtEnd_cuit
      end 
  
      set @dtStart = dateadd(month,-23, @dtEnd)
      set @periodo_maximo = replace(Convert(varchar(7),@dtEnd),'-','')
      set @fec_periodo_minimo = @dtStart
      set @periodo_minimo = replace(Convert(varchar(7),@dtStart),'-','')
      set @dtStart = dateadd(month,-2, @dtEnd)
  
      if(@periodo_maximo is not null) begin
       set @fec_periodo_minimo = dateadd(MM, -2,convert(date,@periodo_maximo+'01'))
       set @periodo_minimo = convert(varchar(4),DATEPART(yyyy,@fec_periodo_minimo))+right('0'+convert(varchar(2),DATEPART(mm,@fec_periodo_minimo)),2)
      end

      SELECT @total_cendeu = SUM(CENDEU_TRIMESTRAL.total)
      FROM (
       SELECT trimestral.nombre, trimestral.situacion, MAX(trimestral.total) as total
       FROM (

        select distinct 
        fec_inf,codigo_ent,
        isnull(nombre_corto,nombre) as nombre,
        convert(int,situacion) as situacion,
        ((prestamos+particip+garotor+o_cptos+deuda_total)) as total

        from cendeu inner join EntidadesBancarias on
        convert(int,cendeu.codigo_ent) = EntidadesBancarias.id_banco
         where iden = @p_Cuit and cendeu.fec_inf between @periodo_minimo and @periodo_maximo 
         and vigente = 1  
         and not exists (select * from cendeu b where b.iden = cendeu.iden and cast(b.codigo_ent as int) = cast(cendeu.codigo_ent as int) and b.fec_inf = cendeu.fec_inf and b.vigente = 1 and b.id_fuente = 2 and b.id_cendeu != cendeu.id_cendeu)
         and not exists (select * from cendeu c 
               where c.iden = cendeu.iden
              and cast(c.codigo_ent as int) = cast(cendeu.codigo_ent as int)
              and c.fec_inf = cendeu.fec_inf
              and c.vigente = cendeu.vigente
              and (isnull(c.id_fuente,1)) = (isnull(cendeu.id_fuente,1))
              and c.id_cendeu < cendeu.id_cendeu)
         and not (
            (cast(fec_inf+'01' as date) < @p_5anios) 
            OR
            (cast(fec_inf+'01' as date) < @p_2anios 
           and 
           --not (convert(date,created) > @p_3meses and convert(date,modified) > @p_3meses))
           not exists (select * from cendeu_temp z where z.iden = cendeu.iden and cast(z.codigo_ent as int) = cast(cendeu.codigo_ent as int) and (convert(date,z.created) > @p_3meses)))
            OR 
            (cast(fec_inf+'01' as date) < @p_2anios 
             and 
             exists (select * from cendeu_cancela c 
             where c.iden = cendeu.iden 
               and cast(c.codigo_ent as int) = cast(cendeu.codigo_ent as int) 
               and cast(fec_inf+'01' as date) between convert(date,c.fec_inf_desde) and convert(date,c.fec_inf_hasta)
               and c.vigente = '1'))
             )

        union 

        select distinct 
        fec_inf,codigo_ent,
        isnull(nombre_corto,nombre) as nombre,
        convert(int,situacion) as situacion,
        ((prestamos+particip+garotor+o_cptos+deuda_total)) as total

        from cendeu_temp inner join EntidadesBancarias on
        convert(int,cendeu_temp.codigo_ent) = EntidadesBancarias.id_banco
         where iden = @p_Cuit and cendeu_temp.fec_inf between @periodo_minimo and @periodo_maximo 
         and vigente = 1  
         and not exists (select * from cendeu b where b.iden = cendeu_temp.iden and cast(b.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int) and b.fec_inf = cendeu_temp.fec_inf and b.vigente = 1 and b.id_fuente = 2 and b.id_cendeu != cendeu_temp.id_cendeu)
         and not exists (select * from cendeu_temp c 
               where c.iden = cendeu_temp.iden
              and cast(c.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int)
              and c.fec_inf = cendeu_temp.fec_inf
              and c.vigente = cendeu_temp.vigente
              and (isnull(c.id_fuente,1)) = (isnull(cendeu_temp.id_fuente,1))
              and c.id_cendeu < cendeu_temp.id_cendeu)
         and not (
            (cast(fec_inf+'01' as date) < @p_5anios) 
            OR
            (cast(fec_inf+'01' as date) < @p_2anios 
           and 
           --not (convert(date,created) > @p_3meses and convert(date,modified) > @p_3meses))
           not exists (select * from cendeu_temp z where z.iden = cendeu_temp.iden and cast(z.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int) and (convert(date,z.created) > @p_3meses)))
            OR 
            (cast(fec_inf+'01' as date) < @p_2anios 
             and 
             exists (select * from cendeu_cancela c 
             where c.iden = cendeu_temp.iden 
               and cast(c.codigo_ent as int) = cast(cendeu_temp.codigo_ent as int) 
               and cast(fec_inf+'01' as date) between convert(date,c.fec_inf_desde) and convert(date,c.fec_inf_hasta)
               and c.vigente = '1'))
             )

        ) trimestral

       GROUP BY nombre, situacion) CENDEU_TRIMESTRAL


      if (@total_cendeu > 0) begin

       /* Aplico la fórmula para obtener los días (divido ventas por 1000 porque en cendeu el total viene en miles de pesos */
       DECLARE @dias_deuda_ventas int


       /* Dependiendo si es en base a las ventas anualizadas o promedio post balance aplican diferentes formulas */

       if (@accion = 'dias_deuda_ventas')
        SET @dias_deuda_ventas = @total_cendeu * 365 / (@total_ventas/1000)
       else
        SET @dias_deuda_ventas = @total_cendeu * 30 / (@total_ventas/1000)


       /* Guardo el indicador */

       if not exists (select contraparte, gestion, indicador
           from LN_contraparte_indicadores
           where contraparte = @p_contraparte
           and gestion = @gest
           and indicador = @ilcdv)


        INSERT INTO LN_contraparte_indicadores
         (contraparte, gestion, indicador, valor_numerico, visible, created, created_by)
        VALUES
         (@p_contraparte, @gest, @ilcdv, @dias_deuda_ventas, 1, GETDATE(), @p_user_id)

       else

        UPDATE LN_contraparte_indicadores SET 
          valor_numerico = @dias_deuda_ventas,
          modified = GETDATE(),
          modified_by = @p_user_id
        WHERE contraparte = @p_contraparte
          AND gestion = @gest
          AND indicador = @ilcdv


      end
       
     end

    end

   end

  END
 

 END



 IF (@accion = 'rentabilidad_operativa_lc' OR @accion = 'rentabilidad_operativa_lc_fecha') BEGIN

  IF (@p_contraparte > 0) BEGIN

   DECLARE @ilcr int = null

   DECLARE @clave3 VARCHAR(30) = CASE
    WHEN @accion = 'rentabilidad_operativa_lc' THEN 'LC_RENTABILIDAD'
    WHEN @accion = 'rentabilidad_operativa_lc_fecha' THEN 'LC_RENTABILIDAD_FECHA'
   END

   select @ilcr = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = @clave3


   if (@ilcr is not null AND @gest is not null AND @cuit is not null) begin

    DECLARE @fecha_bal date = NULL
    DECLARE @rentab_bal decimal(20,2) = NULL

    DECLARE @idbal int = null

    DECLARE Balances CURSOR FOR

    select TOP 1 balances_contables.id_balance
    from balances_contables
    where balances_contables.cuit = @cuit
    and balances_contables.estado = 'PUBLICADO'
    and isnull(balances_contables.visible,0) = 1
    and datediff(year, balances_contables.fecha_balance, GETDATE()) < 6
    order by balances_contables.fecha_balance DESC

    OPEN Balances

    FETCH NEXT FROM Balances INTO @idbal

    CLOSE Balances
    DEALLOCATE Balances

    if (@idbal IS NOT NULL) begin

     select   @fecha_bal = balances_contables.fecha_balance,
        @rentab_bal = iif(balances_contables.res_vtanet > 0, (ISNULL(balances_contables.ganancia, 0) + ISNULL(balances_contables.res_otrosegr, 0) - ISNULL(balances_contables.res_otrosing, 0)) / balances_contables.res_vtanet * 100, NULL)
     from balances_contables
     where balances_contables.id_balance = @idbal

     if (@fecha_bal is not null AND @rentab_bal is not null) begin

      if exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @ilcr)

       UPDATE LN_contraparte_indicadores SET 
         valor_numerico = iif(@accion = 'rentabilidad_operativa_lc', @rentab_bal, NULL),
         valor_fecha = iif(@accion = 'rentabilidad_operativa_lc_fecha', @fecha_bal, NULL),
         modified = GETDATE(),
         modified_by = @p_user_id
       WHERE contraparte = @p_contraparte
         AND gestion = @gest
         AND indicador = @ilcr

      else

       INSERT INTO LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, valor_fecha, visible, created, created_by)
       VALUES
        (@p_contraparte, @gest, @ilcr, iif(@accion = 'rentabilidad_operativa_lc', @rentab_bal, NULL), 
        iif(@accion = 'rentabilidad_operativa_lc_fecha', @fecha_bal, NULL), 1, GETDATE(), @p_user_id)
     end

    end
      
   end

  END
 END

 /** FIN DE ASENTAR INDICADORES DEL PRODUCTO LIMITE DE CREDITO **/


 /*** ASENTAR INDICES DE BALANCE COMO INDICADORES PARA UNA CONTRAPARTE TOMANDO DE LA SUSCRIPCION DE INDICES DEL CLIENTE ***/
 IF (@accion = 'indices_balance') BEGIN

  IF (@p_contraparte IS NOT NULL and @p_clave_indicador IS NOT NULL and @p_valor_numerico IS NOT NULL) BEGIN

   SELECT @gest = gestion
   FROM LN_gestiones
   WHERE contraparte = @p_contraparte
   AND desde <= GETDATE()
   AND hasta >= GETDATE()

   if (@gest is not null) begin

    DECLARE @indicador_balance int = null

    SELECT @indicador_balance = LN_indicadores.indicador
    FROM LN_indicadores INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
    INNER JOIN LN_familia_productos ON LN_productos.producto = LN_familia_productos.producto
    INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
    INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    INNER JOIN LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
           AND LN_contrapartes.cliente = LN_familias.cliente)
    INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
           AND LN_productos.producto = LN_cliente_productos.producto)
    INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
           AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)

    WHERE LN_contrapartes.contraparte = @p_contraparte
    AND LN_indicadores.clave_indicador = @p_clave_indicador
    AND LN_familia_productos.activo = 1
    AND LN_contraparte_familias.activo = 1
    AND LN_cliente_productos.activo = 1
    AND ISNULL(LN_productos.balance, 0) > 0


    if (@indicador_balance is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indicador_balance)

      INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
       (@p_contraparte, @gest, @indicador_balance, @p_valor_numerico, GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @p_valor_numerico,
       modified = GETDATE(),
       modified_by = @p_user_id
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @indicador_balance

    end

   end

  END

 END



 /**** PRODUCTO LIMITE DE CREDITO DE CALCULO AUTOMATICO, CLIENTES B&D, BBVA, NOVARTIS, INGREDION ****/
 declare @solicitado money = null, @fecha_solicitud date = null, @producto_lc int = null, @score_final int

 if (@accion = 'monto_solicitado') begin

  if (@p_contraparte is not null) begin

   declare @padron int = null

   select @cliente = LN_contrapartes.cliente,
     @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion,
     @padron = padrones.id_padron,
     @producto_lc = LN_cliente_productos.producto

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

   where LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
   and LN_contrapartes.contraparte = @p_contraparte
   and LN_productos.producto_id = 'limiteCredito'
   and LN_cliente_productos.activo = 1
   and LN_familia_productos.activo = 1
   and LN_productos.visible = 1


   if (@producto_lc is not null) begin

    -- Busco el valor en tabla buscando el último importe solicitado para el cuit y cliente 

    select @solicitado = LN_dep_econ_compras.monto_credito_solicitado,
      @fecha_solicitud = data.ultima
    from LN_dep_econ_compras
    inner join
      (select contraparte, producto, max(fecha_solicitud) as ultima
       from LN_dep_econ_compras
       where contraparte = @p_contraparte
       and identificacion = @cuit
       and cliente = @cliente
       and producto = @producto_lc
       and monto_credito_solicitado > 0
       and visible = 1
      group by contraparte, producto) data

     on (LN_dep_econ_compras.contraparte = data.contraparte AND LN_dep_econ_compras.fecha_solicitud = data.ultima)

    -- Busco indicador LED
    select @indic = LN_indicadores.indicador
    from LN_indicadores
    where producto = @producto_lc
    and clave_indicador = 'MONTO_SOLICITADO'


    if (@indic is not null) begin

     if (@solicitado is not null) begin


      if not exists (select LN_contraparte_indicadores.contraparte,
            LN_contraparte_indicadores.gestion,
            LN_contraparte_indicadores.indicador
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
       values
        (@p_contraparte, @gest, @indic, @solicitado, @fecha_solicitud, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set
        valor_numerico = @solicitado,
        valor_fecha = @fecha_solicitud,
        modified = GETDATE(),
        modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @indic

     end

     else
      -- Como no hay dato en tablas, borro indicador en caso de existir
      delete from LN_contraparte_indicadores
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @indic


    end


    

   end




  end

 end

 /**** PRODUCTO LIMITE DE CREDITO DE CALCULO AUTOMATICO, CLIENTES B&D, BBVA, NOVARTIS, INGREDION 
  Calcula el indicador de monto otorgado multiplicando el solicitado por el score final
  ****/

 if (@accion = 'monto_otorgado') begin

  if (@p_contraparte is not null) begin

   select @gest = LN_gestiones.gestion
   from LN_gestiones
   where LN_gestiones.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()

   -- Busco indicador LED
   select @indic = LN_indicadores.indicador,
     @producto_lc = LN_indicadores.producto
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   where LN_productos.producto_id = 'limiteCredito'
   and LN_indicadores.clave_indicador = 'MONTO_OTORGADO'

   if (@indic is not null) begin

    declare @calculado tinyint = 0

    select @solicitado = LN_contraparte_indicadores.valor_numerico
    from LN_contraparte_indicadores
    inner join LN_gestiones on LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
    inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
    inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    where LN_gestiones.desde <= GETDATE()
    and LN_gestiones.hasta >= GETDATE()
    and LN_contraparte_indicadores.contraparte = @p_contraparte
    and LN_indicadores.clave_indicador = 'MONTO_SOLICITADO'
    and LN_productos.producto_id = 'limiteCredito'

    if (@solicitado is not null) begin

     -- Busco valor del Score Final
     select @score_final = convert(int, LN_contraparte_indicadores.valor_numerico)
     from LN_contraparte_indicadores
     inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
     where LN_contraparte_indicadores.contraparte = @p_contraparte
     and LN_contraparte_indicadores.gestion = @gest
     and LN_indicadores.clave_indicador = 'SCORE_FINAL'


     if (@score_final > 0) begin

      if not exists (select LN_contraparte_indicadores.valor_numerico
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @gest, @indic, ROUND( convert(float, convert(bigint, @solicitado) * @score_final / 100), 0 ), GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set
        valor_numerico = ROUND( convert(float, convert(bigint, @solicitado) * @score_final / 100), 0 )
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @indic

      set @calculado = 1

     end

    end


    if (@calculado = 0)
     delete from LN_contraparte_indicadores
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @indic

   end /** @indic is not null **/

  end

 end

 declare @show bit = 0

 if (@accion = 'CAPACIDAD_ENDEUDAMIENTO') begin

  if (@p_contraparte is not null) begin
   select  @cliente = LN_contrapartes.cliente,
     @gest = LN_gestiones.gestion,
     @producto_lc = LN_cliente_productos.producto, 
     @indic = LN_indicadores.indicador, 
        @show = CASE 
      WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
         ELSE 1 END 
     from LN_contrapartes
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
   inner join LN_indicadores on ln_indicadores.producto = LN_productos.producto
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_productos.producto = LN_familia_productos.producto)
   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_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
   and LN_contrapartes.contraparte = @p_contraparte
   and LN_productos.producto_id = 'limiteCredito'
   and LN_indicadores.clave_indicador = 'CAPACIDAD_ENDEUDAMIENTO'
   and LN_cliente_productos.activo = 1
   and LN_familia_productos.activo = 1
   and LN_productos.visible = 1
   and LN_indicadores.visible = 1 


   if (@indic is not null and @show = 1 ) begin

    -- Busco el valor en tabla buscando el último importe solicitado para el cuit y cliente 

    DECLARE @monto_cme decimal(20,2) = null, @leyenda_cme varchar(200) = null, @fecha_cme date
    EXEC [dbo].[LN_capacidad_endeudamiento] @p_contraparte, null, @monto_cme output, @leyenda_cme output, @fecha_cme output 
  
    if (@monto_cme is not null) begin
    
      if not exists (select LN_contraparte_indicadores.contraparte,
             LN_contraparte_indicadores.gestion,
             LN_contraparte_indicadores.indicador
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, valor_fecha, valor_texto, created, created_by)
       values
        (@p_contraparte, @gest, @indic, @monto_cme, @fecha_cme,  @leyenda_cme, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set
        valor_numerico = @monto_cme,
        valor_fecha = @fecha_cme, 
        valor_texto = @leyenda_cme, 
        modified = GETDATE(),
        modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @indic
       
     end

     else
      -- Como no hay dato en tablas, borro indicador en caso de existir
      delete from LN_contraparte_indicadores
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @indic
      


    end


    

   end


 end


 if (@accion = 'monto_otorgado_cme') begin

  if (@p_contraparte is not null) begin

   select  @cliente = LN_contrapartes.cliente,
     @gest = LN_gestiones.gestion,
     @producto_lc = LN_cliente_productos.producto, 
     @indic = LN_indicadores.indicador, 
        @show = CASE 
      WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
         ELSE 1 END 
     from LN_contrapartes
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
   inner join LN_indicadores on ln_indicadores.producto = LN_productos.producto
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_productos.producto = LN_familia_productos.producto)
   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_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
   and LN_contrapartes.contraparte = @p_contraparte
   and LN_productos.producto_id = 'limiteCredito'
   and LN_indicadores.clave_indicador = 'MONTO_OTORGADO_CME'
   and LN_cliente_productos.activo = 1
   and LN_familia_productos.activo = 1
   and LN_productos.visible = 1
   and LN_indicadores.visible = 1 


   if (@indic is not null and @show = 1 ) begin

    declare @cme decimal(12,2) = 0

    select @cme = LN_contraparte_indicadores.valor_numerico
    from LN_contraparte_indicadores
    inner join LN_gestiones on LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
    inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
    inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    where LN_gestiones.desde <= GETDATE()
    and LN_gestiones.hasta >= GETDATE()
    and LN_contraparte_indicadores.contraparte = @p_contraparte
    and LN_indicadores.clave_indicador = 'CAPACIDAD_ENDEUDAMIENTO'
    and LN_productos.producto_id = 'limiteCredito'

    if (@cme is not null) begin

     -- Busco valor del Score Final
     select @score_final = convert(int, LN_contraparte_indicadores.valor_numerico)
     from LN_contraparte_indicadores
     inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
     where LN_contraparte_indicadores.contraparte = @p_contraparte
     and LN_contraparte_indicadores.gestion = @gest
     and LN_indicadores.clave_indicador = 'SCORE_FINAL'

     if (@score_final > 0) begin

      if not exists (select LN_contraparte_indicadores.valor_numerico
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @gest, @indic, ROUND( convert(float, convert(bigint, @cme) * @score_final / 100), 0 ), GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set
        valor_numerico = ROUND( convert(float, convert(bigint, @cme) * @score_final / 100), 0 )
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @indic

      set @calculado = 1

     end

    end


    if (@calculado = 0)
     delete from LN_contraparte_indicadores
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @indic

   end /** @indic is not null **/

  end

 end


 /**************************************************/

 /* Producto Dependencia Económica - Balance : asienta el indicador del valor de dependencia económica basada en datos de ventas del balance */
 if (@accion = 'dependencia_economica_balance') begin

  IF (@p_contraparte > 0) BEGIN

   DECLARE @ideb int = null
   DECLARE @producto_deb int = NULL

   select @ideb = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion,
     @producto_deb = ln_indicadores.producto

   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE'


   if (@ideb is not null AND @gest is not null) begin

    if (@p_valor_numerico is not null) begin


     if not exists (select LN_contraparte_indicadores.contraparte,
           LN_contraparte_indicadores.gestion,
           LN_contraparte_indicadores.indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @ideb)

      insert into LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
      values
       (@p_contraparte, @gest, @ideb, @p_valor_numerico, NULL, GETDATE(), @p_user_id)

     else

      update LN_contraparte_indicadores set
       valor_numerico = @p_valor_numerico,
       valor_fecha = NULL,
       modified = GETDATE(),
       modified_by = @p_user_id
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @ideb

    end

    else

     -- Como no hay dato en tablas, borro indicador en caso de existir
     delete from LN_contraparte_indicadores
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @ideb

   end
   
   declare @indic_score_dep_econ_bal int = null
   select @indic_score_dep_econ_bal = LN_indicadores.indicador
     from LN_indicadores
    where producto = @producto_deb
      and clave_indicador = 'SCORE_DEP_ECON_BAL'

   if (@indic_score_dep_econ_bal is not null AND @gest is not null) begin
   
     SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1
     declare @score_dep_econ_bal int = null
     EXEC LN_score_dependencia_economica @familia, @p_contraparte, @score_dep_econ_bal OUTPUT
     if (@score_dep_econ_bal is not null) begin

      if not exists (select contraparte, gestion, indicador
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @indic_score_dep_econ_bal)

       INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, created, created_by)
       VALUES
       (@p_contraparte, @gest, @indic_score_dep_econ_bal, @score_dep_econ_bal, GETDATE(), @p_user_id)


      else

       UPDATE LN_contraparte_indicadores SET
        valor_numerico = @score_dep_econ_bal,
        modified = GETDATE(),
        modified_by = @p_user_id
       WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_score_dep_econ_bal

     end
     else
     begin
      delete from LN_contraparte_indicadores
      where contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_score_dep_econ_bal
     end 
   end

  END

 end

 /**************************************************/

 /* Producto Dependencia Económica - Balance : asienta el indicador del fecha del balance sobre el cuyas ventas se calcula la dependencia económica */
 if (@accion = 'dependencia_economica_balance_fecha') begin

  IF (@p_contraparte > 0) BEGIN

   DECLARE @idebf int = null

   select @idebf = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion

   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE_FECHA'


   if (@idebf is not null AND @gest is not null) begin

    if (@p_valor_fecha is not null) begin


     if not exists (select LN_contraparte_indicadores.contraparte,
           LN_contraparte_indicadores.gestion,
           LN_contraparte_indicadores.indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @idebf)

      insert into LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
      values
       (@p_contraparte, @gest, @idebf, NULL, @p_valor_fecha, GETDATE(), @p_user_id)

     else

      update LN_contraparte_indicadores set
       valor_numerico = NULL,
       valor_fecha = @p_valor_fecha,
       modified = GETDATE(),
       modified_by = @p_user_id
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @idebf


     /*select convert(varchar(10),@p_valor_fecha,121) as fecha_guardada*/

    end

    else

     -- Como no hay dato en tablas, borro indicador en caso de existir
     delete from LN_contraparte_indicadores
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @idebf

   end

  END

 end

 /**************************************************/

 /* Dado un ID de contraparte, calcula y asienta el indicador de facturas apócrifas
 
  Guarda en el campo valor_numerico : 1 si tiene apócrifas / 0 si no tiene apócrifas
 
  */

 IF (@accion = 'facturas_apocrifas') BEGIN

  DECLARE @apocrifas int = 0

  if (@p_contraparte > 0) begin

   select @apocrifas = count(*)
   from apocrifas inner join padrones on apocrifas.cuit = padrones.identificacion
   inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
   where LN_contrapartes.contraparte = @p_contraparte

   DECLARE @ifa int = null
   declare @producto_ap int = null 

   select @ifa = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion, 
     @producto_ap = ln_indicadores.producto

   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = 'APOCRIFAS'


   if (@ifa is not null AND @gest is not null) begin

    if not exists (select LN_contraparte_indicadores.contraparte,
          LN_contraparte_indicadores.gestion,
          LN_contraparte_indicadores.indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ifa)

     insert into LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
     values
      (@p_contraparte, @gest, @ifa, iif(@apocrifas > 0, 1, 0), NULL, GETDATE(), @p_user_id)

    else

     update LN_contraparte_indicadores set
      valor_numerico = iif(@apocrifas > 0, 1, 0),
      valor_fecha = NULL,
      modified = GETDATE(),
      modified_by = @p_user_id
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @ifa

   end
   
   declare @indic_score_FA int = null
   select @indic_score_FA = LN_indicadores.indicador
     from LN_indicadores
    where producto = @producto_ap 
      and clave_indicador = 'SCORE_APOCRIFAS'

   SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1

   if (@indic_score_FA is not null and @familia IS NOT NULL) begin

    declare @score_apocrifas int = null

    EXEC LN_score_apocrifas @familia, @p_contraparte, @score_apocrifas OUTPUT

    if (@score_apocrifas is not null) begin

         if not exists (select contraparte, gestion, indicador
             from LN_contraparte_indicadores
             where contraparte = @p_contraparte
             and gestion = @gest
             and indicador = @indic_score_FA)

          INSERT INTO LN_contraparte_indicadores
          (contraparte, gestion, indicador, valor_numerico, created, created_by)
          VALUES
          (@p_contraparte, @gest, @indic_score_FA, @score_apocrifas, GETDATE(), @p_user_id)


         else

          UPDATE LN_contraparte_indicadores SET
           valor_numerico = @score_apocrifas,
           modified = GETDATE(),
           modified_by = @p_user_id
          WHERE contraparte = @p_contraparte
          AND gestion = @gest
          AND indicador = @indic_score_FA

        end
        else
        begin
        if  exists (select contraparte, gestion, indicador
             from LN_contraparte_indicadores
             where contraparte = @p_contraparte
             and gestion = @gest
             and indicador = @indic_score_FA)
         delete from LN_contraparte_indicadores
           where contraparte = @p_contraparte
           and gestion = @gest
           and indicador = @indic_score_FA
             
        end 
   end

   select @apocrifas as apocrifas

  end


 END

 if (@accion = 'score_blacklist' and @p_contraparte > 0) 
 BEGIN
   declare @ibls int 
   select @ibls = LN_indicadores.indicador,
       @gest = LN_gestiones.gestion,
       @p_cliente = LN_contrapartes.cliente, 
       @cuit = padrones.identificacion 
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = 'SCORE_BLACKLIST'

   if (@ibls is not null and @gest IS NOT NULL) 
   begin

    declare @score_BL int = null
    EXEC LN_score_blackList @p_contraparte, @score_BL OUTPUT

    if (@score_BL is not null) 
    begin
     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @ibls)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @ibls, @score_BL, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_BL,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @ibls

    end
    else
    begin
     if  exists (select contraparte, gestion, indicador
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @ibls)
      delete from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ibls
             
    end
   end
 END


 if (@accion = 'blacklist' and @p_contraparte > 0) 
 BEGIN
   declare @ibl int 
   select @ibl = LN_indicadores.indicador,
       @gest = LN_gestiones.gestion,
       @p_cliente = LN_contrapartes.cliente, 
       @cuit = padrones.identificacion 
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1
   and LN_contraparte_familias.activo = 1
   and LN_indicadores.clave_indicador = 'BLACKLIST'

   if (@ibl is not null and @gest IS NOT NULL) 
   begin
    declare @bl int = 0
    set @bl = (select count(*) from LN_control_black_list 
     where cliente = @p_cliente 
       and identificacion = @cuit 
       and visible = 1 
       and ISNULL(vigencia_desde, '1901-01-01') < GETDATE()
       and ISNULL(vigencia_hasta, '2099-12-31') > GETDATE())
    if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @ibl)
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @ibl, iif(@BL > 0, 1, 0), GETDATE(), @p_user_id)
    else
      UPDATE LN_contraparte_indicadores SET
       valor_numerico = iif(@BL > 0, 1, 0),
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @ibl
   end
 END
 
 IF (@accion = 'AprobacionFiscales' or @accion = 'AprobacionFormales' or  @accion = 'AprobacionLegales' or  @accion = 'AprobacionBlackList') BEGIN

   SELECT @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion
   FROM LN_gestiones INNER JOIN LN_contrapartes
   ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_score_calc int = null
   declare @texto_calc varchar(10) = null
   declare @memo_calc varchar(max) = null
   declare @score_calc decimal(10,2) = null 
   select @indic_score_calc = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador =  @accion 

   if (@p_cliente is null or @p_cliente = 0) 
    begin
         select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
    end 

   if (@indic_score_calc is not null and @gest > 0) begin

    if (@accion = 'AprobacionLegales') 
        EXEC LN_score_judicial @p_contraparte, @score_calc OUTPUT
    if (@accion = 'AprobacionFormales') 
        EXEC LN_score_formal_antiguedad_edad @p_contraparte, @score_calc OUTPUT
    if (@accion = 'AprobacionFiscales') 
        EXEC LN_score_fiscales  @p_contraparte, @score_calc OUTPUT
    if (@accion = 'AprobacionBlackList') 
        EXEC LN_score_blackList @p_contraparte, @score_calc OUTPUT
     
    if (@score_calc is not null) begin
     select @texto_calc = texto from ln_cliente_nivel 
             where cliente = @p_cliente 
            and indicador = @indic_score_calc 
            and desde <= @score_calc and hasta > @score_calc
     select @memo_calc = texto_largo from ln_cliente_nivel 
             where cliente = @p_cliente 
            and indicador = @indic_score_calc 
            and desde <= @score_calc and hasta > @score_calc
     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_score_calc)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico,valor_texto,valor_memo, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_calc, @score_calc, @texto_calc, @memo_calc, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @score_calc,
          valor_texto = @texto_calc,
          valor_memo  = @memo_calc, 
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_score_calc

    end

   end

  END



 IF (@accion = 'AprobacionBancos' or @accion = 'AprobacionCheques') BEGIN
  
  SELECT @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion
  FROM LN_gestiones INNER JOIN LN_contrapartes
    ON LN_gestiones.contraparte = LN_contrapartes.contraparte
  INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
  WHERE LN_gestiones.desde <= GETDATE()
    AND LN_gestiones.hasta >= GETDATE()
       AND LN_contrapartes.activo = 1
    AND LN_contrapartes.contraparte = @p_contraparte

  declare @indic_score_deu_ban  int = null
  declare @texto_deu_ban varchar(10) = null
  declare @memo_deu_ban varchar(max) = null
  declare @score_deu_ban decimal(10,2) = null 

  select @indic_score_deu_ban = LN_indicadores.indicador
  from LN_indicadores
  where clave_indicador = @accion 

  if (@p_cliente is null or @p_cliente = 0) 
   begin
    select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
   end 

  if (@indic_score_deu_ban is not null and @gest > 0) begin
   SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1

   if (@familia IS NOT NULL) 
   begin
    declare @score_alertas1  decimal(10,2) = null
    declare @score_cendeu1  decimal(10,2) = null
    declare @score_ch1      decimal(10,2) = null
    EXEC LN_score_alertas @familia, @p_contraparte, @score_alertas1 OUTPUT,  @score_cendeu1 output, @score_ch1 output 

    if (@accion = 'AprobacionBancos')  set @score_deu_ban = @score_cendeu1
    if (@accion = 'AprobacionCheques') set @score_deu_ban = @score_ch1 
     
    if (@score_deu_ban is not null) 
    begin
     select @texto_deu_ban = texto,  @memo_deu_ban = texto_largo 
                                   from ln_cliente_nivel 
                                  where cliente = @p_cliente 
               and indicador = @indic_score_deu_ban 
               and desde <= @score_deu_ban and hasta > @score_deu_ban

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_score_deu_ban)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_deu_ban, @score_deu_ban, @texto_deu_ban, @memo_deu_ban, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_deu_ban,
       valor_texto    = @texto_deu_ban,
       valor_memo     = @memo_deu_ban, 
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_score_deu_ban

    end

   end 

  end

 END

 IF (@accion = 'AprobacionContables') BEGIN
 
  /* guarda el score de balance pasado como parámetro */

  IF (@p_score >= 0) begin

   if (@p_cliente is null or @p_cliente = 0) 
   begin
    select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
   end 

   DECLARE @isb2 int = null
   SELECT @gest = LN_gestiones.gestion
     FROM LN_gestiones
    WHERE contraparte = @p_contraparte
      AND desde <= getdate() AND hasta >= getdate()

   SELECT @isb2 = LN_indicadores.indicador, @prod = LN_indicadores.producto
   FROM LN_indicadores
   INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
   INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   INNER JOIN LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   INNER JOIN LN_cliente_productos on (LN_familia_productos.producto = LN_cliente_productos.producto
            AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
   INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
            AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
   WHERE LN_indicadores.clave_indicador = 'AprobacionContables'
   AND LN_contraparte_familias.contraparte = @p_contraparte
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1

   IF @gest IS NOT NULL and @isb2 IS NOT NULL BEGIN  
     declare @texto_bal varchar(100)
     declare @memo_bal varchar(max)
     select @texto_bal = texto, @memo_bal = texto_largo from ln_cliente_nivel 
             where cliente = @p_cliente 
            and indicador = @isb2
            and desde <= @p_score and hasta > @p_score
     --select  @p_cliente cliente, @isb2 indicador, @p_score score, @texto_bal texto, @memo_bal as memo
     if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @isb2
         AND contraparte = @p_contraparte
         AND gestion = @gest) begin

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, valor_numerico, valor_texto,valor_memo)
      VALUES
      (@p_contraparte, @gest, @isb2, GETDATE(), @p_score, @texto_bal,@memo_bal)

     end else begin

      /*select @gest, @isb, @p_score, @p_contraparte*/

      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @p_score,
       valor_texto = @texto_bal,
       valor_memo = @memo_bal,
       visible = 1, 
       modified = GETDATE()
      WHERE indicador = @isb2
      AND contraparte = @p_contraparte
      AND gestion = @gest
     end
                

   END

  end


 END



 IF (@accion = 'AprobacionFinal') BEGIN

   SELECT @gest = LN_gestiones.gestion,
       @cuit = padrones.identificacion
   FROM LN_gestiones INNER JOIN LN_contrapartes
   ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_aprobacion_final int = null
   declare @texto_aprobacion_final varchar(10) = null
   declare @memo_aprobacion_final varchar(max) = null

   declare @valor_aprobacion_final decimal(10,2) = null 
   declare @producto_aprobacion_final int = null 

   if (@p_cliente is null or @p_cliente = 0) 
    begin
         select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
    end 

   select @producto_aprobacion_final = producto, 
          @indic_aprobacion_final = LN_indicadores.indicador
     from LN_indicadores
     inner join ln_cliente_indicadores ci on (ci.indicador = ln_indicadores.indicador and ci.activo = 1 and cliente = @p_cliente)
     where clave_indicador =  @accion 

   if (@indic_aprobacion_final is not null and @gest > 0) 
   begin
    set @valor_aprobacion_final = 100
    if exists (select *
         from ln_contraparte_indicadores 
        where contraparte = @p_contraparte 
          and gestion = @gest
          and indicador in (select ln_indicadores.indicador from ln_indicadores
                             inner join ln_cliente_indicadores ci on (ci.indicador = ln_indicadores.indicador and ci.activo = 1 and cliente = @p_cliente)
              where ln_indicadores.indicador != @indic_aprobacion_final and producto = @producto_aprobacion_final
              ) 
          and visible = 1
          and valor_texto = 'A') -- Amarillo --> aprobacion final = amarillo
    begin
     set @valor_aprobacion_final  = 50
    end 
    if exists (select *
         from ln_contraparte_indicadores 
        where contraparte = @p_contraparte 
          and gestion = @gest
          and indicador in (select ln_indicadores.indicador from ln_indicadores
                             inner join ln_cliente_indicadores ci on (ci.indicador = ln_indicadores.indicador and ci.activo = 1 and cliente = @p_cliente)
              where ln_indicadores.indicador != @indic_aprobacion_final and producto = @producto_aprobacion_final
              ) 
          and visible = 1
          and valor_texto = 'R')  -- Rojo --> aprobacion final = rojo 
    begin
     set @valor_aprobacion_final  = -100
    end  

    -- Vemos si hay excepcion vigente y debe pisar el score final
    --select  @p_cliente
    declare @reemplaza_score bit = (select reemplaza_score 
            from LN_cliente_productos 
            inner join ln_productos on LN_productos.producto = LN_cliente_productos.producto
            where cliente = @p_cliente
                                      and ln_productos.producto_id = 'excepciones') 
    if (@reemplaza_score = 1) 
     begin
      declare @tipo_excepcion_final char(1) =  
           (select tipo_excepcion from LN_excepciones_final 
             where contraparte = @p_contraparte 
            and ISNULL(vigencia,'2099-12-31') >= GETDATE()
         and estado = 1)
      if (@tipo_excepcion_final = 'V') set @valor_aprobacion_final = 100
      if (@tipo_excepcion_final = 'R') set @valor_aprobacion_final = -100
     end 
    
    select @texto_aprobacion_final = texto,  @memo_aprobacion_final = texto_largo  from ln_cliente_nivel 
           where cliente = @p_cliente 
           and indicador = @indic_aprobacion_final 
           and desde <= @valor_aprobacion_final and hasta > @valor_aprobacion_final
    if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @indic_aprobacion_final)

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico,valor_texto, valor_memo, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_aprobacion_final, @valor_aprobacion_final, @texto_aprobacion_final,  @memo_aprobacion_final, GETDATE(), @p_user_id)

    else

     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @valor_aprobacion_final,
       valor_texto = @texto_aprobacion_final,
       valor_memo = @memo_aprobacion_final,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_aprobacion_final


   end

  END


  IF (@accion = 'COMEX_IMPO' or @accion = 'COMEX_EXPO') BEGIN

   select  @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion,
     @cliente = LN_contrapartes.cliente
     from LN_gestiones 
    inner join LN_contrapartes ON 
      LN_gestiones.contraparte = LN_contrapartes.contraparte
    inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
    inner join identificadores on padrones.identificador = identificadores.identificador
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
           
   SELECT @iun = LN_indicadores.indicador, @prod = LN_indicadores.producto
     FROM LN_indicadores
    INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
    INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    WHERE LN_indicadores.clave_indicador = @accion
     AND LN_contraparte_familias.contraparte = @p_contraparte

   declare @impo_expo table (total_impo decimal(15,2), total_expo decimal(15,2))
   declare @total_impo decimal(15,2), @total_expo decimal(15,2)


   IF @gest IS NOT NULL and @iun IS NOT NULL BEGIN                  

    insert into @impo_expo 
     exec  [obtener_comex_totales] @cuit,12
    select @total_impo = total_impo, @total_expo = total_expo from @impo_expo
    if (@accion = 'COMEX_IMPO' and @total_impo IS NOT NULL) begin
     if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @iun
         AND contraparte = @p_contraparte
         AND gestion = @gest) 
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, created_by, valor_numerico)
      values (@p_contraparte, @gest, @iun, GETDATE(),  @p_user_id, @total_impo)
     else
      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @total_impo,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE LN_contraparte_indicadores.indicador = @iun
      AND LN_contraparte_indicadores.contraparte = @p_contraparte
      AND LN_contraparte_indicadores.gestion = @gest
    end

    if (@accion = 'COMEX_EXPO' and @total_expo IS NOT NULL) begin
     if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @iun
         AND contraparte = @p_contraparte
         AND gestion = @gest) 
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, created_by, valor_numerico)
      values (@p_contraparte, @gest, @iun, GETDATE(),  @p_user_id, @total_expo)
     else
      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @total_expo,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE LN_contraparte_indicadores.indicador = @iun
      AND LN_contraparte_indicadores.contraparte = @p_contraparte
      AND LN_contraparte_indicadores.gestion = @gest
    end


 

  END

                 
 END


 IF (@accion = 'indicadores_actividad') BEGIN

  SELECT @gest = LN_gestiones.gestion
   FROM LN_gestiones 
   INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte

  if (@gest IS NOT NULL) begin


   IF EXISTS (SELECT LN_familia_productos.producto
      FROM LN_familia_productos INNER JOIN LN_contraparte_familias 
       ON LN_familia_productos.familia = LN_contraparte_familias.familia
      INNER JOIN LN_productos ON LN_familia_productos.producto = LN_productos.producto
      INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
      INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
              AND LN_productos.producto = LN_cliente_productos.producto)
      WHERE LN_contrapartes.contraparte = @p_contraparte
      AND LN_productos.producto_id = 'ACTIVIDAD'
      AND LN_contraparte_familias.activo = 1
      AND LN_familia_productos.activo = 1
      AND LN_cliente_productos.activo = 1) BEGIN


    /** CLAE **/
    declare @act_clae int = NULL

    select @act_clae = indicador from LN_indicadores inner join LN_productos
    on LN_indicadores.producto = LN_productos.producto
    where LN_productos.producto_id = 'ACTIVIDAD'
    and LN_indicadores.clave_indicador = 'CLAE'

    if (@act_clae is not null) begin

     declare @clae varchar(10) = NULL, @desc_clae varchar(500) = NULL

     SELECT @clae = clae.cod_clae,
       @desc_clae = clae.descripcion
     FROM clae inner join padrones on clae.cuit = padrones.identificacion
     inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
     WHERE LN_contrapartes.contraparte = @p_contraparte
     AND clae.visible = 1
     AND clae.principal = 1

     IF (@clae IS NOT NULL) BEGIN

      if not exists (select contraparte from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @act_clae)

       INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, valor_texto, visible, created, created_by)
       VALUES (@p_contraparte, @gest, @act_clae, CONVERT(INT, @clae), @desc_clae, 1, GETDATE(), @p_user_id)

      else

       UPDATE LN_contraparte_indicadores SET
        valor_numerico = CONVERT(INT, @clae),
        valor_texto = @desc_clae,
        modified = GETDATE(),
        modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @act_clae

     END


    end

    /*** RAMO ***/
    declare @act_ramo int = NULL

    select @act_ramo = indicador from LN_indicadores inner join LN_productos
    on LN_indicadores.producto = LN_productos.producto
    where LN_productos.producto_id = 'ACTIVIDAD'
    and LN_indicadores.clave_indicador = 'RAMO'

    if (@act_ramo is not null) begin

     declare @ramo int = NULL, @desc_ramo varchar(500) = NULL

     SELECT @ramo = ramos_clae.cod_ramo,
       @desc_ramo = ramos_clae.descripcion
     FROM ramos_clae inner join clae on ramos_clae.cod_subramo = clae.cod_clae
     inner join padrones on clae.cuit = padrones.identificacion
     inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
     WHERE LN_contrapartes.contraparte = @p_contraparte
     AND clae.visible = 1
     AND clae.principal = 1

     IF (@ramo IS NOT NULL) BEGIN

      if not exists (select contraparte from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @act_ramo)

       INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, valor_texto, visible, created, created_by)
       VALUES (@p_contraparte, @gest, @act_ramo, @ramo, @desc_ramo, 1, GETDATE(), @p_user_id)

      else

       UPDATE LN_contraparte_indicadores SET
        valor_numerico = @ramo,
        valor_texto = @desc_ramo,
        modified = GETDATE(),
        modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @act_ramo

     END


    end


   END

  end

 END


 /*** Cálculo Indicadores producto Imperium ***/
 if (@accion = 'Indicadores_Imperium') begin
  if (@p_contraparte is not null) begin
   if exists (select LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.tipo_dato, LN_gestiones.gestion, LN_contrapartes.id_imperium
      from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
      inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto 
      inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
      inner join LN_cliente_indicadores on (LN_cliente_productos.cliente = LN_cliente_indicadores.cliente
                AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
      inner join LN_contrapartes on LN_cliente_productos.cliente = LN_contrapartes.cliente
      inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
      inner join LN_contraparte_familias on (LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
                and LN_familia_productos.familia = LN_contraparte_familias.familia)
      where LN_contrapartes.contraparte = @p_contraparte
      and LN_contrapartes.servicio_contratado = 73
      and LN_productos.producto_id = 'IMPE'
      and LN_indicadores.valoracion = 'A'
      and LN_indicadores.visible = 1
      and LN_familia_productos.activo = 1
      and LN_cliente_productos.activo = 1
      and LN_gestiones.desde <= GETDATE()
      and LN_gestiones.hasta >= GETDATE()
      and LN_contrapartes.activo = 1
      and LN_contrapartes.id_imperium > 0) begin

    DECLARE @imp_indic int, @imp_clave varchar(50), @imp_tipo_dato varchar(1), @imp_gestion int, @imp_contratista int

    DECLARE Indicadores CURSOR FOR

    select LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.tipo_dato, LN_gestiones.gestion, LN_contrapartes.id_imperium
    from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto 
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_cliente_indicadores on (LN_cliente_productos.cliente = LN_cliente_indicadores.cliente
              AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
    inner join LN_contrapartes on LN_cliente_productos.cliente = LN_contrapartes.cliente
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_contraparte_familias on (LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
              and LN_familia_productos.familia = LN_contraparte_familias.familia)
    where LN_contrapartes.contraparte = @p_contraparte
    and LN_contrapartes.servicio_contratado = 73
    and LN_productos.producto_id = 'IMPE'
    and LN_indicadores.valoracion = 'A'
    and LN_indicadores.visible = 1
    and LN_familia_productos.activo = 1
    and LN_cliente_productos.activo = 1
    and LN_gestiones.desde <= GETDATE()
    and LN_gestiones.hasta >= GETDATE()
    and LN_contrapartes.activo = 1
    and LN_contrapartes.id_imperium > 0


    OPEN Indicadores
    FETCH NEXT FROM Indicadores INTO @imp_indic, @imp_clave , @imp_tipo_dato , @imp_gestion, @imp_contratista
    WHILE @@FETCH_STATUS = 0 BEGIN

     IF (@imp_clave = 'impe_recursos') BEGIN

      DECLARE @total_recursos int

      select @total_recursos = SUM(data.totales)
      from
       (select count(*) as totales from led_empleados inner join led_empleados_periodo
             on led_empleados.empleado = led_empleados_periodo.empleado
       where led_empleados.contratista_1 = @imp_contratista
       and led_empleados.estado_empleado = 'A'
       and led_empleados_periodo.periodo = dbo.PeriodoVencido()

       UNION

       select count(*) as totales from led_vehiculos inner join led_vehiculos_periodo
             on led_vehiculos.vehiculo = led_vehiculos_periodo.vehiculo
       where led_vehiculos.contratista_1 = @imp_contratista
       and led_vehiculos.estado_vehiculo = 'A'
       and led_vehiculos_periodo.periodo = dbo.PeriodoVencido()

       UNION

       select count(*) as totales from led_contratistas inner join led_subcontratista_periodo
             on led_contratistas.contratista = led_subcontratista_periodo.subcontratista
       where led_contratistas.contratista_1 = @imp_contratista
       and led_contratistas.estado_contratista = 'A'
       and led_contratistas.contratista != led_contratistas.contratista_1
       and led_subcontratista_periodo.periodo = dbo.PeriodoVencido() ) DATA


      if not exists (select contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, @total_recursos, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set valor_numerico = @total_recursos, modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic

     END


     IF (@imp_clave = 'impe_subcontratistas') BEGIN

      DECLARE @total_subc int

      select @total_subc = count(*) from led_contratistas inner join led_subcontratista_periodo
             on led_contratistas.contratista = led_subcontratista_periodo.subcontratista
      where led_contratistas.contratista_1 = @imp_contratista
      and led_contratistas.estado_contratista = 'A'
      and led_contratistas.contratista != led_contratistas.contratista_1
      and led_subcontratista_periodo.periodo = dbo.PeriodoVencido()


      if not exists (select contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, @total_subc, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set valor_numerico = @total_subc, modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic

     END

     /*** Faltan impe_control_acceso e impe_status ***/
     IF (@imp_clave = 'impe_control_acceso' OR @imp_clave = 'impe_status') BEGIN
      if not exists (select contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, 1, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set valor_numerico = 1, modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic

     END



     FETCH NEXT FROM Indicadores INTO @imp_indic, @imp_clave , @imp_tipo_dato , @imp_gestion, @imp_contratista
    END
    CLOSE Indicadores
    DEALLOCATE Indicadores


   end

  end
 end


 /********************************* DATOS DE GESTIONES ANTERIORES *****************************************/


 IF (@accion = 'inicio_gestion_anterior' or @accion = 'valor_final_anterior') BEGIN
   -- gestion actual
   SELECT @gest = LN_gestiones.gestion
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.desde <= GETDATE()
      AND LN_gestiones.hasta >= GETDATE()
      AND LN_contrapartes.activo = 1
      AND LN_contrapartes.contraparte = @p_contraparte
   
   -- datos gestion anterior
   declare @inicio_gestion_anterior date = null 
   declare @gest_ant int = null
   
   declare @valor_numerico_ant float = null
   declare @valor_texto_ant    varchar(100) = null
   declare @valor_memo_ant     varchar(max) = null
   declare @valor_fecha_ant    datetime = null


   SELECT top 1 @inicio_gestion_anterior = desde, @gest_ant = LN_gestiones.gestion
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.hasta < GETDATE()
      AND LN_contrapartes.contraparte = @p_contraparte
      order by desde desc 
 
   declare @indic_gestion_anterior int = null
   select @indic_gestion_anterior = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = @accion 

   if (@accion = 'valor_final_anterior')
   begin
    select @valor_numerico_ant = valor_numerico ,
        @valor_texto_ant    = valor_texto,
        @valor_memo_ant     = convert(varchar(max),valor_memo),
        @valor_fecha_ant    = valor_fecha
      from LN_contraparte_indicadores
     where contraparte = @p_contraparte
       and gestion = @gest_ant
       and indicador = (select LN_indicadores.indicador
           from LN_indicadores
          where clave_indicador = 'SCORE_FINAL')
   end 


   if (@accion =  'inicio_gestion_anterior' and @indic_gestion_anterior is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_gestion_anterior)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_fecha, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_gestion_anterior, @inicio_gestion_anterior, GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
          valor_fecha = @inicio_gestion_anterior,
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_gestion_anterior

    end

   if (@accion = 'valor_final_anterior' and @indic_gestion_anterior is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_gestion_anterior)

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, 
      valor_numerico, valor_texto, valor_memo, valor_fecha, 
      created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_gestion_anterior, 
       @valor_numerico_ant,
       @valor_texto_ant,
       @valor_memo_ant, 
       @valor_fecha_ant,
       GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @valor_numerico_ant,
          valor_texto = @valor_texto_ant, 
          valor_memo  = @valor_memo_ant, 
          valor_fecha = @valor_fecha_ant, 
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_gestion_anterior

    end

 END


 IF (@accion = 'indicadores_contraparte_gestion') BEGIN

  /* Traer todos los scores de una contraparte en la gestión solicitada */
  select @cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
  IF (@p_clave_indicador IS NULL)

   SELECT  LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.etiqueta as etiqueta_indicador,
     LN_indicadores.producto, LN_productos.nombre_producto,
     LN_productos.producto_id, 
     LN_cliente_productos.ponderacion, 
     LN_productos.etiqueta,
     LN_contraparte_indicadores.visible,

   case when LN_indicadores.tipo_dato <> 'S'
    then CONVERT(VARCHAR, ROUND(LN_contraparte_indicadores.valor_numerico,0))
    else LN_contraparte_indicadores.valor_texto end as valor,

   /** COLOR **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
      else NULL
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
      when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
      when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case 
      when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
      when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
      when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
      when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
      when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
      else null
     end

    ELSE
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
      when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
      else NULL 
     end
        
   END AS color,


   /** COLOR TEXTO **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
      else '000000'
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
      when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
      when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
      else NULL
     end       

    WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case 
      when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
      else '000000'
     end

    ELSE
     case
      when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
      else '000000' 
     end        
   END AS textcolor,


   /** SVG **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
     case
      when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027  c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445  c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239  c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z   M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069  c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069  c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case
      when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC'  OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC' or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      /*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/

      when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602   c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602   C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94   L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
       </g>
       </svg>'
 
      when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953   s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56   l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711   c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405   l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
       </g>
       </svg>'

      else NULL
     end

    ELSE NULL
   END AS svg_data,


   /** TEXT CAPTION **/
   CASE
    WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
      when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro' 
      when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente' 
      when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
      else NULL
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
      when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
      when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
      when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
      else null
     end
    ELSE NULL
   END AS textcaption,

   CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
          (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
    ELSE null
   END AS color_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.color_texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
     ELSE null
   END AS textcolor_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+LN_cliente_nivel.color_fondo+';" /></svg>'
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
    ELSE NULL
   END AS svg_data_personalizado,

   /** TEXTOS **/
   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
   ELSE NULL
   END AS texto,

   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.titulo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
   ELSE NULL
   END AS titulo_texto,
   


   /** PUNTO
    CASE
    WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)
    WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
    WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
    ELSE 0 
    END AS punto, **/


   ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
   DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion

   FROM LN_contrapartes 
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN LN_contraparte_indicadores
    ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
     AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
   INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
   /*
    INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
    AND LN_productos.producto = LN_familia_productos.producto)
    */

   WHERE LN_contrapartes.contraparte = @p_contraparte
   --AND LN_cliente_productos.activo = 1
   --AND LN_contraparte_familias.activo = 1
   --AND LN_familia_productos.activo = 1
   --AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   AND LN_gestiones.desde <= @fecha_gestion AND LN_gestiones.hasta >= @fecha_gestion
   AND LN_indicadores.clave_indicador LIKE 'SCORE%'
   AND LN_contraparte_indicadores.visible = 1 
   --AND LN_indicadores.visible = 1

   GROUP BY LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.etiqueta,
     LN_indicadores.producto, LN_productos.nombre_producto,
     LN_productos.producto_id, 
     LN_cliente_productos.orden_producto, 
     LN_cliente_productos.ponderacion, 
     LN_productos.etiqueta,
     LN_indicadores.tipo_dato, 
     LN_contraparte_indicadores.valor_fecha, 
     LN_contraparte_indicadores.valor_numerico,
     LN_contraparte_indicadores.valor_texto,
     LN_contraparte_indicadores.visible,
     LN_contraparte_indicadores.created,
     LN_contraparte_indicadores.modified

   ORDER BY LN_cliente_productos.orden_producto

  ELSE
   /* Para un indicador específico (tipo_dato = I / F / B son valores numéricos) */

   SELECT LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.etiqueta as etiqueta_indicador,
     LN_indicadores.producto, LN_productos.nombre_producto,
     LN_productos.producto_id, 
     LN_cliente_productos.ponderacion, 
     LN_productos.etiqueta, 
     LN_cliente_productos.etiqueta_personalizada,
     LN_contraparte_indicadores.visible,

   case 
    when LN_indicadores.tipo_dato = 'I' OR LN_indicadores.tipo_dato = 'F' OR LN_indicadores.tipo_dato = 'B'
      then CONVERT(VARCHAR,ROUND(LN_contraparte_indicadores.valor_numerico,0))
    when LN_indicadores.tipo_dato = 'S'
      then LN_contraparte_indicadores.valor_texto 
    else CONVERT(VARCHAR(MAX), LN_contraparte_indicadores.valor_memo) 
   end as valor,

   /** COLOR **/
   CASE

    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      /*when LN_contraparte_indicadores.valor_numerico >= 81 then 'A72B2A'
       when LN_contraparte_indicadores.valor_numerico >= 61 then 'd37123'
       when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
       when LN_contraparte_indicadores.valor_numerico >= 21 then 'cbc367'
       when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'*/

      when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
      else NULL
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'A72B2A'
      when LN_contraparte_indicadores.valor_texto = 'MR' then 'FFB81C'
      when LN_contraparte_indicadores.valor_texto = 'SR' then 'E0E0E0'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '63b68c'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case 
      when (LN_contraparte_indicadores.valor_numerico = 1) then '63b68c'
      when (LN_contraparte_indicadores.valor_numerico = 0) then 'A72B2A'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then '63b68c'
      when LN_contraparte_indicadores.valor_texto = 'U' then 'cbc367'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'FFB81C'
      when LN_contraparte_indicadores.valor_texto = 'D' then 'd37123'
      when LN_contraparte_indicadores.valor_texto = 'N' then 'A72B2A'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS' OR LN_indicadores.clave_indicador = 'LC_DIAS_VENTAS_PPB') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 181 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 121 then 'd37123'
      when LN_contraparte_indicadores.valor_numerico >= 91 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
      else null
     end

    ELSE
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then '63b68c'
      when LN_contraparte_indicadores.valor_numerico >= 61 then 'cbc367'
      when LN_contraparte_indicadores.valor_numerico >= 41 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 21 then 'd37123'
      when LN_contraparte_indicadores.valor_numerico >= 0 then 'A72B2A'
      else NULL 
     end
        
   END AS color,


   /** COLOR TEXTO **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then 'FFFFFF'
      else '000000'
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'FFFFFF'
      when LN_contraparte_indicadores.valor_texto = 'MR' then '000000'
      when LN_contraparte_indicadores.valor_texto = 'SR' then '000000'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '000000'
      else NULL
     end       

    WHEN (LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case 
      when (LN_contraparte_indicadores.valor_numerico = 0) then 'FFFFFF'
      else '000000'
     end

    ELSE
     case
      when LN_contraparte_indicadores.valor_numerico <= 20 then 'FFFFFF'
      else '000000' 
     end        
   END AS textcolor,


   /** SVG **/
   CASE
             
    WHEN (LN_indicadores.clave_indicador = 'EXCEPCION') THEN
     case
      when LN_contraparte_indicadores.valor_numerico > 0 then '<svg x="0px" y="0px" viewBox="0 0 473.931 473.931" style="enable-background:new 0 0 473.931 473.931;" xml:space="preserve" width="20px" height="20px" class=""><g><circle style="fill:#FFB81C" cx="236.966" cy="236.966" r="236.966" data-original="#E79E2D" class="active-path" data-old_color="#E79E2D"/><path style="fill:#FFFFFF" d="M214.399,252.389l-6.698-100.159c-1.257-19.517-1.871-33.526-1.871-42.027  c0-11.57,3.035-20.602,9.085-27.072c6.065-6.499,14.054-9.74,23.94-9.74c11.996,0,20.022,4.15,24.056,12.445  c4.034,8.303,6.065,20.258,6.065,35.857c0,9.205-0.494,18.559-1.459,28.022l-8.995,103.089c-0.973,12.277-3.061,21.68-6.279,28.239  c-3.207,6.544-8.509,9.815-15.888,9.815c-7.536,0-12.756-3.158-15.682-9.512C217.744,275.016,215.645,265.351,214.399,252.389z   M237.609,389.974c-8.501,0-15.936-2.739-22.267-8.251c-6.346-5.497-9.512-13.197-9.512-23.102c0-8.647,3.035-16.004,9.085-22.069  c6.065-6.065,13.493-9.092,22.275-9.092c8.786,0,16.269,3.027,22.477,9.092c6.204,6.065,9.31,13.425,9.31,22.069  c0,9.751-3.136,17.414-9.418,22.997C253.291,387.19,245.976,389.974,237.609,389.974z" data-original="#CA7B29" class="" data-old_color="#ffffff"/></g> </svg>'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'CTRL_ETICO' OR LN_indicadores.clave_indicador = 'CTRL_CALIDAD' OR LN_indicadores.clave_indicador = 'CTRL_COMERCIAL' OR LN_indicadores.clave_indicador = 'HOMOLOG') THEN
     case
      when LN_contraparte_indicadores.valor_numerico > 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico = 0 then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
      else null
     end

    WHEN (LN_indicadores.clave_indicador = 'NIVEL_RIESGO') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'MR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'SR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#E0E0E0;" /></svg>'
      when LN_contraparte_indicadores.valor_texto = 'BR' then '<svg width="15" height="15"><rect width="20" height="20" style="fill:#63b68c;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'SCORE_IC' OR LN_indicadores.clave_indicador = 'SCORE_BAL' OR LN_indicadores.clave_indicador = 'SCORE_DOC' OR LN_indicadores.clave_indicador = 'CUMPL_DOC'  OR LN_indicadores.clave_indicador = 'SCORE_FINAL' OR LN_indicadores.clave_indicador = 'SCORE_DOSSIER' OR LN_indicadores.clave_indicador = 'SCORE_JUDICIAL') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC' or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      /*when LN_contraparte_indicadores.valor_numerico >= 81 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 61 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#d37123;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 41 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 21 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#cbc367;" /></svg>'
       when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'*/

      when LN_contraparte_indicadores.valor_numerico >= 70 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#A72B2A;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 50 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#FFB81C;" /></svg>'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '<svg width="7" height="15"><rect width="7" height="20" style="fill:#63b68c;" /></svg>'
      else NULL
     end

    WHEN (LN_indicadores.clave_indicador = 'VALORACION_BAL') THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M0,271.953c0,150.194,121.759,271.953,271.953,271.953s271.953-121.759,271.953-271.953 S422.148,0,271.953,0S0,121.759,0,271.953z M124.076,340.453l0.169-97.735L272.122,95.184l147.703,147.535v97.566L307.476,227.929 v220.793h-71.556V228.778L124.076,340.453z" fill="#63b68c"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'U' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.902 543.902" style="enable-background:new 0 0 543.902 543.902;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M79.652,79.652c-106.203,106.203-106.203,278.398,0,384.602   c106.203,106.198,278.398,106.198,384.602,0c106.198-106.203,106.198-278.398,0-384.602   C358.045-26.551,185.856-26.551,79.652,79.652z M118.955,215.825l69.228-68.989l208.887,0.239l0.12,208.768l-68.989,68.984V265.94   L172.073,422.069l-50.6-50.6l155.519-155.525L118.955,215.825L118.955,215.825z" fill="#cbc367"/>
       </g>
       </svg>'
 
      when LN_contraparte_indicadores.valor_texto = 'E' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M271.953,0C121.759,0,0,121.759,0,271.953s121.759,271.953,271.953,271.953   s271.953-121.759,271.953-271.953S422.148,0,271.953,0z M203.454,124.076l97.735,0.169l147.535,147.877L301.188,419.831h-97.56   l112.349-112.349H95.184v-71.562h219.945L203.454,124.076z" fill="#FFB81C"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'D' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M85.355,14.645c-19.526-19.526-51.185-19.526-70.711,0s-19.526,51.185,0,70.711   c19.526,19.525,51.185,19.525,70.711,0C104.881,65.829,104.881,34.171,85.355,14.645z M60.319,21.871l12.684,12.728l-0.044,38.405   l-38.383,0.022L21.893,60.342h29.213L22.401,31.637l9.303-9.303l28.593,28.593L60.319,21.871z" fill="#d37123"/>
       </g>
       </svg>'

      when LN_contraparte_indicadores.valor_texto = 'N' then '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="" x="0px" y="0px" viewBox="0 0 543.906 543.906" style="enable-background:new 0 0 543.906 543.906;" xml:space="preserve" width="15px" height="15px">
       <g>
       <path d="M543.906,271.953C543.906,121.759,422.148,0,271.953,0S0,121.759,0,271.953 s121.759,271.953,271.953,271.953S543.906,422.148,543.906,271.953z M419.831,203.454l-0.169,97.735L271.785,448.723 L124.076,301.188v-97.56l112.349,112.349V95.184h71.556v219.945L419.831,203.454z" fill="#A72B2A"/>
       </g>
       </svg>'

      else NULL
     end


    ELSE NULL
   END AS svg_data,


   /** TEXT CAPTION **/
   CASE
    WHEN LN_indicadores.clave_indicador = 'VALORACION_BAL' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'P' then 'Positivo'
      when LN_contraparte_indicadores.valor_texto = 'U' then 'Ascendente'
      when LN_contraparte_indicadores.valor_texto = 'E' then 'Neutro' 
      when LN_contraparte_indicadores.valor_texto = 'D' then 'Descendente' 
      when LN_contraparte_indicadores.valor_texto = 'N' then 'Negativo'
      else NULL
     end

    WHEN LN_indicadores.clave_indicador = 'NIVEL_RIESGO' THEN
     case
      when LN_contraparte_indicadores.valor_texto = 'AR' then 'Riesgo alto'
      when LN_contraparte_indicadores.valor_texto = 'MR' then 'Riesgo medio'
      when LN_contraparte_indicadores.valor_texto = 'SR' then 'Riesgo standard'
      when LN_contraparte_indicadores.valor_texto = 'BR' then 'Riesgo bajo'
      else null
     end
    ELSE NULL
   END AS textcaption,

   
   CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
               (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

       WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
               (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')


    ELSE null
   END AS color_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
       (select LN_cliente_nivel.color_texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

     WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
       (select LN_cliente_nivel.color_texto
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')

     ELSE null
   END AS textcolor_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
     (select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+LN_cliente_nivel.color_fondo+';" /></svg>'
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

     WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
     (select '<svg width="7" height="15"><rect width="7" height="20" style="fill:#'+LN_cliente_nivel.color_fondo+';" /></svg>'
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')

    ELSE NULL
   END AS svg_data_personalizado,

   /** TEXTOS **/
   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
     (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

    WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
     (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')

   ELSE NULL
   END AS texto,

   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
     (select LN_cliente_nivel.titulo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')

    WHEN LN_indicadores.clave_indicador = 'SCORE_DOSSIER' THEN
     (select LN_cliente_nivel.titulo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_DOSSIER')

   ELSE NULL
   END AS titulo_texto,


   /** PUNTO **/
   CASE      
    /*WHEN LN_indicadores.clave_indicador LIKE '%CUMPL%' THEN iif(PENDIENTES_VERIFICAR.ingresados > 0, 1, 0)*/
    WHEN LN_indicadores.clave_indicador = 'ULTIMA_NOVEDAD' THEN iif(LN_contraparte_indicadores.valor_fecha IS NOT NULL, iif(DATEDIFF(DAY, CONVERT(DATE,LN_contraparte_indicadores.valor_fecha) , CONVERT(DATE,GETDATE())) <= 7, 1, 0), 0)
    WHEN LN_indicadores.clave_indicador = 'SCORE_BAL' THEN ISNULL(LN_contraparte_indicadores.balance_preexiste, 0)
    ELSE 0 
   END AS punto,
   LN_contraparte_indicadores.valor_memo,
   LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_numerico, CONVERT(VARCHAR,LN_contraparte_indicadores.valor_fecha,103) AS valor_fecha,

   ISNULL(CONVERT(varchar(16),LN_contraparte_indicadores.modified,21), CONVERT(varchar(16),LN_contraparte_indicadores.created,21)) as ultima_actualizacion,
   DATEDIFF(DAY, CONVERT(DATE, ISNULL(LN_contraparte_indicadores.modified, LN_contraparte_indicadores.created)), CONVERT(DATE,GETDATE())) AS dias_ultima_actualizacion

   FROM LN_contrapartes 
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN LN_contraparte_indicadores
    ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
     AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
   INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
   /*
    INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
    INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
    AND LN_productos.producto = LN_familia_productos.producto)
    */

   WHERE LN_contrapartes.contraparte = @p_contraparte
   --AND LN_cliente_productos.activo = 1
   --AND LN_contraparte_familias.activo = 1
   --AND LN_familia_productos.activo = 1
   AND LN_contraparte_indicadores.visible = 1
   --AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   AND LN_gestiones.desde <= @fecha_gestion AND LN_gestiones.hasta >= @fecha_gestion
   AND LN_indicadores.clave_indicador = @p_clave_indicador

   ORDER BY LN_cliente_productos.orden_producto

 END




 /**************************************************/

 IF (@accion = 'GRAFICO_INFORME_COMERCIAL' or @accion = 'GRAFICO_SCORE_BALANCE' or @accion = 'GRAFICO_SCORE_FINAL' or @accion = 'GRAFICO_SCORE_DOCUMENTOS' or @accion = 'GRAFICO_DEPENDENCIA_ECONOMICA') BEGIN
  DROP TABLE #rangos
 END



    

END

GO

Depends On

74

Used By

No items found