dbo.LN_contrapartes_

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

33
Name Data Type Length Description
@accion varchar 40
@p_contraparte int 4
@p_id_padron int 4
@p_cliente int 4
@p_datos_comerciales text -1
@p_activo tinyint 1
@p_nombre_contacto varchar 512
@p_email_contacto varchar 512
@p_telefono_contacto varchar 512
@p_fecha_ultimo_cierre datetime 8
@p_periodicidad_ejercicio varchar 1
@p_clave varchar 80
@p_vigencia_desde date 3
@p_vigencia_hasta date 3
@p_user_id int 4
@p_subcontratista bit 1
@p_id_padre int 4
@p_modalidad_pago varchar 2
@p_domicilio varchar 500
@p_transact_id int 4
@pais_servicio varchar 2
@p_fecha_gestion varchar 10
@p_codigo_idioma varchar 3
@p_web varchar 200
@sector int 4
@responsable varchar 512
@tipo_servicio int 4
@p_quien_carga varchar 5
@p_hit_value bit 1
@fecha_contacto datetime 8
@p_id_referencia varchar 100
@fecha_comprometida_tarea datetime 8
@codigo_interno_imperium varchar 30

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec LN_contrapartes_ 'CLIENTE',107586,null,null,null,null,null,null,null,null,null,null,null,null
exec LN_contrapartes_ 'activar_informe', 138372, null, null, null, null, null, null, null, NULL, NULL, null, null, null, 15342812
exec LN_contrapartes_ 'activar_informe', 136619, null, null, null, null, null, null, null, NULL, NULL, null, null, null, 15342812

*/



-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_ 
 -- Add the parameters for the stored procedure here
 @accion          varchar(40),
 @p_contraparte        int OUTPUT,
 @p_id_padron        int,
 @p_cliente         int,
 @p_datos_comerciales      text,
 @p_activo         tinyint,
 @p_nombre_contacto       varchar(512),
 @p_email_contacto       varchar(512),
 @p_telefono_contacto      varchar(512),
 @p_fecha_ultimo_cierre      datetime,
 @p_periodicidad_ejercicio     varchar(1),
 @p_clave         varchar(80),
 @p_vigencia_desde       date,
 @p_vigencia_hasta       date,
 @p_user_id         int = NULL, 
 @p_subcontratista       bit = 0,
 @p_id_padre         int = NULL,
 @p_modalidad_pago       varchar(2) = 'CC',
 @p_domicilio        varchar(500) = NULL,
 @p_transact_id        int = NULL, -- para consultar prepagos por id de transaccion
 @pais_servicio        varchar(2) = 'AR', 
 @p_fecha_gestion       varchar(10) = null,
 @p_codigo_idioma       varchar(3) = 'spa',
 @p_web varchar(200) = null,
 @sector INT = NULL,
 @responsable VARCHAR(512) = NULL,
 @tipo_servicio INT = NULL,
 @p_quien_carga varchar(5)='F,C,L',
    @p_hit_value bit = 0, 
 @fecha_contacto datetime = null,
 @p_id_referencia varchar(100) = null, 
 @fecha_comprometida_tarea datetime = null,
 @codigo_interno_imperium varchar(30) = null
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 declare @fecha_gestion date 
 if (isnull(@p_fecha_gestion,'') = '') 
 begin
  set @fecha_gestion = convert(date, getdate())
 end 
 else
 begin 
  set @fecha_gestion = convert(date, @p_fecha_gestion) 
 end 

 IF (@accion = 'cierre_tarea') 
 BEGIN
  if (select carga_inicial from ln_contrapartes where contraparte = @p_contraparte) = 1
  begin
   update LN_contrapartes 
      set limite_carga_inicial = dateadd(SECOND,-1,dateadd (dd,0,convert (varchar (10),getdate(),126))), -- ayer a las 23:59:59
       carga_inicial = 0
    where contraparte = @p_contraparte
   EXEC LN_contrapartes_queue_ 'insert',NULL,@p_contraparte
  end
  return
 END 


    -- Insert statements for procedure here
 DECLARE @country_code VARCHAR(2)
 DECLARE @clave_anterior VARCHAR(80)

 DECLARE @gest int = NULL, @cliente int = NULL, @nueva_gestion int = NULL

 IF (@accion = 'HITVALUE') 
    BEGIN 
        UPDATE LN_CONTRAPARTES SET hit_summary= @p_hit_value
        where contraparte = @p_contraparte
        return
 END 

    IF (UPPER(@accion) = 'UPDATE_CONTACT') 
    BEGIN
        UPDATE LN_contrapartes SET
        email_contacto = @p_email_contacto
        WHERE contraparte = @p_contraparte
        RETURN
    END


 IF (@accion = 'CLIENTE' AND @p_contraparte > 0) BEGIN
  select LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.servicio_contratado,
    LN_contrapartes.id_imperium, LN_contrapartes.pais_servicio, padrones.nombre_persona, padrones.id_padron,
    padrones.identificador, padrones.numero, padrones.identificacion, identificadores.abreviatura,
    iif(cliente_paises.nombre_local IS NOT NULL, cliente_paises.nombre_local, clientes.nombre_cliente) as nombre_cliente
  from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
  inner join identificadores on padrones.identificador = identificadores.identificador
  inner join clientes on LN_contrapartes.cliente = clientes.cliente
  left outer join cliente_paises on (LN_contrapartes.cliente = cliente_paises.cliente
           and LN_contrapartes.pais_servicio = cliente_paises.country_code
           and LN_contrapartes.servicio_contratado = cliente_paises.servicio_contratado
           and cliente_paises.activo = 1)
  where LN_contrapartes.contraparte = @p_contraparte

 END


 IF (@accion = 'GESTION') BEGIN 
  SELECT gestion, cliente, contraparte, desde, hasta
    FROM LN_gestiones where contraparte = @p_contraparte
     AND vigente = 1 
     AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= getdate()
 END 

 IF (@accion = 'CLIENTE_GESTION') 
    BEGIN 
  SELECT ln_demo.gestion, ln_contrapartes.cliente, ln_contrapartes.contraparte, LN_gestiones.desde, LN_gestiones.hasta,ln_familias.nombre_familia,
        ln_demo.docs_ok,ln_demo.integ_carga,ln_demo.integ_rech,integ_verif,ln_demo.visible as publicado,ln_demo.fecha_publicacion,ln_contrapartes.activo as estado__contraparte,
        informes.ingresado_por,padrones.identificador, padrones.identificacion as taxid,padrones.nombre_persona,users.last_name + ' ' + users.first_name as solicitante,tareas.objeto_informe 
    FROM LN_gestiones INNER JOIN ln_contrapartes  on ln_gestiones.contraparte = ln_contrapartes.contraparte
            inner join padrones on (padrones.id_padron = ln_contrapartes.id_padron and padrones.habilitado=1)
          inner join ln_contraparte_familias on ln_contraparte_familias.contraparte=ln_contrapartes.contraparte
          inner join ln_familias on ln_contraparte_familias.familia=ln_familias.familia
          inner join ln_demo on ln_demo.gestion=ln_gestiones.gestion 
          inner join informes on ln_demo.informe =informes.informe
          inner join informes as tareas on informes.informe =tareas.informe_padre and tareas.idTarea=287
          inner join users on informes.ingresado_por = users.user_id 
/*select * from informes where informe = 100794348

select * from ln_tareas where idTarea=287 or tipo_tarea='E'
*/



          where ln_contrapartes.CLIENTE = @p_cliente
    AND  LN_gestiones.vigente = 1 
    AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= getdate()
          order by ln_gestiones.desde asc
 END 


 IF (@accion = 'INSERT' or @accion = 'insert_desde_otro_sp') BEGIN

  IF (@p_id_padron > 0 AND @p_cliente > 0) begin


   DECLARE @contraparte int
   DECLARE @codigo_idioma varchar(3) = NULL


   SELECT @country_code = identificadores.country_code,
     @codigo_idioma = idiomas.codigo_iso
   FROM identificadores 
   INNER JOIN padrones ON identificadores.identificador = padrones.identificador
   INNER JOIN country ON identificadores.country_code = country.country_code
   LEFT Outer JOIN idiomas ON country.codigo_idioma = idiomas.codigo_idioma
   WHERE padrones.id_padron = @p_id_padron

   /* CONTROLO QUE NO EXISTA EL SUBCONTRATADO PARA EL MISMO CONTRATISTA */
   
   declare @noDup int = 0

   if (@p_id_padre is not null)
   begin
    select @noDup = max(contraparte) from ln_contrapartes where id_padron = @p_id_padron and cliente = @p_cliente and id_padre = @p_id_padre and subcontratista = 1
   end 
   /*select @noDup = count(*) from ln_contrapartes where id_padron = 21816819 and cliente = 5546348 and id_padre = 186937 and subcontratista = 1*/
   /*select @noDup as NODUP*/
   /*select * from ln_contrapartes where id_padre = 186937*/
   
   if (isnull(@noDup,0) = 0 )
   begin
   INSERT INTO LN_contrapartes (id_padron, cliente, country_code, datos_comerciales, activo, 
     nombre_contacto, email_contacto, telefono_contacto, 
     fecha_ultimo_cierre, periodicidad_ejercicio, vigencia_desde, vigencia_hasta,
     clave, clave_temporal, clave_cambio, clave_expira, 
     subcontratista, id_padre, codigo_idioma, modalidad_pago, 
     created, created_by,pais_servicio)
     
   VALUES (@p_id_padron, @p_cliente, @country_code, @p_datos_comerciales, 1, 
     @p_nombre_contacto, @p_email_contacto, @p_telefono_contacto, 
     CONVERT(DATE,@p_fecha_ultimo_cierre), @p_periodicidad_ejercicio,
     @p_vigencia_desde, @p_vigencia_hasta, @p_clave, 1,
     NULL, DATEADD(day, 5, getdate()), 
     @p_subcontratista, @p_id_padre, iif(@codigo_idioma is not null, @codigo_idioma, 'spa'), @p_modalidad_pago,
     GETDATE(), @p_user_id,@pais_servicio)


   SET @contraparte = SCOPE_IDENTITY()
   SET @p_contraparte = @contraparte
   IF (@accion = 'INSERT') SELECT @contraparte AS contraparte

   end
   
   if (isnull(@noDup,0) > 0 )
   begin
    SET @p_contraparte = @noDup
    IF (@accion = 'INSERT') SELECT @noDup AS contraparte
   end
   
  end


 END ELSE

  IF (@accion = 'UPDATE') BEGIN

   /*SELECT @country_code = identificadores.country_code
    FROM identificadores INNER JOIN padrones ON identificadores.identificador = padrones.identificador
    WHERE padrones.id_padron = @p_id_padron*/


   IF (@p_fecha_ultimo_cierre IS NULL)
    SELECT @p_fecha_ultimo_cierre = fecha_ultimo_cierre
    FROM LN_contrapartes
    WHERE contraparte = @p_contraparte

   IF (@p_periodicidad_ejercicio IS NULL)
    SELECT @p_periodicidad_ejercicio = periodicidad_ejercicio
    FROM LN_contrapartes
    WHERE contraparte = @p_contraparte




   UPDATE LN_contrapartes SET
   /*id_padron = @p_id_padron,
    cliente = @p_cliente,
    country_code = @country_code,*/

   datos_comerciales = @p_datos_comerciales,
   activo = @p_activo,
   nombre_contacto = @p_nombre_contacto,
   email_contacto = @p_email_contacto,
   telefono_contacto = @p_telefono_contacto,
   web = @p_web, 
   fecha_ultimo_cierre = CONVERT(DATE,@p_fecha_ultimo_cierre),
   periodicidad_ejercicio = @p_periodicidad_ejercicio,
   subcontratista = iif(@p_subcontratista is null, @p_subcontratista, subcontratista),
   id_padre = iif(@p_id_padre is null,@p_id_padre,id_padre), 
/*
vigencia_desde = iif(@p_vigencia_desde is null,@p_vigencia_desde,vigencia_desde),
vigencia_hasta = iif(@p_vigencia_hasta is null,@p_vigencia_hasta,vigencia_hasta), 
*/


   vigencia_desde = @p_vigencia_desde,
   vigencia_hasta = @p_vigencia_hasta, 

   modified = GETDATE(),
   modified_by = @p_user_id,
   pais_servicio = iif(@pais_servicio is not null, @pais_servicio, pais_servicio)
   WHERE contraparte = @p_contraparte

   if (@p_domicilio is not null)
    UPDATE LN_contrapartes SET domicilio = @p_domicilio where contraparte = @p_contraparte

  END ELSE

   IF (@accion = 'CHANGE_PASSWORD') BEGIN

    SELECT @clave_anterior = clave FROM LN_contrapartes
    WHERE contraparte = @p_contraparte

    IF (@clave_anterior <> @p_clave) BEGIN

     if (@p_user_id > 0)

      UPDATE LN_contrapartes SET
      clave = @p_clave,
      clave_cambio = GETDATE(),
      clave_expira = DATEADD(day, 90, getdate()),
      clave_temporal = 0,
      modified = GETDATE(),
      modified_by = @p_user_id
      WHERE contraparte = @p_contraparte

     else

      UPDATE LN_contrapartes SET
      clave = @p_clave,
      clave_cambio = GETDATE(),
      clave_expira = DATEADD(day, 90, getdate()),
      clave_temporal = 0
      WHERE contraparte = @p_contraparte


    END


   END ELSE

    IF (@accion = 'SELECT') BEGIN

     SELECT LN_contrapartes.contraparte, LN_contrapartes.country_code, LN_contrapartes.cliente,
     LN_contrapartes.id_padron, LN_contrapartes.datos_comerciales, LN_contrapartes.activo,
     LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, LN_contrapartes.web, LN_contrapartes.domicilio,
     CONVERT(VARCHAR(10), LN_contrapartes.fecha_ultimo_cierre, 103) AS fecha_ultimo_cierre, 
     LN_contrapartes.periodicidad_ejercicio,
     LN_contrapartes.subcontratista, LN_contrapartes.id_padre,
     CONVERT(VARCHAR, LN_contrapartes.vigencia_desde,103) AS vigencia_desde,
     CONVERT(VARCHAR, LN_contrapartes.vigencia_hasta,103) AS vigencia_hasta,
     LN_contrapartes.clave, LN_contrapartes.clave_temporal, 
     CONVERT(VARCHAR(19), LN_contrapartes.clave_cambio, 121) as clave_cambio, 
     CONVERT(VARCHAR(10), LN_contrapartes.clave_cambio, 103) + ' ' + CONVERT(VARCHAR(5), LN_contrapartes.clave_cambio, 14) as clave_cambio_str, 
     CONVERT(VARCHAR(19), LN_contrapartes.clave_expira, 103) as clave_expira, 
     CONVERT(VARCHAR(19), LN_contrapartes.last_login, 121) as last_login,
     CONVERT(VARCHAR(10), LN_contrapartes.last_login, 103) + ' ' + CONVERT(VARCHAR(5), LN_contrapartes.last_login, 14)  as last_login_str,
     CONVERT(VARCHAR(10), LN_contrapartes.ultimo_acceso, 103) + ' ' + CONVERT(VARCHAR(5), LN_contrapartes.ultimo_acceso, 14)  as ultimo_acceso_str,
     CONVERT(VARCHAR(19), LN_contrapartes.limite_carga_inicial, 103) as limite_carga_inicial, 
     LN_contrapartes.created_by, LN_contrapartes.modified_by, 
     padrones.identificador, padrones.numero, padrones.nombre_persona, identificadores.abreviatura,
     padrones.identificacion, country.country_name, clientes.nombre_cliente, 
     CONVERT(VARCHAR(19), LN_contrapartes.created, 121) as created, 
     CONVERT(VARCHAR(10), LN_contrapartes.created, 103) as created_str, 
     CONVERT(VARCHAR(19), LN_contrapartes.modified, 121) as modified,
     users1.first_name + ' ' + users1.last_name as created_by_user,
     users2.first_name + ' ' + users2.last_name as modified_by_user,

     p2.nombre_persona as nombre_persona_padre,
     p2.identificador as identificador_padre,
     p2.numero as numero_padre,
     p2.identificacion as identificacion_padre,
     i2.abreviatura as abreviatura_padre,
     c2.country_code as country_code_padre,
     c2.country_name as country_name_padre,

     CONVERT(VARCHAR,LN_contrapartes.inicio_actividades,103) AS inicio_actividades,
     LN_contrapartes.empleados, LN_contrapartes.resenia, 
     convert(varchar(10),LN_contrapartes.limite_carga_inicial,103) as limite_carga_inicial,
     ISNULL(LN_contrapartes.codigo_idioma, 'spa') AS codigo_idioma, ISNULL(LN_contrapartes.modalidad_pago, 'CC') AS modalidad_pago,
     LN_contrapartes.pais_servicio,
     LN_contrapartes.servicio_contratado, 
     LN_contrapartes.id_imperium, 

     ln_gestiones.gestion ,ln_contrapartes.idSectorPriv,ln_contrapartes.idTipoServicioPriv,--ln_contrapartes.email_ejecutivo_cuenta,
     cliente_paises.nombre_local as nombre_filial, 
     ln_contrapartes.email_ejecutivo_cuenta,padrones.apellidos as padron_apellidos,padrones.nombres as padron_nombres,
                    padrones.sexo as genero,datos_personas.c02_fecha_nac as fecha_nacimiento
     
     -- agregado 24/04/2024
     ,iif(solicitado.first_name is null and 
           solicitado.last_name is null, solicitado.username, 
        solicitado.first_name + ' ' + solicitado.last_name) as solicitado_por
     ,ln_contrapartes.id_referencia as id_referencia
     ,sector.nombre_largo as sector,Led_contratistas.codigo_interno 
     --

     FROM LN_contrapartes
     INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
     INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
     INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
     INNER JOIN country ON LN_contrapartes.country_code = country.country_code
     INNER JOIN users users1 ON LN_contrapartes.created_by = users1.user_id
     INNER JOIN ln_gestiones ON LN_contrapartes.contraparte = ln_gestiones.contraparte
                    left JOIN datos_personas ON padrones.identificacion = datos_personas.c01_cuit
     LEFT OUTER JOIN users users2 ON LN_contrapartes.modified_by = users2.user_id

     LEFT OUTER JOIN LN_contrapartes PADRE on LN_contrapartes.id_padre = PADRE.contraparte
     LEFT OUTER JOIN padrones p2 on PADRE.id_padron = p2.id_padron
     LEFT OUTER JOIN identificadores i2 on p2.identificador = i2.identificador
     LEFT OUTER JOIN country c2 on i2.country_code = c2.country_code
     LEFT JOIN cliente_paises ON (LN_CONTRAPARTES.CLIENTE  = cliente_paises.cliente 
                                  and ln_contrapartes.pais_servicio = cliente_paises.country_code 
             and ln_contrapartes.servicio_contratado = cliente_paises.servicio_contratado 
             and cliente_paises.activo = 1)
     left join led_contratistas on led_contratistas.contratista = ln_contrapartes.id_imperium

     -- el sector se toma de la tabla LN_cliente_datos_privados
     left join LN_cliente_datos_privados sector on (sector.cliente = ln_contrapartes.cliente and sector.idReg = ln_contrapartes.idSectorPriv)
     --
     -- El solicitado_por se guarda en la tabla informes, entonces tenemos que buscar el informe
     left join LN_demo on LN_demo.contraparte = LN_contrapartes.contraparte and LN_demo.gestion = ln_gestiones.gestion
     left join informes on informes.informe = LN_demo.informe
     left join users solicitado on informes.ingresado_por = solicitado.user_id 
     --

     WHERE LN_contrapartes.contraparte = @p_contraparte
     and ln_gestiones.desde <= GETDATE() and ln_gestiones.hasta >= GETDATE() and ln_gestiones.vigente = 1

    END ELSE

     IF (@accion = 'SEARCH') BEGIN

      if(@p_cliente is null AND @p_activo is null) begin

       SELECT LN_contrapartes.contraparte, LN_contrapartes.country_code, LN_contrapartes.cliente,
       LN_contrapartes.id_padron, LN_contrapartes.datos_comerciales, LN_contrapartes.activo,
       LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
       CONVERT(VARCHAR(10), LN_contrapartes.fecha_ultimo_cierre, 103) AS fecha_ultimo_cierre, 
       LN_contrapartes.periodicidad_ejercicio,
       CONVERT(VARCHAR, LN_contrapartes.vigencia_desde,103) AS vigencia_desde,
       CONVERT(VARCHAR, LN_contrapartes.vigencia_hasta,103) AS vigencia_hasta,
       LN_contrapartes.clave, LN_contrapartes.clave_temporal,
       CONVERT(VARCHAR(19), LN_contrapartes.clave_cambio, 121) as clave_cambio, 
       CONVERT(VARCHAR(19), LN_contrapartes.clave_expira, 121) as clave_expira, 
       CONVERT(VARCHAR(19), LN_contrapartes.last_login, 121) as last_login,
       LN_contrapartes.created_by, LN_contrapartes.modified_by,
       padrones.identificador, padrones.numero, padrones.nombre_persona, identificadores.abreviatura,
       padrones.identificacion, country.country_name, clientes.nombre_cliente, 
       CONVERT(VARCHAR(19), LN_contrapartes.created, 121) as created, 
       CONVERT(VARCHAR(19), LN_contrapartes.modified, 121) as modified,
       users1.first_name + ' ' + users1.last_name as created_by_user,
       users2.first_name + ' ' + users2.last_name as modified_by_user,
       ISNULL(LN_contrapartes.codigo_idioma, 'spa') AS codigo_idioma,
       ISNULL(LN_contrapartes.modalidad_pago, 'CC') AS modalidad_pago,
       LN_contrapartes.pais_servicio


       FROM LN_contrapartes
       INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
       INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
       INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
       INNER JOIN country ON LN_contrapartes.country_code = country.country_code
       INNER JOIN users users1 ON LN_contrapartes.created_by = users1.user_id
       LEFT OUTER JOIN users users2 ON LN_contrapartes.modified_by = users2.user_id
       WHERE LN_contrapartes.subcontratista = 0

       ORDER BY padrones.nombre_persona


      end else

       if (@p_cliente is not null AND @p_activo is null) begin

        if (@p_id_padron is null) begin

         SELECT LN_contrapartes.contraparte, LN_contrapartes.country_code, LN_contrapartes.cliente,
         LN_contrapartes.id_padron, LN_contrapartes.datos_comerciales, LN_contrapartes.activo,
         LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
         CONVERT(VARCHAR(10), LN_contrapartes.fecha_ultimo_cierre, 103) AS fecha_ultimo_cierre, 
         LN_contrapartes.periodicidad_ejercicio,
         CONVERT(VARCHAR, LN_contrapartes.vigencia_desde,103) AS vigencia_desde,
         CONVERT(VARCHAR, LN_contrapartes.vigencia_hasta,103) AS vigencia_hasta,
         LN_contrapartes.clave, LN_contrapartes.clave_temporal,
         CONVERT(VARCHAR(19), LN_contrapartes.clave_cambio, 121) as clave_cambio, 
         CONVERT(VARCHAR(19), LN_contrapartes.clave_expira, 121) as clave_expira, 
         CONVERT(VARCHAR(19), LN_contrapartes.last_login, 121) as last_login,
         LN_contrapartes.created_by, LN_contrapartes.modified_by,
         padrones.identificador, padrones.numero, padrones.nombre_persona, identificadores.abreviatura,
         padrones.identificacion, country.country_name, clientes.nombre_cliente, 
         CONVERT(VARCHAR(19), LN_contrapartes.created, 121) as created, 
         CONVERT(VARCHAR(19), LN_contrapartes.modified, 121) as modified,
         users1.first_name + ' ' + users1.last_name as created_by_user,
         users2.first_name + ' ' + users2.last_name as modified_by_user,
         ISNULL(LN_contrapartes.codigo_idioma, 'spa') AS codigo_idioma,
         ISNULL(LN_contrapartes.modalidad_pago, 'CC') AS modalidad_pago,
         LN_contrapartes.pais_servicio


         FROM LN_contrapartes
         INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
         INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
         INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
         INNER JOIN country ON LN_contrapartes.country_code = country.country_code
         INNER JOIN users users1 ON LN_contrapartes.created_by = users1.user_id
         LEFT OUTER JOIN users users2 ON LN_contrapartes.modified_by = users2.user_id

         WHERE LN_contrapartes.cliente = @p_cliente
         AND LN_contrapartes.subcontratista = 0
         ORDER BY padrones.nombre_persona

        end else begin

         SELECT LN_contrapartes.contraparte, LN_contrapartes.country_code, LN_contrapartes.cliente,
         LN_contrapartes.id_padron, LN_contrapartes.datos_comerciales, LN_contrapartes.activo,
         LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
         CONVERT(VARCHAR(10), LN_contrapartes.fecha_ultimo_cierre, 103) AS fecha_ultimo_cierre, 
         LN_contrapartes.periodicidad_ejercicio,
         CONVERT(VARCHAR, LN_contrapartes.vigencia_desde,103) AS vigencia_desde,
         CONVERT(VARCHAR, LN_contrapartes.vigencia_hasta,103) AS vigencia_hasta,
         LN_contrapartes.clave, LN_contrapartes.clave_temporal,
         CONVERT(VARCHAR(19), LN_contrapartes.clave_cambio, 121) as clave_cambio, 
         CONVERT(VARCHAR(19), LN_contrapartes.clave_expira, 121) as clave_expira, 
         CONVERT(VARCHAR(19), LN_contrapartes.last_login, 121) as last_login,
         LN_contrapartes.created_by, LN_contrapartes.modified_by,
         padrones.identificador, padrones.numero, padrones.nombre_persona, identificadores.abreviatura,
         padrones.identificacion, country.country_name, clientes.nombre_cliente, 
         CONVERT(VARCHAR(19), LN_contrapartes.created, 121) as created, 
         CONVERT(VARCHAR(19), LN_contrapartes.modified, 121) as modified,
         users1.first_name + ' ' + users1.last_name as created_by_user,
         users2.first_name + ' ' + users2.last_name as modified_by_user,
         ISNULL(LN_contrapartes.codigo_idioma, 'spa') AS codigo_idioma,
         ISNULL(LN_contrapartes.modalidad_pago, 'CC') AS modalidad_pago,
         LN_contrapartes.pais_servicio


         FROM LN_contrapartes
         INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
         INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
         INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
         INNER JOIN country ON LN_contrapartes.country_code = country.country_code
         INNER JOIN users users1 ON LN_contrapartes.created_by = users1.user_id
         LEFT OUTER JOIN users users2 ON LN_contrapartes.modified_by = users2.user_id

         WHERE LN_contrapartes.cliente = @p_cliente
         AND LN_contrapartes.id_padron = @p_id_padron
         AND LN_contrapartes.subcontratista = 0

         ORDER BY padrones.nombre_persona

        end



       end else

        if (@p_cliente is null AND @p_activo is not null) begin

         SELECT LN_contrapartes.contraparte, LN_contrapartes.country_code, LN_contrapartes.cliente,
         LN_contrapartes.id_padron, LN_contrapartes.datos_comerciales, LN_contrapartes.activo,
         LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
         CONVERT(VARCHAR(10), LN_contrapartes.fecha_ultimo_cierre, 103) AS fecha_ultimo_cierre, 
         LN_contrapartes.periodicidad_ejercicio,
         CONVERT(VARCHAR, LN_contrapartes.vigencia_desde,103) AS vigencia_desde,
         CONVERT(VARCHAR, LN_contrapartes.vigencia_hasta,103) AS vigencia_hasta,
         LN_contrapartes.clave, LN_contrapartes.clave_temporal, 
         CONVERT(VARCHAR(19), LN_contrapartes.clave_cambio, 121) as clave_cambio, 
         CONVERT(VARCHAR(19), LN_contrapartes.clave_expira, 121) as clave_expira, 
         CONVERT(VARCHAR(19), LN_contrapartes.last_login, 121) as last_login,
         LN_contrapartes.created_by, LN_contrapartes.modified_by,
         padrones.identificador, padrones.numero, padrones.nombre_persona, identificadores.abreviatura,
         padrones.identificacion, country.country_name, clientes.nombre_cliente, 
         CONVERT(VARCHAR(19), LN_contrapartes.created, 121) as created, 
         CONVERT(VARCHAR(19), LN_contrapartes.modified, 121) as modified,
         users1.first_name + ' ' + users1.last_name as created_by_user,
         users2.first_name + ' ' + users2.last_name as modified_by_user,
         ISNULL(LN_contrapartes.codigo_idioma, 'spa') AS codigo_idioma,
         ISNULL(LN_contrapartes.modalidad_pago, 'CC') AS modalidad_pago,
         LN_contrapartes.pais_servicio


         FROM LN_contrapartes
         INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
         INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
         INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
         INNER JOIN country ON LN_contrapartes.country_code = country.country_code
         INNER JOIN users users1 ON LN_contrapartes.created_by = users1.user_id
         LEFT OUTER JOIN users users2 ON LN_contrapartes.modified_by = users2.user_id

         WHERE LN_contrapartes.activo = @p_activo
         AND LN_contrapartes.subcontratista = 0
         ORDER BY padrones.nombre_persona

        end else

         if (@p_id_padron is null) begin

          SELECT LN_contrapartes.contraparte, LN_contrapartes.country_code, LN_contrapartes.cliente,
          LN_contrapartes.id_padron, LN_contrapartes.datos_comerciales, LN_contrapartes.activo,
          LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
          CONVERT(VARCHAR(10), LN_contrapartes.fecha_ultimo_cierre, 103) AS fecha_ultimo_cierre, 
          LN_contrapartes.periodicidad_ejercicio,
          CONVERT(VARCHAR, LN_contrapartes.vigencia_desde,103) AS vigencia_desde,
          CONVERT(VARCHAR, LN_contrapartes.vigencia_hasta,103) AS vigencia_hasta,
          LN_contrapartes.clave, LN_contrapartes.clave_temporal, 
          CONVERT(VARCHAR(19), LN_contrapartes.clave_cambio, 121) as clave_cambio, 
          CONVERT(VARCHAR(19), LN_contrapartes.clave_expira, 121) as clave_expira, 
          CONVERT(VARCHAR(19), LN_contrapartes.last_login, 121) as last_login,
          LN_contrapartes.created_by, LN_contrapartes.modified_by,
          padrones.identificador, padrones.numero, padrones.nombre_persona, identificadores.abreviatura,
          padrones.identificacion, country.country_name, clientes.nombre_cliente, 
          CONVERT(VARCHAR(19), LN_contrapartes.created, 121) as created, 
          CONVERT(VARCHAR(19), LN_contrapartes.modified, 121) as modified,
          users1.first_name + ' ' + users1.last_name as created_by_user,
          users2.first_name + ' ' + users2.last_name as modified_by_user,
          ISNULL(LN_contrapartes.codigo_idioma, 'spa') AS codigo_idioma,
          ISNULL(LN_contrapartes.modalidad_pago, 'CC') AS modalidad_pago,
          LN_contrapartes.pais_servicio


          FROM LN_contrapartes
          INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
          INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
          INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
          INNER JOIN country ON LN_contrapartes.country_code = country.country_code
          INNER JOIN users users1 ON LN_contrapartes.created_by = users1.user_id
          LEFT OUTER JOIN users users2 ON LN_contrapartes.modified_by = users2.user_id

          WHERE LN_contrapartes.cliente = @p_cliente
          AND LN_contrapartes.activo = @p_activo
          AND LN_contrapartes.subcontratista = 0
          ORDER BY padrones.nombre_persona

         end else begin 

          SELECT LN_contrapartes.contraparte, LN_contrapartes.country_code, LN_contrapartes.cliente,
          LN_contrapartes.id_padron, LN_contrapartes.datos_comerciales, LN_contrapartes.activo,
          LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
          CONVERT(VARCHAR(10), LN_contrapartes.fecha_ultimo_cierre, 103) AS fecha_ultimo_cierre, 
          LN_contrapartes.periodicidad_ejercicio,
          CONVERT(VARCHAR, LN_contrapartes.vigencia_desde,103) AS vigencia_desde,
          CONVERT(VARCHAR, LN_contrapartes.vigencia_hasta,103) AS vigencia_hasta,
          LN_contrapartes.clave, LN_contrapartes.clave_temporal, 
          CONVERT(VARCHAR(19), LN_contrapartes.clave_cambio, 121) as clave_cambio, 
          CONVERT(VARCHAR(19), LN_contrapartes.clave_expira, 121) as clave_expira, 
          CONVERT(VARCHAR(19), LN_contrapartes.last_login, 121) as last_login,
          LN_contrapartes.created_by, LN_contrapartes.modified_by,
          padrones.identificador, padrones.numero, padrones.nombre_persona, identificadores.abreviatura,
          padrones.identificacion, country.country_name, clientes.nombre_cliente, 
          CONVERT(VARCHAR(19), LN_contrapartes.created, 121) as created, 
          CONVERT(VARCHAR(19), LN_contrapartes.modified, 121) as modified,
          users1.first_name + ' ' + users1.last_name as created_by_user,
          users2.first_name + ' ' + users2.last_name as modified_by_user,
          ISNULL(LN_contrapartes.codigo_idioma, 'spa') AS codigo_idioma,
          ISNULL(LN_contrapartes.modalidad_pago, 'CC') AS modalidad_pago,
          LN_contrapartes.pais_servicio


          FROM LN_contrapartes
          INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
          INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
          INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
          INNER JOIN country ON LN_contrapartes.country_code = country.country_code
          INNER JOIN users users1 ON LN_contrapartes.created_by = users1.user_id
          LEFT OUTER JOIN users users2 ON LN_contrapartes.modified_by = users2.user_id

          WHERE LN_contrapartes.cliente = @p_cliente
          AND LN_contrapartes.activo = @p_activo
          AND LN_contrapartes.id_padron = @p_id_padron
          AND LN_contrapartes.subcontratista = 0

          ORDER BY padrones.nombre_persona

         end






     END ELSE

      IF (@accion = 'DELETE') BEGIN

       DELETE FROM LN_contrapartes WHERE contraparte = @p_contraparte

      END ELSE

       IF (@accion = 'NOVEDADES') BEGIN

        select LN_contrapartes.contraparte, monitoreos_resultados.cuit,
          CONVERT(VARCHAR, monitoreos_resultados.fecha, 103) AS fecha_dmy,
          CONVERT(VARCHAR, monitoreos_resultados.fecha, 121) AS fecha,
          monitoreos_resultados.tipo_novedad, padrones.nombre_persona,
          monitoreos_resultados.seccion_mantenimiento, 
          monitoreos_resultados.tabla
        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.contraparte = @p_contraparte
        and monitoreos_resultados.seccion_mantenimiento <> 7
        group by LN_contrapartes.contraparte, monitoreos_resultados.cuit,
          monitoreos_resultados.fecha, monitoreos_resultados.tipo_novedad,
          padrones.nombre_persona, monitoreos_resultados.seccion_mantenimiento, 
          monitoreos_resultados.tabla
        order by monitoreos_resultados.fecha desc, monitoreos_resultados.tipo_novedad

       END ELSE


        IF (@accion = 'DOCUMENTOS_GESTION_ACTIVA') 
                                BEGIN
        
         declare @cFamilia int = null


         -- exec LN_contrapartes_    'DOCUMENTOS_GESTION_ACTIVA',207533,null,null,null,null,null,null,null,null,null,null,null,null
         select @cFamilia= familia from LN_tipos_doc_carga_verif where familia in (SELECT familia FROM LN_contraparte_familias where contraparte = @p_contraparte)
         --select @cFamilia
         /*select distinct familia from LN_tipos_doc_carga_verif where familia in (SELECT familia FROM LN_contraparte_familias where contraparte = 197436)
          select * from LN_tipos_doc_carga_verif  where familia = 661
         
          */


         
         if (@cFamilia is not null)
         begin

         SELECT DISTINCT LN_tipos_doc_carga_verif.quien_verifica, LN_docs.doc_id, LN_docs.contraparte, LN_docs.cliente, LN_docs.tipo_doc,
          LN_docs.doc_version, 
          IIF(ln_docs.aplica = 0, 'N',LN_docs.estado_doc) as estado_doc, 
          convert(varchar(max),LN_docs.doc_log) as doc_log, 
                                        
                                        LN_docs.doc_attach,
          IIF(ln_docs.aplica = 0, 'No solicitado',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'Pendiente de ingreso'
           WHEN LN_docs.estado_doc = 'I' THEN 'Ingresado'
           WHEN LN_docs.estado_doc = 'R' THEN 'Rechazado'
           WHEN LN_docs.estado_doc = 'V' THEN 'Verificado'
          END) AS estado_documento,
          IIF(ln_docs.aplica = 0, 'text-info',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'text-info'
           WHEN LN_docs.estado_doc = 'I' THEN 'text-warning'
           WHEN LN_docs.estado_doc = 'R' THEN 'text-danger'
           WHEN LN_docs.estado_doc = 'V' THEN 'text-success'
          END) AS class_estado,
          IIF(ln_docs.aplica = 0, 'minus',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'cloud-upload fa-cloud-upload-alt'
           WHEN LN_docs.estado_doc = 'I' THEN 'exclamation'
           WHEN LN_docs.estado_doc = 'R' THEN 'times'
           WHEN LN_docs.estado_doc = 'V' THEN 'check'
          END) AS icon_estado,
          IIF(ln_docs.aplica = 0, '999',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 1
           WHEN LN_docs.estado_doc = 'I' THEN 3
           WHEN LN_docs.estado_doc = 'R' THEN 2
           WHEN LN_docs.estado_doc = 'V' THEN 4
          END) AS orden_estado,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.fecha_vigencia, 112)) AS fecha_vigencia,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.fecha_vigencia, 103)) AS fecha_vigencia_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.vencimiento_carga, 112)) AS vencimiento_carga,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.vencimiento_carga, 103)) AS vencimiento_carga_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.created, 112)) AS created,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.created, 103)) AS created_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.modified, 112)) AS modified,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.modified, 103)) AS modified_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.ingresado, 112)) AS ingresado,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.ingresado, 103)) AS ingresado_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.rechazado, 112)) AS rechazado,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.rechazado, 103)) AS rechazado_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_backend, 112)) AS verificado_backend,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_backend, 103)) AS verificado_backend_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_cliente, 112)) AS verificado_cliente,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_cliente, 103)) AS verificado_cliente_dmy,

          ISNULL(LN_tipos_doc.es_balance, 0) AS es_balance,

          CONVERT(VARCHAR(10), LN_docs.inicio_ejercicio, 103) AS inicio_ejercicio,
          CONVERT(VARCHAR(10), LN_docs.fin_ejercicio, 103) AS fin_ejercicio, 
  
          LN_docs.gestion,

          LN_docs.ingresado_por, LN_docs.rechazado_por, LN_docs.verificado_backend_por,
          LN_docs.verificado_cliente_por, LN_docs.created_by, LN_docs.modified_by,
          clientes.nombre_cliente, padrones.nombre_persona, padrones.identificador,
          padrones.numero, identificadores.abreviatura, identificadores.country_code,
          country.country_name, LN_contrapartes.activo, LN_contrapartes.nombre_contacto,
          LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
          LN_tipos_doc.nombre_tipo_doc, LN_tipos_doc.tipo_vigencia, LN_docs.id_externo,
          users1.first_name + ' ' + users1.last_name AS ingresado_por_usuario,
          users2.first_name + ' ' + users2.last_name AS rechazado_por_usuario,
          users3.first_name + ' ' + users3.last_name AS verificado_backend_por_usuario,
          users4.first_name + ' ' + users4.last_name AS verificado_cliente_por_usuario,
          users5.first_name + ' ' + users5.last_name AS created_by_usuario,
          users6.first_name + ' ' + users6.last_name AS modified_by_usuario,

          balances_contables.id_balance,
          balances_contables.fecha_balance, balances_contables.ejercicio, 
          balances_contables.periodo, balances_contables.visible, 
          balances_contables.estado, balances_contables.ruta_archivo,
          convert(varchar, balances_contables.fecha_balance, 103) as fecha_cierre,
          balances_contables.moneda, monedas.nombre_moneda, ln_demo.docs_ok,ln_demo.integ_carga,ln_demo.integ_rech,ln_demo.integ_verif,ln_docs.aplica
          ,isnull(LN_tipos_doc_carga_verif.quien_carga,'L') as quien_carga,LN_tipos_doc.es_dni,LN_tipos_doc.consentimiento,
                                        LN_docs.valoracion ,ln_tipos_doc.es_evidencia,LN_tipos_doc.es_hit,
          iif(LN_docs.es_balance = 1, Ln_docs.id_externo, null) as id_balance

         FROM LN_docs
         INNER JOIN clientes ON LN_docs.cliente = clientes.cliente
         INNER JOIN LN_contrapartes ON LN_docs.contraparte = LN_contrapartes.contraparte
         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_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc

         INNER JOIN LN_gestiones ON (LN_contrapartes.contraparte = LN_gestiones.contraparte
                AND LN_docs.gestion = LN_gestiones.gestion)

                                    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 LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                                                                    AND LN_tipos_doc.tipo_doc = LN_set_tipo_doc.tipo_doc
                                                                    AND LN_set_tipo_doc.activo = 1)
*/


         LEFT OUTER JOIN balances_contables ON LN_docs.id_externo = balances_contables.id_balance
         LEFT OUTER JOIN monedas ON balances_contables.moneda = monedas.moneda

         LEFT OUTER JOIN users users1 ON LN_docs.ingresado_por = users1.user_id
         LEFT OUTER JOIN users users2 ON LN_docs.rechazado_por = users2.user_id
         LEFT OUTER JOIN users users3 ON LN_docs.verificado_backend_por = users3.user_id
         LEFT OUTER JOIN users users4 ON LN_docs.verificado_cliente_por = users4.user_id
         LEFT OUTER JOIN users users5 ON LN_docs.created_by = users5.user_id
         LEFT OUTER JOIN users users6 ON LN_docs.modified_by = users6.user_id         

         left join LN_tipos_doc_carga_verif on (LN_tipos_doc_carga_verif.tipo_doc= LN_tipos_doc.tipo_doc and LN_tipos_doc_carga_verif.cliente = ln_contrapartes.cliente and LN_tipos_doc_carga_verif.activo=1 /* and LN_tipos_doc_carga_verif.familia = @cFamilia*/) 
         left join ln_demo on (ln_gestiones.contraparte=LN_demo.contraparte and ln_gestiones.gestion = ln_demo.gestion and ln_gestiones.vigente=1)
         LEFT JOIN dbo.DelimitedSplit8K(@p_quien_carga, ',') QUIENCARGA ON ISNULL(LN_tipos_doc_carga_verif.quien_carga,'L') IN (QUIENCARGA.Item)

         /*AGB agb */
         WHERE LN_contrapartes.contraparte = @p_contraparte
         AND LN_gestiones.desde <= @fecha_gestion 
         AND LN_gestiones.hasta >= @fecha_gestion
         AND LN_docs.estado_doc != 'X'
         /*and LN_tipos_doc_carga_verif.familia = @cFamilia */
         AND (LN_docs.aplica = 1 OR 
              (LN_docs.aplica = 0 and 
            not exists (select * from LN_docs b 
                         where b.contraparte = ln_docs.contraparte 
                  and b.tipo_doc = ln_docs.tipo_doc 
               and ISNULL(b.inicio_ejercicio, '2001-01-01') = ISNULL(ln_docs.inicio_ejercicio, '2001-01-01')
                  and b.gestion = ln_docs.gestion 
               and b.estado_doc != 'X'
               and b.aplica = 1))
          )
         -- MIS 12/06/2024
         and (LN_tipos_doc_carga_verif.familia = @cFamilia or LN_tipos_doc_carga_verif.familia is null)

                                    and LN_docs.tipo_doc in (
          -- MIS 06/08/2024: Para que tome los documentos de los sub sets 
                                        select LN_set_tipo_doc.tipo_doc
          from LN_set_tipo_doc
          where set_doc in (select set_doc 
                              from LN_CONTRAPARTE_SUB_SET 
                 where LN_CONTRAPARTE_SUB_SET.gestion = ln_gestiones.gestion and LN_CONTRAPARTE_SUB_SET.activo = 1)
                                        union 
          ---
          select LN_set_tipo_doc.tipo_doc
                                            from LN_set_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
                                            inner join LN_contrapartes on (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte and LN_familias.cliente = LN_contrapartes.cliente)
                                            left outer join LN_tipos_doc_carga_verif on (LN_familias.cliente = LN_tipos_doc_carga_verif.cliente and LN_set_tipo_doc.tipo_doc = LN_tipos_doc_carga_verif.tipo_doc  and LN_tipos_doc_carga_verif.familia = LN_familias.familia)

                                            where LN_contraparte_familias.contraparte = @p_contraparte
                                            and LN_contraparte_familias.activo = 1
                                            and LN_familias.visible = 1
                                            and LN_set_tipo_doc.activo = 1
                                            union
                                            select LN_set_tipo_doc.tipo_doc
                                            from LN_set_tipo_doc  
                                            where set_doc in (select distinct lista_subset from LN_familias_tipo_informe 
                                            inner join informes on informes.id_tipo_informe = LN_familias_tipo_informe.id_tipo_informe
                                            inner join ln_demo on ln_demo.informe=informes.informe
                                            inner join ln_familias on ln_familias.familia = LN_familias_tipo_informe.familia
                                            inner join LN_contraparte_familias on LN_contraparte_familias.familia= ln_familias.familia
                                            where ln_demo.contraparte = @p_contraparte)

                                        )

         ORDER BY clientes.nombre_cliente, padrones.nombre_persona, LN_docs.aplica desc, orden_estado, 
                                    LN_tipos_doc.nombre_tipo_doc, LN_docs.doc_version 
                                    return 

         end
        else /* SIN FAMILIA ASIGNADA*/
         begin

         SELECT LN_tipos_doc_carga_verif.quien_verifica, LN_docs.doc_id, LN_docs.contraparte, LN_docs.cliente, LN_docs.tipo_doc,
          LN_docs.doc_version, 
          IIF(ln_docs.aplica = 0, 'N',LN_docs.estado_doc) as estado_doc, 
          LN_docs.doc_log, LN_docs.doc_attach,
          IIF(ln_docs.aplica = 0, 'No solicitado',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'Pendiente de ingreso'
           WHEN LN_docs.estado_doc = 'I' THEN 'Ingresado'
           WHEN LN_docs.estado_doc = 'R' THEN 'Rechazado'
           WHEN LN_docs.estado_doc = 'V' THEN 'Verificado'
          END) AS estado_documento,
          IIF(ln_docs.aplica = 0, 'text-info',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'text-info'
           WHEN LN_docs.estado_doc = 'I' THEN 'text-warning'
           WHEN LN_docs.estado_doc = 'R' THEN 'text-danger'
           WHEN LN_docs.estado_doc = 'V' THEN 'text-success'
          END) AS class_estado,
          IIF(ln_docs.aplica = 0, 'minus',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'cloud-upload fa-cloud-upload-alt'
           WHEN LN_docs.estado_doc = 'I' THEN 'exclamation'
           WHEN LN_docs.estado_doc = 'R' THEN 'times'
           WHEN LN_docs.estado_doc = 'V' THEN 'check'
          END) AS icon_estado,
          IIF(ln_docs.aplica = 0, '999',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 1
           WHEN LN_docs.estado_doc = 'I' THEN 3
           WHEN LN_docs.estado_doc = 'R' THEN 2
           WHEN LN_docs.estado_doc = 'V' THEN 4
          END) AS orden_estado,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.fecha_vigencia, 112)) AS fecha_vigencia,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.fecha_vigencia, 103)) AS fecha_vigencia_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.vencimiento_carga, 112)) AS vencimiento_carga,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.vencimiento_carga, 103)) AS vencimiento_carga_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.created, 112)) AS created,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.created, 103)) AS created_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.modified, 112)) AS modified,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.modified, 103)) AS modified_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.ingresado, 112)) AS ingresado,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.ingresado, 103)) AS ingresado_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.rechazado, 112)) AS rechazado,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.rechazado, 103)) AS rechazado_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_backend, 112)) AS verificado_backend,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_backend, 103)) AS verificado_backend_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_cliente, 112)) AS verificado_cliente,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_cliente, 103)) AS verificado_cliente_dmy,

          ISNULL(LN_tipos_doc.es_balance, 0) AS es_balance,

          CONVERT(VARCHAR(10), LN_docs.inicio_ejercicio, 103) AS inicio_ejercicio,
          CONVERT(VARCHAR(10), LN_docs.fin_ejercicio, 103) AS fin_ejercicio, 
  
          LN_docs.gestion,

          LN_docs.ingresado_por, LN_docs.rechazado_por, LN_docs.verificado_backend_por,
          LN_docs.verificado_cliente_por, LN_docs.created_by, LN_docs.modified_by,
          clientes.nombre_cliente, padrones.nombre_persona, padrones.identificador,
          padrones.numero, identificadores.abreviatura, identificadores.country_code,
          country.country_name, LN_contrapartes.activo, LN_contrapartes.nombre_contacto,
          LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
          LN_tipos_doc.nombre_tipo_doc, LN_tipos_doc.tipo_vigencia, LN_docs.id_externo,
          users1.first_name + ' ' + users1.last_name AS ingresado_por_usuario,
          users2.first_name + ' ' + users2.last_name AS rechazado_por_usuario,
          users3.first_name + ' ' + users3.last_name AS verificado_backend_por_usuario,
          users4.first_name + ' ' + users4.last_name AS verificado_cliente_por_usuario,
          users5.first_name + ' ' + users5.last_name AS created_by_usuario,
          users6.first_name + ' ' + users6.last_name AS modified_by_usuario,

          balances_contables.id_balance,
          balances_contables.fecha_balance, balances_contables.ejercicio, 
          balances_contables.periodo, balances_contables.visible, 
          balances_contables.estado, balances_contables.ruta_archivo,
          convert(varchar, balances_contables.fecha_balance, 103) as fecha_cierre,
          balances_contables.moneda, monedas.nombre_moneda, ln_demo.docs_ok,ln_demo.integ_carga,ln_demo.integ_rech,ln_demo.integ_verif,ln_docs.aplica
          ,isnull(LN_tipos_doc_carga_verif.quien_carga,'L') as quien_carga,LN_tipos_doc.es_dni,LN_tipos_doc.consentimiento,
                                        LN_docs.valoracion  ,ln_tipos_doc.es_evidencia,LN_tipos_doc.es_hit,
          iif(LN_docs.es_balance = 1, Ln_docs.id_externo, null) as id_balance

         FROM LN_docs
         INNER JOIN clientes ON LN_docs.cliente = clientes.cliente
         INNER JOIN LN_contrapartes ON LN_docs.contraparte = LN_contrapartes.contraparte
         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_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc

         INNER JOIN LN_gestiones ON (LN_contrapartes.contraparte = LN_gestiones.contraparte
                AND LN_docs.gestion = LN_gestiones.gestion)

                                    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 LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                                                                    AND LN_tipos_doc.tipo_doc = LN_set_tipo_doc.tipo_doc
                                                                    AND LN_set_tipo_doc.activo = 1)

         LEFT OUTER JOIN balances_contables ON LN_docs.id_externo = balances_contables.id_balance
         LEFT OUTER JOIN monedas ON balances_contables.moneda = monedas.moneda

         LEFT OUTER JOIN users users1 ON LN_docs.ingresado_por = users1.user_id
         LEFT OUTER JOIN users users2 ON LN_docs.rechazado_por = users2.user_id
         LEFT OUTER JOIN users users3 ON LN_docs.verificado_backend_por = users3.user_id
         LEFT OUTER JOIN users users4 ON LN_docs.verificado_cliente_por = users4.user_id
         LEFT OUTER JOIN users users5 ON LN_docs.created_by = users5.user_id
         LEFT OUTER JOIN users users6 ON LN_docs.modified_by = users6.user_id         
         left join LN_tipos_doc_carga_verif on (LN_tipos_doc_carga_verif.tipo_doc= LN_tipos_doc.tipo_doc and LN_tipos_doc_carga_verif.cliente = ln_contrapartes.cliente and LN_tipos_doc_carga_verif.activo=1 /* and LN_tipos_doc_carga_verif.familia = @cFamilia*/) 
         left join ln_demo on (ln_gestiones.contraparte=LN_demo.contraparte and ln_gestiones.gestion = ln_demo.gestion and ln_gestiones.vigente=1)
         LEFT JOIN dbo.DelimitedSplit8K(@p_quien_carga, ',') QUIENCARGA ON ISNULL(LN_tipos_doc_carga_verif.quien_carga,'L') IN (QUIENCARGA.Item)

         /*AGB agb */
         WHERE LN_contrapartes.contraparte = @p_contraparte
         AND LN_gestiones.desde <= @fecha_gestion 
         AND LN_gestiones.hasta >= @fecha_gestion
         AND LN_docs.estado_doc != 'X'
         /*and LN_tipos_doc_carga_verif.familia = @cFamilia */
         AND (LN_docs.aplica = 1 OR 
              (LN_docs.aplica = 0 and 
            not exists (select * from LN_docs b 
                         where b.contraparte = ln_docs.contraparte 
                  and b.tipo_doc = ln_docs.tipo_doc 
               and ISNULL(b.inicio_ejercicio, '2001-01-01') = ISNULL(ln_docs.inicio_ejercicio, '2001-01-01')
                  and b.gestion = ln_docs.gestion 
               and b.estado_doc != 'X'
               and b.aplica = 1))
          )
         
         --and LN_tipos_doc_carga_verif.familia = @cFamilia
         -- MIS 12/06/2024
         --and ISNULL(LN_tipos_doc_carga_verif.familia,0) = 0
         and (LN_tipos_doc_carga_verif.familia = @cFamilia or LN_tipos_doc_carga_verif.familia is null)


         ORDER BY clientes.nombre_cliente, padrones.nombre_persona, LN_docs.aplica desc, orden_estado, LN_set_tipo_doc.orden, LN_tipos_doc.nombre_tipo_doc, LN_docs.doc_version 

         -- exec ln_contrapartes_ 'DOCUMENTOS_GESTION_ACTIVA',190281,null,null,null,null,null,null,null,null,null,null,null,null,null
         --select * from ln_demo where contraparte=190280
         --delete ln_demo where contraparte=190280 and producto=10
                                    return 
         end




        END ELSE


        IF (@accion = 'DOCUMENTOS_POR_GESTION') BEGIN
        /* Como la acción 'DOCUMENTOS_GESTION_ACTIVA', 
            pero toma todos los documentos que figuran en la gestion (de la fecha enviada como parametro), 
            sin tener en cuenta si la familia actual tiene el documento, si esta en el set de documentos, etc.
            porque puede ocurrir que según la gestión esté en distinta familia, o que se haya cambiado 
            la configuración de set de documentos.
            Por eso, toma todos los documentos que no estén en estado 'X' o aplica = 0, 
            de la gestión que estamos buscando */


           -- 06/08/2024: Si no se le manda la fecha de gestion como parametro, toma la ultima gestion 
           IF @fecha_gestion IS NULL 
           BEGIN
          SELECT top 1 @fecha_gestion = desde 
               FROM LN_Gestiones 
          where contraparte = @p_contraparte and vigente = 1
           END
           ---

         SELECT LN_docs.doc_id, LN_docs.contraparte, LN_docs.cliente, LN_docs.tipo_doc,
          LN_docs.doc_version, 
          IIF(ln_docs.aplica = 0, 'N',LN_docs.estado_doc) as estado_doc, 
          LN_docs.doc_log, LN_docs.doc_attach,
          IIF(ln_docs.aplica = 0, 'No solicitado',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'Pendiente de ingreso'
           WHEN LN_docs.estado_doc = 'I' THEN 'Ingresado'
           WHEN LN_docs.estado_doc = 'R' THEN 'Rechazado'
           WHEN LN_docs.estado_doc = 'V' THEN 'Verificado'
          END) AS estado_documento,
          IIF(ln_docs.aplica = 0, 'text-info',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'text-info'
           WHEN LN_docs.estado_doc = 'I' THEN 'text-warning'
           WHEN LN_docs.estado_doc = 'R' THEN 'text-danger'
           WHEN LN_docs.estado_doc = 'V' THEN 'text-success'
          END) AS class_estado,
          IIF(ln_docs.aplica = 0, 'minus',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 'cloud-upload fa-cloud-upload-alt'
           WHEN LN_docs.estado_doc = 'I' THEN 'exclamation'
           WHEN LN_docs.estado_doc = 'R' THEN 'times'
           WHEN LN_docs.estado_doc = 'V' THEN 'check'
          END) AS icon_estado,
          IIF(ln_docs.aplica = 0, '999',
          CASE 
           WHEN LN_docs.estado_doc = 'N' THEN 1
           WHEN LN_docs.estado_doc = 'I' THEN 3
           WHEN LN_docs.estado_doc = 'R' THEN 2
           WHEN LN_docs.estado_doc = 'V' THEN 4
          END) AS orden_estado,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.fecha_vigencia, 112)) AS fecha_vigencia,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.fecha_vigencia, 103)) AS fecha_vigencia_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.vencimiento_carga, 112)) AS vencimiento_carga,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.vencimiento_carga, 103)) AS vencimiento_carga_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.created, 112)) AS created,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.created, 103)) AS created_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.modified, 112)) AS modified,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.modified, 103)) AS modified_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.ingresado, 112)) AS ingresado,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.ingresado, 103)) AS ingresado_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.rechazado, 112)) AS rechazado,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.rechazado, 103)) AS rechazado_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_backend, 112)) AS verificado_backend,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_backend, 103)) AS verificado_backend_dmy,

          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_cliente, 112)) AS verificado_cliente,
          IIF(ln_docs.aplica = 0, null, CONVERT(VARCHAR, LN_docs.verificado_cliente, 103)) AS verificado_cliente_dmy,

          ISNULL(LN_tipos_doc.es_balance, 0) AS es_balance,

          CONVERT(VARCHAR(10), LN_docs.inicio_ejercicio, 103) AS inicio_ejercicio,
          CONVERT(VARCHAR(10), LN_docs.fin_ejercicio, 103) AS fin_ejercicio, 
  
          LN_docs.gestion, 
          --isnull(LN_tipos_doc_carga_verif.quien_carga,'L') as quien_carga,
          LN_tipos_doc.es_dni,LN_tipos_doc.consentimiento,
                                        LN_docs.valoracion  ,ln_tipos_doc.es_evidencia,LN_tipos_doc.es_hit,

          LN_docs.ingresado_por, LN_docs.rechazado_por, LN_docs.verificado_backend_por,
          LN_docs.verificado_cliente_por, LN_docs.created_by, LN_docs.modified_by,
          clientes.nombre_cliente, padrones.nombre_persona, padrones.identificador,
          padrones.numero, identificadores.abreviatura, identificadores.country_code,
          country.country_name, LN_contrapartes.activo, LN_contrapartes.nombre_contacto,
          LN_contrapartes.email_contacto, LN_contrapartes.web, LN_contrapartes.telefono_contacto,
          upper(LN_tipos_doc.nombre_tipo_doc) as nombre_tipo_doc, LN_tipos_doc.tipo_vigencia, LN_docs.id_externo,
          users1.first_name + ' ' + users1.last_name AS ingresado_por_usuario,
          users2.first_name + ' ' + users2.last_name AS rechazado_por_usuario,
          users3.first_name + ' ' + users3.last_name AS verificado_backend_por_usuario,
          users4.first_name + ' ' + users4.last_name AS verificado_cliente_por_usuario,
          users5.first_name + ' ' + users5.last_name AS created_by_usuario,
          users6.first_name + ' ' + users6.last_name AS modified_by_usuario,

          balances_contables.id_balance,
          balances_contables.fecha_balance, balances_contables.ejercicio, 
          balances_contables.periodo, balances_contables.visible, 
          balances_contables.estado, balances_contables.ruta_archivo,
          convert(varchar, balances_contables.fecha_balance, 103) as fecha_cierre,
          balances_contables.moneda, monedas.nombre_moneda,
          iif(LN_docs.es_balance = 1, Ln_docs.id_externo, null) as id_balance


         FROM LN_docs
         INNER JOIN clientes ON LN_docs.cliente = clientes.cliente
         INNER JOIN LN_contrapartes ON LN_docs.contraparte = LN_contrapartes.contraparte
         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_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
         INNER JOIN LN_gestiones ON (LN_contrapartes.contraparte = LN_gestiones.contraparte
                AND LN_docs.gestion = LN_gestiones.gestion)
/*
                                    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 LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                                                                    AND LN_tipos_doc.tipo_doc = LN_set_tipo_doc.tipo_doc
                                                                    AND LN_set_tipo_doc.activo = 1)
*/

         LEFT OUTER JOIN balances_contables ON LN_docs.id_externo = balances_contables.id_balance
         LEFT OUTER JOIN monedas ON balances_contables.moneda = monedas.moneda

         LEFT OUTER JOIN users users1 ON LN_docs.ingresado_por = users1.user_id
         LEFT OUTER JOIN users users2 ON LN_docs.rechazado_por = users2.user_id
         LEFT OUTER JOIN users users3 ON LN_docs.verificado_backend_por = users3.user_id
         LEFT OUTER JOIN users users4 ON LN_docs.verificado_cliente_por = users4.user_id
         LEFT OUTER JOIN users users5 ON LN_docs.created_by = users5.user_id
         LEFT OUTER JOIN users users6 ON LN_docs.modified_by = users6.user_id 
         
         --left join LN_tipos_doc_carga_verif on (LN_tipos_doc_carga_verif.tipo_doc= LN_tipos_doc.tipo_doc and LN_tipos_doc_carga_verif.cliente = ln_contrapartes.cliente and LN_tipos_doc_carga_verif.activo=1 /* and LN_tipos_doc_carga_verif.familia = @cFamilia*/) 
         
         --INNER JOIN dbo.DelimitedSplit8K(@p_quien_carga, ',') QUIENCARGA ON ISNULL(LN_tipos_doc_carga_verif.quien_carga,'L') IN (QUIENCARGA.Item)



         WHERE LN_contrapartes.contraparte = @p_contraparte
         AND LN_gestiones.desde <= @fecha_gestion 
         AND LN_gestiones.hasta >= @fecha_gestion
         AND LN_docs.estado_doc != 'X'
         AND (LN_docs.aplica = 1 OR 
              (LN_docs.aplica = 0 and 
            not exists (select * from LN_docs b 
                         where b.contraparte = ln_docs.contraparte 
                  and b.tipo_doc = ln_docs.tipo_doc 
               and ISNULL(b.inicio_ejercicio, '2001-01-01') = ISNULL(ln_docs.inicio_ejercicio, '2001-01-01')
                  and b.gestion = ln_docs.gestion 
               and b.estado_doc != 'X'
               and b.aplica = 1))
          )

         ORDER BY clientes.nombre_cliente, padrones.nombre_persona, LN_docs.aplica desc, orden_estado, 
         LN_tipos_doc.nombre_tipo_doc, 
         LN_docs.doc_version 



        END ELSE




         IF (@accion = 'PRODUCTO_SUBCONTRATISTAS') BEGIN

          /* dada una contraparte, determinar si puede dar de alta subcontratistas
           en función de los productos asociados al cliente y la familia a la
           que pertenece la misma */



          select LN_productos.producto
          from LN_contraparte_familias
          inner join LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
          inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.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_cliente_productos ON (LN_familias.cliente = LN_cliente_productos.cliente
                   AND LN_familia_productos.producto = LN_cliente_productos.producto)
          inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
          where LN_contraparte_familias.contraparte = @p_contraparte
          AND LN_productos.subcontratistas = 1
          AND LN_familias.visible = 1
          AND LN_familia_productos.activo = 1
          AND LN_cliente_productos.activo = 1
          AND LN_productos.visible = 1
          AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= getdate()


         END ELSE

          IF (@accion = 'DOCUMENTOS_SUBCONTRATISTAS') BEGIN

           /* dada una contraparte (PADRE), determinar si existen productos del tipo documentación
            asociada a sus subcontratistas, a través de las subfamilias correspondientes */

           select LN_productos.producto
           from LN_contraparte_familias
           inner join LN_contrapartes ON LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
           inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.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_cliente_productos ON (LN_familias.cliente = LN_cliente_productos.cliente
                    AND LN_familia_productos.producto = LN_cliente_productos.producto)
           inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto

           /* este join es para exigir que las subfamilias de subcontratistas estén vinculadas
            a al menos una familia de la contraparte padre */

           inner join (select LN_subfamilias.familia
              from LN_subfamilias
              inner join LN_familias on LN_subfamilias.familia = LN_familias.familia
              inner join LN_contraparte_familias on LN_subfamilias.familia_padre = LN_contraparte_familias.familia
              where LN_contraparte_familias.contraparte = @p_contraparte
              and LN_familias.subfamilia = 1
              group by LN_subfamilias.familia) subf ON LN_familia_productos.familia = subf.familia


           where LN_contrapartes.id_padre = @p_contraparte
           AND LN_contrapartes.subcontratista = 1
           AND LN_productos.documentos = 1
           AND LN_familias.visible = 1
           AND LN_familia_productos.activo = 1
           AND LN_cliente_productos.activo = 1
           AND LN_productos.visible = 1
           AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= getdate()
           group by LN_productos.producto

          END ELSE

           /* Específico para el update de datos de contraparte desde el backend */
           IF (@accion = 'UPDATE_BACKEND') BEGIN

            UPDATE LN_contrapartes SET
            datos_comerciales = @p_datos_comerciales,
            activo = @p_activo,
            nombre_contacto = @p_nombre_contacto,
            email_contacto = @p_email_contacto,
            web = iif(@p_web is not null, @p_web, web), 
            telefono_contacto = @p_telefono_contacto,
            vigencia_desde = @p_vigencia_desde,
            vigencia_hasta = @p_vigencia_hasta,
            pais_servicio = iif(@pais_servicio is not null, @pais_servicio, pais_servicio),
            codigo_idioma = @p_codigo_idioma,

            modified = GETDATE(),
            modified_by = @p_user_id,
            idSectorPriv = @sector,
            idTipoServicioPriv = @tipo_servicio,
            email_ejecutivo_cuenta = @responsable  , 
            -- 24/04/2024
            id_referencia = @p_id_referencia
            --
            WHERE contraparte = @p_contraparte

           END ELSE

           IF (@accion = 'UPDATE_FRONTEND') BEGIN
            UPDATE LN_contrapartes SET
            datos_comerciales = @p_datos_comerciales,
            activo = @p_activo,
            nombre_contacto = @p_nombre_contacto,
            email_contacto = @p_email_contacto,
            web = iif(@p_web is not null, @p_web, web), 
            telefono_contacto = @p_telefono_contacto,
            vigencia_desde = @p_vigencia_desde,
            vigencia_hasta = @p_vigencia_hasta,
            pais_servicio = iif(@pais_servicio is not null, @pais_servicio, pais_servicio),
            codigo_idioma = @p_codigo_idioma,
            modalidad_pago = @p_modalidad_pago, 
            modified = GETDATE(),
            modified_by = @p_user_id,
            idSectorPriv = @sector,
            idTipoServicioPriv = @tipo_servicio,
            email_ejecutivo_cuenta = @responsable  
            WHERE contraparte = @p_contraparte

            declare @idImperium int = 0
            select @idImperium = isnull(id_imperium,0) from ln_contrapartes where contraparte = @p_contraparte

/*select @idImperium as HHHHHH,@p_contraparte cont  159588*/
            if (@idImperium > 0)
            begin
             update led_contratistas set codigo_interno = @codigo_interno_imperium where contratista = @idImperium
            end

            /* DNV select codigo_interno from led_contratistas where contratista = 4870 100070 */
/*
select codigo_interno from led_contratistas where contratista = 4870
exec LN_contrapartes_ 'UPDATE_FRONTEND','159588',NULL,NULL,'',1,'RODADOS MEDITERRANEA','rrhh@rodmedit.com.ar','54-351-4751500 int 131',NULL,NULL,NULL,NULL,NULL,232000842,NULL,NULL,'CC',NULL,NULL,'AR',NULL,'spa',NULL,'','',NULL,NULL,NULL,NULL,NULL,NULL,'test'
select codigo_interno from led_contratistas where contratista = 4870
*/




           END ELSE

            /* Devolver un query con una columna modalidad_login con valores 'T' o 'L' según configuración --por tax id o por link */
            IF (@accion = 'MODALIDAD_LOGIN') BEGIN

             if (@p_contraparte is not null) begin

              declare @modo varchar(1) = 'L', @ml varchar(1)

              DECLARE Familias CURSOR FOR

              select distinct ISNULL(LN_familias.modalidad_login, 'T') AS modalidad_login
              from LN_contrapartes 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)              
              where LN_contraparte_familias.contraparte = @p_contraparte
              and LN_contraparte_familias.activo = 1
              and LN_familias.visible = 1

              Open Familias
              Fetch next from Familias into @ml
              While @@FETCH_STATUS = 0 begin
               if (@modo != 'T') begin
                set @modo = @ml
               end
               Fetch next from Familias into @ml
              End
              Close Familias
              Deallocate Familias

              SELECT @p_contraparte AS contraparte, @modo AS modalidad_login

             end


            END ELSE
                                                IF (@accion = 'NUEVA_GESTION') 
                                                BEGIN
              /* Busco la gestión activa */
              select @gest = gestion, @cliente = cliente
              from LN_gestiones
              where contraparte = @p_contraparte
              and desde <= GETDATE()
              and hasta >= GETDATE()

              /* Si no hay gestión activa, se busca la más reciente */
              if (@gest is null)

               select top 1 @gest = gestion, @cliente = cliente
               from LN_gestiones
               where contraparte = @p_contraparte
               and hasta < convert(date, GETDATE())
               order by hasta DESC

              else
               /* gestion no finalizada, actualizo la vigente hasta un día antes de hoy */
               update LN_gestiones set 
                hasta = CONVERT(DATE, DATEADD(DAY,-1,GETDATE())),
                vigente = 0,
                modified = GETDATE(),
                modified_by = @p_user_id
               where gestion = @gest


              if (@gest is not null) begin

               INSERT INTO LN_gestiones 
                (cliente, contraparte, desde, hasta, vigente, created, created_by)
               VALUES
                (@cliente, @p_contraparte, 
                iif(@p_vigencia_desde is null, CONVERT(DATE,GETDATE()), @p_vigencia_desde),
                iif(@p_vigencia_hasta is null, '2099-12-31', @p_vigencia_hasta),
                1, GETDATE(), @p_user_id)

               SET @nueva_gestion = SCOPE_IDENTITY()

               UPDATE LN_contrapartes SET 
                carga_inicial = 1,
                limite_carga_inicial = DATEADD(MINUTE,-1, CONVERT(DATETIME,DATEADD(DAY,15,CONVERT(DATE, GETDATE())))),
                modified = GETDATE(),
                modified_by = @p_user_id
               WHERE contraparte = @p_contraparte

               /* Crear la documentación de la nueva gestión */
               EXEC LN_actualizar_legajo @p_contraparte, @nueva_gestion, @p_user_id

               /* Traslado de balances a la nueva gestión */
               UPDATE LN_docs SET
                 fecha_vigencia = Anteriores.fecha_vigencia,
                 ingresado = Anteriores.ingresado,
                 ingresado_por = Anteriores.ingresado_por,
                 verificado_backend = Anteriores.verificado_backend,
                 verificado_backend_por = Anteriores.verificado_backend_por,
                 estado_doc = Anteriores.estado_doc,
                 id_externo = Anteriores.id_externo,
                 aplica = Anteriores.aplica

               FROM LN_docs INNER JOIN LN_docs Anteriores ON
                 (LN_docs.tipo_doc = Anteriores.tipo_doc
                 and LN_docs.contraparte = Anteriores.contraparte
                 and LN_docs.inicio_ejercicio = Anteriores.inicio_ejercicio
                 and LN_docs.fin_ejercicio = Anteriores.fin_ejercicio)
               INNER JOIN LN_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc

               WHERE LN_docs.contraparte = @p_contraparte
               AND LN_docs.gestion = @nueva_gestion
               AND LN_tipos_doc.es_balance = 1
               AND Anteriores.gestion = @gest
               AND Anteriores.aplica = 1


               /* Recálculo de indicadores */
               EXEC LN_contrapartes_queue_ 'insert',NULL,@p_contraparte

                     select @nueva_gestion as gestion
                                                           

              end
                                                    end



             IF (@accion = 'NUEVA_GESTION2') BEGIN
              /* Busco la gestión activa */
              select @gest = gestion, @cliente = cliente
              from LN_gestiones
              where contraparte = @p_contraparte
              and desde <= GETDATE()
              and hasta >= GETDATE()

              /* Si no hay gestión activa, se busca la más reciente */
              if (@gest is null)

               select top 1 @gest = gestion, @cliente = cliente
               from LN_gestiones
               where contraparte = @p_contraparte
               and hasta < convert(date, GETDATE())
               order by hasta DESC

              else
               /* gestion no finalizada, actualizo la vigente hasta un día antes de hoy */
               update LN_gestiones set 
                hasta = CONVERT(DATE, DATEADD(DAY,-1,GETDATE())),
                vigente = 0,
                modified = GETDATE(),
                modified_by = @p_user_id
               where gestion = @gest


              if (@gest is not null) begin

               INSERT INTO LN_gestiones 
                (cliente, contraparte, desde, hasta, vigente, created, created_by)
               VALUES
                (@cliente, @p_contraparte, 
                iif(@p_vigencia_desde is null, CONVERT(DATE,GETDATE()), @p_vigencia_desde),
                iif(@p_vigencia_hasta is null, '2099-12-31', @p_vigencia_hasta),
                1, GETDATE(), @p_user_id)

               SET @nueva_gestion = SCOPE_IDENTITY()
               UPDATE LN_contrapartes SET 
                id_referencia = @p_id_referencia,
                carga_inicial = 1, activo=1, 
                limite_carga_inicial = DATEADD(MINUTE,-1, CONVERT(DATETIME,DATEADD(DAY,15,CONVERT(DATE, GETDATE())))),
                modified = GETDATE(),
                modified_by = @p_user_id, 
                datos_comerciales = @p_datos_comerciales,
                /*datos_comerciales = iif((@p_email_contacto is not null or @p_telefono_contacto is not null) and 
                                         (email_contacto is not null or telefono_contacto is not null),
                 isnull(convert(varchar(max),datos_comerciales),'') + 
                 ' - al ' + convert(varchar,convert(date,getdate()),103) + ' ' + 
                 isnull(email_contacto,'') + ' ' + isnull(telefono_contacto,''),
                 datos_comerciales),*/

                nombre_contacto= iif(@p_nombre_contacto is not null, @p_nombre_contacto, nombre_contacto),
                email_contacto = iif(@p_email_contacto is not null, @p_email_contacto, email_contacto),
                telefono_contacto = iif(@p_telefono_contacto is not null, @p_telefono_contacto,telefono_contacto)
               WHERE contraparte = @p_contraparte

               /* Crear la documentación de la nueva gestión */
               EXEC LN_actualizar_legajo @p_contraparte, @nueva_gestion, @p_user_id

               /* Traslado de balances a la nueva gestión */
               UPDATE LN_docs SET
                 fecha_vigencia = Anteriores.fecha_vigencia,
                 ingresado = Anteriores.ingresado,
                 ingresado_por = Anteriores.ingresado_por,
                 verificado_backend = Anteriores.verificado_backend,
                 verificado_backend_por = Anteriores.verificado_backend_por,
                 estado_doc = Anteriores.estado_doc,
                 id_externo = Anteriores.id_externo,
                 aplica = Anteriores.aplica

               FROM LN_docs INNER JOIN LN_docs Anteriores ON
                 (LN_docs.tipo_doc = Anteriores.tipo_doc
                 and LN_docs.contraparte = Anteriores.contraparte
                 and LN_docs.inicio_ejercicio = Anteriores.inicio_ejercicio
                 and LN_docs.fin_ejercicio = Anteriores.fin_ejercicio)
               INNER JOIN LN_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc

               WHERE LN_docs.contraparte = @p_contraparte
               AND LN_docs.gestion = @nueva_gestion
               AND LN_tipos_doc.es_balance = 1
               AND Anteriores.gestion = @gest
               AND Anteriores.aplica = 1


               /* Recálculo de indicadores */
               EXEC LN_contrapartes_queue_ 'insert',NULL,@p_contraparte

                     return @nueva_gestion

              end

             END ELSE

              IF (@accion = 'prepagos') BEGIN

               if (@p_contraparte is null) begin

                if (@p_transact_id is null)

                 select LN_contrapartes.contraparte, LN_gestiones.gestion,
                   LN_contrapartes.cliente, 
                   LN_contrapartes.id_padron, 
                   LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, 
                   CONVERT(VARCHAR, LN_gestiones.desde,103) AS vigencia_desde,
                   CONVERT(VARCHAR, LN_gestiones.hasta,103) AS vigencia_hasta,
                   clientes.nombre_cliente, padrones.identificador, padrones.nombre_persona, identificadores.abreviatura,
                   padrones.numero, padrones.identificacion, country.country_name, identificadores.country_code,
                   pagos_transacciones.transact_id, pagos_transacciones.valor, pagos_transacciones.moneda,
                   pagos_transacciones.id_pago, pagos_transacciones.plataforma_pago, pagos_transacciones.status,
                   convert(varchar(10),pagos_transacciones.vigencia,103) as vigencia,
                      pagos_transacciones.vigencia as vigencia_completa,
                      pagos_transacciones.fecha_transaccion as fecha_transaccion_completa,
                   convert(date,pagos_transacciones.fecha_transaccion) as fecha_transaccion_ymd,
                   convert(date,pagos_transacciones.fecha_confirmacion) as fecha_confirmacion_ymd,
                   convert(date,pagos_transacciones.created) as fecha_creacion_ymd,

                   convert(varchar(10),pagos_transacciones.fecha_transaccion,103) as fecha_transaccion_dmy, 
                   convert(varchar(10),pagos_transacciones.fecha_confirmacion,103) as fecha_confirmacion_dmy, 
                   convert(varchar(10),pagos_transacciones.created,103) as fecha_creacion_dmy, 

                   convert(varchar(10),pagos_transacciones.fecha_transaccion,103)+' '+convert(varchar(5),pagos_transacciones.fecha_transaccion,14) as fecha_transaccion,
                   convert(varchar(10),pagos_transacciones.fecha_confirmacion,103)+' '+convert(varchar(5),pagos_transacciones.fecha_confirmacion,14) as fecha_confirmacion,
                   convert(varchar(10),pagos_transacciones.created,103)+' '+convert(varchar(5),pagos_transacciones.created,14) as fecha_creacion,
                   pagos_transacciones.motivo, pagos_transacciones.preference_id, pagos_transacciones.payment_id, 
                   iif(isnull(pagos_transacciones.facturado,0)=1,'SI','NO') as facturado,  
                   pagos_transacciones.fecha_facturado,
                   convert(varchar(10),pagos_transacciones.fecha_facturado,103) as fecha_facturado_dmy,
                   b.country_name as pais_servicio

                 from LN_contrapartes 
                 inner join clientes on LN_contrapartes.cliente = clientes.cliente
                 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 country b on ln_contrapartes.pais_servicio = b.country_code
                 inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
                 left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
                 where LN_contrapartes.activo = 1
                 and LN_gestiones.desde <= GETDATE()
                 and LN_gestiones.hasta >= GETDATE()
                 and LN_contrapartes.modalidad_pago = 'PP'
                 order by pagos_transacciones.fecha_transaccion desc

                else

                 select LN_contrapartes.contraparte, LN_gestiones.gestion,
                   LN_contrapartes.cliente, 
                   LN_contrapartes.id_padron, 
                   LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, 
                   CONVERT(VARCHAR, LN_gestiones.desde,103) AS vigencia_desde,
                   CONVERT(VARCHAR, LN_gestiones.hasta,103) AS vigencia_hasta,
                   clientes.nombre_cliente, padrones.identificador, padrones.nombre_persona, identificadores.abreviatura,
                   padrones.numero, padrones.identificacion, country.country_name, identificadores.country_code,
                   pagos_transacciones.transact_id, pagos_transacciones.valor, pagos_transacciones.moneda,
                   pagos_transacciones.id_pago, pagos_transacciones.plataforma_pago, pagos_transacciones.status,
                   convert(varchar(10),pagos_transacciones.vigencia,103) as vigencia,
                   
                   pagos_transacciones.vigencia as vigencia_completa,
                   pagos_transacciones.fecha_transaccion as fecha_transaccion_completa,
                   convert(date,pagos_transacciones.fecha_transaccion) as fecha_transaccion_ymd,
                   convert(date,pagos_transacciones.fecha_confirmacion) as fecha_confirmacion_ymd,
                   convert(date,pagos_transacciones.created) as fecha_creacion_ymd,

                   convert(varchar(10),pagos_transacciones.fecha_transaccion,103) as fecha_transaccion_dmy, 
                   convert(varchar(10),pagos_transacciones.fecha_confirmacion,103) as fecha_confirmacion_dmy, 
                   convert(varchar(10),pagos_transacciones.created,103) as fecha_creacion_dmy, 

                   convert(varchar(10),pagos_transacciones.fecha_transaccion,103)+' '+convert(varchar(5),pagos_transacciones.fecha_transaccion,14) as fecha_transaccion,
                   convert(varchar(10),pagos_transacciones.fecha_confirmacion,103)+' '+convert(varchar(5),pagos_transacciones.fecha_confirmacion,14) as fecha_confirmacion,
                   convert(varchar(10),pagos_transacciones.created,103)+' '+convert(varchar(5),pagos_transacciones.created,14) as fecha_creacion,
                   pagos_transacciones.motivo, pagos_transacciones.preference_id, pagos_transacciones.payment_id, 
                   iif(isnull(pagos_transacciones.facturado,0)=1,'SI','NO') as facturado,  
                   pagos_transacciones.fecha_facturado,
                   convert(varchar(10),pagos_transacciones.fecha_facturado,103) as fecha_facturado_dmy,
                   b.country_name as pais_servicio

                 from LN_contrapartes 
                 inner join clientes on LN_contrapartes.cliente = clientes.cliente
                 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 country b on ln_contrapartes.pais_servicio = b.country_code
                 inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
                 left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
                 where LN_contrapartes.activo = 1
                 and LN_gestiones.desde <= GETDATE()
                 and LN_gestiones.hasta >= GETDATE()
                 and LN_contrapartes.modalidad_pago = 'PP'
                 and pagos_transacciones.transact_id = @p_transact_id
                 order by pagos_transacciones.fecha_transaccion desc

               end

               else begin

                if (@p_transact_id is null)

                 select LN_contrapartes.contraparte, LN_gestiones.gestion,
                   LN_contrapartes.cliente, 
                   LN_contrapartes.id_padron, 
                   LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, 
                   CONVERT(VARCHAR, LN_gestiones.desde,103) AS vigencia_desde,
                   CONVERT(VARCHAR, LN_gestiones.hasta,103) AS vigencia_hasta,
                   clientes.nombre_cliente, padrones.identificador, padrones.nombre_persona, identificadores.abreviatura,
                   padrones.numero, padrones.identificacion, country.country_name, identificadores.country_code,
                   pagos_transacciones.transact_id, pagos_transacciones.valor, pagos_transacciones.moneda,
                   pagos_transacciones.id_pago, pagos_transacciones.plataforma_pago, pagos_transacciones.status,
                   convert(varchar(10),pagos_transacciones.vigencia,103) as vigencia,

                   pagos_transacciones.vigencia as vigencia_completa,
                   pagos_transacciones.fecha_transaccion as fecha_transaccion_completa,

                   convert(date,pagos_transacciones.fecha_transaccion) as fecha_transaccion_ymd,
                   convert(date,pagos_transacciones.fecha_confirmacion) as fecha_confirmacion_ymd,
                   convert(date,pagos_transacciones.created) as fecha_creacion_ymd,

                   convert(varchar(10),pagos_transacciones.fecha_transaccion,103) as fecha_transaccion_dmy, 
                   convert(varchar(10),pagos_transacciones.fecha_confirmacion,103) as fecha_confirmacion_dmy, 
                   convert(varchar(10),pagos_transacciones.created,103) as fecha_creacion_dmy, 

                   convert(varchar(10),pagos_transacciones.fecha_transaccion,103)+' '+convert(varchar(5),pagos_transacciones.fecha_transaccion,14) as fecha_transaccion,
                   convert(varchar(10),pagos_transacciones.fecha_confirmacion,103)+' '+convert(varchar(5),pagos_transacciones.fecha_confirmacion,14) as fecha_confirmacion,
                   convert(varchar(10),pagos_transacciones.created,103)+' '+convert(varchar(5),pagos_transacciones.created,14) as fecha_creacion,
                   pagos_transacciones.motivo, pagos_transacciones.preference_id, pagos_transacciones.payment_id, 
                   iif(isnull(pagos_transacciones.facturado,0)=1,'SI','NO') as facturado,  
                   pagos_transacciones.fecha_facturado,
                   convert(varchar(10),pagos_transacciones.fecha_facturado,103) as fecha_facturado_dmy,
                   b.country_name as pais_servicio

                 from LN_contrapartes 
                 inner join clientes on LN_contrapartes.cliente = clientes.cliente
                 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 country b on ln_contrapartes.pais_servicio = b.country_code
                 inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
                 left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
                 where LN_contrapartes.activo = 1
                 and LN_gestiones.desde <= GETDATE()
                 and LN_gestiones.hasta >= GETDATE()
                 and LN_contrapartes.modalidad_pago = 'PP'
                 and LN_contrapartes.contraparte = @p_contraparte
                 order by pagos_transacciones.fecha_transaccion desc

                else

                 select LN_contrapartes.contraparte, LN_gestiones.gestion,
                   LN_contrapartes.cliente, 
                   LN_contrapartes.id_padron, 
                   LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.web, 
                   CONVERT(VARCHAR, LN_gestiones.desde,103) AS vigencia_desde,
                   CONVERT(VARCHAR, LN_gestiones.hasta,103) AS vigencia_hasta,
                   clientes.nombre_cliente, padrones.identificador, padrones.nombre_persona, identificadores.abreviatura,
                   padrones.numero, padrones.identificacion, country.country_name, identificadores.country_code,
                   pagos_transacciones.transact_id, pagos_transacciones.valor, pagos_transacciones.moneda,
                   pagos_transacciones.id_pago, pagos_transacciones.plataforma_pago, pagos_transacciones.status,
                   convert(varchar(10),pagos_transacciones.vigencia,103) as vigencia,
                   
                   pagos_transacciones.vigencia as vigencia_completa,
                   pagos_transacciones.fecha_transaccion as fecha_transaccion_completa,

                   convert(date,pagos_transacciones.fecha_transaccion) as fecha_transaccion_ymd,
                   convert(date,pagos_transacciones.fecha_confirmacion) as fecha_confirmacion_ymd,
                   convert(date,pagos_transacciones.created) as fecha_creacion_ymd,

                   convert(varchar(10),pagos_transacciones.fecha_transaccion,103) as fecha_transaccion_dmy, 
                   convert(varchar(10),pagos_transacciones.fecha_confirmacion,103) as fecha_confirmacion_dmy, 
                   convert(varchar(10),pagos_transacciones.created,103) as fecha_creacion_dmy, 

                   convert(varchar(10),pagos_transacciones.fecha_transaccion,103)+' '+convert(varchar(5),pagos_transacciones.fecha_transaccion,14) as fecha_transaccion,
                   convert(varchar(10),pagos_transacciones.fecha_confirmacion,103)+' '+convert(varchar(5),pagos_transacciones.fecha_confirmacion,14) as fecha_confirmacion,
                   convert(varchar(10),pagos_transacciones.created,103)+' '+convert(varchar(5),pagos_transacciones.created,14) as fecha_creacion,
                   pagos_transacciones.motivo, pagos_transacciones.preference_id, pagos_transacciones.payment_id, 
                   iif(isnull(pagos_transacciones.facturado,0)=1,'SI','NO') as facturado,  
                   pagos_transacciones.fecha_facturado,
                   convert(varchar(10),pagos_transacciones.fecha_facturado,103) as fecha_facturado_dmy,
                   b.country_name as pais_servicio

                 from LN_contrapartes 
                 inner join clientes on LN_contrapartes.cliente = clientes.cliente
                 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 country b on ln_contrapartes.pais_servicio = b.country_code
                 inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
                 left outer join pagos_transacciones on LN_contrapartes.contraparte = pagos_transacciones.contraparte
                 where LN_contrapartes.activo = 1
                 and LN_gestiones.desde <= GETDATE()
                 and LN_gestiones.hasta >= GETDATE()
                 and LN_contrapartes.modalidad_pago = 'PP'
                 and LN_contrapartes.contraparte = @p_contraparte
                 and pagos_transacciones.transact_id = @p_transact_id
                 order by pagos_transacciones.fecha_transaccion desc


               end


              END ELSE

               IF (@accion = 'generar_prepagos') BEGIN

                if (@p_contraparte is not null) begin

                 declare @modalidad_pago varchar(2)
                 declare @country varchar(2)
                 declare @gestion_hasta date
                 declare @id_producto int = 47

                 select @cliente = LN_contrapartes.cliente, 
                   @modalidad_pago = LN_contrapartes.modalidad_pago,
                   @country = identificadores.country_code,
                   @gestion_hasta = LN_gestiones.hasta,
                   @id_producto = LN_contrapartes.servicio_contratado
                 from LN_contrapartes inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
                      inner join identificadores on padrones.identificador = identificadores.identificador
                      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()

                 if (@modalidad_pago = 'PP') begin

                  declare @familia int
                  --declare @id_producto int = (select 47 from LN_familias where familia = (select familia from LN_contraparte_familias where contraparte = @contraparte ))
                  
                  declare @id_pago int = NULL
                  declare @valor decimal(18,2)
                  declare @moneda varchar(3)
                  declare @vigencia datetime
                  declare @periodicidad varchar(1)
                  declare @transact_id int

                  declare Familias cursor for

                  select familia from LN_contraparte_familias where contraparte = @p_contraparte and activo = 1

                  Open Familias
                  Fetch next from Familias into @familia
                  While (@@FETCH_STATUS = 0) begin                   


                   if (@country = 'AR') begin
                  
                    declare Pagos cursor for

                    select iif(personalizado.id_pago is not null,personalizado.id_pago,cpp.id_pago) as id_pago,
                      iif(personalizado.valor is not null,personalizado.valor,cpp.valor) as valor,
                      iif(personalizado.moneda is not null,personalizado.moneda,cpp.moneda) as moneda,
                      cpp.periodicidad
                    from clientes_productos_pagos cpp
                    left join clientes_productos_pago_personalizado personalizado 
                       on (cpp.id_pago = personalizado.id_pago
                        and personalizado.familia = @familia)
                    where cpp.activo = 1 and cpp.cliente = @cliente and cpp.id_producto = @id_producto
                    and iif(personalizado.moneda is not null,personalizado.moneda,cpp.moneda) = 'ARS'

                   end

                   else begin

                    declare Pagos cursor for

                    select iif(personalizado.id_pago is not null,personalizado.id_pago,cpp.id_pago) as id_pago,
                      iif(personalizado.valor is not null,personalizado.valor,cpp.valor) as valor,
                      iif(personalizado.moneda is not null,personalizado.moneda,cpp.moneda) as moneda,
                      cpp.periodicidad
                    from clientes_productos_pagos cpp
/* 26 de Marzo de 2020 cambiado momentáneamente a las 20:26 por AGB de left join a inner join */
                    left join clientes_productos_pago_personalizado personalizado 
                       on (cpp.id_pago = personalizado.id_pago
                        and personalizado.familia = @familia)
                    where cpp.activo = 1 and cpp.cliente = @cliente and cpp.id_producto = @id_producto
                    and iif(personalizado.moneda is not null,personalizado.moneda,cpp.moneda) != 'ARS'

                   end

                   Open Pagos
                   Fetch next from Pagos into @id_pago, @valor, @moneda, @periodicidad
                   While (@@FETCH_STATUS = 0) begin
                  
                    -- si no existe ingresado un pago vigente para la contraparte
                    if NOT EXISTS (select id_pago from pagos_transacciones
                        where id_pago = @id_pago
                        and contraparte = @p_contraparte
                        and vigencia > GETDATE()) begin

                    
                     SET @vigencia = CASE
                      WHEN @periodicidad = 'M' THEN dateadd(second,-1, dateadd(day,1, convert(datetime,eomonth(getdate()) ))) 
                      WHEN @periodicidad = 'E' THEN dateadd(second,-1, dateadd(day,1, convert(datetime, convert(date, getdate())) ))
                      WHEN @periodicidad = 'B' THEN dateadd(second,-1, dateadd(day,1, iif(month(getdate()) % 2 = 0, convert(datetime,eomonth(getdate())) , convert(datetime,eomonth(dateadd(month, 1,getdate()))) ) ))
                      WHEN @periodicidad = 'T' THEN dateadd(second,-1, dateadd(day,1, convert(datetime, eomonth(dateadd(month, iif(month(getdate())%3 = 0, 0, 3-month(getdate())%3), getdate())) ) ))
                      WHEN @periodicidad = 'C' THEN dateadd(second,-1, dateadd(day,1, convert(datetime, eomonth(dateadd(month, iif(month(getdate())%4 = 0, 0, 4-month(getdate())%4), getdate())) ) ))
                      WHEN @periodicidad = 'S' THEN dateadd(second,-1, dateadd(day,1, convert(datetime, eomonth(dateadd(month, iif(month(getdate())%6 = 0, 0, 6-month(getdate())%6), getdate())) ) ))
                      WHEN @periodicidad = 'A' THEN DATETIMEFROMPARTS(year(getdate()),12,31,23,59,59,0)
                      WHEN @periodicidad = 'N' THEN dateadd(second,-1,dateadd(day,1,convert(datetime, @gestion_hasta)))
                     END


                     insert into pagos_transacciones
                      (id_pago, plataforma_pago, merchant_id, contraparte, user_id, producto, vigencia, created, valor, moneda, status)
                     values
                      (@id_pago, iif(@country='AR','MPAGO','2CHECKOUT'), null, @p_contraparte, @p_user_id, @id_producto, @vigencia, GETDATE(), @valor, @moneda, 'pending')


                     set @transact_id = SCOPE_IDENTITY()


                     insert into pagos_trazabilidad
                      (transact_id, user_id, horario, detalle)
                     values
                      (@transact_id, @p_user_id, GETDATE(), 'Ingreso de pago pendiente.')

                    end


                    Fetch next from Pagos into @id_pago, @valor, @moneda, @periodicidad
                   end
                   Close Pagos
                   Deallocate Pagos


                   Fetch next from Familias into @familia
                  end
                  Close Familias
                  Deallocate Familias


                 end
                end
                
               END ELSE

                -- Registrar el acceso por link a la web de legajos por parte de la contraparte
                IF (@accion = 'registrar_acceso') BEGIN

                 if (@p_contraparte > 0) begin

                  update LN_contrapartes SET
                    clave_temporal = 0,
                    clave_cambio = GETDATE(),
                    clave_expira = '2050-12-30 23:59'
                  where contraparte = @p_contraparte
                  and clave_temporal = 1
                  and clave_cambio is null

                  update LN_contrapartes SET
                    last_login = convert(smalldatetime, GETDATE()),
                    ultimo_acceso = GETDATE()
                  where contraparte = @p_contraparte
                 end

                END ELSE

                 -- Actualizar la fecha límite de carga inicial (usualmente luego de enviar el mail con el link)
                 -- ATENCION: enviarlo en el parámetro DATETIME @p_fecha_ultimo_cierre
                 IF (@accion = 'actualizar_carga_inicial') BEGIN
                  if (@p_contraparte > 0 and @p_fecha_ultimo_cierre is not null)
                  begin
                   update LN_contrapartes SET
                     limite_carga_inicial = @p_fecha_ultimo_cierre,
                     carga_inicial = 1
                   where contraparte = @p_contraparte

                   /* Actualiza fecha comprometida tareas facon (tipo_tarea = 'E') y la fecha proximo_llamado */

                   update informes set informes.fecha_comprometida = iif (@fecha_comprometida_tarea is not null, @fecha_comprometida_tarea, 
                                                                           iif(@p_fecha_ultimo_cierre is not null, @p_fecha_ultimo_cierre, informes.fecha_comprometida)), 
                   informes.proximo_llamado = IIF(@fecha_contacto is not null, @fecha_contacto, informes.proximo_llamado)
                    from informes 
                    inner join LN_tareas on ln_tareas.idTarea = informes.idTarea 
                    inner join LN_gestiones on (LN_gestiones.contraparte = @p_contraparte
                           and LN_gestiones.desde <= GETDATE()
                           and LN_gestiones.hasta >= GETDATE()
                           and LN_gestiones.vigente = 1 )
                    inner join LN_demo on (ln_demo.informe = informes.informe_padre and LN_demo.gestion = LN_gestiones.gestion)

                    where LN_tareas.tipo_tarea = 'E'
                   
                   /*-----------------------------*/

                   EXEC LN_contrapartes_queue_ 'insert',NULL,@p_contraparte

                  end
                  




               
                 END ELSE

                  IF (@accion = 'activar_informe') BEGIN
                   -- Dado el id de contraparte que tiene modo prepago, reactivar el informe en Carga Comercial para que esté visible en el panel de control del BLUE
                   if (@p_contraparte > 0) begin

                    DECLARE @informe int = NULL
                    DECLARE @estado_actual varchar(1) = NULL
                    DECLARE @asignado int = NULL
                    DECLARE @informe_log varchar(max)
                    DECLARE @preffix varchar(200) = ''
                    DECLARE @docs int = 0
                    DECLARE @id_tipo_informe int = NULL
                    DECLARE @item_contrato int = NULL
                    DECLARE @producto smallint = NULL
                    DECLARE @generico int = NULL
                    DECLARE @por_pais int = NULL
                    -- icontrato1 asociado al tipo de informe encontrato por pais
                    -- icontrato2 asociado al tipo de informe encontrado como genérico
                    -- prod1 asociado al tipo de informe encontrato por pais
                    -- prod2 asociado al tipo de informe encontrado como genérico
                    DECLARE @icontrato1 int = NULL, @icontrato2 int = NULL
                    DECLARE @prod1 smallint = NULL, @prod2 smallint = NULL
                    declare @user int, @datamanager int
                    declare @fecha_limite_doc datetime = NULL, @fecha_comprometida datetime = NULL

                    declare @producto_led int
                    declare @nuevoinf int = null
                    DECLARE @tipo_tarea_gestion int = NULL
                    DECLARE @usuario_gestion INT = NULL

                    DECLARE @id INT, @pais VARCHAR(2), @solicitud INT, @item INT, @prod SMALLINT
                    
                    
                    if(@p_user_id is not null) 
                     select @preffix = '['+isnull(first_name,'')+' '+isnull(last_name,'')+' - '+convert(varchar(10),getdate(),103)+' '+convert(varchar(5),getdate(),14)+']: '
                     from users where user_id = @p_user_id

                    --- traigo los datos del informe (si existe)
                    select @informe = informes.informe,
                      @id_tipo_informe = id_tipo_informe,
                      @estado_actual = informes.estado_informe,
                      @asignado = informes.asignado,
                      @informe_log = convert(varchar(max),informes.historial_informe),
                      @datamanager = informes.datamanager
                    from informes 
                    inner join LN_demo on informes.informe = LN_demo.informe
                    inner join LN_gestiones on (LN_demo.contraparte = LN_gestiones.contraparte
                           and LN_demo.gestion = LN_gestiones.gestion)
                    where LN_demo.contraparte = @p_contraparte
                    and LN_gestiones.desde <= GETDATE()
                    and LN_gestiones.hasta >= GETDATE()
                    and informes.informe_padre IS NULL


                    -- BUSCO si la contraparte va a tener que subir documentos (hay gestión)
                    select @docs = count(*)
                    from LN_set_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
                    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
                    left outer join LN_tipos_doc_carga_verif on
                     (LN_set_tipo_doc.tipo_doc = LN_tipos_doc_carga_verif.tipo_doc
                     and LN_familias.cliente = LN_tipos_doc_carga_verif.cliente)
                    where LN_contraparte_familias.contraparte = @p_contraparte
                    and LN_familias.visible = 1
                    and LN_contraparte_familias.activo = 1
                    and ISNULL(LN_tipos_doc_carga_verif.quien_carga, 'L') = 'L'
                    and LN_productos.documentos = 1
                    and LN_productos.visible = 1



                    -- El informe puede existir en carga comercial
                    if (@informe is not null AND @estado_actual = 'X') begin

                     -- si el informe está en carga comercial y fue cargado con usuario asignado lo pongo no calificado, sino ingresado
                     -- fecha comprometida estimada en 14 días, 7 de gestión y 7 de elaboración.

                     if (@datamanager is null) begin
                      -- Si no tiene datamanager le asignamos uno

                      select TOP 1 @datamanager = users.user_id
                      from users 
                      inner join usuarios_roles on users.user_id = usuarios_roles.user_id
                      inner join roles_tipo_informe on usuarios_roles.rol = roles_tipo_informe.rol
                      inner join idiomas on usuarios_roles.idioma = idiomas.idioma
                      inner join roles on roles_tipo_informe.rol = roles.rol
                      where roles_tipo_informe.id_tipo_informe = @id_tipo_informe
                      and idiomas.codigo_idioma = 'ES'
                      and roles.datamanager = 1
                      and users.active_user = 'Y'

                      update informes set datamanager = @datamanager where informe = @informe

                     end


                     if (@asignado is not null) begin                   

                      set @informe_log = iif(@informe_log is not null, @informe_log + CHAR(13)+CHAR(10), '')+@preffix+'Cambio automático de estado del informe a NO calificado por cobranza del pago correspondiente.'

                      update informes set estado_informe = 'A',
                           fecha_comprometida = convert(date, dateadd(day,14,getdate())),
                           historial_informe = @informe_log
                      where informe = @informe

                     end else begin

                      set @informe_log = iif(@informe_log is not null, @informe_log + CHAR(13)+CHAR(10), '')+@preffix+'Cambio automático de estado del informe a ingresado por cobranza del pago correspondiente.'

                      update informes set estado_informe = 'I',
                           fecha_comprometida = convert(date, dateadd(day,14,getdate())),
                           historial_informe = @informe_log
                      where informe = @informe

                      -- Lo asignamos
                      select TOP 1 @asignado = users.user_id
                      from users 
                      inner join usuarios_roles on users.user_id = usuarios_roles.user_id
                      inner join roles_tipo_informe on usuarios_roles.rol = roles_tipo_informe.rol
                      inner join idiomas on usuarios_roles.idioma = idiomas.idioma
                      inner join roles on roles_tipo_informe.rol = roles.rol
                      where roles_tipo_informe.id_tipo_informe = @id_tipo_informe
                      and idiomas.codigo_idioma = 'ES'
                      and users.active_user = 'Y'

                      set @informe_log = iif(@informe_log is not null, @informe_log + CHAR(13)+CHAR(10), '')+@preffix+'Cambio automático de estado del informe a NO calificado por cobranza del pago correspondiente.'

                      update informes set estado_informe = 'A',
                           fecha_comprometida = convert(date, dateadd(day,14,getdate())),
                           historial_informe = @informe_log
                      where informe = @informe

                     end

                     if (@docs > 0)
                      set @informe_log = iif(@informe_log is not null, @informe_log + CHAR(13)+CHAR(10), '')+@preffix+'Cambio automático de estado del informe a En gestión.'
                     else
                      set @informe_log = iif(@informe_log is not null, @informe_log + CHAR(13)+CHAR(10), '')+@preffix+'Cambio automático de estado del informe a En proceso.'


                     -- Seteamos estado y fecha comprometida en función de si es con o sin gestión.
                     update informes set estado_informe = iif(@docs > 0, 'P', 'E'),
                          fecha_comprometida = iif(@docs > 0, convert(date, dateadd(day,14,getdate())), convert(date, dateadd(day, 7,getdate()))),
                          historial_informe = @informe_log
                     where informe = @informe


                     --- Si hay documentos (gestión) tenemos que activar la tarea de gestión
                     if (@docs > 0) begin

                      select @tipo_tarea_gestion = tipos_subinformes.id_tipo_subinforme
                      from tipos_subinformes 
                      inner join tipos_informe tareas on tipos_subinformes.id_tipo_subinforme = tareas.id_tipo_informe
                      where tipos_subinformes.id_tipo_informe = @id_tipo_informe
                      and tareas.genera_solicitud_doc = 1
                        
                      if (@tipo_tarea_gestion is not null) begin

                       ----- //// HARDCODE PARA PREPAGOS LA GESTION SE LA ASIGNAMOS A GISELE FERNANDES USER ID 89681892

                       select TOP 1 @usuario_gestion = users.user_id
                       from users 
                       inner join usuarios_roles on users.user_id = usuarios_roles.user_id
                       inner join roles_tipo_informe on usuarios_roles.rol = roles_tipo_informe.rol
                       inner join idiomas on usuarios_roles.idioma = idiomas.idioma
                       inner join roles on roles_tipo_informe.rol = roles.rol
                       where roles_tipo_informe.id_tipo_informe = @tipo_tarea_gestion
                       and idiomas.codigo_idioma = 'ES'
                       and users.active_user = 'Y'
                       and users.user_id = 89681892

                       if (@usuario_gestion is not null) begin
                        set @fecha_limite_doc = DATETIMEFROMPARTS(Year(dateadd(day,7,getdate())),Month(dateadd(day,7,getdate())),Day(dateadd(day,7,getdate())),23,59,59,0)

                        EXEC LN_informes 'activar_gestion_documentacion',@p_contraparte,@informe,@user,NULL,NULL,NULL,1,'E',@user,NULL,@usuario_gestion,@cliente,@fecha_limite_doc
                       end

                      end

                     end


                    --//////////////----
                    end else begin

                     --- NO EXISTE INFORME, DEBERIA CREARSE: determino el tipo de informe según familia, con/sin gestión y pais
                     if (@informe is null) begin

                      select @country_code = identificadores.country_code,
                        @cliente = LN_contrapartes.cliente
                      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

                      -- busco los tipos de informe posibles según familia 

                      DECLARE TiposInforme CURSOR FOR

                      select tipos_informe.id_tipo_informe, tipos_informe.country_code,
                        iif(informes_con_solicitud.id_tipo_informe is not null, 1, 0) as tiene_solicitud,
                        contratos_items.item_contrato, contratos_items.producto
                      from tipos_informe 
                      INNER JOIN LN_familias_tipo_informe on tipos_informe.id_tipo_informe = LN_familias_tipo_informe.id_tipo_informe
                      INNER JOIN LN_contraparte_familias on LN_familias_tipo_informe.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 padrones on LN_contrapartes.id_padron = padrones.id_padron
                      INNER JOIN identificadores on padrones.identificador = identificadores.identificador
                      INNER JOIN grupos_clientes on LN_familias.cliente = grupos_clientes.cliente
                      INNER JOIN contratos_grupos on grupos_clientes.grupo = contratos_grupos.grupo
                      INNER JOIN contratos_items on contratos_grupos.id_contrato = contratos_items.id_contrato
                      INNER JOIN productos on (contratos_items.producto = productos.producto
                            and tipos_informe.grupo_informes = productos.grupo_informes)
                      LEFT OUTER JOIN
                       (select tipos_subinformes.id_tipo_informe
                       from tipos_subinformes
                       inner join tipos_informe tareas on tipos_subinformes.id_tipo_subinforme = tareas.id_tipo_informe
                       inner join tipos_informe on tipos_subinformes.id_tipo_informe = tipos_informe.id_tipo_informe
                       where tipos_informe.vigente = 1
                       and tareas.vigente = 1
                       and tareas.genera_solicitud_doc = 1
                       group by tipos_subinformes.id_tipo_informe) informes_con_solicitud on tipos_informe.id_tipo_informe = informes_con_solicitud.id_tipo_informe

                      where LN_contraparte_familias.contraparte = @p_contraparte
                      and contratos_grupos.estado_contrato = 'A'
                      and contratos_grupos.fecha_vigencia <= GETDATE()
                      and contratos_grupos.fecha_vencimiento >= GETDATE()
                      group by tipos_informe.id_tipo_informe, tipos_informe.country_code, informes_con_solicitud.id_tipo_informe, 
                         contratos_items.item_contrato, contratos_items.producto
                      

                      Open TiposInforme
                      FETCH NEXT FROM TiposInforme INTO @id, @pais, @solicitud, @item, @prod
                      WHILE @@FETCH_STATUS = 0 BEGIN
                       if (@solicitud > 0) begin
                        -- con solicitud, si la contraparte tiene legajo, busco genérico o del país
                        if (@docs > 0) begin

                         -- el pais del tipo de informe es Argentina y la contraparte Argentina
                         if (@pais = 'AR' AND @pais = @country_code) begin
                          set @por_pais = @id
                          set @icontrato1 = @item
                          set @prod1 = @prod
                         end else begin
                          -- Es un genérico (tipo de informe sin país)
                          if (@pais is null) begin
                           set @generico = @id
                           set @icontrato2 = @item
                           set @prod2 = @prod
                          end
                         end
                        end


                       end else begin
                        -- confidencial, sólo evalúo si la contraparte no tiene legajo
                        if (@docs = 0) begin
                         if (@pais = 'AR' AND @pais = @country_code) begin
                          set @por_pais = @id
                          set @icontrato1 = @item
                          set @prod1 = @prod
                         end else begin
                          if (@pais is null) begin
                           set @generico = @id
                           set @icontrato2 = @item
                           set @prod2 = @prod
                          end
                         end
                        end
                       end

                       FETCH NEXT FROM TiposInforme INTO @id, @pais, @solicitud, @item, @prod
                      END
                      Close TiposInforme
                      Deallocate TiposInforme

                      -- Verifico si encontró un genérico o uno por país en cuyo caso prevalece

                      SET @id_tipo_informe = iif(@por_pais is not null, @por_pais, iif(@generico is not null, @generico, NULL))
                      SET @item_contrato = iif(@por_pais is not null, @icontrato1, iif(@generico is not null, @icontrato2, NULL))
                      SET @producto = iif(@por_pais is not null, @prod1, iif(@generico is not null, @prod2, NULL))

                      if (@id_tipo_informe is not null AND @item_contrato is not null AND @producto is not null) begin
                       -- GENERAR INFORME Y TAREAS


                       select @user = user_id from users where username = 'sa'

                       select TOP 1 @datamanager = users.user_id
                       from users 
                       inner join usuarios_roles on users.user_id = usuarios_roles.user_id
                       inner join roles_tipo_informe on usuarios_roles.rol = roles_tipo_informe.rol
                       inner join idiomas on usuarios_roles.idioma = idiomas.idioma
                       inner join roles on roles_tipo_informe.rol = roles.rol
                       where roles_tipo_informe.id_tipo_informe = @id_tipo_informe
                       and idiomas.codigo_idioma = 'ES'
                       and roles.datamanager = 1
                       and users.active_user = 'Y'

                       select TOP 1 @asignado = users.user_id
                       from users 
                       inner join usuarios_roles on users.user_id = usuarios_roles.user_id
                       inner join roles_tipo_informe on usuarios_roles.rol = roles_tipo_informe.rol
                       inner join idiomas on usuarios_roles.idioma = idiomas.idioma
                       inner join roles on roles_tipo_informe.rol = roles.rol
                       where roles_tipo_informe.id_tipo_informe = @id_tipo_informe
                       and idiomas.codigo_idioma = 'ES'
                       and users.active_user = 'Y'


                       select @producto_led = LN_familia_productos.producto
                       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
                       where LN_productos.dossier = 1
                       and LN_productos.visible = 1
                       and LN_familia_productos.activo = 1
                       and LN_contraparte_familias.activo = 1
                       and LN_contraparte_familias.contraparte = @p_contraparte


                       -- 7 días sin gestión, 14 con gestión
                       set @fecha_comprometida = iif(@docs > 0, convert(date,dateadd(day,14,getdate())), convert(date,dateadd(day,7,getdate())))
                       declare @estado_inicial varchar(1) = iif(@docs > 0, 'P', 'E')

                       if not exists (select LN_demo.contraparte
                           from LN_demo inner join LN_gestiones on (LN_demo.contraparte = LN_gestiones.contraparte
                                     and LN_demo.gestion = LN_gestiones.gestion)
                           where LN_demo.contraparte = @p_contraparte
                           and LN_gestiones.desde <= GETDATE()
                           and LN_gestiones.hasta >= GETDATE()
                           and LN_demo.producto = @producto_led) begin

                        insert into LN_demo (contraparte, gestion, producto, created, visible)
                        select contraparte, gestion, @producto_led as producto, GETDATE() as created, 0 as visible
                        from LN_gestiones
                        where contraparte = @p_contraparte
                        and desde <= GETDATE()
                        and hasta >= GETDATE()

                       end

                       EXEC LN_informes 'ingresar_informe',@p_contraparte,@nuevoinf OUTPUT,@user,@item_contrato,@producto,@id_tipo_informe,5,@estado_inicial, @user,@datamanager,@asignado,@cliente,@fecha_limite_doc,@producto_led,@fecha_comprometida,'INFORME GENERADO AUTOMATICAMENTE POR INGRESO DEL PAGO DE LA CONTRAPARTE EN LED.'

                       if (@docs > 0) begin
                        -- si hay documentos hay que activar la tarea de gestión

                        select @tipo_tarea_gestion = tipos_subinformes.id_tipo_subinforme
                        from tipos_subinformes 
                        inner join tipos_informe tareas on tipos_subinformes.id_tipo_subinforme = tareas.id_tipo_informe
                        where tipos_subinformes.id_tipo_informe = @id_tipo_informe
                        and tareas.genera_solicitud_doc = 1
                        
                        if (@tipo_tarea_gestion is not null) begin

                         ----- //// HARDCODE PARA PREPAGOS LA GESTION SE LA ASIGNAMOS A GISELE FERNANDES USER ID 89681892

                         select TOP 1 @usuario_gestion = users.user_id
                         from users 
                         inner join usuarios_roles on users.user_id = usuarios_roles.user_id
                         inner join roles_tipo_informe on usuarios_roles.rol = roles_tipo_informe.rol
                         inner join idiomas on usuarios_roles.idioma = idiomas.idioma
                         inner join roles on roles_tipo_informe.rol = roles.rol
                         where roles_tipo_informe.id_tipo_informe = @tipo_tarea_gestion
                         and idiomas.codigo_idioma = 'ES'
                         and users.active_user = 'Y'
                         and users.user_id = 89681892

                         if (@usuario_gestion is not null) begin
                          set @fecha_limite_doc = DATETIMEFROMPARTS(Year(dateadd(day,7,getdate())),Month(dateadd(day,7,getdate())),Day(dateadd(day,7,getdate())),23,59,59,0)

                          EXEC LN_informes 'activar_gestion_documentacion',@p_contraparte,@nuevoinf,@user,NULL,NULL,NULL,1,'E',@user,NULL,@usuario_gestion,@cliente,@fecha_limite_doc
                         end

                        end

                       end

                      end

                     end

                    end

                   end

                  END ELSE

                   -- Dado el id de contraparte, busca por cuit en la tabla de domicilios_todos, arma el string y lo graba en el campo 'domicilio'
                   IF (@accion = 'buscar_domicilio') BEGIN

                    if (@p_contraparte > 0) begin

                     declare @cuit varchar(30) = NULL
                     select @cuit = padrones.identificacion from LN_contrapartes
                     inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
                     where LN_contrapartes.contraparte = @p_contraparte

                     if (@cuit IS NOT NULL) begin

                      declare @domicilio varchar(512)
                      declare @loc_nombre varchar(150)
                      declare @prv_nombre varchar(100)
                      declare @codpos varchar(10)
                      declare @pai_nombre varchar(100)
                      declare @full_domicilio varchar(500)

                      select 
                       @domicilio = ISNULL(domicilio, ''),
                       @loc_nombre = ISNULL(loc_nombre, ''),
                       @prv_nombre = ISNULL(prv_nombre, ''),
                       @codpos = ISNULL(codpos, '') ,
                       @pai_nombre = ISNULL(pai_nombre, '') 
                      from domicilios_todos
                      where cuit = @cuit
                      and tipo_domicilio = 'F'

                      set @full_domicilio = LEFT( @domicilio + iif(@loc_nombre !='', ' - ', '')
                                + @loc_nombre
                                + iif(@prv_nombre !='', ' - ', '')
                                + @prv_nombre
                                + iif(@codpos !='', ' (' + @codpos + ')', '')
                                + iif(@pai_nombre !='', ' - ', '')
                                + @pai_nombre
                                , 500)

                    
                      update LN_contrapartes set domicilio = iif(@full_domicilio != '', @full_domicilio, NULL) where contraparte = @p_contraparte

                     end

                    end

                   END 
            

 
END

GO