dbo.LN_dashboard_cliente_A_BORRAR

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

12
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

SQL Script

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

/*
CAMBIADO
exec ln_dashboard_cliente 'PRODUCTOS_GRILLA',1750864950

*/

-- 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_MS 'score_final_contraparte', null, null, null, 31351
exec LN_dashboard_cliente_MS 'score_documentos', null, null, null, '843'

exec LN_dashboard_cliente_a_borrar 'grafico_score_documentos', 5546348, null,null, null
exec LN_dashboard_cliente 'grafico_score_final', 5546348, null,null, null


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


exec LN_dashboard_cliente 'VALORES_GRILLA_EXT', 2254875, 'AR',null, 95

exec LN_dashboard_cliente 'GRAFICO_DEPENDENCIA_ECONOMICA', 5546348, null,null, null

*/


CREATE OR ALTER PROCEDURE dbo.LN_dashboard_cliente_A_BORRAR 
 -- 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      
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here

 IF (@accion = '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 desde, hasta, color_fondo, texto
       from LN_cliente_nivel
       where cliente = @p_cliente
       and (desde >=0 or hasta >= 0)) 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 desde, hasta, color_fondo, texto
     from ln_cliente_nivel
     where cliente = @p_cliente
     and (desde >=0 or hasta >= 0)
     order by 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, 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

   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_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

   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, 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

   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
   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.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


 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, 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

   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

   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, 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
   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
   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.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


 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,
    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) 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) = 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,
    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,
    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) 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.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,ROUND(LN_contraparte_indicadores.valor_numerico,0)))
            when LN_indicadores.tipo_dato = 'F' then format(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') 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 = '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') 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 = '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 color_fondo from ln_cliente_nivel where cliente = @p_cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
    ELSE null
  END AS color_personalizado, 

  CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
               (select color_texto from ln_cliente_nivel where cliente = @p_cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
    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:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @p_cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
   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 = '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') 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') 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 = '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 texto_largo from ln_cliente_nivel where cliente = @p_cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
     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_contraparte_indicadores ON LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
  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)

  INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte

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

  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

 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') 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 = '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') 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') 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 = '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 color_fondo from ln_cliente_nivel where cliente = @p_cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
    ELSE null
  END AS color_personalizado, 

  CASE
       WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
               (select color_texto from ln_cliente_nivel where cliente = @p_cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
    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:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @p_cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
   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 = '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') 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') 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 = '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 texto from ln_cliente_nivel where cliente = @p_cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
     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
   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

  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)
    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_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 >= 81 and LN_contraparte_indicadores.valor_numerico <= 100 then 'R1'
      when LN_contraparte_indicadores.valor_numerico >= 61 and LN_contraparte_indicadores.valor_numerico < 81 then 'R2'
      when LN_contraparte_indicadores.valor_numerico >= 41 and LN_contraparte_indicadores.valor_numerico < 61 then 'R3'
      when LN_contraparte_indicadores.valor_numerico >= 21 and LN_contraparte_indicadores.valor_numerico < 41 then 'R4'
      when LN_contraparte_indicadores.valor_numerico >= 0 and LN_contraparte_indicadores.valor_numerico < 21 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_BAL'
    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) 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)
    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_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)

    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_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 ('R3','Positivo','A72B2A',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 'Positivo'
   END AS etiqueta,
   CASE
     when rango = 'R1' then '63b68c'
     when rango = 'R2' then 'FFB81C'
     when rango = 'R3' 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 = 'P' then 'R3'
     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 = 'FIDECHECK'
    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) 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)

    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_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)

    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_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') 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') 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') 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 color_fondo from ln_cliente_nivel where cliente = @cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
    ELSE null
   END AS color_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
       (select color_texto from ln_cliente_nivel where cliente = @cliente 
      and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
     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:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @cliente 
      and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
    ELSE NULL
   END AS svg_data_personalizado,

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

   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
     (select titulo from ln_cliente_nivel where cliente = @cliente 
      and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
   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_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_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') 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') 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') 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') 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 color_fondo from ln_cliente_nivel where cliente = @cliente 
     and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
    ELSE null
   END AS color_personalizado, 

   CASE
     WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
       (select color_texto from ln_cliente_nivel where cliente = @cliente 
      and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
     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:#'+color_fondo+';" /></svg>' from ln_cliente_nivel where cliente = @cliente 
      and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
    ELSE NULL
   END AS svg_data_personalizado,

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

   CASE
    WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
     (select titulo from ln_cliente_nivel where cliente = @cliente 
      and desde <= LN_contraparte_indicadores.valor_numerico and hasta > LN_contraparte_indicadores.valor_numerico)
   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_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') 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') 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') 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


  SELECT @carga_inicial = ISNULL(carga_inicial, 0),
    @limite_carga_inicial = limite_carga_inicial
  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.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 
            
   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 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.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%'
    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
    /*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

   /*Actualizo Score final*/

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

   declare @score_txt varchar(100) = null
   set @score_txt = (select texto 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)
    VALUES
    (@p_contraparte, @gest, @isf, GETDATE(), @sf, @score_txt)

   else

    UPDATE LN_contraparte_indicadores SET 
     valor_numerico = round(@sf,0),
     valor_texto = @score_txt, 
     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, 
    @documento varchar(100) = ''

  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
   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 = '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
       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
       ) 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       
      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
     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

   SELECT @gest = LN_gestiones.gestion
   FROM LN_gestiones
   WHERE contraparte = @p_contraparte
   AND desde <= getdate() AND hasta >= hasta
                     
   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_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   WHERE LN_indicadores.clave_indicador = 'SCORE_IC'
   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) begin

   DECLARE @inr int = null
            
            IF(@gest = NULL)
            BEGIN
                SELECT  gestion
                FROM LN_gestiones
                WHERE contraparte = @p_contraparte
                AND desde <= GETDATE()
                AND hasta >= GETDATE()
            END
            /*
             SELECT @gest = LN_gestiones.gestion
             FROM LN_gestiones
             WHERE contraparte = @p_contraparte
             AND desde <= getdate() AND hasta >= hasta
             */
             
   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,
      modified = GETDATE()
     WHERE indicador = @inr
     AND contraparte = @p_contraparte
     AND gestion = @gest
   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 = '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 = '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()

  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)

      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)

     else

      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


 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)

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

    else

     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

 /* 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 (@producto_alertas is not null AND @gest > 0) begin

   declare @indic_score_alertas int = null

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

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

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

    declare @score_alertas   decimal(10,2) = null

    EXEC LN_score_alertas @familia, @p_contraparte, @score_alertas 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

   end


  end

 END


 /* Fin Producto Alertas BCRA */

 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



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

    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'


     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) ) begin

      SELECT @monto_compras = SUM(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)
     

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

       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') 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'
   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') BEGIN

  IF (@p_contraparte > 0) BEGIN

   DECLARE @ilcdv int = null


   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 = 'LC_DIAS_VENTAS'


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

    /* obtengo el valor del indicador LC_VENTAS, 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 = 'LC_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

       SET @dias_deuda_ventas = @total_cendeu * 365 / (@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
      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


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

 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

Used By

No items found