dbo.LN_dashboard_cliente

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

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

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

-- select * from ln_contraparte_indicadores where contraparte = 156348
-- exec LN_dashboard_cliente 'SCORE_DOSSIER', null,null, null,156348,'SCORE_DOSSIER',91

--SELECT * FROM LN_INDICADORES WHERE INDICADOR IN (select INDICADOR from ln_contraparte_indicadores where contraparte = 156348)

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>

/*
CAMBIADOf
exec ln_dashboard_cliente 'PRODUCTOS_GRILLA_2',5546348,null,null,514
exec ln_dashboard_cliente 'PRODUCTOS_GRILLA_21',5546348,null,null,514

exec ln_dashboard_cliente 'PRODUCTOS_GRILLA_1',5546348,null,null,514
exec ln_dashboard_cliente 'PRODUCTOS_GRILLA',5546348,null,null,514


select * from ln_contraparte_familias where contraparte = 107
select * from ln_familia_productos where familia = 357 and producto = 2105

*/

-- Description: <Description,,>
-- =============================================
/*
31280 AprobacionFiscales
exec LN_dashboard_cliente 'VALORES_GRILLA', '2046807993', null, null, null, null, null, null, null, null, null, 1,null,0,null,73
exec LN_dashboard_cliente 'VALORES_GRILLA_NEW', '2046807993', null, null, null, null, null, null, null, null, null, 1,null,0,null,73

exec LN_dashboard_cliente 'cumplimiento_documentos','5546348','AR','29','219'
exec LN_dashboard_cliente  'petroleros', null, null, null, 162919  
select * from ln_contraparte_indicadores where contraparte = 162919 and indicador = 360

select * from ln_contrapartes_queue where contraparte = 162919 and processed = 0
EXEC LN_contrapartes_queue_ 'indicadores', NULL,  162919
select * from ln_indicadores where indicador = 368
exec LN_dashboard_cliente  'CONTINGENCIA_LABORAL', null, null, null, 145488
select * from ln_contraparte_indicadores where indicador in (344,345,346,347)
select * from ln_indicadores where producto = 2067
exec LN_dashboard_cliente 'score_final_contraparte', null, null, null, '183324'
EXEC LN_dashboard_cliente 'indicadores_contraparte_valor_numerico', null, null, null,144823,'SCORE_rr'
EXEC LN_dashboard_cliente 'fechaotrossindicatos', null, null, null,145354
EXEC LN_dashboard_cliente 'control_etico', null, null, null,95
select * from ln_contrapartes where contraparte = 224
select * from lN_gestiones where contraparte = 224

SELECT * FROM LN_CONTRAPARTE_INDICADORES WHERE CONTRAPARTE = 145550 AND INDICADOR = 361

EXEC LN_contrapartes_queue_ 'indicadores', NULL,   69586


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

SELECT * FROM LN_CONTRAPARTES WHERE CONTRAPARTE=145361

exec LN_dashboard_cliente_AB 'monto_deuda_total_previsional', '2046807993', null,null, 145361

exec LN_dashboard_cliente 'CUMPLIMIENTO_ANUAL', null, null,null,ar 145455
select * from ln_contraparte_indicadores where contraparte = 145455

exec LN_dashboard_cliente 'indicadores_imperium', null, null,null, 159680
select * from ln_contraparte_indicadores where contraparte = 156348
select * from ln_contraparte_indicadores where contraparte = 67336
select * from ln_contraparte_familias where familia = 348 where cliente = 2046807993
select * from clientes where cliente = 2046807993
select * from ln_familias where cliente = 2046807993

exec LN_dashboard_cliente 'inicio', 159680, null,null, null
select * from ln_contrapartes where contraparte = 159680


select periodo as per, estado_doc, led_seccion, * from led_docs where contratista_1 = 1308 and estado_doc != 'V' order by periodo
-- exec LN_dashboard_cliente 'AprobacionFiscales', null, null, null, 31280 157499

EXEC LN_dashboard_cliente 'EBIT_VENTAS', null, null, null, 31834

*/

--RENTABILIDAD_OPERATIVA
/*
exec LN_dashboard_cliente 'CONTRAPARTES_SERVICIO', 5546348, null, null, null,null,null,null,null,null,null,null,null,0,null,47
*/

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

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

 @p_clave_indicador       varchar(50) = NULL,

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

 /* Estos tres parámetros para asentar indicadores varios en tabla LN_contraparte_indicadores */
 @p_valor_numerico       float = null,
 @p_valor_texto        varchar(100) = null,
 @p_valor_memo        text = null,
 @p_user_id         int = null,
 @p_visible         tinyint = 1,
 @p_valor_fecha        date = null, 
 @p_es_subcontratista bit = 0, 
 @p_fecha_gestion varchar(10) = null,
 @p_servicio int = null, 
 @p_periodo int = null, 
 @p_gestion int = null 

/* WITH RECOMPILE */


AS
BEGIN

 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 declare @fecha_gestion date 
 if (isnull(@p_fecha_gestion,'') = '') 
 begin
  set @fecha_gestion = getdate()
 end 
 else
 begin 
  set @fecha_gestion = convert(date, @p_fecha_gestion) 
 end 


 declare @pais_contraparte varchar(2)
 declare @excluir_informe_comercial int

    -- Insert statements for procedure here



 /*
  select * from balances_contables
 
 
 select * from LN_indicadores where nombre_indicador like '%oper%'
 
 select * from ln_cliente_indicadores where cliente = 2046807993 and indicador in (71,72,114,144,204,314)
 
 select * from ln_contraparte_indicadores where indicador = 314 and valor_numerico=-9.2
 
 select * from ln_contraparte_indicadores where indicador = 314 and contraparte=31834 
 EXEC LN_dashboard_cliente_AGB 'EBIT_VENTAS', null, null, null, 31834
 select * from ln_contraparte_indicadores where indicador = 314 and contraparte=31834 
 
  */

  declare @cliente int = null 


IF (@accion = 'DATOS_EXTRA') BEGIN

  DECLARE @iindic int = 0,@iprod int = 0,@idTipoServ int = 0, @idSector int = 0,  @vTXTSector varchar(50) = null,  @vTXTTipoServ varchar(50) = null
  declare @gestEX int = 0
  declare @vTXTCuit varchar(50) = null
  declare @gestion_desde date = null 
  declare @ventas table (ventas float) 
  declare @vVentas float = null 


  SELECT @cliente = ln_contrapartes.cliente, @iindic = LN_indicadores.indicador,@iprod= LN_indicadores.producto,@gestEX=LN_GESTIONES.gestion,@idTipoServ=LN_contrapartes.idTipoServicioPriv,
  @idSector=LN_contrapartes.idSectorPriv,@vTXTSector=idSector.nombre_corto,@vTXTTipoServ=idTipoServ.nombre_corto,@vTXTCuit=padrones.identificacion, @gestion_desde = ln_gestiones.desde
  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_GESTIONES on LN_gestiones.contraparte = LN_contraparte_familias.contraparte
  INNER JOIN LN_contrapartes on LN_contraparte_familias.contraparte=LN_contrapartes.contraparte
  INNER JOIN padrones on padrones.id_padron = LN_contrapartes.id_padron
  left JOIN LN_cliente_datos_privados idSector on (idSector.cliente=LN_CONTRAPARTES.cliente AND LN_contrapartes.idSectorPriv = idSector.idReg 
  AND idSector.servicio_contratado=LN_CONTRAPARTES.servicio_contratado /*and LN_cliente_datos_privados.agrupacion='SECTOR' AND LN_cliente_datos_privados.visible=1*/)
  
  left JOIN LN_cliente_datos_privados idTipoServ on (idTipoServ.cliente=LN_CONTRAPARTES.cliente AND LN_contrapartes.idTipoServicioPriv = idTipoServ.idReg 
  AND idTipoServ.servicio_contratado=LN_CONTRAPARTES.servicio_contratado /*and LN_cliente_datos_privados.agrupacion='SECTOR' AND LN_cliente_datos_privados.visible=1*/)

  WHERE LN_indicadores.clave_indicador = @p_clave_indicador
  AND LN_contraparte_familias.contraparte = @p_contraparte-- 182929
  AND LN_GESTIONES.desde <= getdate() AND LN_GESTIONES.hasta >= getdate()
  and LN_GESTIONES.vigente=1
  and LN_contrapartes.activo=1
  
-- SELECT @gest,@iprod,@iindic,@p_clave_indicador,@idTipoServ,@idSector,@vTXTSector,@vTXTTipoServ

  IF (@gestEX >0 and @iprod > 0 and @iindic > 0 AND @p_clave_indicador = 'EMPLEADOS_EVENTUALES')
  BEGIN
    declare @empleados_eventuales bit 
    exec [EMPLEADOS_EVENTUALES_] @p_contraparte, @empleados_eventuales output 
    if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @iindic
         AND contraparte = @p_contraparte
         AND gestion = @gestEX
         and visible = 1) 
    begin
     INSERT INTO LN_contraparte_indicadores (contraparte, gestion, indicador, created, valor_numerico)
     VALUES (@p_contraparte, @gestEX, @iindic, GETDATE(), @empleados_eventuales)
    end
    else
    begin
     UPDATE LN_contraparte_indicadores 
     SET valor_numerico = @empleados_eventuales,
      modified = GETDATE()
     WHERE indicador = @iindic
     AND contraparte = @p_contraparte
     AND gestion = @gestEX
     and visible = 1
    end 

  END




  IF (@gestEX >0 and @iprod > 0 and @iindic > 0 AND @p_clave_indicador = 'CUIT')
  BEGIN
    BEGIN TRY
     INSERT INTO LN_contraparte_indicadores (contraparte, gestion, indicador, created, valor_texto,valor_memo)
     VALUES (@p_contraparte, @gestEX, @iindic, GETDATE(), @vTXTCuit,@vTXTCuit)
    END TRY
    BEGIN CATCH
     UPDATE LN_contraparte_indicadores SET 
      valor_texto = @vTXTCuit,valor_memo=@vTXTCuit,
      modified = GETDATE()
     WHERE indicador = @iindic
     AND contraparte = @p_contraparte
     AND gestion = @gestEX
     and visible = 1

    END CATCH

  END

  IF (@gestEX >0 and @iprod > 0 and @iindic > 0 AND @p_clave_indicador = 'EXTRA_VENTAS')
  BEGIN
    BEGIN TRY
     insert into @ventas 
     exec LN_dashboard_cliente 'indicadores_contraparte_valor_numerico2', @cliente, null, null, @p_contraparte, 'BAL_VENTAS',
     NULL,
     null,
     null,
     null,
     null,
     1,
     null, 
     0,
     @gestion_desde
    
     set  @vVentas = (select ventas from @ventas )
    
     INSERT INTO LN_contraparte_indicadores (contraparte, gestion, indicador, created, valor_numerico)
     VALUES (@p_contraparte, @gestEX, @iindic, GETDATE(), @vVentas)
    END TRY
    BEGIN CATCH
     UPDATE LN_contraparte_indicadores SET 
      valor_numerico = @vVentas,
      modified = GETDATE()
     WHERE indicador = @iindic
     AND contraparte = @p_contraparte
     AND gestion = @gestEX
     and visible = 1

    END CATCH

  END




  
  IF (@gestEX >0 and @iprod > 0 and @iindic > 0 AND @p_clave_indicador = 'SECTOR_SERVICIO')
  BEGIN
    BEGIN TRY
     INSERT INTO LN_contraparte_indicadores (contraparte, gestion, indicador, created, valor_texto,valor_memo)
     VALUES (@p_contraparte, @gestEX, @iindic, GETDATE(), @vTXTSector,@vTXTSector)
    END TRY
    BEGIN CATCH
     UPDATE LN_contraparte_indicadores SET 
      valor_texto = @vTXTSector,valor_memo=@vTXTSector,
      modified = GETDATE()
     WHERE indicador = @iindic
     AND contraparte = @p_contraparte
     AND gestion = @gestEX
     and visible = 1

    END CATCH

  END
  IF (@gestEX >0 and @iprod > 0 and @iindic > 0 AND @p_clave_indicador = 'TIPO_SERVICIO')
  BEGIN
    BEGIN TRY
     INSERT INTO LN_contraparte_indicadores (contraparte, gestion, indicador, created, valor_texto,valor_memo)
     VALUES (@p_contraparte, @gestEX, @iindic, GETDATE(), @vTXTTipoServ,@vTXTTipoServ)
    END TRY
    BEGIN CATCH
     UPDATE LN_contraparte_indicadores SET 
      valor_texto = @vTXTTipoServ,valor_memo = @vTXTTipoServ,
      modified = GETDATE()
     WHERE indicador = @iindic
     AND contraparte = @p_contraparte
     AND gestion = @gestEX
     and visible = 1

    END CATCH

  END

END

 IF (@accion = 'EBIT_VENTAS') 
  BEGIN

   DECLARE @id_gestion int
   SELECT @id_gestion = LN_gestiones.gestion
   FROM LN_gestiones
   WHERE contraparte = @p_contraparte
   AND desde <= getdate() AND hasta >= getdate()
   DECLARE @indEbitVentas int = 314

   DECLARE @id_Max_balance int,@p_EBITVENTAS float
   DECLARE @margenOP float,@ebitVTAS float
   DECLARE @fCreated datetime,@fModified datetime

   SELECT TOP 1 @id_Max_balance = id_balance,@margenOP=convert(decimal(12,2),iif (isnull(res_vtanet,0) !=0, (isnull(ganancia,0)+isnull(res_otrosegr,0)-isnull(res_otrosing,0)) /isnull(res_vtanet,0)*100 , 0)),
   @ebitVTAS = (((isnull(res_vtanet,0) - isnull(res_cosmer,0)) - isnull(amortiza,0) - isnull(res_gascom,0) - isnull(res_gasadm,0)) / isnull(res_vtanet,0))*100,
   @fCreated = balances_contables.created,@fModified = balances_contables.modified 
   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

   /*select @id_Max_balance as id_Max_balance,@margenOP as margenOP,@ebitVTAS as ebitVTAS,@fCreated as fCreated,@fModified as fModified*/

   if (@fCreated > convert(datetime,'2022-09-14 00:00:00') or @fModified > convert(datetime,'2022-09-14 00:00:00'))
   begin
    set @p_EBITVENTAS = @ebitVTAS
   end
   else
   /*if (@fCreated < convert(datetime,'2022-07-20 23:59:59') or @fModified < convert(datetime,'2022-07-20 23:59:59'))*/
   begin
    set @p_EBITVENTAS = @margenOP
   end

/*

select * from ln_contraparte_indicadores where indicador = 314 and contraparte=31834 
EXEC LN_dashboard_cliente_AGB 'EBIT_VENTAS', null, null, null, 31834
select * from ln_contraparte_indicadores where indicador = 314 and contraparte=31834 

*/


   /*select @p_EBITVENTAS as p_EBITVENTAS*/


   -- 31834
   --iif((created> '2022-07-20' or modified>'2022-07-20'),
/* select convert(decimal(12,2),iif (isnull(res_vtanet,0) !=0, (isnull(ganancia,0)+isnull(res_otrosegr,0)-isnull(res_otrosing,0)) /isnull(res_vtanet,0)*100 , 0)) as margen_operativo,
(((isnull(res_vtanet,0) - isnull(res_cosmer,0)) - isnull(amortiza,0) - isnull(res_gascom,0) - isnull(res_gasadm,0)) / isnull(res_vtanet,0))*100 as ebit_ventas,
created,modified
from balances_contables where cuit = '30686735342'
and id_balance = 382104
*/
 
   
   if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @indEbitVentas
         AND contraparte = @p_contraparte
         AND gestion = @id_gestion
         and visible = 1) begin

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, valor_numerico)
      VALUES
      (@p_contraparte, @id_gestion, @indEbitVentas, GETDATE(), @p_EBITVENTAS)

     end else begin

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

      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @p_EBITVENTAS,
       modified = GETDATE()
      WHERE indicador = @indEbitVentas
      AND contraparte = @p_contraparte
      AND gestion = @id_gestion
      and visible = 1 
     end

  END



 IF (@accion = 'DSH22_CONTADOR_monto_deuda_previsional') 
 BEGIN
  select FORMAT(sum(ln_contraparte_indicadores.valor_numerico), 'C0', 'es-AR') as valor_deuda 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
  where ln_contrapartes.cliente = @p_cliente and ln_contrapartes.servicio_contratado=@p_servicio and LN_contrapartes.activo=1
  and getdate() between ln_gestiones.desde and ln_gestiones.hasta and ln_gestiones.vigente=1
  and ln_contraparte_indicadores.indicador = 349

  
 END


 IF (@accion = 'DSH22_CONTADOR_contingencia_laboral') 
 BEGIN
  select FORMAT(sum(ln_contraparte_indicadores.valor_numerico), 'C0', 'es-AR') as valor_contingencia 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
  where ln_contrapartes.cliente = @p_cliente and ln_contrapartes.servicio_contratado=@p_servicio and LN_contrapartes.activo=1
  and getdate() between ln_gestiones.desde and ln_gestiones.hasta and ln_gestiones.vigente=1
  and ln_contraparte_indicadores.indicador = 345
 END




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


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


  IF (@accion = 'GRAFICO_DEPENDENCIA_ECONOMICA') BEGIN

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

  END 


  ELSE BEGIN

   IF (@accion = 'GRAFICO_SCORE_FINAL') BEGIN

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

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

     declare config cursor for

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

     open config

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

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

     close config
     deallocate config


    END ELSE BEGIN

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

    END

   END ELSE BEGIN   

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

   END

  END


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


 END


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



 DECLARE @contrap int, @gest int = NULL, @indic int, @pond tinyint, @valor float, @prod int, @exc int = null, @tipo_exc varchar(1) = NULL
 DECLARE @doc_id bigint, @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
   LEFT OUTER 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
    LEFT OUTER 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
     LEFT OUTER 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
     LEFT OUTER 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_FAMILIAS_GESTIONES') BEGIN

  if (@p_contraparte is null)

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

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

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_familias.visible = 1
   AND ISNULL(LN_familias.subfamilia, 0) = 0
   AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

   GROUP BY LN_productos.producto,  LN_cliente_productos.etiqueta_personalizada,
    LN_productos.nombre_producto, LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name, LN_cliente_productos.orden_producto,
    LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
    LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
    LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
    LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso
   ORDER BY LN_cliente_productos.orden_producto

  else begin

   --- TENEMOS que diferenciar el producto informe comercial de argentina del del exterior
   --- a partir del hecho que ahora las familias no tienen contrapartes de un único país 
   --- y por suscripción de productos la famillia debería tener ambos informes comerciales asociados.
   --- 14/07/2020 no los excluimos mas
   --- 05/04/2021 volvemos a excluir el informe del exterior o de argentina, de acuerdo al pais de la contraparte (no importa la flia, que tenga ambos productos)

   select @pais_contraparte = identificadores.country_code 
   from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   where LN_contrapartes.contraparte = @p_contraparte
   
   if (@pais_contraparte = 'AR')
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code IS NULL
   else
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code = 'AR'
    
   
   if (@p_user_id is null) begin

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

    FROM LN_productos 
    INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
    --INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
    inner join (select distinct contraparte, familia from LN_contraparte_indicadores where contraparte = @p_contraparte) fam on fam.contraparte = @p_contraparte 
    INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto and LN_familia_productos.familia = fam.familia

    --INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = fam.familia --LN_contraparte_familias.familia
    LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
    WHERE LN_cliente_productos.cliente = @p_cliente
    AND LN_productos.visible = 1
    AND LN_cliente_productos.activo = 1
    AND LN_familia_productos.activo = 1
    --AND LN_contraparte_familias.contraparte = @p_contraparte
    --AND LN_contraparte_familias.activo = 1
    AND LN_productos.producto NOT IN (@excluir_informe_comercial)
       AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

    GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
     LN_productos.nombre_producto, LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
    ORDER BY LN_cliente_productos.orden_producto


   end else

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

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

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     --INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto

     inner join (select distinct contraparte, familia from LN_contraparte_indicadores where contraparte = @p_contraparte) fam on fam.contraparte = @p_contraparte 
     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto and LN_familia_productos.familia = fam.familia



     --INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = fam.familia --LN_contraparte_familias.familia
     LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     --AND LN_contraparte_familias.contraparte = @p_contraparte
     --AND LN_contraparte_familias.activo = 1
     AND LN_productos.producto NOT IN (@excluir_informe_comercial)
           AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
     ORDER BY LN_cliente_productos.orden_producto

    else

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

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     --INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto

     inner join (select distinct contraparte, familia from LN_contraparte_indicadores where contraparte = @p_contraparte) fam on fam.contraparte = @p_contraparte 
     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto and LN_familia_productos.familia = fam.familia


     --INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = fam.familia --LN_contraparte_familias.familia
     LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code

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

     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     --AND LN_contraparte_familias.contraparte = @p_contraparte
     --AND LN_contraparte_familias.activo = 1
     AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     --AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas, productos_usuario.producto
     ORDER BY LN_cliente_productos.orden_producto





   end

  end


 END


 IF (@accion = 'PRODUCTOS_GRILLA_1') BEGIN

  if (@p_contraparte is null)

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

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

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_familias.visible = 1
   AND ISNULL(LN_familias.subfamilia, 0) = 0
   AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

   GROUP BY LN_productos.producto,  LN_cliente_productos.etiqueta_personalizada,
    LN_productos.nombre_producto, LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name, LN_cliente_productos.orden_producto,
    LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
    LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
    LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
    LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso
   ORDER BY LN_cliente_productos.orden_producto

  else begin

   --- TENEMOS que diferenciar el producto informe comercial de argentina del del exterior
   --- a partir del hecho que ahora las familias no tienen contrapartes de un único país 
   --- y por suscripción de productos la famillia debería tener ambos informes comerciales asociados.
   --- 14/07/2020 no los excluimos mas
   --- 05/04/2021 volvemos a excluir el informe del exterior o de argentina, de acuerdo al pais de la contraparte (no importa la flia, que tenga ambos productos)

   select @pais_contraparte = identificadores.country_code 
   from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   where LN_contrapartes.contraparte = @p_contraparte
   
   if (@pais_contraparte = 'AR')
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code IS NULL
   else
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code = 'AR'
    
   
   if (@p_user_id is null) begin

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

    FROM LN_productos 
    INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
    LEFT JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
    LEFT 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 ((isnull(LN_familia_productos.activo,0) = 1 AND LN_contraparte_familias.contraparte = @p_contraparte 
          AND isnull(LN_contraparte_familias.activo,0) = 1) 
          or LN_productos.producto = 2105)
    AND LN_productos.producto NOT IN (@excluir_informe_comercial)
       AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

    GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
     LN_productos.nombre_producto, LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
    ORDER BY LN_cliente_productos.orden_producto


   end else

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

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

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     LEFT JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
     LEFT 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 ((isnull(LN_familia_productos.activo,0) = 1 AND LN_contraparte_familias.contraparte = @p_contraparte 
          AND isnull(LN_contraparte_familias.activo,0) = 1) 
          or LN_productos.producto = 2105)
     AND LN_productos.producto NOT IN (@excluir_informe_comercial)
           AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
     ORDER BY LN_cliente_productos.orden_producto

    else

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

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

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

     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND ((isnull(LN_familia_productos.activo,0) = 1 AND LN_contraparte_familias.contraparte = @p_contraparte 
          AND isnull(LN_contraparte_familias.activo,0) = 1) 
          or LN_productos.producto = 2105)
     AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     --AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas, productos_usuario.producto
     ORDER BY LN_cliente_productos.orden_producto





   end

  end


 END



 IF (@accion = 'PRODUCTOS_GRILLA') BEGIN

  if (@p_contraparte is null)

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

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

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
   INNER JOIN LN_familias ON (LN_familia_productos.familia = LN_familias.familia
          AND LN_cliente_productos.cliente = LN_familias.cliente)
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_familias.visible = 1
   AND ISNULL(LN_familias.subfamilia, 0) = 0
   AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

   GROUP BY LN_productos.producto,  LN_cliente_productos.etiqueta_personalizada,
    LN_productos.nombre_producto, LN_cliente_productos.activo,
    LN_cliente_productos.visibilidad_default, LN_productos.visible,
    country.country_code, country.country_name, LN_cliente_productos.orden_producto,
    LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
    LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
    LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
    LN_productos.documentos, LN_productos.subcontratistas, LN_productos.control_ingreso
   ORDER BY LN_cliente_productos.orden_producto

  else begin

   --- TENEMOS que diferenciar el producto informe comercial de argentina del del exterior
   --- a partir del hecho que ahora las familias no tienen contrapartes de un único país 
   --- y por suscripción de productos la famillia debería tener ambos informes comerciales asociados.
   --- 14/07/2020 no los excluimos mas
   --- 05/04/2021 volvemos a excluir el informe del exterior o de argentina, de acuerdo al pais de la contraparte (no importa la flia, que tenga ambos productos)

   select @pais_contraparte = identificadores.country_code 
   from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   where LN_contrapartes.contraparte = @p_contraparte
   
   if (@pais_contraparte = 'AR')
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code IS NULL
   else
    select @excluir_informe_comercial = producto 
    from LN_productos where producto_id = 'informeComercial'
    and country_code = 'AR'
    
   
   if (@p_user_id is null) begin

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

    FROM LN_productos 
    INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
    INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
    INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
    LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
    WHERE LN_cliente_productos.cliente = @p_cliente
    AND LN_productos.visible = 1
    AND LN_cliente_productos.activo = 1
    AND LN_familia_productos.activo = 1
    AND LN_contraparte_familias.contraparte = @p_contraparte
    AND LN_contraparte_familias.activo = 1
    AND LN_productos.producto NOT IN (@excluir_informe_comercial)
       AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

    GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
     LN_productos.nombre_producto, LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
    ORDER BY LN_cliente_productos.orden_producto


   end else

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

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

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
     INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
     LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     AND LN_contraparte_familias.contraparte = @p_contraparte
     AND LN_contraparte_familias.activo = 1
     AND LN_productos.producto NOT IN (@excluir_informe_comercial)
           AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas
     ORDER BY LN_cliente_productos.orden_producto

    else

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

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

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

     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     AND LN_contraparte_familias.contraparte = @p_contraparte
     AND LN_contraparte_familias.activo = 1
     AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     --AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_cliente_productos.orden_producto, LN_productos.documentos, LN_productos.subcontratistas, productos_usuario.producto
     ORDER BY LN_cliente_productos.orden_producto





   end

  end


 END


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

   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
   AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

   ORDER BY LN_cliente_productos.producto
 END



 IF (@accion = 'PRODUCTOS_GRILLA_2_FAMILIAS_GESTIONES') BEGIN
 

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

  if (@p_contraparte is null)

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

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_productos.visible_brief = 1
   AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

   ORDER BY LN_cliente_productos.producto

  else begin

   --- TENEMOS que diferenciar el producto informe comercial de argentina del del exterior
   --- a partir del hecho que ahora las familias no tienen contrapartes de un único país 
   --- y por suscripción de productos la famillia debería tener ambos informes comerciales asociados.
   --- 14/07/2020 no los excluimos mas 
   --- 05/04/2021 volvemos a excluir el informe del exterior o de argentina, de acuerdo al pais de la contraparte (no importa la flia, que tenga ambos productos)

   select @pais_contraparte = identificadores.country_code 
   from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   where LN_contrapartes.contraparte = @p_contraparte

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

   if (@p_user_id IS NULL) begin

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

    FROM LN_productos 
    INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto

    inner join (select distinct contraparte, familia from LN_contraparte_indicadores where contraparte = @p_contraparte) fam on fam.contraparte = @p_contraparte 

    INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto and LN_familia_productos.familia = fam.familia


    --INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
    LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
    WHERE LN_cliente_productos.cliente = @p_cliente
    AND LN_productos.visible = 1
    AND LN_cliente_productos.activo = 1
    AND LN_familia_productos.activo = 1
    --AND LN_contraparte_familias.contraparte = @p_contraparte
    --AND LN_contraparte_familias.activo = 1
    AND LN_productos.visible_brief = 1
    AND LN_productos.producto NOT IN (@excluir_informe_comercial)
    AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

    GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
     LN_productos.nombre_producto, LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_productos.documentos, LN_productos.subcontratistas
    ORDER BY LN_productos.producto

   end else

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

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

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto

     inner join (select distinct contraparte, familia from LN_contraparte_indicadores where contraparte = @p_contraparte) fam on fam.contraparte = @p_contraparte 

     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto and LN_familia_productos.familia = fam.familia


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


    else

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

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     inner join (select distinct contraparte, familia from LN_contraparte_indicadores where contraparte = @p_contraparte) fam on fam.contraparte = @p_contraparte 
     INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto and LN_familia_productos.familia = fam.familia

     --INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
     LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code

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

     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     --AND LN_contraparte_familias.contraparte = @p_contraparte
     --AND LN_contraparte_familias.activo = 1
     AND LN_productos.visible_brief = 1
     --AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_productos.documentos, LN_productos.subcontratistas, productos_usuario.producto
     ORDER BY LN_productos.producto


   end

  end

 END


 IF (@accion = 'PRODUCTOS_GRILLA_21') BEGIN
 

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

  if (@p_contraparte is null)

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

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_productos.visible_brief = 1
   AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

   ORDER BY LN_cliente_productos.producto

  else begin

   --- TENEMOS que diferenciar el producto informe comercial de argentina del del exterior
   --- a partir del hecho que ahora las familias no tienen contrapartes de un único país 
   --- y por suscripción de productos la famillia debería tener ambos informes comerciales asociados.
   --- 14/07/2020 no los excluimos mas 
   --- 05/04/2021 volvemos a excluir el informe del exterior o de argentina, de acuerdo al pais de la contraparte (no importa la flia, que tenga ambos productos)

   select @pais_contraparte = identificadores.country_code 
   from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   where LN_contrapartes.contraparte = @p_contraparte

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

   if (@p_user_id IS NULL) begin

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

    FROM LN_productos 
    INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
    LEFT JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
    LEFT 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 ((isnull(LN_familia_productos.activo,0) = 1 AND LN_contraparte_familias.contraparte = @p_contraparte 
          AND isnull(LN_contraparte_familias.activo,0) = 1) 
          or LN_productos.producto = 2105)


    AND LN_productos.visible_brief = 1
    AND LN_productos.producto NOT IN (@excluir_informe_comercial)
    AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

    GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
     LN_productos.nombre_producto, LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_productos.documentos, LN_productos.subcontratistas
    ORDER BY LN_productos.producto

   end else

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

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

     FROM LN_productos 
     INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
     LEFT JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
     LEFT 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 ((isnull(LN_familia_productos.activo,0) = 1 AND LN_contraparte_familias.contraparte = @p_contraparte 
          AND isnull(LN_contraparte_familias.activo,0) = 1) 
          or LN_productos.producto = 2105)
     AND LN_productos.visible_brief = 1
     AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))
     AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_productos.documentos, LN_productos.subcontratistas
     ORDER BY LN_productos.producto


    else

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

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

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

     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     AND ((isnull(LN_familia_productos.activo,0) = 1 AND LN_contraparte_familias.contraparte = @p_contraparte 
          AND isnull(LN_contraparte_familias.activo,0) = 1) 
          or LN_productos.producto = 2105)
     --AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_productos.documentos, LN_productos.subcontratistas, productos_usuario.producto
     ORDER BY LN_productos.producto


   end

  end

 END



 IF (@accion = 'PRODUCTOS_GRILLA_2') BEGIN
 

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

  if (@p_contraparte is null)

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

   FROM LN_productos 
   INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
   LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_productos.visible_brief = 1
   AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

   ORDER BY LN_cliente_productos.producto

  else begin

   --- TENEMOS que diferenciar el producto informe comercial de argentina del del exterior
   --- a partir del hecho que ahora las familias no tienen contrapartes de un único país 
   --- y por suscripción de productos la famillia debería tener ambos informes comerciales asociados.
   --- 14/07/2020 no los excluimos mas 
   --- 05/04/2021 volvemos a excluir el informe del exterior o de argentina, de acuerdo al pais de la contraparte (no importa la flia, que tenga ambos productos)

   select @pais_contraparte = identificadores.country_code 
   from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   where LN_contrapartes.contraparte = @p_contraparte

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

   if (@p_user_id IS NULL) begin

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

    FROM LN_productos 
    INNER JOIN LN_cliente_productos ON LN_productos.producto = LN_cliente_productos.producto
    INNER JOIN LN_familia_productos ON LN_cliente_productos.producto = LN_familia_productos.producto
    INNER JOIN LN_contraparte_familias ON LN_familia_productos.familia = LN_contraparte_familias.familia
    LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
    WHERE LN_cliente_productos.cliente = @p_cliente
    AND LN_productos.visible = 1
    AND LN_cliente_productos.activo = 1
    AND LN_familia_productos.activo = 1
    AND LN_contraparte_familias.contraparte = @p_contraparte
    AND LN_contraparte_familias.activo = 1
    AND LN_productos.visible_brief = 1
    AND LN_productos.producto NOT IN (@excluir_informe_comercial)
    AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

    GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
     LN_productos.nombre_producto, LN_cliente_productos.activo,
     LN_cliente_productos.visibilidad_default, LN_productos.visible,
     country.country_code, country.country_name,
     LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
     LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
     LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
     LN_productos.documentos, LN_productos.subcontratistas
    ORDER BY LN_productos.producto

   end else

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

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

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


    else

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

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

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

     WHERE LN_cliente_productos.cliente = @p_cliente
     AND LN_productos.visible = 1
     AND LN_cliente_productos.activo = 1
     AND LN_familia_productos.activo = 1
     AND LN_contraparte_familias.contraparte = @p_contraparte
     AND LN_contraparte_familias.activo = 1
     AND LN_productos.visible_brief = 1
     --AND LN_productos.producto NOT IN (@excluir_informe_comercial)
     AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))

     GROUP BY LN_productos.producto, LN_cliente_productos.etiqueta_personalizada,
      LN_productos.nombre_producto, LN_cliente_productos.activo,
      LN_cliente_productos.visibilidad_default, LN_productos.visible,
      country.country_code, country.country_name,
      LN_productos.etiqueta, LN_productos.class_icon, LN_productos.visible_brief,
      LN_productos.producto_id, LN_productos.balance, LN_productos.balance_carga,
      LN_productos.balance_score, LN_productos.balance_analisis, LN_productos.balance_valoracion,
      LN_productos.documentos, LN_productos.subcontratistas, productos_usuario.producto
     ORDER BY LN_productos.producto


   end

  end

 END


 IF (@accion = 'PRODUCTOS_INDICADORES') BEGIN

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

   

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


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

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

       

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

   INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto

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


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


   WHERE LN_cliente_productos.cliente = @p_cliente
   AND LN_productos.visible = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_familias.visible = 1
   AND ISNULL(LN_familias.subfamilia, 0) = @p_es_subcontratista
   AND LN_indicadores.visible = 1
/* AND LN_productos.servicio_contratado in (0,@p_servicio) */
   AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))
   /* 20/01/2023: que el producto esta en las familias del servicio que estamos consultando */
   AND (@p_servicio is null or ln_familias.servicio_contratado in (0,@p_servicio))


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

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


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

 END

 IF (@accion = 'PRODUCTOS_INDICADORES_SUBCONTRATITAS') BEGIN


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

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

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

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

   INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto

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


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


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

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

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


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

 END
 

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

     else NULL
    end


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

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


     when LN_contraparte_indicadores.valor_numerico = 2 then

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


     when LN_contraparte_indicadores.valor_numerico = 3 then

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


     when LN_contraparte_indicadores.valor_numerico = 4 then

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


     when LN_contraparte_indicadores.valor_numerico = 5 then

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


     when LN_contraparte_indicadores.valor_numerico = 6 then

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


     else NULL
    end

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

   ELSE NULL
  END AS svg_data,


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

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

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

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

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

      
  END AS textcaption,
  
  /** TEXTOS **/
  CASE
   WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
   WHEN LN_indicadores.clave_indicador = 'SCORE_VRM' THEN
     (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_VRM')
     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,LN_contraparte_indicadores.periodo as PHIST


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

  INNER JOIN LN_contraparte_indicadores_historico LN_contraparte_indicadores  ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
               and LN_contraparte_indicadores.gestion = LN_gestiones.gestion) 
  INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
  INNER JOIN LN_productos on LN_productos.producto = ln_indicadores.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)


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

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

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


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

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

  and (@p_contraparte = LN_contrapartes.contraparte or 
      (@p_contraparte is null and LN_contrapartes.subcontratista = @p_es_subcontratista))
  /*31/01/2022*/
  AND 
  (( @p_servicio is not null and LN_contrapartes.servicio_contratado = @p_servicio)
  or 
  ( @p_servicio is null and LN_contrapartes.servicio_contratado is not null))
  /**/
  AND LN_contraparte_familias.activo = 1
  AND LN_familia_productos.activo = 1
  and LN_contrapaRte_indicadores.visible = 1
  and LN_contraparte_indicadores.periodo=/*dbo.PeriodoMenosDos()*/isnull(@p_periodo,dbo.PeriodoMenosDos()) 
  and LN_productos.servicio_contratado in (0,ln_contrapartes.servicio_contratado)
  

 END
/*
LN_dashboard_cliente 'VALORES_GRILLA_NEW', 2046807993, null, null, null, null, null, null, null, null, null, 1,null,0,null,73
exec LN_indicadores_cliente_servicio 'INDICADORES_CLIENTE_SERVICIO', 2046807993, 73
*/


 DECLARE @indicadores_cliente table (indicador int, clave_indicador varchar(100), familia int) 


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

  insert into @indicadores_cliente
    --exec LN_indicadores_cliente_servicio 'INDICADORES_CLIENTE_SERVICIO', @p_cliente, @p_servicio
    SELECT DATA.indicador, DATA.clave_indicador, DATA.familia 
  FROM (
  SELECT distinct LN_productos.producto_id, LN_productos.producto,
     ln_indicadores.indicador, LN_indicadores.nombre_indicador, LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.clave_indicador, 
     show_panel = 
      CASE 
      WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
      ELSE 1 END, 
      ln_familias.familia
   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 LN_familias.uso_familia != 'I'
   AND ISNULL(LN_familias.subfamilia, 0) = 0
   AND LN_indicadores.visible = 1
   and LN_productos.servicio_contratado in (0, @p_servicio)    
   ) DATA

  WHERE DATA.show_panel = 1





    SELECT distinct DATA.servicio_contratado, 
     DATA.contraparte ,
     DATA.indicador,
     DATA.clave_indicador, 
     iif(DATA.sin_datos is not null, DATA.sin_datos, DATA.valor) as valor, 
      DATA.valor_sin_formato, 
     DATA.color,
     DATA.textcolor,
     DATA.color_personalizado,
     DATA.textcolor_personalizado,
     DATA.svg_data_personalizado,
     DATA.svg_data,
     DATA.textcaption,
     DATA.texto, 
     DATA.punto,
     DATA.valor_memo

   from 
   (

        SELECT LN_Contrapartes.servicio_contratado, LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
                LN_indicadores.clave_indicador,
    iif((LN_contraparte_indicadores.valor_numerico is null and 
      LN_contraparte_indicadores.valor_texto is null and 
      LN_contraparte_indicadores.valor_fecha is null and 
      LN_contraparte_indicadores.valor_memo is null),'SIN DATOS',NULL) as sin_datos,

        case        
            when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
            when LN_indicadores.tipo_dato = 'M' then convert(varchar(max),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, '############0.00'),
                                                        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 CONVERT(varchar(max),LN_contraparte_indicadores.valor_memo)
            when LN_indicadores.tipo_dato = 'I' then convert(varchar,convert(bigint,LN_contraparte_indicadores.valor_numerico))
            when LN_indicadores.tipo_dato = 'F' then convert(varchar,convert(bigint,LN_contraparte_indicadores.valor_numerico))
            when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
            when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
            else null
        end as valor_sin_formato,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

     else NULL
    end


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

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


     when LN_contraparte_indicadores.valor_numerico = 2 then

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


     when LN_contraparte_indicadores.valor_numerico = 3 then

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


     when LN_contraparte_indicadores.valor_numerico = 4 then

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


     when LN_contraparte_indicadores.valor_numerico = 5 then

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


     when LN_contraparte_indicadores.valor_numerico = 6 then

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


     else NULL
    end

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

   ELSE NULL
  END AS svg_data,


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

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

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

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

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

      
  END AS textcaption,
  
  /** TEXTOS **/
  CASE
   WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
        (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_FINAL')
   WHEN LN_indicadores.clave_indicador = 'SCORE_VRM' THEN
     (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_indicadores.clave_indicador = 'SCORE_VRM')
     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,

  convert(varchar(max),ln_contraparte_indicadores.valor_memo) as valor_memo


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

  INNER JOIN LN_contraparte_indicadores ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
               and LN_contraparte_indicadores.gestion = LN_gestiones.gestion) 
  INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
        inner join ln_productos on ln_productos.producto = ln_indicadores.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)


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

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

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


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

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

  and (@p_contraparte = LN_contrapartes.contraparte or 
      (@p_contraparte is null and LN_contrapartes.subcontratista = @p_es_subcontratista))
/*31/01/2022*/
AND 
(( @p_servicio is not null and LN_contrapartes.servicio_contratado = @p_servicio)
or 
( @p_servicio is null and LN_contrapartes.servicio_contratado is not null))
/**/


  AND LN_contraparte_familias.activo = 1
  AND LN_familia_productos.activo = 1
  and LN_contrapaRte_indicadores.visible = 1
        and ln_productos.servicio_contratado in (0,ln_contrapartes.servicio_contratado)




  union  

 
  SELECT distinct ln_contrapartes.servicio_contratado  AS 'servicio_contratado', 
     ln_contrapartes.contraparte, inc.indicador,
     LN_indicadores.clave_indicador,    
     null as sin_datos, 
     iif (inf.indicador is null, 'NO APLICA','SIN CALCULAR') AS valor, 
     iif (inf.indicador is null, 'NO APLICA','SIN CALCULAR') AS valor_sin_formato, 

     NULL AS color,
     NULL AS textcolor,
     NULL AS color_personalizado,
     NULL AS textcolor_personalizado,
     NULL AS svg_data_personalizado,
     NULL AS svg_data,
     NULL AS textcaption,
     NULL AS texto, 
     NULL AS punto,
     NULL AS valor_memo

  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 identificadores ON padrones.identificador = identificadores.identificador
   left outer JOIN country ON country.country_code = UPPER(ln_contrapartes.country_code)
   left outer JOIN country country_ser ON country_ser.country_code = UPPER(ln_contrapartes.pais_servicio)
   INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte

   INNER JOIN (select distinct indicador, clave_indicador from @indicadores_cliente) inc on (1=1)
   LEFT JOIN  @indicadores_cliente inf on (inc.clave_indicador = inf.clave_indicador and inf.familia = ln_contraparte_familias.familia)

   INNER JOIN LN_indicadores ON LN_indicadores.indicador = inc.indicador
   INNER JOIN LN_productos ON LN_indicadores.producto = LN_productos.producto
   INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   WHERE LN_contrapartes.cliente = @p_cliente
   AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE() and ln_gestiones.vigente = 1
   AND LN_indicadores.visible = 1
   AND LN_contrapartes.activo = 1  
   AND LN_contrapartes.subcontratista = 0
   AND LN_familias.visible = 1
   AND LN_contraparte_familias.activo = 1
   AND LN_cliente_productos.activo = 1   
   AND ISNULL(LN_contrapartes.servicio_contratado, 47) = @p_servicio 
   
   AND not exists (select * from LN_contraparte_indicadores ci 
         inner join LN_indicadores lni on lni.indicador = ci.indicador
                    where ci.contraparte = ln_contrapartes.contraparte 
          and ci.gestion = LN_gestiones.gestion 
          and ci.visible = 1 
          --and ci.indicador = inc.indicador 
          and lni.clave_indicador = inc.clave_indicador -- Lo hacemos por clave_indicador para el caso de SCORE_IC (que hay de argentina y exterior)
          --and (ci.valor_numerico is not null or ci.valor_texto is not null or ci.valor_fecha is not null or ci.valor_memo is not null) 
          )
   
   --order by padrones.nombre_persona 
   ) DATA
   


 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.servicio_contratado, LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
                LN_indicadores.clave_indicador,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

     else NULL
    end


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

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


     when LN_contraparte_indicadores.valor_numerico = 2 then

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


     when LN_contraparte_indicadores.valor_numerico = 3 then

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


     when LN_contraparte_indicadores.valor_numerico = 4 then

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


     when LN_contraparte_indicadores.valor_numerico = 5 then

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


     when LN_contraparte_indicadores.valor_numerico = 6 then

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


     else NULL
    end

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

   ELSE NULL
  END AS svg_data,


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

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

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

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

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

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

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

  ln_contraparte_indicadores.valor_memo


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

  INNER JOIN LN_contraparte_indicadores ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
               and LN_contraparte_indicadores.gestion = LN_gestiones.gestion) 
  INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
  inner join ln_productos on ln_productos.producto = ln_indicadores.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)


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

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

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


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

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

  and (@p_contraparte = LN_contrapartes.contraparte or 
      (@p_contraparte is null and LN_contrapartes.subcontratista = @p_es_subcontratista))
/*31/01/2022*/
AND 
(( @p_servicio is not null and LN_contrapartes.servicio_contratado = @p_servicio)
or 
( @p_servicio is null and LN_contrapartes.servicio_contratado is not null))
/**/


  AND LN_contraparte_familias.activo = 1
  AND LN_familia_productos.activo = 1
  and LN_contrapaRte_indicadores.visible = 1
  and ln_productos.servicio_contratado in (0,ln_contrapartes.servicio_contratado)


 END


 
   



 IF (@accion = 'VALORES_GRILLA_EXT') BEGIN

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

     else NULL
    end


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

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


     when LN_contraparte_indicadores.valor_numerico = 2 then

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


     when LN_contraparte_indicadores.valor_numerico = 3 then

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


     when LN_contraparte_indicadores.valor_numerico = 4 then

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


     when LN_contraparte_indicadores.valor_numerico = 5 then

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


     when LN_contraparte_indicadores.valor_numerico = 6 then

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


     else NULL
    end

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

   ELSE NULL
  END AS svg_data,


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

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

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

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

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

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



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


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

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

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

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

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


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


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

  AND LN_contraparte_familias.activo = 1
  AND LN_familia_productos.activo = 1
  AND LN_cliente_productos.activo = 1
  and LN_contraparte_indicadores.visible = 1


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


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

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

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

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

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

 IF (@accion = 'GRAFICO_SCORE_BALANCE') BEGIN

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

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

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

 END

 IF (@accion = 'GRAFICO_SCORE_FINAL') BEGIN


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

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

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

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



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

 END

 IF (@accion = 'GRAFICO_SCORE_DOCUMENTOS') BEGIN

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

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

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

 IF (@accion = 'GRAFICO_FIDECHECK') BEGIN

  create table #rangospep (
   rango     varchar(2),
   etiqueta    varchar(20),
   color     varchar(6),
   total     int)
  
  insert into #rangospep VALUES ('R4','Positivo','A72B2A',0)
  insert into #rangospep VALUES ('R3','PEP','FF5C1C',0)
  insert into #rangospep VALUES ('R2','Relacionado','FFB81C',0)           
  insert into #rangospep VALUES ('R1','Suj.Obl/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 'Suj.Obl/Negativo'
     when rango = 'R2' then 'Relacionado'
     when rango = 'R3' then 'PEP'
     when rango = 'R4' then 'Positivo'

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

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

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

  DROP TABLE #rangospep

 END

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

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

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

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

 END


    IF (@accion = 'GRAFICO_DEPENDENCIA_ECONOMICA') BEGIN

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

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

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

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


 IF (@accion = 'GRAFICO_CONTROL_INGRESO') BEGIN

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


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

  OPEN Excepciones

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

  CLOSE Excepciones
  DEALLOCATE Excepciones


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

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

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

   WHERE LN_indicadores.clave_indicador = 'HOMOLOG'
   and LN_gestiones.desde <= getdate() and LN_gestiones.hasta >= getdate()
   and ln_contraparte_indicadores.gestion = LN_gestiones.gestion 
    and ln_contraparte_indicadores.visible = 1
   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_valor_numerico') 
 BEGIN
  IF (@p_clave_indicador IS NOT NULL)
   SELECT CONVERT(VARCHAR, ROUND(LN_contraparte_indicadores.valor_numerico,0)) as valor
   FROM LN_contrapartes 
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN LN_contraparte_indicadores
    ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
     AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
   INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto

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

   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND LN_cliente_productos.activo = 1
   AND LN_contraparte_familias.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= getdate() and LN_gestiones.vigente = 1
   and ln_contraparte_indicadores.visible = 1
   AND LN_indicadores.clave_indicador = @p_clave_indicador
   --AND LN_indicadores.visible = 1
   
 END 

 IF (@accion = 'indicadores_contraparte_valor_numerico2') 
 BEGIN
  IF (@p_clave_indicador IS NOT NULL)
   SELECT LN_contraparte_indicadores.valor_numerico  as valor
   FROM LN_contrapartes 
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN LN_contraparte_indicadores
    ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
     AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion)
   INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
   INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
            AND LN_indicadores.producto = LN_cliente_productos.producto)
   INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto

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

   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND LN_cliente_productos.activo = 1
   AND LN_contraparte_familias.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= getdate() and LN_gestiones.vigente = 1
   and ln_contraparte_indicadores.visible = 1
   AND LN_indicadores.clave_indicador = @p_clave_indicador
   AND LN_indicadores.visible = 1
   
 END 

 IF (@accion = 'producto_contraparte') BEGIN
  IF (@p_clave_indicador IS NOT NULL) BEGIN -- En realidad es el producto_id -- 1 -> tiene el producto, 0 -> no lo tiene
   select LN_productos.producto
   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_productos ON LN_productos.producto = LN_familia_productos.producto
   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND LN_productos.producto_id = @p_clave_indicador
  END
  
 END



 IF (@accion = 'indicadores_contraparte') BEGIN

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

      else NULL
     end

    ELSE NULL
   END AS svg_data,


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

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

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

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

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

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

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

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


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


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

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

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

   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND LN_cliente_productos.activo = 1
   AND LN_contraparte_familias.activo = 1
   AND LN_familia_productos.activo = 1
   --AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   AND LN_gestiones.desde <= @fecha_gestion AND LN_gestiones.hasta >= @fecha_gestion
   and ln_contraparte_indicadores.visible = 1
   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,LN_contraparte_familias.familia

   ORDER BY LN_cliente_productos.orden_producto

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

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

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

   /** COLOR **/
   CASE

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

      else NULL
     end


    ELSE NULL
   END AS svg_data,


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

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

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

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


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

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

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

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

     ELSE null
   END AS textcolor_personalizado, 

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

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

    ELSE NULL
   END AS svg_data_personalizado,

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

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

   ELSE NULL
   END AS texto,

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

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

   ELSE NULL
   END AS titulo_texto,


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

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

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

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

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

 END


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

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

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

  /** COLOR **/
  CASE

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

     else NULL
    end

   ELSE NULL
  END AS svg_data,


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

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


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

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

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

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

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

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

 END

 IF (@accion = 'score_final_contraparte') BEGIN

  /* Calcula y actualiza score final */

  /* 30/07/2021: Verifica carga inicial */
  EXEC LN_validar_carga_inicial @p_contraparte, @inicial OUTPUT
  /**/
  DECLARE @sf decimal(4,1)=null, @isf int = NULL,
    @cantidad_scores int = 0,
    @suma_scores int = 0,
    @suma_pond int = 0,
    @tiene_docs tinyint = 0, 
    @modalidad_pago varchar(10) = null 


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

  FROM LN_contrapartes
  WHERE contraparte = @p_contraparte


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


  if (@p_gestion is null)
  begin
   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()
  end
  else 
  begin
   set @gest = @p_gestion 
   SELECT  @isf = 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_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
  end

  

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

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


  -- agregado para que tenga en cuenta solo documentos con aplica = 1
  INNER JOIN LN_set_tipo_doc on LN_familias.set_doc = LN_set_tipo_doc.set_doc
  inner join ln_docs on (ln_docs.contraparte = @p_contraparte 
                        and ln_docs.aplica = 1 and ln_docs.estado_doc != 'X' 
         and ln_docs.gestion = @gest
                        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

  --select @gest gestion, @isf indicador

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

  declare @calcular_sf bit = 1

  SELECT @cliente = cliente
        FROM LN_contrapartes
       WHERE contraparte = @p_contraparte
  
  /* Si el cliente tiene el score -120 - SIN CALCULAR (Documentos Pendientes) */
  if (exists (select * from LN_cliente_nivel
               where cliente = @cliente
                       and desde = -120
        and indicador = @isf) 
     and @carga_inicial = 1 and @tiene_docs > 0)

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

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

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

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

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


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


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


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

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

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

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

    LEFT OUTER JOIN (select LN_productos.producto, count(*) as total_docs
        from LN_familia_productos
        INNER JOIN LN_productos 
        on LN_familia_productos.producto = LN_productos.producto 
        INNER JOIN LN_contraparte_familias
        on LN_familia_productos.familia = LN_contraparte_familias.familia
        INNER JOIN LN_familias
        on LN_contraparte_familias.familia = LN_familias.familia
        INNER JOIN LN_set_tipo_doc 
        on LN_familias.set_doc = LN_set_tipo_doc.set_doc
        -- esto se agrego para que tome los documentos que aplica = 1 
        inner join ln_docs on 
        (ln_docs.contraparte = @p_contraparte and ln_docs.aplica = 1 
        and ln_docs.estado_doc != 'X' and ln_docs.tipo_doc = ln_set_tipo_doc.tipo_doc)
        --
        WHERE LN_contraparte_familias.contraparte = @p_contraparte and ln_docs.gestion = @gest 
        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_docs.gestion = @gest 
        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_docs.gestion = @gest 
        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_docs.gestion = @gest 
        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_docs.gestion = @gest 
        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_contraparte_indicadores.visible = 1
    AND LN_familia_productos.activo = 1
    --AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
    AND LN_gestiones.gestion = @gest 
    AND LN_cliente_productos.ponderacion > 0
    /*AND LN_cliente_productos.activo > 0*/
    AND LN_indicadores.clave_indicador LIKE 'SCORE%'

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

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

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

   
   OPEN Scores

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


          


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

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

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

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

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

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


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

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

   CLOSE Scores

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

     OPEN Scores

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

     WHILE @@FETCH_STATUS = 0 BEGIN


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

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


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

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

     CLOSE Scores

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

   DEALLOCATE Scores
  END /* cacular_sf = 1 */

   /*Actualizo Score final*/

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

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



   select @score_txt = texto, @score_color = color_fondo 
    from ln_cliente_nivel where cliente = @cliente 
     and indicador = @isf
     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
       and visible = 1)

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

   else

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


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



  END /* gest not null , indicador not null */

  
 
 END
 declare @doc_no_verificados_killer bit = 0
 declare @doc_no_ingresado_killer bit = 0
 declare @doc_rechazado_killer bit = 0
 DECLARE @sd decimal(5,2) = 0, 
          @isd int = NULL, 
    @suma_pesos_set decimal(10,2) = null,  
    @peso_doc decimal(5,2), 
    @suma_docs decimal(10,2) = null,
    @detalle varchar(max) = null, 
    @detallep varchar(max) = null, 
    @documento varchar(100) = '', 
    @etiqueta_doc varchar(100) = null
 declare @anio varchar(4)

 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

  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 

  
  if (@p_gestion is null)
  begin
   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
  end 
  else
  begin 
   set @gest = @p_gestion
   DECLARE Familias CURSOR FOR
    select top 1 familia from ln_contraparte_indicadores where gestion = @p_gestion and familia is not null order by created desc 
  end

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

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

   AND LN_familia_productos.familia = @familia
   --AND LN_familia_productos.familia = 357


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

    SET @cantidad = null


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

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

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

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

     SET @suma_pesos_set = @suma_pesos_set + @peso_doc

     SET @cantidad = @cantidad + 1

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

        SET @has_sin_calcular = 1 
        SET @has_no_verificados = 1 

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

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

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

    CLOSE Documentos
    DEALLOCATE Documentos

   

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

     DECLARE @guardar_score     tinyint = 1

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

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

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

     /*****/
     IF (@guardar_score = 0) BEGIN
      if exists (select *
          FROM LN_contraparte_indicadores
          WHERE indicador = @isd
          AND contraparte = @p_contraparte
          AND gestion = @gest and visible = 1)
       --DELETE FROM LN_contraparte_indicadores 
       update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
       WHERE indicador = @isd
         AND contraparte = @p_contraparte
         AND gestion = @gest
         and visible = 1
      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
          and visible = 1)

       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
       and visible = 1
      /* 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
           and visible = 1
 
       if (@detalle is not null) 
       begin
        if not exists (select * From ln_score_detalle_killer
           where contraparte = @p_contraparte 
             and gestion = @gest 
             and indicador = @isd
             and detalle_killer = isnull(@detalle,'')
             and visible = 1)

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

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

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

   END



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


 IF (@accion = 'cumplimiento_documentos') BEGIN

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

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

  if (@p_gestion is null)
  begin
   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

   DECLARE Documentos CURSOR FOR

    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

  end
  else 
  begin 
   set @gest = @p_gestion
   set @familia = null 
   set @familia = (select top 1 familia from ln_contraparte_indicadores where gestion = @p_gestion and familia is not null order by created desc)
   if (@familia is null) set @familia = (select top 1 familia from ln_contraparte_familias where contraparte = @p_contraparte and ln_contraparte_familias.activo = 1 order by created desc)
   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
   WHERE LN_indicadores.clave_indicador = 'CUMPL_DOC'
   AND LN_familia_productos.familia = @familia
   
   DECLARE Documentos CURSOR FOR

    SELECT LN_docs.doc_id, LN_docs.tipo_doc, LN_docs.estado_doc, LN_docs.doc_version
    FROM LN_docs
    INNER JOIN LN_familias ON LN_familias.familia = @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


  end 


  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 

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

    -- modificado el 2/10/2024: el % de cumplimiento, se calcula siempre
    -- (Natalia y Marita, porque los clientes no veian cuanto lleva cargado, mientras están en periodo de carga)
    -- y fue reclamado por un cliente
    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)
    -- 02/10/2024: El % de cumplimiento, se calcula siempre
    SET @guardar_cump = 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 or @cliente = 7500717) 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 
         and visible = 1)

      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
      and visible = 1

    END

   

  END

 END
 
 DECLARE @cd2 decimal(4,1)=0, @icd2 int = NULL, @p_set_doc_padre int = null, @p_set_doc int = null 
 /* Sub set documentos */
 IF (@accion = 'CUMPL_SUBSET') BEGIN

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

  SELECT @icd2 = 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_SUBSET'
  AND LN_contraparte_familias.contraparte = @p_contraparte
 
  select @p_set_doc_padre = set_doc 
  from ln_familias 
  where familia = (select familia from ln_contraparte_familias where contraparte = @p_contraparte) 
  if (@p_set_doc_padre is not null)
   select top 1 @p_set_doc = set_doc_hijo from LN_set_sub_docs where set_doc_padre = @p_set_doc_padre order by prioridad_set

  if (@gest IS NOT NULL and @p_set_doc is not null 
      and exists (select * 
        from LN_CONTRAPARTE_SUB_SET 
       where contraparte = @p_contraparte 
         and gestion = @gest and set_doc = @p_set_doc and activo = 1))
  begin 
   SET @cantidad = 0
   SET @cumplidos = 0

   DECLARE Documentos2 CURSOR FOR
              
   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_set_tipo_doc ON (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
   AND LN_set_tipo_doc.set_doc = @p_set_doc

   OPEN Documentos2

   FETCH NEXT FROM Documentos2 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 Documentos2 INTO @doc_id, @tipo_doc, @estado_doc, @vers
   END

   CLOSE Documentos2
   DEALLOCATE Documentos2

   if (@cantidad = 0) 
   begin 
    set @cantidad = null
    set @cumplidos = null
   end 

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

   select @p_contraparte AS contraparte, @icd2 AS indicador, ROUND(@cd2,0) AS score

   if not exists (select indicador
       FROM LN_contraparte_indicadores
       WHERE indicador = @icd2
       AND contraparte = @p_contraparte
       AND gestion = @gest 
       and visible = 1)
    INSERT INTO LN_contraparte_indicadores
    (contraparte, gestion, indicador, created, valor_numerico)
    VALUES
    (@p_contraparte, @gest, @icd2, GETDATE(), ROUND(@cd2,0))
   else
    UPDATE LN_contraparte_indicadores SET 
     valor_numerico = round(@cd2,0),
     modified = GETDATE()
    WHERE indicador = @icd2
    AND contraparte = @p_contraparte
    AND gestion = @gest
    and visible = 1
  END
 END


 IF (@accion = 'SCORE_SUBSET') 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
  
  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 

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

  select @p_set_doc_padre = set_doc 
  from ln_familias 
  where familia = (select familia from ln_contraparte_familias where contraparte = @p_contraparte) 
  if (@p_set_doc_padre is not null)
   select top 1 @p_set_doc = set_doc_hijo from LN_set_sub_docs where set_doc_padre = @p_set_doc_padre order by prioridad_set

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

  IF @gest IS NOT NULL and @isd IS NOT NULL and @p_set_doc is not null BEGIN

    SET @cantidad = null

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

    WHERE LN_set_tipo_doc.set_doc = @p_set_doc
                AND LN_set_tipo_doc.activo = 1
    AND DOCS.estado_doc IS NOT NULL
    
       
    OPEN Documentos3

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

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

     SET @suma_pesos_set = @suma_pesos_set + @peso_doc

     SET @cantidad = @cantidad + 1

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

        SET @has_sin_calcular = 1 
        SET @has_no_verificados = 1 

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

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

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

    CLOSE Documentos3
    DEALLOCATE Documentos3
      
      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
          and visible = 1)

       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
       and visible = 1
      /* 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
           and visible = 1
 
       if (@detalle is not null) 
       begin
        if not exists (select * From ln_score_detalle_killer
           where contraparte = @p_contraparte 
             and gestion = @gest 
             and indicador = @isd
             and detalle_killer = isnull(@detalle,'')
             and visible = 1)

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

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

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

  
  
 END

 /**/


 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
         and visible = 1) 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
      and visible = 1 
     end

    /*end*/
                

   END

  end


 END


 IF (@accion = 'score_comercial') BEGIN

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

  IF (@p_score >= 0) begin

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

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

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

   else

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


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

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

     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
     and visible = 1 
   



   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
        and visible = 1)

     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   
     and visible = 1 

   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
       and visible = 1)

    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              
    and visible = 1 
  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
             */

--SELECT @gest AS GST
            
            IF(@gest IS 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

-- exec LN_dashboard_cliente 'SCORE_DOSSIER', null,null, null,156348,'SCORE_DOSSIER',91
-- SELECT * FROM LN_GESTIONES WHERE CONTRAPARTE=156348

-- SELECT @gest AS GST,@isdd AS isdd

   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
        and visible = 1 )

     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
     and visible = 1 

   END

  END
  
 END

 IF (@accion = 'nivel_riesgo') BEGIN

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

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

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

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

    else

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

 END

 IF (@accion = 'score_nivel_riesgo') BEGIN

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

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

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

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

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

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

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

       else

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


 IF (@accion = 'dependencia_economica') BEGIN

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

   DECLARE @ide int = null
            IF(@gest is NULL)
            begin
                SELECT @gest = LN_gestiones.gestion
                FROM LN_gestiones
                WHERE contraparte = @p_contraparte
                AND desde <= getdate() AND hasta >= getdate() and vigente = 1
            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

   select @gest gestion, @ide indicador, @p_valor_numerico valor 
   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
        and visible = 1)

     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
     and visible = 1

   END
   

  end
  
 END

 
 --455
 DECLARE @INDFECHAFIDECHECK SMALLINT=0

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

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

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= getdate()
  and vigente = 1
              
  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 gestion = @gest
    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 gestion = @gest
    and fidecheck = 'E') > 0 begin

    SET @vf = 'E'
   
   end ELSE 

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

    SET @vf = 'S'

   end ELSE 

    IF (select count(*) from LN_demo_fidecheck
     where contraparte = @p_contraparte and visible = 1  and gestion = @gest
     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 gestion = @gest
      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
       and visible = 1)
    BEGIN
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, created, valor_texto)
     VALUES
     (@p_contraparte, @gest, @ifc, GETDATE(), @vf)
    END
   else
    BEGIN
     UPDATE LN_contraparte_indicadores SET 
      valor_texto = @vf,
      modified = GETDATE()
     WHERE indicador = @ifc
     AND contraparte = @p_contraparte
     AND gestion = @gest
     and visible = 1
    END

/* FIDECHECK_FECHA: Vemos si la contraparte esta suscripta al indicador Fecha_Fidecheck */
   SELECT @INDFECHAFIDECHECK = LN_indicadores.indicador
   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_FECHA' and ln_indicadores.producto = @prod
   AND LN_contraparte_familias.contraparte = @p_contraparte 

   IF @INDFECHAFIDECHECK IS NOT NULL BEGIN
    select @vFechaFidecheck = iif(max(created)>max(modified),max(created),max(modified)) from LN_demo_fidecheck where contraparte = @p_contraparte and visible = 1 and gestion = @gest

    /* GRABAMOS INDICADOR DE FECHA DE FIDECHECK */
    if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @INDFECHAFIDECHECK
        AND contraparte = @p_contraparte
        AND gestion = @gest
        and visible = 1)
     BEGIN
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, valor_fecha,familia)
      VALUES
      (@p_contraparte, @gest, @INDFECHAFIDECHECK, GETDATE(), @vFechaFidecheck,@familia)
     END

    else
     BEGIN
      UPDATE LN_contraparte_indicadores SET 
       valor_fecha = @vFechaFidecheck,
       familia=@familia,
       modified = GETDATE()
      WHERE indicador = @INDFECHAFIDECHECK
      AND contraparte = @p_contraparte
      AND gestion = @gest
      and visible = 1
     END
   END

/* COMPLIANCE: Vemos si la contraparte esta inscripto en Compliance de IV */
   declare @IND_COMPLIANCE int = null 
   declare @compliance char(1) = null 

   SELECT @IND_COMPLIANCE = LN_indicadores.indicador
   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 = 'COMPLIANCE' and LN_indicadores.producto = 2039
   AND LN_contraparte_familias.contraparte = @p_contraparte

   IF @IND_COMPLIANCE IS NOT NULL BEGIN

    set @compliance = CASE @vf 
         WHEN 'P' THEN 'N'
         WHEN 'N' THEN 'P'
         WHEN 'S' THEN 'P'
         WHEN 'E' THEN 'O'
         WHEN 'R' THEN 'O'
         else NULL 
         END 

    /* GRABAMOS INDICADOR DE COMPLIANCE DE IV */
    if not exists (select indicador
        FROM LN_contraparte_indicadores
        WHERE indicador = @IND_COMPLIANCE
        AND contraparte = @p_contraparte
        AND gestion = @gest
        and visible = 1)
     BEGIN
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, valor_texto, familia)
      VALUES
      (@p_contraparte, @gest, @IND_COMPLIANCE, GETDATE(), @compliance, @familia)
     END

    else
     BEGIN
      UPDATE LN_contraparte_indicadores SET 
       valor_texto = @compliance,
       familia=@familia,
       modified = GETDATE()
      WHERE indicador = @IND_COMPLIANCE
      AND contraparte = @p_contraparte
      AND gestion = @gest
      and visible = 1
     END
   END

  END

 END

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

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

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

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

    if (@score_fide is not null) begin

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

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


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_fide,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_fide
      and visible = 1
    end
    else 
    begin
     if  exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_fide and visible = 1)
     --delete from LN_contraparte_indicadores
     update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
            where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @indic_fide
        and visible = 1

    end 

   end


  

 END

 IF (@accion = 'sujeto_obligado') BEGIN
  DECLARE @iso int = null, @vso bit = null

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= getdate()
  and vigente = 1 
              
  SELECT @iso = 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 = 'sujeto_obligado'
  AND LN_contraparte_familias.contraparte = @p_contraparte                    

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

   IF (select count(*) from LN_demo_fidecheck
    where contraparte = @p_contraparte and visible = 1 and gestion = @gest 
    and fidecheck = 'S') > 0
    SET @vso = '1'
   else
    SET @vso = '0'

   if not exists (select indicador
       FROM LN_contraparte_indicadores
       WHERE indicador = @iso
       AND contraparte = @p_contraparte
       AND gestion = @gest
       and visible = 1)

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

   else

    UPDATE LN_contraparte_indicadores SET 
     valor_numerico = @vso,
     modified = GETDATE()
    WHERE indicador = @iso
    AND contraparte = @p_contraparte
    AND gestion = @gest
    and visible = 1

  END

 END



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

   declare @indic_prensa int = null
   select @indic_prensa = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = 'SCORE_PRENSA'

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

    declare @score_prensa decimal(10,2) = null
    EXEC LN_score_prensa @p_contraparte, @score_prensa OUTPUT

    if (@score_prensa 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_prensa
         and visible = 1)

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


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_prensa,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_prensa
      and visible = 1
    end
    else 
    begin
     if  exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and indicador = @indic_prensa and visible = 1)
     --delete from LN_contraparte_indicadores
     update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
            where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @indic_prensa
        and visible = 1

    end 

   end


  

 END




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



  DECLARE @iun int = null

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

  DECLARE @valor_fecha smalldatetime = NULL

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

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


   if (@valor_fecha IS NOT NULL) begin

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

     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
     and visible = 1
   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
      and visible = 1)

    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
    and visible = 1


   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_contraparte_indicadores.visible = 1
    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 top 1 @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()
     order by LN_excepciones.vigencia desc 


     if not exists (select valor_numerico
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ihom
        and visible = 1) 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
       and visible = 1
      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
        and visible = 1
       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
        and visible = 1
    


     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
     update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
     WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
     AND LN_contraparte_indicadores.gestion = @gest
     AND LN_contraparte_indicadores.indicador = @ihom
     and visible = 1

    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
       
       /* 01/06/2022: Antes lo hacía acá, ahora usa el SP correspondiente */
       declare @cant_etico int = 0
       EXEC [LN_control_etica] @p_contraparte
       select @cant_etico = @@rowcount
       if (@cant_etico > 0) 
      set @valor_num = 0
     else
      set @valor_num = 1


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

      /* 01/06/2022: Antes lo hacía acá, ahora usa el SP correspondiente */
       declare @cant_calidad int = 0
       EXEC [LN_control_calidad] @p_contraparte
       select @cant_calidad = @@rowcount
       if (@cant_calidad > 0) 
      set @valor_num = 0
     else
      set @valor_num = 1

     /* --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 ) 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
    and visible = 1

    select @gest gestion, @valor_anterior valor_anterior, @valor_num valor_actual

    if not exists (select *
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ich
        and visible = 1)
    --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 (isnull(@valor_anterior,2) <> isnull(@valor_num,2)) 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
      and visible = 1
     end

   end

  end

  select @ich, @valor_num

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

     /* 01/06/2022: Antes lo hacía acá, ahora usa el SP correspondiente */
       EXEC [LN_control_comercial_por_cuit] @cuit
       select @juicios = @@rowcount
       if (@juicios > 0) 
      set @vcc = 0
     else
      set @vcc = 1

    /* -- 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
    and visible = 1


    if not exists (
    select *
    from LN_contraparte_indicadores
    where contraparte = @p_contraparte
    and gestion = @gest
    and indicador = @icc
    and visible = 1)


     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 (isnull(@vcc_ant,2) <> isnull(@vcc,2)) 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
      and visible = 1
     end


   end

  end

 END


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

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

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


  if (@gest is not null) begin

   declare @ieh int = null

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

   if (@ieh is not null) begin

    /* Busco excepción activa */
    SELECT top 1 @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
         and visible = 1)

      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
      and visible = 1


   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
    update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
    where contraparte = @p_contraparte
    and gestion = @gest
    and indicador = @ieh2
    and visible = 1


   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
         and visible = 1)
      begin
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by)
      VALUES
      (@p_contraparte, @gest, @iac, @situacion, @periodo, GETDATE(), @p_user_id)
      end 
     else
      begin
      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @situacion,
       valor_texto = @periodo,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @iac
      and visible = 1
      end 
    /*end*/

   end

  end

 END

 IF (@accion = 'CHEQUES_MONTO_DF_LEV'
  or @accion = 'CHEQUES_MONTO_DF_SL'
  or @accion = 'CHEQUES_MONTO_SF_LEV'
  or @accion = 'CHEQUES_MONTO_SF_SL'
  or @accion = 'CHEQUES_CANT_SF_SL'
  or @accion = 'CHEQUES_CANT_SF_LEV'
  or @accion = 'CHEQUES_CANT_DF_SL'
  or @accion = 'CHEQUES_CANT_DF_LEV'

  ) 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 @iah2 int = null

   select @iah2 = 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 = @accion 
   and LN_familias.visible = 1
   and LN_familia_productos.activo = 1
   and LN_cliente_productos.activo = 1
   and LN_productos.visible = 1


   if (@iah2 is not null) begin

    DECLARE @monto_cheques decimal(20,2) = null 
    DECLARE @causal int
    DECLARE @levantados char(1)
    IF (@accion = 'CHEQUES_MONTO_DF_LEV' OR @accion = 'CHEQUES_CANT_DF_LEV' ) 
    begin
     set @causal = 1
     set @levantados = 'S'
    end 
    IF (@accion = 'CHEQUES_MONTO_DF_SL' OR @accion = 'CHEQUES_CANT_DF_SL' ) 
    begin
     set @causal = 1
     set @levantados = 'N'
    end 
    IF (@accion = 'CHEQUES_MONTO_SF_LEV' OR @accion = 'CHEQUES_CANT_SF_LEV' ) 
    begin
     set @causal = 2
     set @levantados = 'S'
    end 
    IF (@accion = 'CHEQUES_MONTO_SF_SL' OR @accion = 'CHEQUES_CANT_SF_SL' ) 
    begin
     set @causal = 2
     set @levantados = 'N'
    end 


    EXEC [LN_alertas_cheques_cliente_montos] @cuit, @cliente, @causal, @levantados, @cantidad output, @monto_cheques output 
    if (@cantidad = 0)      set @cantidad = null
    if (@monto_cheques = 0) set @monto_cheques = null

    if not exists (select indicador from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @iah2
        and visible = 1)
     begin
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, created, created_by)
     VALUES
     (@p_contraparte, @gest, @iah2, iif (@accion like 'CHEQUES_CANT_%',@cantidad,@monto_cheques), GETDATE(), @p_user_id)
     end 
    else
     begin
     UPDATE LN_contraparte_indicadores SET
      valor_numerico = iif (@accion like 'CHEQUES_CANT_%',@cantidad,@monto_cheques),
      modified = GETDATE(),
      modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
     AND gestion = @gest
     AND indicador = @iah2  
     and visible = 1
     end 
   end

  end

 END

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

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

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

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

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

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

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

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


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


    if (@score_alertas is not null) begin

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

      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
      and visible = 1
    end

    if (@score_cendeu is not null) begin

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

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


     else

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

    end


    if (@score_ch is not null) begin

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

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


     else

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

   end


  end

 END


 /* Fin Producto Alertas BCRA */

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


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

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

    declare @score_datos decimal(10,2) = null

    EXEC LN_score_datos @p_contraparte, @score_datos OUTPUT

    if (@score_datos is not null) begin

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

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


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_datos,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_datos
      and visible = 1
    end
    else 
    begin
     if  exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and visible = 1
         and indicador = @indic_datos)
     --delete from LN_contraparte_indicadores
     update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
            where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @indic_datos
        and visible = 1
    end 

   end


  

 END



 IF (@accion = 'judicial') BEGIN

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

   if (@indic_score_judicial is not null) begin

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

    if (@score_judicial is not null) begin

     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and visible = 1
         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
        and visible = 1
    end

   end

 END

 
 IF (@accion = 'score_arba_sircreb') BEGIN

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

   if (@indic_score_as is not null) begin

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

    if (@score_as is not null) begin

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

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


     else

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

   end
   --select @indic_score_as, @score_as

 END

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

   if (@indic_gestion is not null) begin

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

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

     else

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

    end

 END

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

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

   if (@indic_fp is not null) begin

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

     else

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

    end

 END



 /* Producto dependencia económica calculada en función de las tablas de compras y documento de ventas */
 /*
  IF (@accion = 'dependencia_economica_calc') BEGIN
 
  DECLARE @campo int = null
  DECLARE @seccion int = null
  DECLARE @tipo_campo varchar(1) = null
  DECLARE @monto_ventas money = NULL
  DECLARE @monto_iva money = NULL
  DECLARE @monto_compras money = NULL
  DECLARE @id_padron int = null
  DECLARE @fecha_vigencia datetime = null
  declare @graba_score char(1) = 'S'
 
 
  SELECT @gest = LN_gestiones.gestion,
  @cuit = padrones.identificacion,
  @cliente = LN_contrapartes.cliente,
  @id_padron = LN_contrapartes.id_padron
  FROM LN_gestiones INNER JOIN LN_contrapartes
  ON LN_gestiones.contraparte = LN_contrapartes.contraparte
  INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
  WHERE LN_gestiones.desde <= GETDATE()
  AND LN_gestiones.hasta >= GETDATE()
  AND LN_contrapartes.activo = 1
  AND LN_contrapartes.contraparte = @p_contraparte
 
  if (@gest > 0) begin
 
  -- Verifico el indicador Dependencia Económica Calculada 
 
  DECLARE @idec int = null
  DECLARE @producto_de int = NULL
 
  select @idec = LN_indicadores.indicador,
  @producto_de = LN_indicadores.producto
  from LN_indicadores inner join LN_productos on 
  LN_indicadores.producto = LN_productos.producto
  inner join LN_familia_productos on
  LN_productos.producto = LN_familia_productos.producto
  inner join LN_familias on
  LN_familia_productos.familia = LN_familias.familia
  inner join LN_contraparte_familias on
  LN_familia_productos.familia = LN_contraparte_familias.familia
  inner join LN_contrapartes on
  (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
  AND LN_familias.cliente = LN_contrapartes.cliente)
  inner join LN_cliente_productos on
  (LN_productos.producto = LN_cliente_productos.producto
  AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
  where LN_contrapartes.contraparte = @p_contraparte
  and LN_indicadores.clave_indicador = 'DEP_ECON_CALC'
  and LN_familias.visible = 1
  and LN_familia_productos.activo = 1
  and LN_cliente_productos.activo = 1
  and LN_productos.visible = 1
 
  if (@idec > 0) begin
 
  -- Búsqueda de un documento de la contraparte cargado con información de ventas  
 
  select @campo = LN_tipo_doc_campos.campo, 
  @seccion = LN_tipo_doc_campos.seccion,
  @doc_id = LN_docs.doc_id, 
  @tipo_doc = LN_docs.tipo_doc,
  @tipo_campo = LN_campos.tipo_campo,
  @fecha_vigencia = LN_docs.fecha_vigencia
 
  from LN_tipo_doc_campos
  INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
  INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
  where LN_docs.contraparte = @p_contraparte
  and LN_docs.gestion = @gest
  and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
  and LN_docs.estado_doc = 'V'
 
  --  Buscamos: el ultimo año cargado en las declaraciones de iva - ventas, para comparar con las compras del mismo año
 
  select @fecha_vigencia = convert(date,convert(char(4),max(year(valor_fecha))) + '-12-31')
    FROM LN_doc_campos_col
   WHERE doc_id = @doc_id
    AND seccion = @seccion
    AND campo = @campo
    AND col = 0
 
  if (@doc_id > 0 AND @fecha_vigencia is not null) begin
 
  -- Existe el documento de ventas, busco las compras en un período anual 
  select @campo = LN_tipo_doc_campos.campo, 
  @seccion = LN_tipo_doc_campos.seccion,
  @doc_id = LN_docs.doc_id, 
  @tipo_doc = LN_docs.tipo_doc,
  @tipo_campo = LN_campos.tipo_campo,
  @fecha_vigencia = LN_docs.fecha_vigencia
 
  from LN_tipo_doc_campos
  INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
  INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
  where LN_docs.contraparte = @p_contraparte
  and LN_docs.gestion = @gest
  and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
  and LN_docs.estado_doc = 'V'
  -- Buscamos: el ultimo año cargado en las declaraciones de iva - ventas, para comparar con las compras del mismo año
 
  select @fecha_vigencia = convert(date,convert(char(4),max(year(valor_fecha))) + '-12-31')
    FROM LN_doc_campos_col
   WHERE doc_id = @doc_id
    AND seccion = @seccion
    AND campo = @campo
    AND col = 0
 
 
  if exists ( select cliente 
  from LN_dep_econ_compras
  where cliente = @cliente
  and id_padron = @id_padron
  /*and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
  and hasta <= CONVERT(DATE, @fecha_vigencia)*/

  and hasta = CONVERT(DATE, @fecha_vigencia)
  ) begin
 
  --SELECT @monto_compras = SUM(ISNULL(total_compras,0))
  -- No lo sumamos porque cada trimestre se informa el monto total acumulado desde principio de año
  SELECT @monto_compras = ISNULL(total_compras,0)
  FROM LN_dep_econ_compras
  where cliente = @cliente
  and id_padron = @id_padron
  --and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
  --and hasta <= CONVERT(DATE, @fecha_vigencia)
  and hasta = CONVERT(DATE, @fecha_vigencia)
 
 
  --  Sumo las ventas, analizando si el campo que contiene el documento es un valor simple o es una tabla, tomando en tal caso la columna 1 
 
  if (@tipo_campo != 'G') begin
 
  SELECT @monto_ventas = ISNULL(valor_numerico,0)
  FROM LN_doc_campos
  WHERE doc_id = @doc_id
  AND seccion = @seccion
  AND campo = @campo
 
  end
  else begin
 
  -- ventas 
  SELECT @monto_ventas = SUM(ISNULL(valor_numerico,0))
  FROM LN_doc_campos_col
  WHERE doc_id = @doc_id
  AND seccion = @seccion
  AND campo = @campo
  AND col = 1
 
  -- columna iva 
  SELECT @monto_iva = SUM(ISNULL(valor_numerico,0))
  FROM LN_doc_campos_col
  WHERE doc_id = @doc_id
  AND seccion = @seccion
  AND campo = @campo
  AND col = 2
 
  end
 
 
  -- Determinación de la alícuota de iva ingresada en el documento de las ventas anuales 
  declare @alicuota_iva float, @aplica_iva_ventas float = 21, @pais varchar(2)
  select 
  @alicuota_iva = isnull(LN_doc_campos.valor_numerico, 0),
  @pais = LN_contrapartes.country_code
  from LN_doc_campos 
  inner join LN_docs on LN_doc_campos.doc_id = LN_docs.doc_id
  inner join LN_tipo_doc_campos on
  (LN_doc_campos.campo = LN_tipo_doc_campos.campo
  and LN_docs.tipo_doc = LN_tipo_doc_campos.tipo_doc)
  inner join LN_contrapartes on LN_docs.contraparte = LN_contrapartes.contraparte
  where LN_doc_campos.seccion = @seccion
  and LN_doc_campos.doc_id = @doc_id
  and LN_tipo_doc_campos.campo_id = 'ALICUOTA-IVA'
 
 
  set @aplica_iva_ventas = 
  CASE
  WHEN @pais = 'AR' THEN iif(@alicuota_iva = 10, 10.5, 21)
  WHEN @pais = 'UY' THEN 22
  WHEN @pais = 'PY' THEN iif(@alicuota_iva = 0, 10, iif(@alicuota_iva < 10, 5, 10))
  END
 
 
  if (@monto_compras > 0 AND (@monto_ventas > 0 OR @monto_iva > 0 AND @aplica_iva_ventas > 0)) begin
 
  -- Calculo la dependencia económica preferentemente basado en el IVA ventas
  DECLARE @dep_econ_calc float
 
  IF (@monto_iva > 0 AND @aplica_iva_ventas > 0)
  SET @dep_econ_calc = CONVERT(float, @monto_compras / (@monto_iva/@aplica_iva_ventas*100) * 100)
  ELSE
  SET @dep_econ_calc = CONVERT(float, @monto_compras / @monto_ventas * 100)
 
  --select @monto_ventas as ventas, @monto_compras as compras, @dep_econ_calc as dep_econ
  set @graba_score = 'S'
  if not exists (select indicador from LN_contraparte_indicadores
  where contraparte = @p_contraparte
  and gestion = @gest
  and visible = 1
  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
  and visible = 1
  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 visible = 1
      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
  and visible = 1
 
  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
  */

 /* 16/04/2021 cambiamos el de arriba por este, para que use el stored LN_dependencia_economica */
 IF (@accion = 'dependencia_economica_calc' or @accion = 'DEP_ECON_CALC' or @accion = 'DEP_ECON_IVA') BEGIN
  if (@accion = 'dependencia_economica_calc') set @accion = 'DEP_ECON_CALC'

  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'
  DECLARE @dep_econ_calc float = null 



  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 = @accion 
   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
    --declare @depecon table (monto_compras money, ventas_declaradas money, ventas_por_iva money, ventas_mas_iva money, dep_econ_calc_iva float, dep_econ_calc_ventas float , dep_econ_ventas_mas_iva float, fecha varchar(10), leyenda varchar(max))
    declare @depecon table (monto_compras money,moneda_compras varchar(3), ventas_declaradas money, ventas_por_iva money, ventas_mas_iva money, dep_econ_calc_iva float, dep_econ_calc_ventas float , dep_econ_ventas_mas_iva float, fecha varchar(10), leyenda varchar(max))
    insert into @depecon 
     exec [LN_dependencia_economica] @p_contraparte

       IF (@cliente = 5546348)
       begin 
        if (@accion = 'DEP_ECON_IVA')
           select @dep_econ_calc = dep_econ_calc_iva from @depecon
           else 
           select @dep_econ_calc = dep_econ_ventas_mas_iva from @depecon
       end 
       else
       begin 
          select @dep_econ_calc = dep_econ_calc_ventas from @depecon
       end 

       set @graba_score = 'S'
       if not exists (select indicador from LN_contraparte_indicadores
           where contraparte = @p_contraparte
           and gestion = @gest
           and visible = 1
           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
        and visible = 1

    end
    else 
    begin
         if exists (select indicador from LN_contraparte_indicadores
            where contraparte = @p_contraparte
              and gestion = @gest
              and indicador = @idec and visible = 1)
      begin
      set @graba_score = 'S'
      --DELETE from LN_contraparte_indicadores
      update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @idec
        and visible = 1
      end 
    end 

    if (@graba_score = 'S' and @accion = 'DEP_ECON_CALC') 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 visible = 1
                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
          and visible = 1

        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 and visible = 1)
         --delete from LN_contraparte_indicadores
         update LN_contraparte_indicadores 
           set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
               modified = getdate(),visible = 0
           where contraparte = @p_contraparte
           and gestion = @gest
           and indicador = @indic_score_dep_econ
           and visible = 1
             
        end 



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



    end

     




   end
   select @dep_econ_calc as dep

 END

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

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

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

  IF (@p_contraparte > 0) BEGIN

   DECLARE @ilc1 int = null

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

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


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

    if exists (select contraparte, gestion, indicador
       from LN_contraparte_indicadores
       where contraparte = @p_contraparte
       and gestion = @gest
       and visible = 1
       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
       and visible = 1


    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 visible = 1
          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
         and visible = 1
     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 visible = 1
        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
        and visible = 1

     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 visible = 1
       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
       and visible = 1
       
    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 visible = 1
          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
         and visible = 1
     end
    end
    /* fin actualizar otra valoracion */

    
   end

  END

 END


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

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

  IF (@p_contraparte > 0) BEGIN

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

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


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

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

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

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

    if (@indicador_ventas is not null) begin

     declare @total_ventas bigint = NULL

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

     if (@total_ventas > 0) begin

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


      declare @p_cuit varchar(30) = @cuit

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

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

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

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

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


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

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

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

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

        union 

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

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

        ) trimestral

       GROUP BY nombre, situacion) CENDEU_TRIMESTRAL


      if (@total_cendeu > 0) begin

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


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

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


       /* Guardo el indicador */

       if not exists (select contraparte, gestion, indicador
           from LN_contraparte_indicadores
           where contraparte = @p_contraparte
           and gestion = @gest
           and visible = 1
           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
          and visible = 1

      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 visible = 1
         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
         and visible = 1

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

     on (LN_dep_econ_compras.contraparte = data.contraparte AND LN_dep_econ_compras.fecha_solicitud = data.ultima)
    where LN_dep_econ_compras.visible = 1

    -- 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 visible = 1
          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
       and visible = 1
     end

     else
      -- Como no hay dato en tablas, borro indicador en caso de existir
      --delete from LN_contraparte_indicadores
      update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @indic
      and visible = 1


    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'
    and ln_contraparte_indicadores.visible = 1
    and ln_contraparte_indicadores.gestion = ln_gestiones.gestion 

    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_contraparte_indicadores.visible = 1 
     and LN_indicadores.clave_indicador = 'SCORE_FINAL'

     --if (@score_final > 0) begin
     /* 29-09-2023: -- Para que en el caso de score final -100 ponga que el credito es cero, antes lo dejaba vacio */
     if (@score_final = -100) set @score_final = 0
     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 visible = 1
          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
       and visible = 1

      set @calculado = 1

     end

    end


    if (@calculado = 0)
     --delete from LN_contraparte_indicadores
     update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @indic
     and visible = 1

   end /** @indic is not null **/

  end

 end


 if (@accion = 'porcentaje_credito') 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 
   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 = 'limiteCreditoMultiple'
      and LN_indicadores.clave_indicador = 'PORCENTAJE_CREDITO'

   if (@indic is not null) begin
     -- Busco valor del Score Final
     set @score_final = null
     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_contraparte_indicadores.visible = 1 
     and LN_indicadores.clave_indicador = 'SCORE_FINAL'

     if (@score_final = -100) set @score_final = 0
     if (@score_final < -100) set @score_final = null 

     if (@score_final is not null) begin
      if not exists (select LN_contraparte_indicadores.valor_numerico
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and visible = 1
          and indicador = @indic)
       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @gest, @indic, @score_final, GETDATE(), @p_user_id)
      else
       update LN_contraparte_indicadores set
           valor_numerico = @score_final
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @indic
       and visible = 1
     end
     else 
     begin
      if exists (select LN_contraparte_indicadores.valor_numerico
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and visible = 1
          and indicador = @indic)
       --delete LN_contraparte_indicadores
       update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @indic
       and visible = 1
     end

    end

  end

 end




 declare @show bit = 0

 if (@accion = 'CAPACIDAD_ENDEUDAMIENTO') begin

  if (@p_contraparte is not null) begin
   select  top 1 @cliente = LN_contrapartes.cliente,
     @gest = LN_gestiones.gestion,
     @producto_lc = LN_cliente_productos.producto, 
     @indic = LN_indicadores.indicador, 
        @show = CASE 
      WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
         ELSE 1 END 
     from LN_contrapartes
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
   inner join LN_indicadores on ln_indicadores.producto = LN_productos.producto
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_productos.producto = LN_familia_productos.producto)
   LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
       ) SUSC
                ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador) 

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


   if (@indic is not null and @show = 1 ) begin

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

    DECLARE @monto_cme decimal(20,2) = null, @leyenda_cme varchar(200) = null, @fecha_cme date
    EXEC [dbo].[LN_capacidad_endeudamiento] @p_contraparte, null, @monto_cme output, @leyenda_cme output, @fecha_cme output 
  
    if (@monto_cme is not null) begin
    
      if not exists (select LN_contraparte_indicadores.contraparte,
             LN_contraparte_indicadores.gestion,
             LN_contraparte_indicadores.indicador
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and visible = 1
          and indicador = @indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, valor_fecha, valor_texto, created, created_by)
       values
        (@p_contraparte, @gest, @indic, @monto_cme, @fecha_cme,  @leyenda_cme, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set
        valor_numerico = @monto_cme,
        valor_fecha = @fecha_cme, 
        valor_texto = @leyenda_cme, 
        modified = GETDATE(),
        modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @indic
       and visible = 1
     end

     else
      -- Como no hay dato en tablas, borro indicador en caso de existir
      --delete from LN_contraparte_indicadores
      update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @indic
      and visible = 1
      


    end


    

   end


 end


 if (@accion = 'monto_otorgado_cme') begin

  if (@p_contraparte is not null) begin

   select  top 1 @cliente = LN_contrapartes.cliente,
     @gest = LN_gestiones.gestion,
     @producto_lc = LN_cliente_productos.producto, 
     @indic = LN_indicadores.indicador, 
        @show = CASE 
      WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
         ELSE 1 END 
     from LN_contrapartes
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join LN_cliente_productos on LN_contrapartes.cliente = LN_cliente_productos.cliente
   inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
   inner join LN_indicadores on ln_indicadores.producto = LN_productos.producto
   inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
            and LN_productos.producto = LN_familia_productos.producto)
   LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
       ) SUSC
                ON (SUSC.cliente = ln_contrapartes.cliente AND SUSC.indicador = LN_indicadores.indicador) 

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


   if (@indic is not null and @show = 1 ) begin

    declare @cme decimal(12,2) = 0

    select top 1 @cme = LN_contraparte_indicadores.valor_numerico
    from LN_contraparte_indicadores
    inner join LN_gestiones on LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
    inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
    inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    where LN_gestiones.desde <= GETDATE()
    and LN_gestiones.hasta >= GETDATE()
    and LN_contraparte_indicadores.contraparte = @p_contraparte
    and LN_contraparte_indicadores.gestion = ln_gestiones.gestion 
    and LN_contraparte_indicadores.visible = 1

    and LN_indicadores.clave_indicador = 'CAPACIDAD_ENDEUDAMIENTO'
    and LN_productos.producto_id in ( 'limiteCredito', 'limiteCreditoMultiple')


    if (@cme is not null) begin

     -- Busco valor del Score Final
     select @score_final = convert(int, LN_contraparte_indicadores.valor_numerico)
     from LN_contraparte_indicadores
     inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
     where LN_contraparte_indicadores.contraparte = @p_contraparte
     and LN_contraparte_indicadores.gestion = @gest
     and LN_contraparte_indicadores.visible = 1
     and LN_indicadores.clave_indicador = 'SCORE_FINAL'

     if (@score_final = -100) set @score_final = 0
     if (@score_final < -100) set @score_final = null 
     if (@score_final is not null) 
     begin 
     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 visible = 1
          and indicador = @indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @gest, @indic, ROUND( convert(float, convert(bigint, @cme) * @score_final / 100), 0 ), GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set
        valor_numerico = ROUND( convert(float, convert(bigint, @cme) * @score_final / 100), 0 )
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @indic
       and visible = 1

      set @calculado = 1

     end
     end 

    end


    if (@calculado = 0)
     --delete from LN_contraparte_indicadores
     update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @indic
     and visible = 1

   end /** @indic is not null **/

  end

 end


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

 /* Producto Dependencia Económica - Balance : asienta el indicador del valor de dependencia económica basada en datos de ventas del balance */
 if (@accion = 'dependencia_economica_balance') begin

  IF (@p_contraparte > 0) BEGIN

   DECLARE @ideb int = null
   DECLARE @producto_deb int = NULL

   select @ideb = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion,
     @producto_deb = ln_indicadores.producto

   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

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


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

    if (@p_valor_numerico is not null or @p_valor_numerico is 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 visible = 1
         and indicador = @ideb)

      insert into LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
      values
       (@p_contraparte, @gest, @ideb, @p_valor_numerico, NULL, GETDATE(), @p_user_id)

     else

      update LN_contraparte_indicadores set
       valor_numerico = @p_valor_numerico,
       valor_fecha = NULL,
       modified = GETDATE(),
       modified_by = @p_user_id
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @ideb
      and visible = 1
    end

    else

     -- Como no hay dato en tablas, borro indicador en caso de existir
     --delete from LN_contraparte_indicadores
     update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @ideb
     and visible = 1

   end
   
   declare @indic_score_dep_econ_bal int = null
   select @indic_score_dep_econ_bal = LN_indicadores.indicador
     from LN_indicadores
    where producto = @producto_deb
      and clave_indicador = 'SCORE_DEP_ECON_BAL'

   if (@indic_score_dep_econ_bal is not null AND @gest is not null) begin
   
     SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1
     declare @score_dep_econ_bal int = null
     EXEC LN_score_dependencia_economica @familia, @p_contraparte, @score_dep_econ_bal OUTPUT
     if (@score_dep_econ_bal is not null) begin

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

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


      else

       UPDATE LN_contraparte_indicadores SET
        valor_numerico = @score_dep_econ_bal,
        modified = GETDATE(),
        modified_by = @p_user_id
       WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_score_dep_econ_bal
       and visible = 1
     end
     else
     begin
      --delete from LN_contraparte_indicadores
      update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
      where contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_score_dep_econ_bal
      and visible = 1
     end 
   end

  END

 end

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

 /* Producto Dependencia Económica - Balance : asienta el indicador del fecha del balance sobre el cuyas ventas se calcula la dependencia económica */
 if (@accion = 'dependencia_economica_balance_fecha') begin

  IF (@p_contraparte > 0) BEGIN

   DECLARE @idebf int = null

   select @idebf = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion

   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

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


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

    if (@p_valor_fecha is not null) begin


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

      insert into LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
      values
       (@p_contraparte, @gest, @idebf, NULL, @p_valor_fecha, GETDATE(), @p_user_id)

     else

      update LN_contraparte_indicadores set
       valor_numerico = NULL,
       valor_fecha = @p_valor_fecha,
       modified = GETDATE(),
       modified_by = @p_user_id
      where contraparte = @p_contraparte
      and gestion = @gest
      and indicador = @idebf
      and visible = 1


     /*select convert(varchar(10),@p_valor_fecha,121) as fecha_guardada*/

    end

    else

     -- Como no hay dato en tablas, borro indicador en caso de existir
     --delete from LN_contraparte_indicadores
     update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @idebf
     and visible = 1

   end

  END

 end

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

 /* Dado un ID de contraparte, calcula y asienta el indicador de facturas apócrifas
 
  Guarda en el campo valor_numerico : 1 si tiene apócrifas / 0 si no tiene apócrifas
 
  */

 IF (@accion = 'facturas_apocrifas') BEGIN

  DECLARE @apocrifas int = 0

  if (@p_contraparte > 0) begin

   select @apocrifas = count(*)
   from apocrifas inner join padrones on apocrifas.cuit = padrones.identificacion
   inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
   where LN_contrapartes.contraparte = @p_contraparte

   DECLARE @ifa int = null
   declare @producto_ap int = null 

   select @ifa = LN_indicadores.indicador,
     @gest = LN_gestiones.gestion, 
     @producto_ap = ln_indicadores.producto

   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte

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


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

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

     insert into LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
     values
      (@p_contraparte, @gest, @ifa, iif(@apocrifas > 0, 1, 0), NULL, GETDATE(), @p_user_id)

    else

     update LN_contraparte_indicadores set
      valor_numerico = iif(@apocrifas > 0, 1, 0),
      valor_fecha = NULL,
      modified = GETDATE(),
      modified_by = @p_user_id
     where contraparte = @p_contraparte
     and gestion = @gest
     and indicador = @ifa
     and visible = 1
   end
   
   declare @indic_score_FA int = null
   select @indic_score_FA = LN_indicadores.indicador
     from LN_indicadores
    where producto = @producto_ap 
      and clave_indicador = 'SCORE_APOCRIFAS'

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

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

    declare @score_apocrifas int = null

    EXEC LN_score_apocrifas @familia, @p_contraparte, @score_apocrifas OUTPUT

    if (@score_apocrifas is not null) begin

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

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


         else

          UPDATE LN_contraparte_indicadores SET
           valor_numerico = @score_apocrifas,
           modified = GETDATE(),
           modified_by = @p_user_id
          WHERE contraparte = @p_contraparte
          AND gestion = @gest
          AND indicador = @indic_score_FA
          and visible = 1
        end
        else
        begin
        if  exists (select contraparte, gestion, indicador
             from LN_contraparte_indicadores
             where contraparte = @p_contraparte
             and gestion = @gest
             and indicador = @indic_score_FA
             and visible = 1)
         --delete from LN_contraparte_indicadores
         update LN_contraparte_indicadores 
          set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
           where contraparte = @p_contraparte
           and gestion = @gest
           and indicador = @indic_score_FA
           and visible = 1
             
        end 
   end

   select @apocrifas as apocrifas

  end


 END

 if (@accion = 'score_blacklist' and @p_contraparte > 0) 
 BEGIN
   declare @ibls int 
   select @ibls = LN_indicadores.indicador,
       @gest = LN_gestiones.gestion,
       @p_cliente = LN_contrapartes.cliente, 
       @cuit = padrones.identificacion 
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 

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

   if (@ibls is not null and @gest IS NOT NULL) 
   begin

    declare @score_BL int = null
    EXEC LN_score_blackList @p_contraparte, @score_BL OUTPUT

    if (@score_BL is not null) 
    begin
     if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and visible = 1
         and indicador = @ibls)

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


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_BL,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @ibls
      and visible = 1
    end
    else
    begin
     if  exists (select contraparte, gestion, indicador
          from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and indicador = @ibls
          and visible = 1)
      --delete from LN_contraparte_indicadores
      update LN_contraparte_indicadores 
       set gestion = floor(-1000 * RAND(convert(varbinary, newid())))-1, -- Por las dudas que en algun lado que se vea el valor de los indicadores no se tenga en cuenta el visible=1, 
                                                                         -- antes decia gestion=0, pero la segunda vez que se necesitaba daba error, por primary key
           modified = getdate(),visible = 0
        where contraparte = @p_contraparte
        and gestion = @gest
        and indicador = @ibls
        and visible = 1
             
    end
   end
 END


 if (@accion = 'blacklist' and @p_contraparte > 0) 
 BEGIN
   declare @ibl int 
   select @ibl = LN_indicadores.indicador,
       @gest = LN_gestiones.gestion,
       @p_cliente = LN_contrapartes.cliente, 
       @cuit = padrones.identificacion 
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 

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

   if (@ibl is not null and @gest IS NOT NULL) 
   begin
    declare @bl int = 0
    set @bl = (select count(*) from LN_control_black_list 
     where cliente = @p_cliente 
       and identificacion = @cuit 
       and visible = 1 
       and ISNULL(vigencia_desde, '1901-01-01') < GETDATE()
       and ISNULL(vigencia_hasta, '2099-12-31') > GETDATE())
    if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and visible = 1
         and indicador = @ibl)
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @ibl, iif(@BL > 0, 1, 0), GETDATE(), @p_user_id)
    else
      UPDATE LN_contraparte_indicadores SET
       valor_numerico = iif(@BL > 0, 1, 0),
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @ibl
      and visible = 1
   end
 END
 
 IF (@accion = 'AprobacionFiscales' or @accion = 'AprobacionFormales' or  @accion = 'AprobacionLegales' or  @accion = 'AprobacionBlackList' or  @accion = 'AprobacionPatrimonio' ) BEGIN

   SELECT @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion,@p_cliente=LN_gestiones.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
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte

   declare @indic_score_calc int = null
   declare @texto_calc varchar(10) = null
   declare @memo_calc varchar(max) = null
   declare @score_calc decimal(10,2) = null 
   declare @existe_indic_score_calc int = null

   select @indic_score_calc = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador =  @accion 
/*
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,@p_cliente=LN_gestiones.cliente,@existe_indic_score_calc=LN_contraparte_indicadores.indicador 
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
LEFT JOIN LN_contraparte_indicadores ON (LN_gestiones.gestion = LN_contraparte_indicadores.gestion and LN_contraparte_indicadores.visible = 1 
and LN_contraparte_indicadores.indicador = @existe_indic_score_calc)
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
*/


   if (@p_cliente is null or @p_cliente = 0) 
    begin
         select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
    end 

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

    if (@accion = 'AprobacionLegales') 
        EXEC LN_score_judicial @p_contraparte, @score_calc OUTPUT
    if (@accion = 'AprobacionFormales') 
        EXEC LN_score_formal_antiguedad_edad @p_contraparte, @score_calc OUTPUT
    if (@accion = 'AprobacionFiscales') 
        EXEC LN_score_fiscales  @p_contraparte, @score_calc OUTPUT
    if (@accion = 'AprobacionBlackList') 
        EXEC LN_score_blackList @p_contraparte, @score_calc OUTPUT
    if (@accion = 'AprobacionPatrimonio') 
        EXEC LN_score_Patrimonio @p_contraparte, @score_calc OUTPUT
     

    if (@score_calc is not null) begin
     select @texto_calc = texto,@memo_calc = texto_largo from ln_cliente_nivel 
             where cliente = @p_cliente 
            and indicador = @indic_score_calc 
            and desde <= @score_calc and hasta > @score_calc
     
/*AGB REMUEVE ESTO FEBRERO 2022 select @memo_calc = texto_largo from ln_cliente_nivel 
  where cliente = @p_cliente 
and indicador = @indic_score_calc 
and desde <= @score_calc and hasta > @score_calc
*/

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

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico,valor_texto,valor_memo, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_calc, @score_calc, @texto_calc, @memo_calc, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @score_calc,
          valor_texto = @texto_calc,
          valor_memo  = @memo_calc, 
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_score_calc
        and visible = 1
    end

   end

  END



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

  declare @indic_score_deu_ban  int = null
  declare @texto_deu_ban varchar(10) = null
  declare @memo_deu_ban varchar(max) = null
  declare @score_deu_ban decimal(10,2) = null 

  select @indic_score_deu_ban = LN_indicadores.indicador
  from LN_indicadores
  where clave_indicador = @accion 

  if (@p_cliente is null or @p_cliente = 0) 
   begin
    select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
   end 

  if (@indic_score_deu_ban is not null and @gest > 0) begin
   SELECT @familia = familia FROM LN_contraparte_familias WHERE contraparte = @p_contraparte AND activo = 1

   if (@familia IS NOT NULL) 
   begin
    declare @score_alertas1  decimal(10,2) = null
    declare @score_cendeu1  decimal(10,2) = null
    declare @score_ch1      decimal(10,2) = null
    EXEC LN_score_alertas @familia, @p_contraparte, @score_alertas1 OUTPUT,  @score_cendeu1 output, @score_ch1 output 

    if (@accion = 'AprobacionBancos')  set @score_deu_ban = @score_cendeu1
    if (@accion = 'AprobacionCheques') set @score_deu_ban = @score_ch1 
     
    if (@score_deu_ban is not null) 
    begin
     select @texto_deu_ban = texto,  @memo_deu_ban = texto_largo 
                                   from ln_cliente_nivel 
                                  where cliente = @p_cliente 
               and indicador = @indic_score_deu_ban 
               and desde <= @score_deu_ban and hasta > @score_deu_ban

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

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_score_deu_ban, @score_deu_ban, @texto_deu_ban, @memo_deu_ban, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @score_deu_ban,
       valor_texto    = @texto_deu_ban,
       valor_memo     = @memo_deu_ban, 
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_score_deu_ban
      and visible = 1
    end

   end 

  end

 END

 IF (@accion = 'AprobacionContables') BEGIN
 
  /* guarda el score de balance pasado como parámetro */

  IF (@p_score >= 0) begin

   if (@p_cliente is null or @p_cliente = 0) 
   begin
    select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
   end 

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

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

   IF @gest IS NOT NULL and @isb2 IS NOT NULL BEGIN  
     declare @texto_bal varchar(100)
     declare @memo_bal varchar(max)
     select @texto_bal = texto, @memo_bal = texto_largo from ln_cliente_nivel 
             where cliente = @p_cliente 
            and indicador = @isb2
            and desde <= @p_score and hasta > @p_score
     --select  @p_cliente cliente, @isb2 indicador, @p_score score, @texto_bal texto, @memo_bal as memo
     if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @isb2
         and visible = 1
         AND contraparte = @p_contraparte
         AND gestion = @gest) begin

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, valor_numerico, valor_texto,valor_memo)
      VALUES
      (@p_contraparte, @gest, @isb2, GETDATE(), @p_score, @texto_bal,@memo_bal)

     end else begin

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

      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @p_score,
       valor_texto = @texto_bal,
       valor_memo = @memo_bal,
       visible = 1, 
       modified = GETDATE()
      WHERE indicador = @isb2
      AND contraparte = @p_contraparte
      AND gestion = @gest
      and visible = 1
     end
                

   END

  end


 END



 IF (@accion = 'AprobacionFinal') BEGIN

   SELECT @gest = LN_gestiones.gestion,
       @cuit = padrones.identificacion
   FROM LN_gestiones INNER JOIN LN_contrapartes
   ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_aprobacion_final int = null
   declare @texto_aprobacion_final varchar(10) = null
   declare @memo_aprobacion_final varchar(max) = null

   declare @valor_aprobacion_final decimal(10,2) = null 
   declare @producto_aprobacion_final int = null 

   if (@p_cliente is null or @p_cliente = 0) 
    begin
         select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
    end 

   select @producto_aprobacion_final = producto, 
          @indic_aprobacion_final = LN_indicadores.indicador
     from LN_indicadores
     inner join ln_cliente_indicadores ci on (ci.indicador = ln_indicadores.indicador and ci.activo = 1 and cliente = @p_cliente)
     where clave_indicador =  @accion 

   if (@indic_aprobacion_final is not null and @gest > 0) 
   begin
    set @valor_aprobacion_final = 100
    if exists (select *
         from ln_contraparte_indicadores 
        where contraparte = @p_contraparte 
          and gestion = @gest
          and indicador in (select ln_indicadores.indicador from ln_indicadores
                             inner join ln_cliente_indicadores ci on (ci.indicador = ln_indicadores.indicador and ci.activo = 1 and cliente = @p_cliente)
              where ln_indicadores.indicador != @indic_aprobacion_final and producto = @producto_aprobacion_final
              ) 
          and visible = 1
          and valor_texto = 'A') -- Amarillo --> aprobacion final = amarillo
    begin
     set @valor_aprobacion_final  = 50
    end 
    if exists (select *
         from ln_contraparte_indicadores 
        where contraparte = @p_contraparte 
          and gestion = @gest
          and indicador in (select ln_indicadores.indicador from ln_indicadores
                             inner join ln_cliente_indicadores ci on (ci.indicador = ln_indicadores.indicador and ci.activo = 1 and cliente = @p_cliente)
              where ln_indicadores.indicador != @indic_aprobacion_final and producto = @producto_aprobacion_final
              ) 
          and visible = 1
          and valor_texto = 'R')  -- Rojo --> aprobacion final = rojo 
    begin
     set @valor_aprobacion_final  = -100
    end  

    -- Vemos si hay excepcion vigente y debe pisar el score final
    --select  @p_cliente
    declare @reemplaza_score bit = (select reemplaza_score 
            from LN_cliente_productos 
            inner join ln_productos on LN_productos.producto = LN_cliente_productos.producto
            where cliente = @p_cliente
                                      and ln_productos.producto_id = 'excepciones') 
    if (@reemplaza_score = 1) 
     begin
      declare @tipo_excepcion_final char(1) =  
           (select top 1 tipo_excepcion from LN_excepciones_final 
             where contraparte = @p_contraparte 
            and ISNULL(vigencia,'2099-12-31') >= GETDATE()
         and estado = 1 order by created desc)
      if (@tipo_excepcion_final = 'V') set @valor_aprobacion_final = 100
      if (@tipo_excepcion_final = 'R') set @valor_aprobacion_final = -100
     end 
    
    select @texto_aprobacion_final = texto,  @memo_aprobacion_final = texto_largo  from ln_cliente_nivel 
           where cliente = @p_cliente 
           and indicador = @indic_aprobacion_final 
           and desde <= @valor_aprobacion_final and hasta > @valor_aprobacion_final
    if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_aprobacion_final)

     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico,valor_texto, valor_memo, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_aprobacion_final, @valor_aprobacion_final, @texto_aprobacion_final,  @memo_aprobacion_final, GETDATE(), @p_user_id)

    else

     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @valor_aprobacion_final,
       valor_texto = @texto_aprobacion_final,
       valor_memo = @memo_aprobacion_final,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_aprobacion_final
      and visible = 1

   end

  END


  IF (@accion = 'COMEX_IMPO' or @accion = 'COMEX_EXPO') BEGIN

   select  @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion,
     @cliente = LN_contrapartes.cliente
     from LN_gestiones 
    inner join LN_contrapartes ON 
      LN_gestiones.contraparte = LN_contrapartes.contraparte
    inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
    inner join identificadores on padrones.identificador = identificadores.identificador
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
           
   SELECT @iun = LN_indicadores.indicador, @prod = LN_indicadores.producto
     FROM LN_indicadores
    INNER JOIN LN_familia_productos on LN_indicadores.producto = LN_familia_productos.producto
    INNER JOIN LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    WHERE LN_indicadores.clave_indicador = @accion
     AND LN_contraparte_familias.contraparte = @p_contraparte

   declare @impo_expo table (total_impo decimal(15,2), total_expo decimal(15,2))
   declare @total_impo decimal(15,2), @total_expo decimal(15,2)


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

    insert into @impo_expo 
     exec  [obtener_comex_totales] @cuit,12
    select @total_impo = total_impo, @total_expo = total_expo from @impo_expo
    if (@accion = 'COMEX_IMPO' and @total_impo IS NOT NULL) begin
     if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @iun
         AND contraparte = @p_contraparte
         and visible = 1
         AND gestion = @gest) 
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, created_by, valor_numerico)
      values (@p_contraparte, @gest, @iun, GETDATE(),  @p_user_id, @total_impo)
     else
      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @total_impo,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE LN_contraparte_indicadores.indicador = @iun
      AND LN_contraparte_indicadores.contraparte = @p_contraparte
      AND LN_contraparte_indicadores.gestion = @gest
      and visible = 1
    end

    if (@accion = 'COMEX_EXPO' and @total_expo IS NOT NULL) begin
     if not exists (select indicador
         FROM LN_contraparte_indicadores
         WHERE indicador = @iun
         AND contraparte = @p_contraparte
         and visible = 1
         AND gestion = @gest) 
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, created, created_by, valor_numerico)
      values (@p_contraparte, @gest, @iun, GETDATE(),  @p_user_id, @total_expo)
     else
      UPDATE LN_contraparte_indicadores SET 
       valor_numerico = @total_expo,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE LN_contraparte_indicadores.indicador = @iun
      AND LN_contraparte_indicadores.contraparte = @p_contraparte
      AND LN_contraparte_indicadores.gestion = @gest
      and visible = 1
    end


 

  END

                 
 END
 

 IF (@accion = 'INICIO_ACTIVIDAD') BEGIN

  declare @act_inicio int = null

  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() and ln_gestiones.vigente = 1

  SELECT @act_inicio = LN_indicadores.indicador 
    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 = 'INICIO_ACTIVIDAD'
  AND LN_contraparte_familias.contraparte = @p_contraparte
  AND LN_cliente_productos.activo = 1
  AND LN_familia_productos.activo = 1

  if (@gest IS NOT NULL and @act_inicio is not null) begin
   declare @fecha_inicio_actividad varchar(50) = null
   -- fecha de inicio actividad toma la menor fecha de los impuestos 
   select @fecha_inicio_actividad = convert(varchar(50),min(fecha_inscripcion))
     from padron_impuestos
    where id_padron = (select id_padron from padrones where identificacion = @cuit and habilitado = 1) 
      and fecha_inscripcion != '1901-01-01'

   if (isnull(@fecha_inicio_actividad,'') = '' or @fecha_inicio_actividad = '1901-01-01') 
   begin
    select @fecha_inicio_actividad = isnull(fecha_contrato_social,'') 
      from datos_sociedades 
     where cuit = @cuit
   end
   IF (isnull(@fecha_inicio_actividad,'') != '' and @fecha_inicio_actividad like '____-__-__') BEGIN

    declare @fecha_inicio_actividad_date date = null
    set @fecha_inicio_actividad_date = convert(date,@fecha_inicio_actividad)

    if not exists (select contraparte from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @act_inicio)
      begin
       INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_texto, valor_fecha, visible, created, created_by)
       VALUES (@p_contraparte, @gest, @act_inicio, @fecha_inicio_actividad, @fecha_inicio_actividad_date, 1, GETDATE(), @p_user_id)
      end
      else
      begin
       UPDATE LN_contraparte_indicadores SET
        valor_fecha = @fecha_inicio_actividad_date,
        valor_texto = @fecha_inicio_actividad,
        modified = GETDATE(),
        modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @act_inicio
       and visible = 1
      end
   END


  end


 END
 



 IF (@accion = 'indicadores_actividad') BEGIN

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

  if (@gest IS NOT NULL) begin


   IF EXISTS (SELECT LN_familia_productos.producto
      FROM LN_familia_productos INNER JOIN LN_contraparte_familias 
       ON LN_familia_productos.familia = LN_contraparte_familias.familia
      INNER JOIN LN_productos ON LN_familia_productos.producto = LN_productos.producto
      INNER JOIN LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
      INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
              AND LN_productos.producto = LN_cliente_productos.producto)
      WHERE LN_contrapartes.contraparte = @p_contraparte
      AND LN_productos.producto_id = 'ACTIVIDAD'
      AND LN_contraparte_familias.activo = 1
      AND LN_familia_productos.activo = 1
      AND LN_cliente_productos.activo = 1) BEGIN


    /** CLAE **/
    declare @act_clae int = NULL

    select @act_clae = indicador from LN_indicadores inner join LN_productos
    on LN_indicadores.producto = LN_productos.producto
    where LN_productos.producto_id = 'ACTIVIDAD'
    and LN_indicadores.clave_indicador = 'CLAE'

    if (@act_clae is not null) begin

     declare @clae varchar(10) = NULL, @desc_clae varchar(500) = NULL

     SELECT @clae = clae.cod_clae,
       @desc_clae = clae.descripcion
     FROM clae inner join padrones on clae.cuit = padrones.identificacion
     inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
     WHERE LN_contrapartes.contraparte = @p_contraparte
     AND clae.visible = 1
     AND clae.principal = 1

     IF (@clae IS NOT NULL) BEGIN

      if not exists (select contraparte from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and visible = 1
          and indicador = @act_clae)

       INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, visible, created, created_by)
       VALUES (@p_contraparte, @gest, @act_clae, CONVERT(INT, @clae), @clae, @desc_clae, 1, GETDATE(), @p_user_id)

      else

       UPDATE LN_contraparte_indicadores SET
        valor_numerico = CONVERT(INT, @clae),
        valor_texto = @clae, --@desc_clae,
        valor_memo = @desc_clae,
        modified = GETDATE(),
        modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @act_clae
       and visible = 1
     END


    end

    /*** RAMO ***/
    declare @act_ramo int = NULL

    select @act_ramo = indicador from LN_indicadores inner join LN_productos
    on LN_indicadores.producto = LN_productos.producto
    where LN_productos.producto_id = 'ACTIVIDAD'
    and LN_indicadores.clave_indicador = 'RAMO'

    if (@act_ramo is not null) begin

     declare @ramo int = NULL, @desc_ramo varchar(500) = NULL
     /*
      SELECT @ramo = ramos_clae.cod_ramo,
      @desc_ramo = ramos_clae.descripcion
      FROM ramos_clae 
      inner join clae on ramos_clae.cod_subramo = clae.cod_clae
      inner join padrones on clae.cuit = padrones.identificacion
      inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
      WHERE LN_contrapartes.contraparte = @p_contraparte
      AND clae.visible = 1
      AND clae.principal = 1
      */


     SELECT @ramo = clae.cod_clae,
         @desc_ramo = iif(ramos_clae.descripcion is null, clae.descripcion, ramos_clae.descripcion) 
     FROM clae 
     left join ramos_clae on ramos_clae.cod_subramo = clae.cod_clae
     inner join padrones on clae.cuit = padrones.identificacion
     inner join LN_contrapartes on padrones.id_padron = LN_contrapartes.id_padron
     WHERE LN_contrapartes.contraparte = @p_contraparte
     AND clae.visible = 1
     AND clae.principal = 1

     IF (@ramo IS NOT NULL) BEGIN

      if not exists (select contraparte from LN_contraparte_indicadores
          where contraparte = @p_contraparte
          and gestion = @gest
          and visible = 1
          and indicador = @act_ramo)

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

      else

       UPDATE LN_contraparte_indicadores SET
        valor_numerico = @ramo,
        valor_texto = @desc_ramo,
        modified = GETDATE(),
        modified_by = @p_user_id
       where contraparte = @p_contraparte
       and gestion = @gest
       and indicador = @act_ramo
       and visible = 1
     END


    end


   END

  end

 END


 /*** Cálculo Indicadores producto Imperium ***/
 if (@accion = 'Indicadores_Imperium') begin
  if (@p_contraparte is not null) begin

   if exists (select top 1 LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.tipo_dato, LN_gestiones.gestion, LN_contrapartes.id_imperium
      from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
      inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto 
      inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
      inner join LN_cliente_indicadores on (LN_cliente_productos.cliente = LN_cliente_indicadores.cliente
                AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
      inner join LN_contrapartes on LN_cliente_productos.cliente = LN_contrapartes.cliente
      inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
      inner join LN_contraparte_familias on (LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
                and LN_familia_productos.familia = LN_contraparte_familias.familia)
      where LN_contrapartes.contraparte = @p_contraparte
      and LN_contrapartes.servicio_contratado = 73
      and LN_productos.producto_id = 'IMPE'
      and LN_indicadores.valoracion = 'A'
      and LN_indicadores.visible = 1
      and LN_familia_productos.activo = 1
      and LN_cliente_productos.activo = 1
      and LN_gestiones.desde <= GETDATE()
      and LN_gestiones.hasta >= GETDATE()
      and LN_contrapartes.activo = 1
      /*and LN_contrapartes.id_imperium > 0*/) begin

    DECLARE @imp_indic int, @imp_clave varchar(50), @imp_tipo_dato varchar(1), @imp_gestion int, @imp_contratista int

    DECLARE Indicadores CURSOR FOR

    select LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.tipo_dato, LN_gestiones.gestion, LN_contrapartes.id_imperium
    from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto 
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_cliente_indicadores on (LN_cliente_productos.cliente = LN_cliente_indicadores.cliente
              AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
    inner join LN_contrapartes on LN_cliente_productos.cliente = LN_contrapartes.cliente
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join LN_contraparte_familias on (LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
              and LN_familia_productos.familia = LN_contraparte_familias.familia)
    where LN_contrapartes.contraparte = @p_contraparte
    and LN_contrapartes.servicio_contratado = 73
    and LN_productos.producto_id = 'IMPE'
    and LN_indicadores.valoracion = 'A'
    and LN_indicadores.visible = 1
    and LN_familia_productos.activo = 1
    and LN_cliente_productos.activo = 1
    and LN_gestiones.desde <= GETDATE()
    and LN_gestiones.hasta >= GETDATE()
    and LN_contrapartes.activo = 1
    /*and LN_contrapartes.id_imperium > 0*/


    OPEN Indicadores
    FETCH NEXT FROM Indicadores INTO @imp_indic, @imp_clave , @imp_tipo_dato , @imp_gestion, @imp_contratista
    WHILE @@FETCH_STATUS = 0 BEGIN

     DECLARE @total_recursos int

     IF (@imp_clave = 'impe_recursos') BEGIN


      select @total_recursos = SUM(data.totales)
      from
       (select count(*) as totales from led_empleados inner join led_empleados_periodo
             on led_empleados.empleado = led_empleados_periodo.empleado
       where led_empleados.contratista_1 = @imp_contratista
       and led_empleados.estado_empleado = 'A'
       and led_empleados_periodo.periodo = dbo.PeriodoVencido()

       UNION

       select count(*) as totales from led_vehiculos inner join led_vehiculos_periodo
             on led_vehiculos.vehiculo = led_vehiculos_periodo.vehiculo
       where led_vehiculos.contratista_1 = @imp_contratista
       and led_vehiculos.estado_vehiculo = 'A'
       and led_vehiculos_periodo.periodo = dbo.PeriodoVencido()

       UNION

       select count(*) as totales from led_contratistas inner join led_subcontratista_periodo
             on led_contratistas.contratista = led_subcontratista_periodo.subcontratista
       where led_contratistas.contratista_1 = @imp_contratista
       and led_contratistas.estado_contratista = 'A'
       and led_contratistas.contratista != led_contratistas.contratista_1
       and led_subcontratista_periodo.periodo = dbo.PeriodoVencido() ) DATA


      if not exists (select top 1 contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte 
          and gestion = @imp_gestion 
          and indicador = @imp_indic
          and visible = 1)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, @total_recursos, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set valor_numerico = @total_recursos, modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic
       and visible = 1
     END



     IF (@imp_clave = 'impe_empleados') BEGIN

      select @total_recursos = count(*) 
      from led_empleados 
      inner join led_empleados_periodo on led_empleados.empleado = led_empleados_periodo.empleado
       where led_empleados.contratista_1 = @imp_contratista
       and led_empleados.estado_empleado = 'A'
       and led_empleados_periodo.periodo = dbo.PeriodoVencido()

       
      if not exists (select contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte 
          and gestion = @imp_gestion 
          and indicador = @imp_indic
          and visible = 1)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, @total_recursos, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set valor_numerico = @total_recursos, modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic
       and visible = 1
     END

     IF (@imp_clave = 'impe_vehiculos') BEGIN


      select @total_recursos = count(*) 
       from led_vehiculos 
       inner join led_vehiculos_periodo on led_vehiculos.vehiculo = led_vehiculos_periodo.vehiculo
       where led_vehiculos.contratista_1 = @imp_contratista
       and led_vehiculos.estado_vehiculo = 'A'
       and led_vehiculos_periodo.periodo = dbo.PeriodoVencido()

     
      if not exists (select top 1 contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte 
          and gestion = @imp_gestion 
          and indicador = @imp_indic
          and visible = 1)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, @total_recursos, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set valor_numerico = @total_recursos, modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic
       and visible = 1
     END

     IF (@imp_clave = 'impe_subcontratistas') BEGIN

      DECLARE @total_subc int

      select @total_subc = count(*) from led_contratistas inner join led_subcontratista_periodo
             on led_contratistas.contratista = led_subcontratista_periodo.subcontratista
      where led_contratistas.contratista_1 = @imp_contratista
      and led_contratistas.estado_contratista = 'A'
      and led_contratistas.contratista != led_contratistas.contratista_1
      and led_subcontratista_periodo.periodo = dbo.PeriodoVencido()


      if not exists (select contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte and visible = 1 and gestion = @imp_gestion and indicador = @imp_indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, @total_subc, GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set valor_numerico = @total_subc, modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic
       and visible = 1
     END

     IF (@imp_clave = 'impe_status') 
     BEGIN
      declare @valor_status decimal(10,2) = null
      EXEC LN_status_impe @p_contraparte, @valor_status OUTPUT
      --select @valor_status as VVVV
      /* Agregado 04/06/2021 para que guarde el texto del status */
      select @cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
      declare @valor_status_texto varchar(100) = null 
       
       /* AGREGADO PARA SIMULAR LO MISMO QUE EL VIEJO IMPERIUM REMOVER CUANDO SE PERSONALICEN LOS STATUS */
       /*if (@cliente != 2046807993 and @cliente != 7855254)
        BEGIN
       
        declare @estado_compliance varchar(1) = 'R'
       
        select top 1 /*LN_contrapartes.cliente,LN_contrapartes.id_imperium,max(led_contratista_periodo.periodo) as periodo,*/

        @estado_compliance=led_compliance.estado_compliance
        from LN_contrapartes inner join led_contratista_periodo on LN_contrapartes.id_imperium=led_contratista_periodo.contratista 
        inner join led_compliance on (LN_contrapartes.id_imperium=led_compliance.contratista and led_compliance.led_seccion='C' and led_compliance.periodo=led_contratista_periodo.periodo)
        where contraparte =@p_contraparte and led_compliance.periodo=led_contratista_periodo.periodo
        /*group by LN_contrapartes.cliente,LN_contrapartes.id_imperium,led_compliance.estado_compliance*/

        order by  led_contratista_periodo.periodo desc
       
        set @valor_status = (case
        when @estado_compliance = 'V' then 9
        when @estado_compliance = 'A' then 8
        when @estado_compliance = 'R' then 7
        else  NULL 
        end)
        END*/

       /* FIN DE AGREGADO PARA SIMULAR LO MISMO QUE EL VIEJO IMPERIUM REMOVER CUANDO SE PERSONALICEN LOS STATUS */
       
       set @valor_status_texto = 
       (select LN_cliente_nivel.texto_largo
        from LN_cliente_nivel 
        inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
        where LN_cliente_nivel.cliente = @cliente 
        and LN_cliente_nivel.desde <= @valor_status
        and LN_cliente_nivel.hasta > @valor_status
        and LN_indicadores.clave_indicador = 'impe_status')

      if (@valor_status_texto is null)
      begin 
       /* 25/01/2022 se cambiaron los defaults otra vez */
       /*Último mes de control (dbo.Periodovencido()) todo presentado y verificado (V) al 100% -- VERDE
          Último mes de control (dbo.Periodovencido()) documentación pendiente de ingresar (N) o pendiente de verificar (I) o RechazaDa (R) -- GRIS en tolerancia
          Documentación pendiente de ingresar o rechazada de los períodos dbo.Periodovencido() y dbo.PeriodoMenosDos() (o sea atrasos entre 30 y 60 días de control y no del la fecha del reloj) -- AMARILLO
                              Documentación pendiente de ingresar o rechazada de los menor en número al dbo.PeriodoMenosDos() (o sea atrasos mayores 60 días de control y no del la fecha del reloj) -- ROJO*/
 
         set @valor_status_texto = (case
              when @valor_status = 100  then 'Al dia'
              when @valor_status = 3 then 'En tolerancia'
              when @valor_status = 2 then 'Entre 30 y 60 días'
              when @valor_status = 1 then 'Más de 60 días'
              else  NULL 
              end) 
       /*
        set @valor_status_texto = (case
        when @valor_status = 4 then 'Al dia'
        when @valor_status = 3 then 'De 90 a 150 días'
        when @valor_status = 2 then 'De 150 a 180 días'
        when @valor_status = 1 then 'Más de 180 días'
        when @valor_status = 9 then 'Verde'
        when @valor_status = 8 then 'Amarillo'
        when @valor_status = 7 then 'Rojo'
        else  NULL 
        end)*/

       /*
        /* AGREGADO PARA SIMULAR LO MISMO QUE EL VIEJO IMPERIUM REMOVER CUANDO SE PERSONALICEN LOS STATUS */

        set @valor_status_texto = (case
        when @valor_status = 7 then 'Rojo'
        when @valor_status = 8 then 'Amarillo'
        when @valor_status = 9 then 'Verde'
        else  NULL 
        end)
       
        /* FIN DE AGREGADO PARA SIMULAR LO MISMO QUE EL VIEJO IMPERIUM REMOVER CUANDO SE PERSONALICEN LOS STATUS */

        */

      end 
      /**/ 
      select @valor_status, @valor_status_texto
      if not exists (select top 1 contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte and visible = 1 and gestion = @imp_gestion 
          and indicador = @imp_indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, @valor_status, @valor_status_texto, GETDATE(), @p_user_id)

      else
       update LN_contraparte_indicadores 
       set valor_numerico = @valor_status, 
       valor_texto = @valor_status_texto, modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte 
       and gestion = @imp_gestion 
       and indicador = @imp_indic
       and visible = 1
     END 
     /*** Faltan impe_control_acceso e impe_status ***/
     IF (@imp_clave = 'impe_control_acceso')
     BEGIN 
      if not exists (select top 1 contraparte, gestion, indicador from LN_contraparte_indicadores
          where contraparte = @p_contraparte and visible = 1 and gestion = @imp_gestion and indicador = @imp_indic)

       insert into LN_contraparte_indicadores
        (contraparte, gestion, indicador, valor_numerico, created, created_by)
       values
        (@p_contraparte, @imp_gestion, @imp_indic, iif(@p_contraparte % 2 = 1,0,1), GETDATE(), @p_user_id)

      else

       update LN_contraparte_indicadores set valor_numerico =  iif(@p_contraparte % 2 = 1,0,1), modified = GETDATE(), modified_by = @p_user_id
       where contraparte = @p_contraparte and gestion = @imp_gestion and indicador = @imp_indic
       and visible = 1
     END



     FETCH NEXT FROM Indicadores INTO @imp_indic, @imp_clave , @imp_tipo_dato , @imp_gestion, @imp_contratista
    END
    CLOSE Indicadores
    DEALLOCATE Indicadores


   end

  end
 end


 /********************************* DATOS DE GESTIONES ANTERIORES *****************************************/


 IF (@accion = 'inicio_gestion_anterior' or @accion = 'valor_final_anterior') BEGIN
   -- gestion actual
   SELECT @gest = LN_gestiones.gestion
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.desde <= GETDATE()
      AND LN_gestiones.hasta >= GETDATE()
      AND LN_contrapartes.activo = 1
      AND LN_contrapartes.contraparte = @p_contraparte
   
   -- datos gestion anterior
   declare @inicio_gestion_anterior date = null 
   declare @gest_ant int = null
   
   declare @valor_numerico_ant float = null
   declare @valor_texto_ant    varchar(100) = null
   declare @valor_memo_ant     varchar(max) = null
   declare @valor_fecha_ant    datetime = null


   SELECT top 1 @inicio_gestion_anterior = desde, @gest_ant = LN_gestiones.gestion
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.hasta < GETDATE()
      AND LN_contrapartes.contraparte = @p_contraparte
      order by desde desc 
 
   declare @indic_gestion_anterior int = null
   select @indic_gestion_anterior = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = @accion 

   if (@accion = 'valor_final_anterior')
   begin
    select @valor_numerico_ant = valor_numerico ,
        @valor_texto_ant    = valor_texto,
        @valor_memo_ant     = convert(varchar(max),valor_memo),
        @valor_fecha_ant    = valor_fecha
      from LN_contraparte_indicadores
     where contraparte = @p_contraparte
       and gestion = @gest_ant
       and visible = 1
       and indicador = (select LN_indicadores.indicador
           from LN_indicadores
          where clave_indicador = 'SCORE_FINAL')
   end 


   if (@accion =  'inicio_gestion_anterior' and @indic_gestion_anterior is not null) begin

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

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

     else

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

   if (@accion = 'valor_final_anterior' and @indic_gestion_anterior is not null) begin

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

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, 
      valor_numerico, valor_texto, valor_memo, valor_fecha, 
      created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_gestion_anterior, 
       @valor_numerico_ant,
       @valor_texto_ant,
       @valor_memo_ant, 
       @valor_fecha_ant,
       GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @valor_numerico_ant,
          valor_texto = @valor_texto_ant, 
          valor_memo  = @valor_memo_ant, 
          valor_fecha = @valor_fecha_ant, 
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_gestion_anterior
        and visible = 1
    end

 END


 IF (@accion = 'indicadores_contraparte_gestion' or @accion = 'indicadores_contraparte_gestion_VRM' or @accion = 'indicadores_contraparte_gestion_ARCOR' ) BEGIN
 declare @search varchar(100) = 'SCORE'
 if (@accion = 'indicadores_contraparte_gestion') set @search = 'SCORE'
 if (@accion = 'indicadores_contraparte_gestion_VRM') set @search = 'VRM_SCORE'
 if (@accion = 'indicadores_contraparte_gestion_ARCOR') set @search = 'ARCOR_'

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

   SELECT distinct  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,
     LN_contraparte_indicadores.valor_numerico,
     LN_contraparte_indicadores.valor_texto,
     LN_contraparte_indicadores.valor_fecha,
     convert(varchar(max),LN_contraparte_indicadores.valor_memo) as valor_memo,
     LN_cliente_productos.orden_producto,

     

   case when (LN_indicadores.tipo_dato <> 'S' or LN_indicadores.clave_indicador = 'SCORE_RR' or LN_indicadores.clave_indicador = 'SCORE_VRM')
    then CONVERT(VARCHAR, ROUND(LN_contraparte_indicadores.valor_numerico,0))
    else (iif(convert(varchar(max),LN_contraparte_indicadores.valor_memo) is not null,convert(varchar(max),LN_contraparte_indicadores.valor_memo),LN_contraparte_indicadores.valor_texto))
    end as valor,
     
   /** COLOR **/
   CASE
    WHEN (LN_indicadores.clave_indicador = 'DEP_ECON' OR LN_indicadores.clave_indicador = 'DEP_ECON_CALC'  or LN_indicadores.clave_indicador = 'DEP_ECON_BALANCE') THEN
     case
      when LN_contraparte_indicadores.valor_numerico >= 70 then 'A72B2A'
      when LN_contraparte_indicadores.valor_numerico >= 50 then 'FFB81C'
      when LN_contraparte_indicadores.valor_numerico >= 0 then '63b68c'
      else NULL
     end

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

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

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

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


   /** COLOR TEXTO **/
   CASE


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

      else NULL
     end

    ELSE NULL
   END AS svg_data,


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

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

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

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

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

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

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

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


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


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

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

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


   ORDER BY LN_cliente_productos.orden_producto

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

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


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

   /** COLOR **/
   CASE

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

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

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

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

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

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

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


   /** COLOR TEXTO **/
   CASE

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

      else NULL
     end


    ELSE NULL
   END AS svg_data,


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

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

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

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


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

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

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

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

     ELSE null
   END AS textcolor_personalizado, 

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

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

    ELSE NULL
   END AS svg_data_personalizado,

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

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

   ELSE NULL
   END AS texto,


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

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

   ELSE NULL
   END AS titulo_texto,


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

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

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

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

   ORDER BY LN_cliente_productos.orden_producto

 END

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

   declare @cv int = (select iif(isnull(B.cv_existe,0) > 0, 1, 0)  
    FROM LN_gestiones G
    inner join IV_busquedas B on B.iv_busqueda = G.iv_busqueda 
    WHERE G.gestion = @gest
      AND G.contraparte = @p_contraparte)
   

   if (@indic_cv is not null) begin

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

     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @cv,
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_cv
        and visible = 1

    end

 END

 IF (@accion = 'COMERCIAL_LEGAL') BEGIN
    
   SELECT @gest = LN_gestiones.gestion, @p_cliente = ln_contrapartes.cliente
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.desde <= GETDATE()
      AND LN_gestiones.hasta >= GETDATE()
      AND LN_gestiones.vigente = 1 
      AND LN_contrapartes.activo = 1
      AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_CL int = null
   select @indic_CL = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = 'COMERCIAL_LEGAL'
    
   if (@indic_CL is not null) begin
    declare @CL int = null
    declare @ind_IC int = null 
    declare @CL_color varchar(10) = null
    select top 1 @CL = valor_numerico, 
                 @ind_IC = indicador , 
        @CL_color = 
        ISNULL( (select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel 
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico 
        and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
        and LN_cliente_nivel.indicador = @indic_CL),
       case 
        when valor_numerico <= 50 then 'A72B2A'
        when (valor_numerico > 50 and valor_numerico < 65) then 'FFB81C'
        when valor_numerico > 65 then '63b68c'
        else null
       end )
    from ln_contraparte_indicadores 
    where contraparte = @p_contraparte
      and gestion = @gest 
      and indicador in ( select LN_indicadores.indicador
                              from LN_indicadores where clave_indicador = 'SCORE_IC') 
    order by indicador 
       
    SELECT @p_contraparte as contraparte, @gest as gestion, @indic_CL as indicador, @CL as valor, @CL_color as color
    if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1 
        and indicador = @indic_CL)
     
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, valor_memo, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_CL, @CL, @CL_color, GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @CL,
          valor_memo = @CL_color, 
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_CL
        and visible = 1

    end

 END

 IF (@accion = 'COMPLIANCE') BEGIN
    
   SELECT @gest = LN_gestiones.gestion, @p_cliente = ln_contrapartes.cliente
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.desde <= GETDATE()
      AND LN_gestiones.hasta >= GETDATE()
      AND LN_gestiones.vigente = 1 
      AND LN_contrapartes.activo = 1
      AND LN_contrapartes.contraparte = @p_contraparte
 
   declare @indic_CO int = null
   select @indic_CO = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = 'COMPLIANCE'
    
   if (@indic_CO is not null) begin
    declare @CO char(1) = null 
    declare @ind_FID int = null 
    declare @CO_color varchar(10) = null
    select top 1 @CO = valor_texto, 
                 @ind_FID = indicador , 
        @CO_color = ISNULL((select LN_cliente_nivel.color_fondo
        from LN_cliente_nivel 
        where LN_cliente_nivel.cliente = @p_cliente 
        and LN_cliente_nivel.texto = LN_contraparte_indicadores.valor_texto
        and LN_cliente_nivel.indicador = @indic_CO),
       case 
        when LN_contraparte_indicadores.valor_texto = 'P' then 'A72B2A'
        when LN_contraparte_indicadores.valor_texto = 'E' then 'FF5C1C'
        when LN_contraparte_indicadores.valor_texto = 'R' then 'FFB81C'
        when LN_contraparte_indicadores.valor_texto = 'S' then '63b68c'
        when LN_contraparte_indicadores.valor_texto = 'N' then '63b68c'
        else NULL
        end)
    from ln_contraparte_indicadores 
    where contraparte = @p_contraparte
      and gestion = @gest 
      and indicador in ( select LN_indicadores.indicador
                              from LN_indicadores where clave_indicador = 'FIDECHECK') 
    order by indicador 
       
    SELECT @p_contraparte as contraparte, @gest as gestion, @indic_CO as indicador, @CO as valor, @CO_color as color
    if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1 
        and indicador = @indic_CO)
     
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_texto, valor_memo, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_CO, @CO, @CO_color, GETDATE(), @p_user_id)

     else

      UPDATE LN_contraparte_indicadores SET
          valor_texto = @CO,
          valor_memo = @CO_color, 
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_CO
        and visible = 1

    end

 END

 if (@accion = 'CANT_EMP' and @p_contraparte > 0) 
 BEGIN
   declare @ice int 
   select @ice = LN_indicadores.indicador,
       @gest = LN_gestiones.gestion,
       @p_cliente = LN_contrapartes.cliente, 
       @cuit = padrones.identificacion 
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_gestiones.vigente = 1 
   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 = 'CANT_EMP'
   and LN_productos.producto_id = 'cantempleados'

   if (@ice is not null and @gest IS NOT NULL and @cuit is not null) 
   begin

    declare @ce int = null 
    /* 18-19-2023: Primero se fija si tiene el campo completado en un documento presentado por la contraparte 
     Si lo tiene toma ese, y si no toma de lo devuelto por el SP obtener_empleados (que es lo que se ve en el Inf Comercial) */

    declare @valores_ce table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico int, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
    insert into @valores_ce 
           exec ln_docs_valores @p_contraparte, 'TRABAJADORES_PLANTILLA'
    select @ce = valor_numerico from @valores_ce 
    /* fin agregado 18-09-2023 */
    if (@ce is null or @ce = 0)
    begin
     declare @tabla_cant_empleados table (hombres int, mujeres int, total int, fecha varchar(10))
     insert into @tabla_cant_empleados 
         exec obtener_empleados @cuit 
     select @ce = total from @tabla_cant_empleados  
    end
    if (@ce is null)
    begin
     select @ce = empleados from ln_demo where contraparte = @p_contraparte
    end 
     
    if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and visible = 1
         and indicador = @ice)
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @ice, @ce, GETDATE(), @p_user_id)
    else
      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @ce,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @ice
      and visible = 1
   end
 END

 if (@accion = 'CANT_EMP_AMX' and @p_contraparte > 0) 
 BEGIN
   declare @icea int 
   select @icea = LN_indicadores.indicador,
       @gest = LN_gestiones.gestion,
       @p_cliente = LN_contrapartes.cliente, 
       @cuit = padrones.identificacion 
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_gestiones.vigente = 1 
   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 = 'CANT_EMP_AMX'
   and LN_productos.producto_id = 'cantempleadosamx'

   if (@icea is not null and @gest IS NOT NULL and @cuit is not null) 
   begin
    declare @cea int = null 
    declare @valores_cea table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico int, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
    insert into @valores_cea 
           exec ln_docs_valores @p_contraparte,  'ABOCADOS_100'
    select @cea = valor_numerico from @valores_cea  
     
    if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and visible = 1
         and indicador = @icea)
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @icea, @cea, GETDATE(), @p_user_id)
    else
      UPDATE LN_contraparte_indicadores SET
       valor_numerico = @cea,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @icea
      and visible = 1
   end
 END

 if (@accion = 'FAB_DIS_AMX' and @p_contraparte > 0) 
 BEGIN
   declare @iceFB int 
   select @iceFB = LN_indicadores.indicador,
       @gest = LN_gestiones.gestion,
       @p_cliente = LN_contrapartes.cliente, 
       @cuit = padrones.identificacion 
   from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 

   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
            and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_gestiones.vigente = 1 
   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 = 'FAB_DIS_AMX'
   and LN_productos.producto_id = 'fabdistamx'

   if (@iceFB is not null and @gest IS NOT NULL and @cuit is not null) 
   begin
    declare @ceFB varchar(10) = null 
    declare @valores_ceFB table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico int, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
    insert into @valores_ceFB
           exec ln_docs_valores @p_contraparte,  'FABRICANTES_DISTRIBUIDORES'
    select @ceFB = valor_texto from @valores_ceFB  
     
    if not exists (select contraparte, gestion, indicador
         from LN_contraparte_indicadores
         where contraparte = @p_contraparte
         and gestion = @gest
         and visible = 1
         and indicador = @iceFB)
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_texto, created, created_by)
      VALUES
      (@p_contraparte, @gest, @iceFB, @ceFB, GETDATE(), @p_user_id)
    else
      UPDATE LN_contraparte_indicadores SET
       valor_texto = @ceFB,
       modified = GETDATE(),
       modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @iceFB
      and visible = 1
   end
 END



 IF (@accion = 'ENRIESGO' or @accion = 'OPORTUNIDADES') 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_accion int = null
   select @indic_accion = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador = @accion

   if (@indic_accion is not null) begin

    declare @resultado bit = null
    declare @porque varchar(max) = null 
    IF (@accion = 'ENRIESGO')
    EXEC LN_enriesgo @p_contraparte, @resultado OUTPUT, @porque OUTPUT 

    IF (@accion = 'OPORTUNIDADES')
    EXEC LN_oportunidades @p_contraparte, @resultado OUTPUT, @porque OUTPUT 

    if (@resultado is not null) begin

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

      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, valor_memo, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_accion, @resultado, @porque, GETDATE(), @p_user_id)


     else

      UPDATE LN_contraparte_indicadores SET
          valor_numerico = @resultado,
          valor_memo = @porque, 
          modified = GETDATE(),
          modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
        AND gestion = @gest
        AND indicador = @indic_accion
        and visible = 1
    end

   end

 END

 IF (@accion = 'CUMPLIMIENTO_ULTIMO' or @accion = 'CUMPLIMIENTO_ANTERIORES') BEGIN

  SELECT @gest = LN_gestiones.gestion
   FROM LN_gestiones 
   INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte
 
  select @indic_accion = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = @accion

  declare @contratista int = (select id_imperium from LN_contrapartes where contraparte = @p_contraparte) 

  if (@indic_accion is not null) begin

   declare @p_ult_periodo_estado char(1) , 
     @p_ult_periodo_estado_txt varchar(20) , 
     @p_ult_periodo_orden  int   , 
     @p_ant_periodo_estado char(1) , 
     @p_ant_periodo_estado_txt varchar(20) , 
     @p_ant_periodo_orden  int
   exec [LN_Cumplimiento_Mensual]  @contratista, 
           @p_ult_periodo_estado output, 
           @p_ult_periodo_estado_txt output, 
           @p_ult_periodo_orden  output, 
           @p_ant_periodo_estado output, 
           @p_ant_periodo_estado_txt output, 
           @p_ant_periodo_orden  output
/*
select 'indicador', @indic_accion
select 'ultimo', @p_ult_periodo_orden, @p_ult_periodo_estado, @p_ult_periodo_estado_txt
select 'anteriores', @p_ant_periodo_orden, @p_ant_periodo_estado, @p_ant_periodo_estado_txt
*/

   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)
   BEGIN
    --select 'insert'
    IF (@accion = 'CUMPLIMIENTO_ULTIMO')
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @p_ult_periodo_orden, @p_ult_periodo_estado, @p_ult_periodo_estado_txt, GETDATE(), @p_user_id)
    IF (@accion = 'CUMPLIMIENTO_ANTERIORES')
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @p_ant_periodo_orden, @p_ant_periodo_estado, @p_ant_periodo_estado_txt, GETDATE(), @p_user_id) 
   END
   ELSE
   BEGIN
    --select 'update' 
    IF (@accion = 'CUMPLIMIENTO_ULTIMO')
     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @p_ult_periodo_orden,
       valor_texto = @p_ult_periodo_estado, 
       valor_memo = @p_ult_periodo_estado_txt, 
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
    IF (@accion = 'CUMPLIMIENTO_ANTERIORES')
     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @p_ant_periodo_orden,
       valor_texto = @p_ant_periodo_estado, 
       valor_memo = @p_ant_periodo_estado_txt, 
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
   END 
  END
 END 

 IF (@accion = 'CUMPLIMIENTO_ULTIMO_MES' or @accion = 'CUMPLIMIENTO_ART_VIDA_931' or @accion = 'PORCENTAJE_ART_VIDA_931' ) BEGIN

  SELECT @gest = LN_gestiones.gestion
   FROM LN_gestiones 
   INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte
 
  select @indic_accion = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = @accion

  if (@indic_accion is not null) begin

   declare @p_puntos_cum int = null, 
     @p_estado_cum char(100) = null , 
     @p_estado_txt_cum varchar(500) = null , 
     @p_color_cum varchar(20) = null 
   IF (@accion = 'CUMPLIMIENTO_ULTIMO_MES')
   exec [LN_Cumplimiento_ultimo_mes]   @p_contraparte, 
            null,
            @p_puntos_cum output, 
            @p_estado_cum output, 
            @p_estado_txt_cum output, 
            @p_color_cum output

   if (@accion = 'CUMPLIMIENTO_ART_VIDA_931')
   exec [LN_CUMPLIMIENTO_ART_VIDA_931] @p_contraparte, 
            null,
            @p_puntos_cum output, 
            @p_estado_cum output, 
            @p_estado_txt_cum output, 
            @p_color_cum output
   if (@accion = 'PORCENTAJE_ART_VIDA_931')
   exec [LN_PORCENTAJE_ART_VIDA_931] @p_contraparte, 
            null,
            @p_puntos_cum output,
            @p_estado_cum output
   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @p_puntos_cum, @p_estado_cum, @p_estado_txt_cum, GETDATE(), @p_user_id)
   ELSE
     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @p_puntos_cum,
       valor_texto = @p_estado_cum, 
       valor_memo = @p_estado_txt_cum, 
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
  END
 END 

 IF (@accion = 'CUMPLIMIENTO_MESES_ANTERIORES') BEGIN

  SELECT @gest = LN_gestiones.gestion, @p_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
   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.contraparte = @p_contraparte
 
  select @indic_accion = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = @accion

  if (@indic_accion is not null) begin

   declare @p_puntos_cum_ant int = null
   declare @texto_cum_ant varchar(max) = null
   declare @texto_largo_cum_ant varchar(max) = null 
   declare @p_color_cum_ant varchar(10) = null 


   exec [LN_Cumplimiento_meses_anteriores] @p_contraparte, 
             null,
             @p_puntos_cum_ant output, 
             @texto_cum_ant output, 
             @texto_largo_cum_ant output, 
             @p_color_cum_ant output 

   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, valor_texto, valor_memo, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @p_puntos_cum_ant, @texto_cum_ant, @texto_largo_cum_ant, GETDATE(), @p_user_id)
   ELSE

     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @p_puntos_cum_ant,
       valor_texto = @texto_cum_ant,
       valor_memo = @texto_largo_cum_ant,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
  END
 END 


 IF (@accion = 'CUMPLIMIENTO_ANUAL') 
 BEGIN
  declare @contratista_ca int = null 
  declare @t_cuma table (cump int)
  declare @p_cuma int = null
  declare @p_cuma_txt varchar(10)  = null


  SELECT @gest = LN_gestiones.gestion, @contratista_ca = LN_CONTRAPARTES.id_imperium 
   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
 
  select @indic_accion = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = @accion

  if (@indic_accion is not null) begin
   insert into @t_cuma 
   exec [Imperium_contratista_Cumplimiento_General]  @contratista_ca 
   select top 1 @p_cuma = cump from @t_cuma 
   if (@p_cuma is not null)
   begin
      set @p_cuma_txt =  convert(varchar, @p_cuma) + '%'
   end         
   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)
   begin
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, valor_texto, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @p_cuma, @p_cuma_txt, GETDATE(), @p_user_id)
   end 
   ELSE
   begin

     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @p_cuma,
       valor_texto =  @p_cuma_txt,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
   end
  END
 END 


 
 IF (@accion = 'DP_301' or @accion = 'DP_351'  or @accion = 'DP_FECHA_INFO') 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
 
   select @indic_accion = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = @accion

   if (@indic_accion is not null) begin

    declare @valor_dp int = null
    declare @fecha_dp date = null 

    IF (@accion = 'DP_301')
    begin
     if exists (select * from deuda_previsional
         where cuit = @cuit 
           and visible = 1
           and codigo = 301) 
      set @valor_dp = 1 
     else 
      set @valor_dp = 0
    end 
    IF (@accion = 'DP_351')
    begin
     if exists (select * from deuda_previsional
         where cuit = @cuit 
           and visible = 1
           and codigo = 351) 
      set @valor_dp = 1 
     else 
      set @valor_dp = 0
    end 
    IF (@accion = 'DP_FECHA_INFO')
    begin
     set @fecha_dp =  (select max(fecha_info) from deuda_previsional
            where cuit = @cuit 
                 and visible = 1) 
     if (@fecha_dp is null) 
      set @fecha_dp =  (select max(fecha_info) from deuda_previsional
                where visible = 1) 
    end 
    
    --select @valor_dp 
    if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @valor_dp, @fecha_dp, GETDATE(), @p_user_id)
    else
     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @valor_dp,
       valor_fecha = @fecha_dp, 
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
   end


 END

 IF (@accion = 'ganancias' or
  @accion = 'bienes' or 
  @accion = 'iva' or 
  @accion = 'riesgo_trabajo' or 
  @accion = 'contrib_social' or 
  @accion = 'aportes_sociales' or 
  @accion = 'contrib_obra_social' or 
  @accion = 'aportes_obra_social' or 
  @accion = 'seguro_obligatorio' or 
  @accion = 'fecha_cuentas_tributarias'
  ) 
 BEGIN

   select @indic_accion = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion,
    @p_cliente = LN_contrapartes.cliente, 
    @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
               and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion
      and LN_productos.producto_id = 'cuentastributarias'

  if (@indic_accion is not null) begin

   declare @nombre_campo varchar(50) 
   if (@accion = 'ganancias')    set @nombre_campo = 'pae_impuesto_ganancias'
   if (@accion = 'bienes')     set @nombre_campo = 'pae_impuesto_bienes'
   if (@accion = 'iva')     set @nombre_campo = 'pae_iva'
   if (@accion = 'riesgo_trabajo')   set @nombre_campo = 'pae_riesgo_trabajo'
   if (@accion = 'contrib_social')   set @nombre_campo = 'pae_contrib_social'
   if (@accion = 'aportes_sociales')  set @nombre_campo = 'pae_aportes_sociales'
   if (@accion = 'contrib_obra_social') set @nombre_campo = 'pae_contrib_obra_social'
   if (@accion = 'aportes_obra_social') set @nombre_campo = 'pae_aportes_obra_social'
   if (@accion = 'seguro_obligatorio')  set @nombre_campo = 'pae_seguro_obligatorio'

   declare @contratista_1 int = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
   declare @periodovencido int = null 
   set @periodovencido = (select max(periodo)
            from led_docs 
           where tipo_doc = 1010 
             and contratista_1 = @contratista_1 
             and contratista = contratista_1 
             and estado_doc = 'V')
   declare @cuentas_tributarias decimal(16,2) = null 
   declare @fecha_cuentas_tributarias date = null
   if (@accion = 'fecha_cuentas_tributarias')
   begin
    set @cuentas_tributarias = @periodovencido
    if (@periodovencido is not null)
    set @fecha_cuentas_tributarias = convert(date,SUBSTRING(convert(char,@periodovencido),1,4) + '-' + 
                                     SUBSTRING(convert(char,@periodovencido),5,2) + '-01') 
   end 
   else 
   begin
    set @cuentas_tributarias = (select isnull(led_campos_doc.valor_numerico,0) 
    from led_campos_tipo_doc  
    left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1010 and periodo = @periodovencido and contratista_1 = @contratista_1 and estado_doc = 'V' and contratista = contratista_1)
      and led_campos_tipo_doc.campo_activo = 1
      and nombre_campo = @nombre_campo) 
    --set @cuentas_tributarias = ISNULL(@cuentas_tributarias,0)
    /* 29/03/2022 No se guarda mas 0, cuando no hay documento */
    select @accion as cuenta, @cuentas_tributarias as valor
   end 
   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)

     if (@accion = 'fecha_cuentas_tributarias')
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_fecha, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @fecha_cuentas_tributarias,  GETDATE(), @p_user_id)
     else 
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @cuentas_tributarias,  GETDATE(), @p_user_id)
   else
     if (@accion = 'fecha_cuentas_tributarias')
     UPDATE LN_contraparte_indicadores SET
       valor_fecha = @fecha_cuentas_tributarias,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
     else 
     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @cuentas_tributarias,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
  end

 END
 /*
  IF (@accion = 'contingencia_laboral' or
  @accion = 'fecha_contingencia_laboral' or
  @accion = 'total_empleados' or
  @accion = 'empleados_afectados' or
  @accion = 'porcentaje_contingencia' or 
  @accion = 'monto_deuda_previsional'
  ) 
  BEGIN
 
   select @indic_accion = LN_indicadores.indicador,
  @gest = LN_gestiones.gestion,
  @p_cliente = LN_contrapartes.cliente, 
  @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
       and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion
      and LN_productos.producto_id = 'contingenciaLaboral'
 
  if (@indic_accion is not null) begin
 
  declare @contratista_11 int = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
  declare @periodovencido1 int = null 
 
  set @periodovencido1 = (select max(periodo)
   from led_docs 
  where tipo_doc = 1010 
    and contratista_1 = @contratista_11 
    and contratista = contratista_1 
    and estado_doc = 'V'
    and exists 
  (select isnull(led_campos_doc.valor_numerico,0) 
  from led_campos_tipo_doc  
  left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
 
  where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 2 
        and contratista_1 = @contratista_11 
            and estado_doc = 'V' and contratista = contratista_1)
    and led_campos_tipo_doc.campo_activo = 1
    and isnull(led_campos_doc.valor_numerico,0) != 0
    ))
 
 
  declare @total_cuentas_tributarias decimal(16,2) = null 
  declare @fecha_contingencia_laboral date = null
  if (@accion = 'fecha_contingencia_laboral')
  begin
  if (@periodovencido1 is not null)
  set @fecha_contingencia_laboral = convert(date,SUBSTRING(convert(char,@periodovencido1),1,4) + '-' + 
                                    SUBSTRING(convert(char,@periodovencido1),5,2) + '-01') 
  end 
  else
  begin
  set @total_cuentas_tributarias = (select sum(isnull(led_campos_doc.valor_numerico,0) )
  from led_campos_tipo_doc  
  left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
 
  where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1010 
        and periodo = @periodovencido1 and contratista_1 = @contratista_11 
            and estado_doc = 'V' and contratista = contratista_1)
    and led_campos_tipo_doc.campo_activo = 1
    and nombre_campo in 
        ('pae_impuesto_ganancias',
  'pae_impuesto_bienes',
  'pae_iva',
  'pae_riesgo_trabajo',
  'pae_contrib_social',
  'pae_aportes_sociales',
  'pae_contrib_obra_social',
  'pae_aportes_obra_social',
  'pae_seguro_obligatorio')
    ) 
 
  declare @total_empleados int = (select isnull(led_campos_doc.valor_numerico,0) 
  from led_campos_tipo_doc  
  left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
 
  where led_campos_doc.doc_id = (select doc_id from led_docs where tipo_doc = 2 
        and periodo = @periodovencido1 and contratista_1 = @contratista_11 
            and estado_doc = 'V' and contratista = contratista_1)
    and led_campos_tipo_doc.campo_activo = 1
    
    ) 
 
  declare @total_empleados_afectados int = 
  (select COUNT(*) from led_empleados_periodo 
  where contratista = @contratista_11 and periodo = @periodovencido1 
  and contratista = contratista_1) 
  declare @porcentaje_afectados decimal(10,2) = null
  declare @porcentaje_cuentas_tributarias decimal(10,2) = null 
  if (@total_empleados != 0) 
  begin
  set @porcentaje_afectados = (100 * @total_empleados_afectados) / @total_empleados 
  set @porcentaje_cuentas_tributarias = @total_cuentas_tributarias * @porcentaje_afectados / 100
  end 
  if (@total_empleados_afectados = 0 and @total_empleados is null) 
  begin
  set @total_empleados_afectados = null
  end 
 
  select @accion as accion, @periodovencido1 as periodo, 
  @total_empleados as total_empleados, @total_empleados_afectados as empleados_afectados, 
  @porcentaje_afectados as porcentaje, 
  @total_cuentas_tributarias as total_cuentas, @porcentaje_cuentas_tributarias as porcentaje_cuentas
 
  declare @valor_contingencia int
  IF (@accion = 'contingencia_laboral') set @valor_contingencia = @porcentaje_cuentas_tributarias
  IF (@accion = 'total_empleados')      set @valor_contingencia = @total_empleados
  IF (@accion = 'empleados_afectados')  set @valor_contingencia = @total_empleados_afectados
  IF (@accion = 'porcentaje_contingencia')  set @valor_contingencia = @porcentaje_afectados
  IF (@accion = 'monto_deuda_previsional')  set @valor_contingencia = @total_cuentas_tributarias
 
 
 
  end 
  if not exists (select contraparte, gestion, indicador
  from LN_contraparte_indicadores
  where contraparte = @p_contraparte
  and gestion = @gest
  and visible = 1
  and indicador = @indic_accion)
 
  if (@accion = 'fecha_contingencia_laboral')
  INSERT INTO LN_contraparte_indicadores
  (contraparte, gestion, indicador, valor_fecha, created, created_by)
  VALUES
  (@p_contraparte, @gest, @indic_accion, @fecha_contingencia_laboral,  GETDATE(), @p_user_id)
  else 
  INSERT INTO LN_contraparte_indicadores
  (contraparte, gestion, indicador, valor_numerico, created, created_by)
  VALUES
  (@p_contraparte, @gest, @indic_accion, @valor_contingencia,  GETDATE(), @p_user_id)
  else
  if (@accion = 'fecha_contingencia_laboral')
  UPDATE LN_contraparte_indicadores SET
  valor_fecha = @fecha_contingencia_laboral,
  modified = GETDATE(),
  modified_by = @p_user_id
  WHERE contraparte = @p_contraparte
  AND gestion = @gest
  AND indicador = @indic_accion
  and visible = 1
  else 
  UPDATE LN_contraparte_indicadores SET
  valor_numerico = @valor_contingencia,
  modified = GETDATE(),
  modified_by = @p_user_id
  WHERE contraparte = @p_contraparte
  AND gestion = @gest
  AND indicador = @indic_accion
  and visible = 1
  end
 
  END
 
  */
 

 /* 30/09/2021: se cambió por: */

 IF (@accion = 'contingencia_laboral' or
  @accion = 'fecha_contingencia_laboral' or
  @accion = 'total_empleados' or
  @accion = 'empleados_afectados' or
  @accion = 'porcentaje_contingencia' or 
  @accion = 'monto_deuda_previsional'
  ) 
 BEGIN

   select @indic_accion = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion,
    @p_cliente = LN_contrapartes.cliente, 
    @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
               and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion
      and LN_productos.producto_id = 'contingenciaLaboral'

  if (@indic_accion is not null) begin

   declare @contratista_11 int = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
   declare @periodovencido1 int = null 

   set @periodovencido1 = (select max(l1.periodo)
           from led_docs l1 
          inner join led_docs l2 on l2.periodo = l1.periodo 
          inner join led_docs l3 on l3.periodo = l1.periodo 

            where 
            /*l1.tipo_doc = 1033
             and l1.contratista_1 = @contratista_11 
             and l1.contratista = l1.contratista_1 
             and l1.estado_doc = 'V' 
            
             and */
 l2.tipo_doc in (1032,1033)
           and l2.contratista_1 = @contratista_11 
           and l2.contratista = l2.contratista_1 
           and l2.estado_doc = 'V'

           and l3.tipo_doc = 1010
           and l3.contratista_1 = @contratista_11 
           and l3.contratista = l2.contratista_1 
           and l3.estado_doc = 'V') 

   declare @total_cuentas_tributarias decimal(16,2) = null 
   declare @total_cuentas_tributarias_1010 decimal(16,2) = null 
   declare @total_cuentas_tributarias_1033 decimal(16,2) = null 
   declare @total_empleados int = null 
   declare @total_empleados_afectados int = null 
   declare @fecha_contingencia_laboral date = null
   
   

   if (@periodovencido1 is not null)
   begin 
    if (@accion = 'fecha_contingencia_laboral')
    begin
     set @fecha_contingencia_laboral = convert(date,SUBSTRING(convert(char,@periodovencido1),1,4) + '-' + 
               SUBSTRING(convert(char,@periodovencido1),5,2) + '-01') 
    end 
    else
    begin
     set @total_cuentas_tributarias_1033 = (select sum(isnull(led_campos_doc.valor_numerico,0) )
     from led_campos_tipo_doc  
     left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
     where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
               and periodo = @periodovencido1 and contratista_1 = @contratista_11 
                     and estado_doc = 'V' and contratista = contratista_1)
       and led_campos_tipo_doc.campo_activo = 1
       and nombre_campo in 
             ('028segurovidaobligatorio',
         '301aportessegsoc',
         '302aportesoss',
         '312riesgotrabajo',
         '351contribsegsocial',
         '352contribobrasocial','afipnomina'))

/* REUNIÓN CON PAE 30-12-2021 SE SOLICITA MNODIFICAR EL CÁLCULO DE LA CONTINGENCIA LABORAL Y QUE NO SUME LOS VALORES DEL DOC 1033 O SEA DEL 931 
*/

     set @total_cuentas_tributarias_1010 = (select sum(isnull(led_campos_doc.valor_numerico,0) )
     from led_campos_tipo_doc  
     left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
     where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1010
               and periodo = @periodovencido1 and contratista_1 = @contratista_11 
                     and estado_doc = 'V' and contratista = contratista_1)
       and led_campos_tipo_doc.campo_activo = 1
       and nombre_campo in 
             ('pae_contrib_social',
         'pae_aportes_sociales'))


/*select * from led_tipos_doc where tipo_doc in (1010,1032,1033,1003)*/


     set @total_cuentas_tributarias_1033 = 0
     set @total_cuentas_tributarias = isnull(@total_cuentas_tributarias_1010,0) + isnull(@total_cuentas_tributarias_1033 ,0) 

     set @total_empleados = (select isnull(led_campos_doc.valor_numerico,0) 
     from led_campos_tipo_doc  
     left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
     where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc in (1032,1033)
               and periodo = @periodovencido1 and contratista_1 = @contratista_11 
                     and estado_doc = 'V' and contratista = contratista_1)
       and led_campos_tipo_doc.campo_activo = 1
       and nombre_campo in ('afipnomina')
      
       ) 

     set @total_empleados_afectados = 
     (select COUNT(*) from led_empleados_periodo 
     where contratista = @contratista_11 and periodo = @periodovencido1 
     and contratista = contratista_1) 
     declare @porcentaje_afectados decimal(10,2) = null
     declare @porcentaje_cuentas_tributarias decimal(10,2) = null 
     if (@total_empleados != 0) 
     begin
      set @porcentaje_afectados = (100 * @total_empleados_afectados) / @total_empleados 
      set @porcentaje_cuentas_tributarias = @total_cuentas_tributarias * @porcentaje_afectados / 100
     end 
     if (@total_empleados_afectados = 0 and @total_empleados is null) 
     begin
      set @total_empleados_afectados = null
     end 

    end
        
   end     

   select @accion as accion, @periodovencido1 as periodo, 
   @total_empleados as total_empleados, @total_empleados_afectados as empleados_afectados, 
   @porcentaje_afectados as porcentaje, 
   @total_cuentas_tributarias as total_cuentas, @porcentaje_cuentas_tributarias as porcentaje_cuentas

   declare @valor_contingencia int
   IF (@accion = 'contingencia_laboral') set @valor_contingencia = @porcentaje_cuentas_tributarias
   IF (@accion = 'total_empleados')      set @valor_contingencia = @total_empleados
   IF (@accion = 'empleados_afectados')  set @valor_contingencia = @total_empleados_afectados
   IF (@accion = 'porcentaje_contingencia')  set @valor_contingencia = @porcentaje_afectados
   IF (@accion = 'monto_deuda_previsional')  set @valor_contingencia = @total_cuentas_tributarias
   
   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)

     if (@accion = 'fecha_contingencia_laboral')
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_fecha, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @fecha_contingencia_laboral,  GETDATE(), @p_user_id)
     else 
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @valor_contingencia,  GETDATE(), @p_user_id)
   else
     if (@accion = 'fecha_contingencia_laboral')
     UPDATE LN_contraparte_indicadores SET
       valor_fecha = @fecha_contingencia_laboral,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
     else 
     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @valor_contingencia,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
  end

 END


 IF (@accion = 'monto_deuda_total_previsional' or @accion = 'fecha_deuda_total_provisional') 
 /*
  Sumatoria de 
  Contribución social (Reporte de cuentas tributarias)
  Aporte social (Reporte de cuentas tributarias)
  Contribución social (Nuevo documento de F931 Pago)
  Aporte social (Nuevo documento de F931 Pago)
  Total de deuda en planes(Total de planes - total abonado) (Producto Control Fiscal)
  */

 BEGIN

  select @indic_accion = LN_indicadores.indicador,
   @gest = LN_gestiones.gestion,
   @p_cliente = LN_contrapartes.cliente, 
   @cuit = padrones.identificacion 
    from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
   inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
   inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
   inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
   inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
              and LN_productos.producto = LN_cliente_productos.producto)
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
   where LN_contrapartes.contraparte = @p_contraparte
     and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
     and LN_gestiones.vigente = 1 
     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 = @accion
     and LN_productos.producto_id = 'deudastotalprevisional'

 if (@indic_accion is not null) begin

  declare @contratista_dp int = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 

  declare @periodovencido_dtp int = null 
  declare @doc_id_dp bigint = null 
  declare @monto_fiscal_dp decimal(16,2) = null 
  declare @total_cuentas_tributarias_dp decimal(16,2) = null 
  declare @total_cuentas_tributarias_dp_1010 decimal(16,2) = null 
  declare @total_cuentas_tributarias_dp_1033 decimal(16,2) = null 

  set @periodovencido_dtp = (select max(l1.periodo)
             from led_docs l1 
            inner join led_docs l2 on l2.periodo = l1.periodo 
            inner join led_docs l3 on l3.periodo = l1.periodo 

              where l1.tipo_doc = 1033
             and l1.contratista_1 = @contratista_dp 
             and l1.contratista = l1.contratista_1 
             and l1.estado_doc = 'V'

             and l2.tipo_doc = 1031
             and l2.contratista_1 = @contratista_dp 
             and l2.contratista = l2.contratista_1 
             and l2.estado_doc = 'V'

             and l3.tipo_doc = 1010
             and l3.contratista_1 = @contratista_dp 
             and l3.contratista = l2.contratista_1 
             and l3.estado_doc = 'V') 
  
  declare @fecha_dtp date = null
  if (@periodovencido_dtp is not null)
  begin
   set @fecha_dtp = convert(date,SUBSTRING(convert(char,@periodovencido_dtp),1,4) + '-' + 
              SUBSTRING(convert(char,@periodovencido_dtp),5,2) + '-01') 
    
   select @doc_id_dp = max(doc_id) 
        from led_docs 
       where tipo_doc = 1031 
         and contratista_1 = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
         and contratista = contratista_1 
         and estado_doc = 'V'
         and periodo = @periodovencido_dtp
        
    select @monto_fiscal_dp = (sum(monto_total) - sum(importe_cancelado))
        from led_planes_pagos
       where doc_id = @doc_id_dp and estado is not null and estado != 'G'

   set @total_cuentas_tributarias_dp_1033 = (select sum(isnull(led_campos_doc.valor_numerico,0) )
      from led_campos_tipo_doc  
      left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
      where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
                and periodo = @periodovencido_dtp and contratista_1 = @contratista_dp 
                      and estado_doc = 'V' and contratista = contratista_1)
        and led_campos_tipo_doc.campo_activo = 1
        and nombre_campo in 
              ('301aportessegsoc',
          '352contribobrasocial'))



   set @total_cuentas_tributarias_dp_1010 = (select sum(isnull(led_campos_doc.valor_numerico,0) )
      from led_campos_tipo_doc  
      left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
      where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1010
                and periodo = @periodovencido_dtp and contratista_1 = @contratista_dp 
                      and estado_doc = 'V' and contratista = contratista_1)
        and led_campos_tipo_doc.campo_activo = 1
        and nombre_campo in 
              ('pae_contrib_social',
          'pae_aportes_sociales'))

   set @monto_fiscal_dp = @total_cuentas_tributarias_dp_1010 + @total_cuentas_tributarias_dp_1033 + @monto_fiscal_dp

   /*SELECT @monto_fiscal_dp AS pppp*/
  end 

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

     if (@accion = 'fecha_deuda_total_provisional')
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_fecha, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_accion, @fecha_dtp,  GETDATE(), @p_user_id)
     else 
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_accion, @monto_fiscal_dp,  GETDATE(), @p_user_id)
   else
     if (@accion = 'fecha_deuda_total_provisional')
      UPDATE LN_contraparte_indicadores SET
        valor_fecha = @fecha_dtp,
        modified = GETDATE(),
        modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_accion
       and visible = 1
     else
      UPDATE LN_contraparte_indicadores SET
        valor_numerico = @monto_fiscal_dp,
        modified = GETDATE(),
        modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_accion
       and visible = 1
  end

 END

 
 IF (@accion = 'fecha_plan_pagos' or
  @accion = 'monto_plan_pagos'
  ) 
 BEGIN

   select @indic_accion = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion,
    @p_cliente = LN_contrapartes.cliente, 
    @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
               and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion
      and LN_productos.producto_id = 'planespago'

  if (@indic_accion is not null) begin

   declare @fecha_plan date  = null 
   declare @monto_plan money = null 
   select top 1 @fecha_plan = fecha, @monto_plan = monto 
    from ln_contraparte_plan_pagos where contraparte = @p_contraparte and visible = 1
   order by fecha desc  
  
     
   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)

     if (@accion = 'fecha_plan_pagos')
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_fecha, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_accion, @fecha_plan,  GETDATE(), @p_user_id)
     else 
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_numerico, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_accion, @monto_plan,  GETDATE(), @p_user_id)
   else
     if (@accion = 'fecha_plan_pagos')
      UPDATE LN_contraparte_indicadores SET
        valor_fecha = @fecha_plan,
        modified = GETDATE(),
        modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_accion
       and visible = 1
     else 
      UPDATE LN_contraparte_indicadores SET
        valor_numerico = @monto_plan,
        modified = GETDATE(),
        modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_accion
       and visible = 1
  end

 END


 IF (@accion = 'pago_sindicato' or
  @accion = 'periodo_pago_sindicato'
  ) 
 BEGIN

   select @indic_accion = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion,
    @p_cliente = LN_contrapartes.cliente, 
    @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
               and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion
      and LN_productos.producto_id = 'PagoSindical'

  if (@indic_accion is not null) begin

   declare @contratista_12 int = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
   declare @periodovencido2 int = null 
   set @periodovencido2 = (select max(periodo)
            from led_docs 
           where tipo_doc in ( 648 , 1035 ) 
             and contratista_1 = @contratista_12 
             and contratista = contratista_1 
             --and estado_doc = 'V'
             )
   declare @pago_sindicato char(1) = null 
      declare @periodo_pago_sindicato date = null 
   if (@periodovencido2 is not null)
   begin 
    set @pago_sindicato = (select top 1 estado_doc from led_docs where tipo_doc in ( 648 , 1035 )  
             and contratista_1 = @contratista_12 
             and contratista = contratista_1 
             and periodo = @periodovencido2
             order by doc_id desc)
    set @periodo_pago_sindicato = convert(date,SUBSTRING(convert(char,@periodovencido2),1,4) + '-' + 
               SUBSTRING(convert(char,@periodovencido2),5,2) + '-01') 
   end 

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

     if (@accion = 'periodo_pago_sindicato')
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_fecha, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @periodo_pago_sindicato,  GETDATE(), @p_user_id)
     else 
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_texto, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @pago_sindicato,  GETDATE(), @p_user_id)
   else
     if (@accion = 'periodo_pago_sindicato')
     UPDATE LN_contraparte_indicadores SET
       valor_fecha = @periodo_pago_sindicato,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
     else 
     UPDATE LN_contraparte_indicadores SET
       valor_texto = @pago_sindicato,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
  end

 END


 
 IF (@accion = 'pago_resp_civil' or 
  @accion = 'fecha_vigencia_resp_civil'
  ) 
 BEGIN

   select @indic_accion = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion,
    @p_cliente = LN_contrapartes.cliente, 
    @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
               and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion
      and LN_productos.producto_id = 'poliza_responsabilidad_civil'

  if (@indic_accion is not null) begin

   declare @contratista_13 int = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
   declare @periodovencido3 int = null 
   set @periodovencido3 = (select max(periodo)
            from led_docs 
           where tipo_doc = 1013 
             and contratista_1 = @contratista_13 
             and contratista = contratista_1 
             and estado_doc = 'V')

   declare @pago_resp_civil char(1) = null 
      declare @fecha_vigencia_resp_civil date = null 
   if (@periodovencido3 is not null)
   begin  
    set @fecha_vigencia_resp_civil = (select led_docs.fecha_vigencia 
                   from led_docs where tipo_doc = 1013
                                         and periodo = @periodovencido3 
                 and contratista_1 = @contratista_13 
                 and estado_doc = 'V' 
                 and contratista = contratista_1) 
    if (@fecha_vigencia_resp_civil >= getdate())
    begin
     set @pago_resp_civil = 'V'
    end 
    /*
     else 
     begin
     -- vemos si hay documentos posteriores al verificado
     /* 25/02/2022: Se fija el estado del ultimo solicitado (sacamos la condición que sea posterior al ultimo verificado)*/

     set @pago_resp_civil = 'R'
         declare @estado_doc_rs char(1)  = null 
     select top 1 @estado_doc_rs = estado_doc
       from led_docs 
      where tipo_doc = 1013 
        and contratista_1 = @contratista_13 
        and contratista = contratista_1 
        and periodo > @periodovencido3
        and estado_doc != 'V'
       order by doc_id desc
     if (@estado_doc_rs is not null)
     begin
     set @pago_resp_civil = @estado_doc_rs
     set @fecha_vigencia_resp_civil = null 
     end 
     end*/

   end


   /* 25/02/2022: Se fija el estado del ultimo solicitado (sacamos la condición que sea posterior al ultimo verificado)*/
    
   if (@fecha_vigencia_resp_civil is null or @fecha_vigencia_resp_civil < getdate())
   begin 
     set @pago_resp_civil = null 
     set @fecha_vigencia_resp_civil = null 
     select top 1 @pago_resp_civil = estado_doc,
        @fecha_vigencia_resp_civil = fecha_vigencia 
       from led_docs 
      where tipo_doc = 1013 
        and contratista_1 = @contratista_13 
        and contratista = contratista_1 
        --and periodo > @periodovencido3
        --and estado_doc != 'V'
       order by doc_id desc
   end


   select @fecha_vigencia_resp_civil vigencia, @pago_resp_civil pago
   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)

     if (@accion = 'fecha_vigencia_resp_civil')
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_fecha, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @fecha_vigencia_resp_civil,  GETDATE(), @p_user_id)
     else 
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_texto, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion, @pago_resp_civil,  GETDATE(), @p_user_id)
   else
     if (@accion = 'fecha_vigencia_resp_civil')
     UPDATE LN_contraparte_indicadores SET
       valor_fecha = @fecha_vigencia_resp_civil,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
     else 
     UPDATE LN_contraparte_indicadores SET
       valor_texto = @pago_resp_civil,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion
      and visible = 1
  end

 END

 IF (@accion = 'fecha_control_fiscal' or
  @accion = 'total_control_fiscal' or
  @accion = 'abonado_control_fiscal' or
  @accion = 'deuda_control_fiscal' or 
  @accion = 'peor_situacion_planes' 
  ) 
 BEGIN

   select @indic_accion = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion,
    @p_cliente = LN_contrapartes.cliente, 
    @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
               and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion
      and LN_productos.producto_id = 'controlFiscal'
  
  --select @indic_accion as indicador 
  if (@indic_accion is not null) begin

   declare @periodo_cf varchar(10) = null 
   declare @doc_id_cf bigint = null 

   select @periodo_cf = max(periodo)
     from led_docs 
    where tipo_doc = 1031 
      and contratista_1 = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
      and contratista = contratista_1 
      and estado_doc = 'V'

   select @doc_id_cf = max(doc_id) 
     from led_docs 
    where tipo_doc = 1031 
      and contratista_1 = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
      and contratista = contratista_1 
      and estado_doc = 'V'
      and periodo = @periodo_cf
             
   declare @monto_fiscal decimal(20,2) = null 

   declare @fecha_control_fiscal date = null
   if (@accion = 'fecha_control_fiscal')
   begin
    if (@periodo_cf is not null)
    set @fecha_control_fiscal = convert(date,SUBSTRING(convert(char,@periodo_cf),1,4) + '-' + 
                                             SUBSTRING(convert(char,@periodo_cf),5,2) + '-01') 
    select @fecha_control_fiscal as fecha 
   end 


   declare @peor varchar(20)
   if (@accion = 'peor_situacion_planes')
   begin
    select @peor = 
    case estado
    when 'R' then 'CAIDO' 
    when 'A' then 'ATRASADO' 
    when 'G' then 'REEMPLAZADO' 
    when 'V' then 'VIGENTE' 
    when 'B' then 'CUMPLIDO' 
    else null
    end
     
      from led_planes_pagos
     where doc_id = @doc_id_cf 
     and estado is not null 
     and estado != 'G'
   end


   --select @periodo_cf as periodo
   --select @doc_id_cf as doc_id 
   if (@accion = 'total_control_fiscal')
   begin
    select @monto_fiscal = sum(monto_total)
      from led_planes_pagos
     where doc_id = @doc_id_cf and estado is not null and estado != 'G'
   end
   if (@accion = 'abonado_control_fiscal')
   begin
    select @monto_fiscal = sum(importe_cancelado)
      from led_planes_pagos
     where doc_id = @doc_id_cf and estado is not null and estado != 'G' 
   end
   if (@accion = 'deuda_control_fiscal')
   begin
      select @monto_fiscal = (sum(monto_total) - sum(importe_cancelado))
     from led_planes_pagos
    where doc_id = @doc_id_cf and estado is not null and estado != 'G'
   end

   --select @monto_fiscal as monto 

   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion)
   begin
     if (@accion = 'fecha_control_fiscal')
     begin
      INSERT INTO LN_contraparte_indicadores
      (contraparte, gestion, indicador, valor_fecha, created, created_by)
      VALUES
      (@p_contraparte, @gest, @indic_accion, @fecha_control_fiscal,  GETDATE(), @p_user_id)
     end 
     else
     begin
     if (@accion = 'peor_situacion_planes') 
      begin
       INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_texto, created, created_by)
       VALUES
       (@p_contraparte, @gest, @indic_accion, @peor, GETDATE(), @p_user_id)
      end 
      else 
      begin
       INSERT INTO LN_contraparte_indicadores
       (contraparte, gestion, indicador, valor_numerico, created, created_by)
       VALUES
       (@p_contraparte, @gest, @indic_accion, @monto_fiscal,  GETDATE(), @p_user_id)
      end 
     end
   end
   else
   begin
     if (@accion = 'fecha_control_fiscal')
     begin
      UPDATE LN_contraparte_indicadores SET
        valor_fecha = @fecha_control_fiscal,
        modified = GETDATE(),
        modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_accion
       and visible = 1
     end 
     else
     begin
      if (@accion = 'peor_situacion_planes') 
      begin
      UPDATE LN_contraparte_indicadores SET
        valor_texto = @peor,
        modified = GETDATE(),
        modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_accion
       and visible = 1
      end 
      else
      begin
      UPDATE LN_contraparte_indicadores SET
        valor_numerico = @monto_fiscal,
        modified = GETDATE(),
        modified_by = @p_user_id
      WHERE contraparte = @p_contraparte
       AND gestion = @gest
       AND indicador = @indic_accion
       and visible = 1
      end
     end
   end

   end



 END


 

 IF (@accion = 'petroleros' or
  @accion = 'fechapetroleros' or 
  @accion = 'montopetroleros' or 
  @accion = 'uocra' or
  @accion = 'fechauocra' or 
  @accion = 'montouocra' or 
  @accion = 'jerarquicos' or
  @accion = 'fechajerarquicos' or 
  @accion = 'montojerarquicos' or 
  @accion = 'otrosindicatos' or
  @accion = 'fechaotrossindicatos' or 
  @accion = 'montootrossindicatos' or 
  @accion = 'fechadocumentolibredeuda') 
 BEGIN
  declare @indic_accion2 int = null
   select @indic_accion2 = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion,
    @p_cliente = LN_contrapartes.cliente, 
    @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
               and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion
      and LN_productos.producto_id = 'libredeudasindical'
   
  
  if (@indic_accion2 is not null) begin
  
   declare @txt_ld  varchar(100) = null 
      declare @fecha_ld date = null 
      declare @numero_ld decimal(20,2) = null 
   declare @contratista_ld int = null 
   declare @fechadocumento_ld int = null 
   declare @periodo_ld date = null 
   declare @p_doc_id_ld bigint = null 

   set @contratista_ld  = (select id_imperium FROM LN_CONTRAPARTES WHERE contraparte = @p_contraparte) 
   
   set @fechadocumento_ld  = (select max(periodo) from led_docs 
            where tipo_doc = 1035
              and contratista_1 = @contratista_ld
              and contratista = contratista_1 
              and estado_doc = 'V')
   if (@fechadocumento_ld is not null) 
   begin
    set @periodo_ld  = convert(date,SUBSTRING(convert(char,@fechadocumento_ld),1,4) + '-' + 
                SUBSTRING(convert(char,@fechadocumento_ld),5,2) + '-01')

    set @p_doc_id_ld = (select max(doc_id)
             from led_docs 
            where tipo_doc = 1035
              and periodo = @fechadocumento_ld 
              and contratista_1 = @contratista_ld
              and contratista = contratista_1 
              and estado_doc = 'V'
             )
   end 
   --select @indic_accion2 as indicador, @accion as accion
   --select @p_doc_id_ld as doc_id, @periodo_ld as fecha_documento
   
      if (@accion = 'fechadocumentolibredeuda')
   begin 
    set @fecha_ld = @periodo_ld
   end 
   else 
   begin
    declare @campo_ld varchar(100)
    declare @campo_tipo_doc int 

    IF (@accion = 'petroleros')    set @campo_ld = 'SINDICATOPETROLEROSPRIV'
    IF (@accion = 'fechapetroleros')  set @campo_ld = 'FECHALIBREDEUDA1'
    IF (@accion = 'montopetroleros')  set @campo_ld = 'MONTODDJJ'
    IF (@accion = 'uocra')     set @campo_ld = 'SINDICATOUOCRA'
    IF (@accion = 'fechauocra')    set @campo_ld = 'FECHALIBREDEUDA2'
    IF (@accion = 'montouocra')    set @campo_ld = 'MONTODDJJ2'
    IF (@accion = 'jerarquicos')   set @campo_ld = 'SINDICATOJERARQUICOS'
    IF (@accion = 'fechajerarquicos')  set @campo_ld = 'FECHALIBREDEUDA3'
    IF (@accion = 'montojerarquicos')  set @campo_ld = 'MONTODDJJ3'
    IF (@accion = 'otrosindicatos')   set @campo_ld = 'OTROSSINDICATOS'
    IF (@accion = 'fechaotrossindicatos') set @campo_ld = 'FECHALIBREDEUDA4'
    IF (@accion = 'montootrossindicatos')  set @campo_ld = 'MONTODDJJ4'

    select @campo_tipo_doc = campo_tipo_doc from led_campos_tipo_doc where tipo_doc = 1035 and nombre_campo = @campo_ld
    select @campo_tipo_doc as campo_tipo_doc
    select @p_doc_id_ld as doc_id
    if (@p_doc_id_ld is not null)
    begin
     select @txt_ld = valor_texto, @numero_ld = valor_numerico, @fecha_ld = valor_fecha
     from led_campos_doc
     where led_campos_doc.doc_id = @p_doc_id_ld
     and led_campos_doc.campo_tipo_doc = @campo_tipo_doc
    end 

    IF (@accion = 'petroleros' or 
     @accion = 'uocra' or 
     @accion = 'jerarquicos' or
     @accion = 'otrosindicatos' )
    begin
     select @txt_ld = case @numero_ld
     when 1 then 'SI'
     when 0 then 'NO'
     when 2 then 'N/A'
     else null end 
    end

    --select @txt_ld as texto, @numero_ld as numero, @fecha_ld as fecha 


   end

   --select @p_contraparte as contraparte, @gest as gestion, @indic_accion2 as indicador
   if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_accion2)
   begin
     IF (@accion = 'petroleros' or 
      @accion = 'uocra' or 
      @accion = 'jerarquicos' or
      @accion = 'otrosindicatos' )
     begin 
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_texto, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion2, @txt_ld,  GETDATE(), @p_user_id)
     end 

     IF (@accion = 'fechapetroleros' or
      @accion = 'fechauocra' or
      @accion = 'fechajerarquicos' or
      @accion = 'fechaotrossindicatos' or 
      @accion = 'fechadocumentolibredeuda')
     begin
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_fecha, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion2, @fecha_ld,  GETDATE(), @p_user_id)
     end

     IF (@accion = 'montopetroleros' or
      @accion = 'montouocra' or
      @accion = 'montojerarquicos' or
      @accion = 'montootrossindicatos')
     begin
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_accion2, @numero_ld,  GETDATE(), @p_user_id)
     end
   end       
   else
   begin
     IF (@accion = 'petroleros' or 
      @accion = 'uocra' or 
      @accion = 'jerarquicos' or
      @accion = 'otrosindicatos' )
     begin 
     UPDATE LN_contraparte_indicadores SET
       valor_texto = @txt_ld,
       valor_numerico = @numero_ld,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion2
      and visible = 1
     end 

     IF (@accion = 'fechapetroleros' or
      @accion = 'fechauocra' or
      @accion = 'fechajerarquicos' or
      @accion = 'fechaotrossindicatos' or 
      @accion = 'fechadocumentolibredeuda')
     begin
     UPDATE LN_contraparte_indicadores SET
       valor_fecha = @fecha_ld,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion2
      and visible = 1
     end 
     IF (@accion = 'montopetroleros' or
      @accion = 'montouocra' or
      @accion = 'montojerarquicos' or
      @accion = 'montootrossindicatos')
     begin
     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @numero_ld,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_accion2
      and visible = 1
     end 
    end  
  end

  select @p_contraparte as contraparte, @gest as gestion, @indic_accion2 as indicador,
         @txt_ld as texto, @numero_ld as numero, @fecha_ld as fecha

 END



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

  DECLARE @ifc2 int = null, @vf2 varchar(1) = null

  SELECT @gest = LN_gestiones.gestion
  FROM LN_gestiones
  WHERE contraparte = @p_contraparte
  AND desde <= getdate() AND hasta >= getdate()
  and vigente = 1
              
  SELECT @ifc2 = 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 = 'WORDCHK'
  AND LN_contraparte_familias.contraparte = @p_contraparte                    

  IF @gest IS NOT NULL and @ifc2 IS NOT NULL BEGIN
   set @vf2 = null
   IF @vf2 is null and (select count(*) from LN_check
    where contraparte = @p_contraparte and visible = 1 
    and lncheck = 'R') > 0 
    SET @vf2 = 'R'

   IF @vf2 is null and (select count(*) from LN_check
    where contraparte = @p_contraparte and visible = 1 
    and lncheck = 'A') > 0 
    SET @vf2 = 'A'
   
   IF @vf2 is null and (select count(*) from LN_check
    where contraparte = @p_contraparte and visible = 1 
    and lncheck = 'V') > 0 
    SET @vf2 = 'V'

   select @p_contraparte contraparte, @vf2 valor, @ifc2 indicador

   if not exists (select indicador
       FROM LN_contraparte_indicadores
       WHERE indicador = @ifc2
       AND contraparte = @p_contraparte
       AND gestion = @gest
       and visible = 1)

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

   else

    UPDATE LN_contraparte_indicadores SET 
     valor_texto = @vf2,
     modified = GETDATE()
    WHERE indicador = @ifc2
    AND contraparte = @p_contraparte
    AND gestion = @gest
    and visible = 1

  END

 END

 



 declare @indicador_accion int 
 declare @valor_accion int 

 IF (@accion = 'SCORE_VRM_LEGAL'  or
     @accion = 'SCORE_VRM_LABORAL' or
     @accion = 'SCORE_VRM_FISCAL' or
     @accion = 'SCORE_VRM_ITRISK') BEGIN

   select @indicador_accion = LN_indicadores.indicador,
    @gest = LN_gestiones.gestion,
    @p_cliente = LN_contrapartes.cliente, 
    @cuit = padrones.identificacion 
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
    inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
    inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
    inner join padrones on padrones.id_padron = LN_contrapartes.id_padron 
    inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
               and LN_productos.producto = LN_cliente_productos.producto)
    inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte
    where LN_contrapartes.contraparte = @p_contraparte
      and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1 
      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 = @accion

  if (@indicador_accion is not null and @gest IS NOT NULL) begin
 
   set @valor_accion = null
   IF (@accion = 'SCORE_VRM_LEGAL')   set @tipo_doc = 1190
   IF (@accion = 'SCORE_VRM_LABORAL') set @tipo_doc = 1192
   IF (@accion = 'SCORE_VRM_FISCAL')  set @tipo_doc = 1191
   IF (@accion = 'SCORE_VRM_ITRISK')  set @tipo_doc = 1210
      
   select @valor_accion = iif(valoracion=0,null,valoracion) 
     from ln_docs 
    where contraparte = @p_contraparte 
      and gestion     = @gest
      and tipo_doc    = @tipo_doc
      and estado_doc  = 'V'

   if not exists (select indicador
       FROM LN_contraparte_indicadores
       WHERE indicador = @indicador_accion
       AND contraparte = @p_contraparte
       AND gestion = @gest
       and visible = 1)

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

   else

    UPDATE LN_contraparte_indicadores 
       SET valor_numerico = @valor_accion,
        modified = GETDATE()
     WHERE indicador = @indicador_accion
       AND contraparte = @p_contraparte
       AND gestion = @gest
       and visible = 1

  END

 END

 IF (@accion = 'score_final_contraparte') 
 BEGIN
  select @cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
  if (@cliente = 1226057645) -- Por ahora solo lo hacemos para el BBVA
  begin
   declare @indicador int = 4
   -- Después de tocar el indicador, veo si tiene que calcular un indicador dependiente 
   -- Ojo: Por ahora solo está hecho para indicadores de VRM que usan el SP [LN_scores_VRM] 
   declare @clave_indicador varchar(100)
   declare @indicador_dependiente int 
   if (select count(*) 
      from ln_indicadores_dependientes
     where ln_indicadores_dependientes.indicador = @indicador) > 0 
   begin

    DECLARE C_ind CURSOR FOR
     select ln_indicadores_dependientes.indicador_dependiente, LN_indicadores.clave_indicador 
       from ln_indicadores_dependientes
       inner join LN_indicadores on LN_indicadores.indicador = ln_indicadores_dependientes.indicador_dependiente
       where ln_indicadores_dependientes.indicador = @indicador
     OPEN C_ind
      FETCH NEXT FROM C_ind INTO @indicador_dependiente, @clave_indicador
      WHILE @@fetch_status = 0
      BEGIN 
       select 'VA A CALCULAR DEPENDIENTE (1): ' as accion, 
          @indicador as indicador, 
          @indicador_dependiente as indicador_dependiente,
          @clave_indicador as indicador_dependiente
     
       exec [LN_scores_VRM]  @clave_indicador, 
             @p_contraparte, 
             @p_user_id 
       FETCH NEXT FROM C_ind INTO @indicador_dependiente, @clave_indicador
      END 
    CLOSE C_ind
    DEALLOCATE C_ind
   end
  end
    END

 IF (@accion = 'MAPA_ACTUALIZADO' or @accion = 'MAPA_FECHA')
 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_mapa int = null
   select @indic_mapa = LN_indicadores.indicador
   from LN_indicadores
   where clave_indicador = @accion 

   if (@indic_mapa is not null) 
   begin

    DECLARE @actualizado int, --bit
      @fecha_actualizado date
    EXEC  LN_mapa_relaciones @p_contraparte, @actualizado output,  @fecha_actualizado output
    if (@accion = 'MAPA_ACTUALIZADO') set @fecha_actualizado = null 
    if (@accion = 'MAPA_FECHA')       set @actualizado = null 
   
    if not exists (select contraparte, gestion, indicador
        from LN_contraparte_indicadores
        where contraparte = @p_contraparte
        and gestion = @gest
        and visible = 1
        and indicador = @indic_mapa)
     
     INSERT INTO LN_contraparte_indicadores
     (contraparte, gestion, indicador, valor_numerico, valor_fecha, created, created_by)
     VALUES
     (@p_contraparte, @gest, @indic_mapa, @actualizado, @fecha_actualizado, GETDATE(), @p_user_id)

    else

     UPDATE LN_contraparte_indicadores SET
       valor_numerico = @actualizado,
       valor_fecha = @fecha_actualizado,
       modified = GETDATE(),
       modified_by = @p_user_id
     WHERE contraparte = @p_contraparte
      AND gestion = @gest
      AND indicador = @indic_mapa
      and visible = 1
   end


 END

 
 IF (@accion = 'ULTIMO_LOGIN') BEGIN
   declare @ULTIMO_LOGIN date = null 
   declare @g_desde date = null
   SELECT @gest = LN_gestiones.gestion,
       @ULTIMO_LOGIN = CONVERT(date,ln_contrapartes.ultimo_acceso), 
       @g_desde = LN_gestiones.desde 
     FROM LN_gestiones 
    INNER JOIN LN_contrapartes ON LN_gestiones.contraparte = LN_contrapartes.contraparte
    WHERE LN_gestiones.desde <= GETDATE()
      AND LN_gestiones.hasta >= GETDATE()
      AND LN_contrapartes.activo = 1
      AND LN_contrapartes.contraparte = @p_contraparte

   if (@ULTIMO_LOGIN < @g_desde) set @ULTIMO_LOGIN = null 
 
   declare @indic_ul int = null
   select @indic_ul = LN_indicadores.indicador
     from LN_indicadores
    where clave_indicador = 'ULTIMO_LOGIN'

    select @indic_ul indicador, @ULTIMO_LOGIN as valor_fecha

   if (@indic_ul is not null) begin

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

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

     else

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

    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


 IF (@accion = 'CONTRAPARTES_SERVICIO') 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
   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 clientes ON LN_contrapartes.cliente = clientes.cliente
   INNER JOIN LN_gestiones on (LN_gestiones.contraparte = ln_contrapartes.contraparte and ln_gestiones.vigente = 1 and ln_gestiones.desde <= getdate() and ln_gestiones.hasta >= getdate())
   INNER JOIN LN_contraparte_familias ON (LN_contrapartes.contraparte = LN_contraparte_familias.contraparte and ln_contraparte_familias.activo = 1)
   INNER JOIN LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia and LN_familias.visible = 1)


   where LN_contrapartes.cliente = @p_cliente
   AND LN_contrapartes.activo = 1
   AND LN_contrapartes.subcontratista = @p_es_subcontratista
   AND LN_contrapartes.servicio_contratado = @p_servicio
   ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona

  
     
 END 


 

END

GO

Depends On

104