dbo.LN_contrapartes_sc

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

28
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
@servicio_contratado int 4
@p_familia int 4
@sector int 4
@responsable varchar 512
@tipo_servicio int 4

SQL Script

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

/*

select * from users where username='f0000'

exec ln_contrapartes_ 'insert',null,7,9700868,null,1,null,null,null,null,1063064806

Se agregó para la accion SEARCH la consideración del parámetro @p_id_padron
cuando @p_cliente IS NOT NULL para poder buscar una contraparte por id_padron
dentro del cliente y eliminar posibilidad de duplicaciones.

select * from ln_contrapartes where id_padron = (select id_padron from padrones where identificacion = '30708841532')
exec ln_contrapartes_ 'DOCUMENTOS_GESTION_ACTIVA',31286,null,null,null,null,null,null,null,null,null,null,null,null,null

select * from ln_docs where contraparte = 394 and aplica = 0

exec LN_contrapartes_ 'CLIENTE',107586,null,null,null,null,null,null,null,null,null,null,null,null


*/



-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_contrapartes_sc 
 -- 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',
 @servicio_contratado int = 47, 
 @p_familia int = null,
 @sector INT = NULL,
 @responsable VARCHAR(512) = NULL,
 @tipo_servicio INT = 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 

    -- 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 = '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)
  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 = 'UPDATE_CONTACTO') BEGIN
 
   UPDATE LN_contrapartes SET 
   datos_comerciales = @p_datos_comerciales,
   activo = @p_activo,
   nombre_contacto = @p_nombre_contacto,
   email_contacto = @p_email_contacto,
   telefono_contacto = @p_telefono_contacto,
   modified = GETDATE(),
   modified_by = @p_user_id,
   pais_servicio = @pais_servicio, 
   modalidad_pago = @p_modalidad_pago,idTipoServicioPriv = @tipo_servicio,idSectorPriv=@sector,email_ejecutivo_cuenta=@responsable 
   WHERE contraparte = @p_contraparte
   select 'ok' 
   return 

 END



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


   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,servicio_contratado,idTipoServicioPriv,idSectorPriv,email_ejecutivo_cuenta)

   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,@servicio_contratado,@tipo_servicio,@sector,@responsable)


   SET @contraparte = SCOPE_IDENTITY()
   SET @p_contraparte = @contraparte
   
   exec insertar_trazabilidad 'Alta contrapartes', @p_cliente, 'ALTA_CONTRAPARTE','BACK-WWW', @contraparte,@p_user_id

   if (@servicio_contratado = 73) -- IMPERIUM 
   begin
     exec LN_alta_Contratistas 'insert', @p_cliente, @p_id_padron, @p_familia, @p_vigencia_desde, @p_vigencia_hasta, @p_contraparte, @p_user_id
     exec insertar_trazabilidad 'Alta contratista', @p_cliente, 'ALTA_CONTRAPARTE','BACK-WWW', @contraparte,@p_user_id
   end 


   SELECT @contraparte AS contraparte

   RETURN;
  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,
   fecha_ultimo_cierre = CONVERT(DATE,@p_fecha_ultimo_cierre),
   periodicidad_ejercicio = @p_periodicidad_ejercicio,
   subcontratista = @p_subcontratista,
   id_padre = @p_id_padre,
   vigencia_desde = @p_vigencia_desde,
   vigencia_hasta = @p_vigencia_hasta,
   modified = GETDATE(),
   modified_by = @p_user_id,
   pais_servicio = @pais_servicio,idTipoServicioPriv = @tipo_servicio,idSectorPriv=@sector,email_ejecutivo_cuenta=@responsable 
   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.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(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_contrapartes.idTipoServicioPriv,LN_contrapartes.idSectorPriv,LN_contrapartes.email_ejecutivo_cuenta
     


     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

     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

     WHERE LN_contrapartes.contraparte = @p_contraparte

    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.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,LN_contrapartes.idTipoServicioPriv,LN_contrapartes.idSectorPriv,LN_contrapartes.email_ejecutivo_cuenta


       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
       -- 24/06/2020 
       and servicio_contratado = @servicio_contratado

       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.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,LN_contrapartes.idTipoServicioPriv,LN_contrapartes.idSectorPriv,LN_contrapartes.email_ejecutivo_cuenta


         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
         -- 24/06/2020 
         and servicio_contratado = @servicio_contratado
         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.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,LN_contrapartes.idTipoServicioPriv,LN_contrapartes.idSectorPriv,LN_contrapartes.email_ejecutivo_cuenta


         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
         -- 24/06/2020 
         and servicio_contratado = @servicio_contratado

         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.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,LN_contrapartes.idTipoServicioPriv,LN_contrapartes.idSectorPriv,LN_contrapartes.email_ejecutivo_cuenta


         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
         -- 24/06/2020 
               and servicio_contratado = @servicio_contratado
         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.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,LN_contrapartes.idTipoServicioPriv,LN_contrapartes.idSectorPriv,LN_contrapartes.email_ejecutivo_cuenta


          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
          -- 24/06/2020 
                   and servicio_contratado = @servicio_contratado
          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.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,LN_contrapartes.idTipoServicioPriv,LN_contrapartes.idSectorPriv,LN_contrapartes.email_ejecutivo_cuenta


          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
          -- 24/06/2020 
                   and servicio_contratado = @servicio_contratado

          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

         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,

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

         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         

         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_set_tipo_doc.orden, LN_tipos_doc.nombre_tipo_doc, LN_docs.doc_version 



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


         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,

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

         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         

         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,
            telefono_contacto = @p_telefono_contacto,
            vigencia_desde = @p_vigencia_desde,
            vigencia_hasta = @p_vigencia_hasta,
            pais_servicio = @pais_servicio,
            codigo_idioma = @p_codigo_idioma,

            modified = GETDATE(),
            modified_by = @p_user_id
            WHERE contraparte = @p_contraparte

           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

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

                   update LN_contrapartes SET
                     limite_carga_inicial = @p_fecha_ultimo_cierre,
                     carga_inicial = 1
                   where contraparte = @p_contraparte

                 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

Used By

No items found