dbo.LN_informes_MIS

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

18
Name Data Type Length Description
@accion varchar 50
@p_contraparte int 4
@p_informe int 4
@p_user_id int 4
@p_item_contrato int 4
@p_producto smallint 2
@p_id_tipo_informe int 4
@p_prioridad tinyint 1
@p_estado_informe varchar 1
@p_ingresado_por int 4
@p_datamanager int 4
@p_asignado int 4
@p_cliente int 4
@p_fecha_limite_doc datetime 8
@p_producto_led int 4
@p_fecha_comprometida datetime 8
@p_objeto_informe varchar -1
@p_familia int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
/*
declare @nuevoinf int = nul
EXEC LN_informes 'ingresar_informe', 82, @nuevoinf output, 15342812, 171, 3,1644771,3,'T',893684615,44240542,28750576

EXEC LN_informes 'tipos_informe_familia',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,150

select @nuevoinf as INFORME

exec ln_informes 'cancelar_informe', 80, 6921

exec ln_informes 'asignables_gestion', null,null,null,null,null,1644579

exec ln_informes 'check_docs_ok',169,null,null

exec ln_informes 'check_tarea_balances',170,null,893684615

exec ln_informes 'panel_control_reports',134812,5147061,null,null
exec ln_informes 'panel_control_reports',31318,9091419,null
exec ln_informes 'panel_control_reports',31318,null,null

exec ln_informes 'panel_control_reports',79305,4264030,null
select * from informes where ingresado_por = 15342812 order by fecha_ingreso desc


 informe = 4264030

 SELECT * FROM LN_familias_tipo_informe

 SELECT * FROM LN_FAMILIAS WHERE FAMILIA=150

exec ln_informes 'actualizar_tarea_gestion',31292,null,28750576, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,'2019-07-03'


*/

-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_informes_MIS
 -- Add the parameters for the stored procedure here

 @accion          varchar(50) = NULL,
 @p_contraparte        int = NULL,
 @p_informe         int OUTPUT,
 @p_user_id         int = NULL,
 @p_item_contrato       int = NULL,
 /* es el ID de productos que agrupan informes y van a datos del contrato */
 @p_producto         smallint = NULL,    

 @p_id_tipo_informe       int = NULL,
 @p_prioridad        tinyint = NULL,
 @p_estado_informe       varchar(1) = NULL,
 @p_ingresado_por       int = NULL,
 @p_datamanager        int = NULL,
 @p_asignado         int = NULL,

 @p_cliente         int = NULL,
 @p_fecha_limite_doc       datetime = NULL,
 /* Este es el ID de producto tipo report que corresponde a LED (LN_productos.producto) */
 @p_producto_led        int = NULL,
 @p_fecha_comprometida      datetime = NULL,
 @p_objeto_informe       varchar(max) = NULL,
 @p_familia         int = NULL


 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here
 DECLARE @estado VARCHAR(1) = NULL, @estado_tarea varchar(1) = NULL
 DECLARE @ahora datetime = GETDATE()
 DECLARE @usuario varchar(100) = NULL
 DECLARE @preffix varchar(200) = ''
 DECLARE @nombre_asignado varchar(200)
 DECLARE @informe int = NULL
 DECLARE @tarea INT = null
 DECLARE @gestion int = NULL
 DECLARE @noing int = 0, @ing int = 0, @verif int = 0, @rech int = 0, @total_estado int = 0, @total_docs int = 0, @publicados int = 0
    declare @updGestion int 
 if (@p_user_id > 0) begin
  select @usuario = isnull(first_name,'') + ' ' + isnull(last_name, '')
  from users where user_id = @p_user_id

  SET @preffix = '['+@usuario+' - '+convert(varchar(10),@ahora,103) + ' ' + substring(convert(varchar,@ahora,121),12,5)+']: '
 end else
  SET @preffix = '['+convert(varchar(10),@ahora,103) + ' ' + substring(convert(varchar,@ahora,121),12,5)+']: '


 DECLARE @id INT = null
 DECLARE @moneda varchar(3) = null
 DECLARE @precio money = NULL
 DECLARE @id_contrato int = NULL
 DECLARE @cliente int = NULL
 DECLARE @nombre_cliente varchar(200) = NULL
 DECLARE @identificador varchar(10) = NULL
 DECLARE @abreviatura varchar(10) = NULL
 DECLARE @numero varchar(50) = NULL
 DECLARE @nombre_persona varchar(200) = NULL
 DECLARE @nombre varchar(50) = NULL
 DECLARE @email varchar(50) = NULL
 DECLARE @telefono varchar(30) = NULL
 DECLARE @nombre_tipo_informe varchar(200) = NULL
 DECLARE @grupo_informes varchar(50) = NULL
 DECLARE @detalle_log varchar(max)

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

 if (@accion = 'obtener_id') begin

  DECLARE @cnt int
  DECLARE @nuevo int = round(rand()*10000000,0)

  DECLARE @found bit = 0

  while (@found = 0) begin
   select @cnt = COUNT(*) from informes where informe = @nuevo
   if (@cnt = 0) begin
    set @found = 1   
   end
   else begin
    set @nuevo = round(rand()*10000000,0)
   end
  end

  SET @p_informe = @nuevo

 end


 /* Dada la contraparte, obtener qué tipos de informe se le pueden generar */
 if (@accion = 'tipos_informe') begin

  if (@p_id_tipo_informe) IS NULL

   select tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe,
     tipos_informe.tipo_informe, tipos_informe.version,
     contratos_items.item_contrato, contratos_items.id_contrato,
     contratos_items.producto, LN_contrapartes.cliente,
     contratos_items.moneda, contratos_items.precio_unitario
   from grupos_clientes 
   inner join LN_contrapartes on grupos_clientes.cliente = LN_contrapartes.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
           and grupos_clientes.cliente = contratos_items.cliente)
   inner join productos on contratos_items.producto = productos.producto
   inner join tipos_informe on productos.grupo_informes = tipos_informe.grupo_informes
   where contratos_grupos.fecha_vigencia <= GETDATE()
   --and contratos_grupos.fecha_vencimiento >= GETDATE()
   and contratos_grupos.estado_contrato = 'A'
   and LN_contrapartes.contraparte = @p_contraparte 
   and productos.estado_producto = 'A'
   and tipos_informe.vigente = 1
   and tipos_informe.selec_nuevo_informe = 1
   and (tipos_informe.cliente IS NULL or tipos_informe.cliente = (select cliente from LN_contrapartes
                   where contraparte = @p_contraparte ))

  else

   select tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe,
     tipos_informe.tipo_informe, tipos_informe.version,
     contratos_items.item_contrato, contratos_items.id_contrato,
     contratos_items.producto, LN_contrapartes.cliente,
     contratos_items.moneda, contratos_items.precio_unitario
   from grupos_clientes 
   inner join LN_contrapartes on grupos_clientes.cliente = LN_contrapartes.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
           and grupos_clientes.cliente = contratos_items.cliente)
   inner join productos on contratos_items.producto = productos.producto
   inner join tipos_informe on productos.grupo_informes = tipos_informe.grupo_informes
   where contratos_grupos.fecha_vigencia <= GETDATE()
   --and contratos_grupos.fecha_vencimiento >= GETDATE()
   and contratos_grupos.estado_contrato = 'A'
   and LN_contrapartes.contraparte = @p_contraparte 
   and tipos_informe.id_tipo_informe = @p_id_tipo_informe
   and productos.estado_producto = 'A'
   and tipos_informe.vigente = 1
   and tipos_informe.selec_nuevo_informe = 1
   and (tipos_informe.cliente IS NULL or tipos_informe.cliente = (select cliente from LN_contrapartes
                   where contraparte = @p_contraparte ))


 end


 /* INICIO TIPOS DE INFORME DE BLUE CORRESPONDIENTE A LA FAMILIA DE LA CONTRAPARTE  */
 if (@accion = 'tipos_informe_familia') 
  BEGIN
 
 SET @cliente=7855254
 SET @p_familia = 150
   select 'ALKSJLAKSJ' AS LLL, tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe,
       tipos_informe.tipo_informe, tipos_informe.version,
       contratos_items.item_contrato, contratos_items.id_contrato,
       contratos_items.producto, grupos_clientes.cliente,
       contratos_items.moneda, contratos_items.precio_unitario
     from grupos_clientes 
     inner join contratos_grupos on grupos_clientes.grupo = contratos_grupos.grupo
     inner join contratos_items on (contratos_grupos.id_contrato = contratos_items.id_contrato
             and grupos_clientes.cliente = contratos_items.cliente)
     inner join productos on contratos_items.producto = productos.producto
     inner join tipos_informe on productos.grupo_informes = tipos_informe.grupo_informes
     inner join LN_familias_tipo_informe on LN_familias_tipo_informe.id_tipo_informe = tipos_informe.id_tipo_informe
     where contratos_grupos.fecha_vigencia <= GETDATE()
     and contratos_grupos.fecha_vencimiento >= GETDATE()
     and contratos_grupos.estado_contrato = 'A'
     and grupos_clientes.cliente = @p_cliente
     and productos.estado_producto = 'A'
     and tipos_informe.vigente = 1
     and tipos_informe.selec_nuevo_informe = 1
     and (tipos_informe.cliente IS NULL or tipos_informe.cliente = @p_cliente)
     and LN_familias_tipo_informe.familia = @p_familia 

   --select 236254 as 'JJ',* from LN_familias where familia = @p_familia

  END
 /* FIN TIPOS DE INFORME DE BLUE CORRESPONDIENTE A LA FAMILIA DE LA CONTRAPARTE  */




 /** Similar a la accion anterior pero pasando el parámetro del cliente, no la contraparte */
 if (@accion = 'tipos_informe_cliente') begin

  if (@p_id_tipo_informe) IS NULL

   select 'ROMI' AS ROMI, tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe,
     tipos_informe.tipo_informe, tipos_informe.version,
     contratos_items.item_contrato, contratos_items.id_contrato,
     contratos_items.producto, grupos_clientes.cliente,
     contratos_items.moneda, contratos_items.precio_unitario
   from grupos_clientes 
   inner join contratos_grupos on grupos_clientes.grupo = contratos_grupos.grupo
   inner join contratos_items on (contratos_grupos.id_contrato = contratos_items.id_contrato
           and grupos_clientes.cliente = contratos_items.cliente)
   inner join productos on contratos_items.producto = productos.producto
   inner join tipos_informe on productos.grupo_informes = tipos_informe.grupo_informes
   where contratos_grupos.fecha_vigencia <= GETDATE()
   and contratos_grupos.fecha_vencimiento >= GETDATE()
   and contratos_grupos.estado_contrato = 'A'
   and grupos_clientes.cliente = @p_cliente
   and productos.estado_producto = 'A'
   and tipos_informe.vigente = 1
   and tipos_informe.selec_nuevo_informe = 1
   -- and (tipos_informe.cliente IS NULL or tipos_informe.cliente = @p_cliente)
   group by tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe,
     tipos_informe.tipo_informe, tipos_informe.version,
     contratos_items.item_contrato, contratos_items.id_contrato,
     contratos_items.producto, grupos_clientes.cliente,
     contratos_items.moneda, contratos_items.precio_unitario

  else

   select tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe,
     tipos_informe.tipo_informe, tipos_informe.version,
     contratos_items.item_contrato, contratos_items.id_contrato,
     contratos_items.producto, grupos_clientes.cliente,
     contratos_items.moneda, contratos_items.precio_unitario
   from grupos_clientes 
   inner join contratos_grupos on grupos_clientes.grupo = contratos_grupos.grupo
   inner join contratos_items on (contratos_grupos.id_contrato = contratos_items.id_contrato
           and grupos_clientes.cliente = contratos_items.cliente)
   inner join productos on contratos_items.producto = productos.producto
   inner join tipos_informe on productos.grupo_informes = tipos_informe.grupo_informes
   where contratos_grupos.fecha_vigencia <= GETDATE()
   and contratos_grupos.fecha_vencimiento >= GETDATE()
   and contratos_grupos.estado_contrato = 'A'
   and grupos_clientes.cliente = @p_cliente
   and tipos_informe.id_tipo_informe = @p_id_tipo_informe
   and productos.estado_producto = 'A'
   and tipos_informe.vigente = 1
   and tipos_informe.selec_nuevo_informe = 1
   and (tipos_informe.cliente IS NULL or tipos_informe.cliente = @p_cliente)

 end

 /* Dado un tipo de informe, obtener qué usuarios de producción se pueden vincular al nuevo informe como "Responsable" o "Datamanager" */
 if (@accion = 'responsables_informe') begin

        if (@p_id_tipo_informe in (409736,9594018,4564458,4622988))
        begin
            set @p_id_tipo_informe = 7536079
        end

  select users.user_id, users.first_name, users.last_name
  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 = @p_id_tipo_informe
  and idiomas.codigo_idioma = 'ES'
  and roles.datamanager = 1
  and users.active_user = 'Y'

 end

 /* Dado un tipo de informe (padre), obtener qué usuarios de producción se pueden vincular a la tarea de gestión de documentación como "Asignado" */
 if (@accion = 'asignables_gestion') begin

  select users.user_id, users.first_name, users.last_name
  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
  inner join tipos_subinformes on roles_tipo_informe.id_tipo_informe = tipos_subinformes.id_tipo_subinforme
  inner join tipos_informe on tipos_subinformes.id_tipo_subinforme = tipos_informe.id_tipo_informe
  where tipos_subinformes.id_tipo_informe = @p_id_tipo_informe
  and idiomas.codigo_idioma = 'ES'
  and tipos_informe.genera_solicitud_doc = 1
  and users.active_user = 'Y'

 end


 /* Dado un tipo de informe, obtener qué usuarios de producción se pueden vincular al mismo como "Asignado" */
 if (@accion = 'usuarios_asignacion') begin

  select users.user_id, users.first_name, users.last_name
  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 = @p_id_tipo_informe
  and idiomas.codigo_idioma = 'ES'
  and users.active_user = 'Y'

 end
 

 /* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
 if (@accion = 'ingresar_informe') begin 

  /* debe asociarse el informe a un item de contrato, obligatoriamente */
  if (@p_item_contrato IS NOT NULL and @p_contraparte IS NOT NULL and @p_user_id IS NOT NULL and @p_id_tipo_informe IS NOT NULL) begin

   
   DECLARE @p_idioma smallint = NULL
   DECLARE @p_filial smallint = NULL

   select @p_idioma = idioma from idiomas where codigo_idioma = 'ES'
   select @p_filial = filial from filiales where country_code = 'AR'

   select @cliente = LN_contrapartes.cliente,
     @identificador = LEFT(padrones.identificador,10),
     @abreviatura = LEFT(identificadores.abreviatura,10),
     @numero = LEFT(padrones.identificacion,50),
     @nombre_persona = LEFT(padrones.nombre_persona,200),
     @nombre = LEFT(LN_contrapartes.nombre_contacto,50),
     @email = LEFT(LN_contrapartes.email_contacto,50),
     @telefono = LEFT(LN_contrapartes.telefono_contacto,30),
     @nombre_cliente = LEFT(clientes.nombre_cliente, 200)
   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
   where LN_contrapartes.contraparte = @p_contraparte


   select @precio = isnull(precio_unitario, 0),
     @moneda = moneda,
     @id_contrato = id_contrato
   from contratos_items
   where item_contrato = @p_item_contrato

   select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
     @grupo_informes = grupo_informes
   from tipos_informe
   where id_tipo_informe = @p_id_tipo_informe

   /* obtener nuevo ID de informe */
   --EXEC LN_informes 'obtener_id', @p_contraparte, @id OUTPUT

   exec @id = Genera_ID_Informe_2022 @cliente,null

   if (@id IS NOT NULL) begin

    DECLARE @hist varchar(max) = @preffix + 'Creación del informe.'

    if (@p_estado_informe = 'A' or @p_estado_informe = 'T' or @p_estado_informe = 'P') begin     

     select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
     from users where user_id = @p_asignado

     SET @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Asignación del informe a ' + @nombre_asignado
    end

    if (@p_estado_informe = 'T' or @p_estado_informe = 'P') begin
     SET @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Aceptación del informe.'
    end

    if (@p_estado_informe = 'P') begin
     SET @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Informe puesto en gestión.'
    end
    
    DECLARE @fecha_limite       datetime = dateadd(second,-1,dateadd(day,1,@p_fecha_limite_doc))
    DECLARE @fecha_comprometida datetime = dateadd(second,-1,dateadd(day,1,@p_fecha_comprometida))


    UPDATE informes SET /*informe=@id, cliente=@cliente,*/ identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@p_id_tipo_informe,
     objeto_informe='INFORME GENERADO A TRAVES DE BACKEND FIDELITAS - CARGA DE REPORTS LED' + CHAR(13) + CHAR(10) + isnull(@p_objeto_informe, ''), 
     historial_informe=@hist, ingresado_por=@p_ingresado_por, idioma=@p_idioma, filial=@p_filial, prioridad=@p_prioridad, datamanager=@p_datamanager,
     asignado=iif(@p_estado_informe = 'A' OR @p_estado_informe = 'T' OR @p_estado_informe = 'P', @p_asignado, NULL), estado_informe=@p_estado_informe, fecha_asignado=iif(@p_estado_informe = 'A' OR @p_estado_informe = 'T' OR @p_estado_informe = 'P', @ahora, NULL),
     fecha_aceptacion=iif(@p_estado_informe = 'T' OR @p_estado_informe = 'P', @ahora, NULL),
     excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,
     nombre_contacto_1=@nombre, email_contacto_1=@email, telefono_contacto_1=@telefono,fecha_limite_doc=@fecha_limite,fecha_comprometida=@fecha_comprometida
    WHERE informe = @id and idreg=@id

    /* Generación de las subtareas */
    DECLARE @tipo_subinforme INT = null
    DECLARE @orden tinyint = NULL
    DECLARE @prioridad_tarea tinyint = NULL

    DECLARE TiposSubinformes CURSOR FOR

    select tipos_subinformes.id_tipo_subinforme, tipos_subinformes.orden, isnull(tipos_informe.prioridad_default,0) as prioridad_default
    from tipos_subinformes inner join tipos_informe on tipos_subinformes.id_tipo_subinforme = tipos_informe.id_tipo_informe
    where tipos_subinformes.id_tipo_informe = @p_id_tipo_informe
    order by tipos_subinformes.orden

    OPEN TiposSubinformes
    FETCH NEXT FROM TiposSubinformes INTO @tipo_subinforme, @orden, @prioridad_tarea
    WHILE @@FETCH_STATUS = 0 BEGIN
     exec @tarea = Genera_ID_Informe_2022 @cliente,@id

     if (@tarea > 0) begin

      /* La prioridad de cada tarea depende del tipo de informe. Si está en 0 o nula toma la del informe padre */
      update informes set identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@tipo_subinforme,
       objeto_informe=null, historial_informe=@preffix + 'Creación del informe.', ingresado_por=@p_ingresado_por, idioma=@p_idioma, 
       filial=@p_filial, prioridad=iif(@prioridad_tarea > 0, @prioridad_tarea, @p_prioridad), datamanager=@p_datamanager, estado_informe= 'I', orden=@orden, informe_padre=@id
      where informe = @tarea and idreg=@tarea      

     end

     FETCH NEXT FROM TiposSubinformes INTO @tipo_subinforme, @orden, @prioridad_tarea
    END
    CLOSE TiposSubinformes
    DEALLOCATE TiposSubinformes


    /* Generar el consumo del contrato, con T/C=1 */
    DECLARE @consumo INT = NULL

    INSERT INTO consumo_contratos
     (item_contrato, cliente, producto, tipo_cambio, informe, cantidad_consumida, user_id, consumido)
    VALUES
     (@p_item_contrato, @cliente, @p_producto, 1, @id, 1, @p_user_id, @ahora)

    SELECT @consumo = @@IDENTITY

    /* Generar información de log de consumo del contrato */
    SET @detalle_log = 'Nuevo informe ingresado para ' + @nombre_cliente + '<br>'
    SET @detalle_log = @detalle_log + 'Tipo de informe: ' + @nombre_tipo_informe + '<br>'
    SET @detalle_log = @detalle_log + 'Grupo de informes: ' + @grupo_informes + '<br>'
    SET @detalle_log = @detalle_log + 'Cantidad consumida: 1' + '<br>'
    SET @detalle_log = @detalle_log + 'Precio unitario: ' + ltrim(convert(varchar, @precio)) + ' ' + @moneda + '<br>'
    SET @detalle_log = @detalle_log + 'Tipo de cambio (USD): 1' + '<br>'
    SET @detalle_log = @detalle_log + 'Sujeto informado: ' + @nombre_persona + '<br>'
    SET @detalle_log = @detalle_log + 'Identificación: ' + @abreviatura + ' ' + @numero

    INSERT INTO contratos_log
     (fecha_log, user_id, id_contrato, item_contrato, consumo, detalle_log)
    VALUES
     (@ahora, @p_user_id, @id_contrato, @p_item_contrato, @consumo, @detalle_log)

    /* Devolución del ID del informe padre generado
     SELECT @id */


    SET @p_informe = @id


    if (@p_producto_led > 0) begin
     /* Actualización de la tabla LED para vincular el informe al producto */
     /*return @p_fromInsideSP */
                    
                    EXEC LN_demo_MIS 'UPDATE',@p_contraparte,@cliente,@p_producto_led,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@id

    end


    SELECT @id AS informe
                return
   end


  end


 end


 /** Cancelar un informe en producción y colocar en null el campo "informe" en la tabla **/
 if (@accion = 'cancelar_informe') begin
  if (@p_contraparte > 0 AND @p_informe > 0) begin

   DECLARE @producto INT = NULL
   

   select @cliente = LN_contrapartes.cliente,
     @producto = LN_demo.producto, 
     @estado = informes.estado_informe,
     @nombre_cliente = clientes.nombre_cliente,
     @nombre_persona = padrones.nombre_persona,
     @abreviatura = identificadores.abreviatura,
     @numero = padrones.numero,
     @nombre_tipo_informe = tipos_informe.nombre_tipo_informe + ' (' + tipos_informe.tipo_informe + ' ' + tipos_informe.version + ')',
     @grupo_informes = tipos_informe.grupo_informes,
     @p_item_contrato = consumo_contratos.item_contrato,
     @p_producto = productos.producto,
     @id_contrato = contratos_items.id_contrato

   from LN_demo 
   inner join LN_gestiones on LN_demo.contraparte = LN_gestiones.contraparte
   inner join informes on LN_demo.informe = informes.informe
   inner join LN_contrapartes on LN_demo.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 clientes on LN_contrapartes.cliente = clientes.cliente
   inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
   inner join productos on tipos_informe.grupo_informes = productos.grupo_informes
   inner join consumo_contratos on informes.informe = consumo_contratos.informe
   inner join contratos_items on consumo_contratos.item_contrato = contratos_items.item_contrato
   where LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1

   and LN_demo.contraparte = @p_contraparte
   and LN_demo.informe = @p_informe

   if (@producto > 0 AND (@estado = 'X' OR @estado = 'I' OR @estado = 'A' OR @estado = 'T')) begin

    /* Cancelación del informe y sus tareas */
    update informes set 
     estado_informe = 'C',
     historial_informe = convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) +  @preffix + 'Cancelación del informe desde backend.'
    where informe = @p_informe

    update informes set
     estado_informe = 'C',
     historial_informe = convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) +  @preffix + 'Cancelación del informe desde backend.'
    where informe_padre = @p_informe


    /* Reversión del consumo en contratos con un valor negativo */
    INSERT INTO consumo_contratos
     (item_contrato, cliente, producto, tipo_cambio, informe, cantidad_consumida, user_id, consumido)
    VALUES
     (@p_item_contrato, @cliente, @p_producto, 1, @p_informe, -1, @p_user_id, @ahora)

    SET @consumo = @@IDENTITY

    /* Generar información de log de consumo del contrato */
    SET @detalle_log = 'Cancelación en backend del informe ingresado para ' + @nombre_cliente + '<br>'
    SET @detalle_log = @detalle_log + 'Tipo de informe: ' + @nombre_tipo_informe + '<br>'
    SET @detalle_log = @detalle_log + 'Grupo de informes: ' + @grupo_informes + '<br>'
    SET @detalle_log = @detalle_log + 'Cantidad: 1' + '<br>'
    SET @detalle_log = @detalle_log + 'Sujeto informado: ' + @nombre_persona + '<br>'
    SET @detalle_log = @detalle_log + 'Identificación: ' + @abreviatura + ' ' + @numero

    INSERT INTO contratos_log
     (fecha_log, user_id, id_contrato, item_contrato, consumo, detalle_log)
    VALUES
     (@ahora, @p_user_id, @id_contrato, @p_item_contrato, @consumo, @detalle_log)


    update LN_demo set informe = NULL
    where contraparte = @p_contraparte
    and producto = @producto
    and informe = @p_informe
    

   end


  end
 end


 /*** Asignar, poner fecha límite, activar la gestión de documentación y poner en proceso la tarea de solicitud de documentación del informe padre ***/
 if (@accion = 'activar_gestion_documentacion') begin

  if (@p_informe > 0 AND @p_asignado > 0 AND @p_fecha_limite_doc is not null) begin

   DECLARE @fecha_limite_doc datetime = dateadd(second,-1,dateadd(day,1,@p_fecha_limite_doc))
   DECLARE @fecha_comprometida_doc datetime = dateadd(second,-1,dateadd(day,1,@p_fecha_comprometida))


   declare @subinforme int
   declare @estado_subinforme varchar(1)
   declare @log_subinforme varchar(max)

   select   @subinforme = informes.informe,
       @estado_subinforme = informes.estado_informe,
       @log_subinforme = informes.historial_informe
   from informes 
   inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
   where informes.informe_padre = @p_informe
   and tipos_informe.genera_solicitud_doc = 1

   if (@estado_subinforme = 'I' and @subinforme > 0) begin

    select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
    from users where user_id = @p_asignado

    set @log_subinforme = @log_subinforme + CHAR(13) + CHAR(10) + @preffix + 'Asignación de la tarea a ' + @nombre_asignado
    set @log_subinforme = @log_subinforme + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de la tarea'
    set @log_subinforme = @log_subinforme + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso'

    UPDATE informes SET
     estado_informe = 'E',
     historial_informe = @log_subinforme,
     fin_pedido_doc = 0,
     asignado = @p_asignado,
     fecha_limite_doc = @fecha_limite_doc,
     fecha_asignado = GETDATE(),
     fecha_aceptacion = GETDATE(),
     fecha_iniciado = GETDATE(),
     /*fecha_comprometida = DATEADD(HOUR,12,DATEADD(DAY,1,@p_fecha_limite_doc))*/
     fecha_comprometida = @fecha_comprometida_doc 
    WHERE informe = @subinforme 


    SELECT @subinforme AS informe

   end
  end
 end


 /*** Dada la contraparte, busca un producto report asociado a un informe en gestión y chequea la documentación solicitada.
  En caso de que esté 100% verificada, se marca la tarea de gestión como que se ha completado la documentación y aparezca
  en el panel de solicitudes del blue como DOCS OK 
 
  Agregada la posibilidad de que el informe esté en proceso o en espera
 
  ***/


 if (@accion = 'check_docs_ok') begin

  if (@p_contraparte > 0) begin

   select @informe = LN_demo.informe,
     @gestion = LN_demo.gestion,
     @producto = LN_demo.producto,
     @estado = informes.estado_informe
   from LN_demo
   inner join LN_gestiones on (LN_demo.contraparte = LN_gestiones.contraparte
          and LN_demo.gestion = LN_gestiones.gestion)
   inner join informes on LN_demo.informe = informes.informe

   where LN_demo.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1

   and informes.estado_informe IN ('P','E','W')
   
   
   if (@informe is not null) begin

    /* Existe informe en gestión, busco documentación separada de balances */
    DECLARE Documentacion CURSOR FOR

    select LN_docs.estado_doc, count(*) as total_estado
    from LN_docs inner join 

     (select LN_docs.gestion, LN_docs.tipo_doc, max(LN_docs.doc_version) as doc_version
     from LN_docs 
     inner join LN_set_tipo_doc on LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
     inner join LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
     inner join LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
        AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
     inner join LN_tipos_doc on LN_set_tipo_doc.tipo_doc = LN_tipos_doc.tipo_doc
     where LN_docs.contraparte = @p_contraparte
     and LN_docs.gestion = @gestion
     and LN_docs.estado_doc IN ('N','I','R','V')
     and LN_docs.aplica = 1
     and ISNULL(LN_tipos_doc.es_balance, 0) = 0
     and LN_contraparte_familias.activo = 1
     and LN_set_tipo_doc.activo = 1
     group by LN_docs.gestion, LN_docs.tipo_doc) docs on 
     
      (LN_docs.gestion = docs.gestion and LN_docs.tipo_doc = docs.tipo_doc and LN_docs.doc_version = docs.doc_version)    
    group by LN_docs.estado_doc

    UNION

    select LN_docs.estado_doc, count(*) as total_estado
    from LN_docs inner join 

     (select LN_docs.gestion, LN_docs.tipo_doc, LN_docs.doc_version
     from LN_docs 
     inner join LN_set_tipo_doc on LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
     inner join LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
     inner join LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
        AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
     inner join LN_tipos_doc on LN_set_tipo_doc.tipo_doc = LN_tipos_doc.tipo_doc
     where LN_docs.contraparte = @p_contraparte
     and LN_docs.gestion = @gestion
     and LN_docs.estado_doc IN ('N','I','R','V')
     and LN_docs.aplica = 1
     and ISNULL(LN_tipos_doc.es_balance, 0) = 1
     and LN_contraparte_familias.activo = 1
     and LN_set_tipo_doc.activo = 1) docs on 
     
      (LN_docs.gestion = docs.gestion and LN_docs.tipo_doc = docs.tipo_doc and LN_docs.doc_version = docs.doc_version)    
    group by LN_docs.estado_doc


    OPEN Documentacion
    FETCH NEXT FROM Documentacion INTO @estado, @total_estado
    WHILE (@@FETCH_STATUS = 0) BEGIN
     SET @noing = @noing + iif(@estado = 'N', @total_estado, 0)
     SET @ing = @ing + iif(@estado = 'I', @total_estado, 0)
     SET @rech = @rech + iif(@estado = 'R', @total_estado, 0)
     SET @verif = @verif + iif(@estado = 'V', @total_estado, 0)

     FETCH NEXT FROM Documentacion INTO @estado, @total_estado
    END
    CLOSE Documentacion
    DEALLOCATE Documentacion

    SET @total_docs = @noing + @ing + @rech + @verif 
    
    --select @noing as noing, @ing as ing, @rech as rech, @verif as verif

    if (@total_docs > 0 AND @total_docs = @verif) begin

     /* toda la documentación verificada */
     select @tarea = informes.informe,
       @estado_tarea = informes.estado_informe,
       @hist = convert(varchar(max), informes.historial_informe)
     from informes inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
     where informes.estado_informe IN ('I','A','T','E')
     and informes.informe_padre = @informe
     --and informes.fin_pedido_doc = 0
     and ISNULL(tipos_informe.genera_solicitud_doc, 0) = 1

     if (@tarea > 0) begin
      SET @hist = iif(@hist is not null, @hist + CHAR(13) + CHAR(10), '')

      if (@estado_tarea = 'I') begin

       if (@p_user_id > 0)
        update informes set asignado = @p_user_id, fecha_asignado = GETDATE(), fecha_aceptacion = GETDATE(), fecha_iniciado = GETDATE(), fecha_entregado = GETDATE() where informe = @tarea

       set @hist = @hist + @preffix + 'Asignación de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Inicio de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Finalización de tarea en forma automática por cumplimiento y verificación de la documentación solicitada.'
      end
      if (@estado_tarea = 'A') begin

       if (@p_user_id > 0)
        update informes set fecha_aceptacion = GETDATE(), fecha_iniciado = GETDATE(), fecha_entregado = GETDATE() where informe = @tarea

       set @hist = @hist + @preffix + 'Aceptación de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Inicio de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Finalización de tarea en forma automática por cumplimiento y verificación de la documentación solicitada.'
      end
      if (@estado_tarea = 'T') begin

       if (@p_user_id > 0)
        update informes set fecha_iniciado = GETDATE(), fecha_entregado = GETDATE() where informe = @tarea

       set @hist = @hist + @preffix + 'Inicio de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Finalización de tarea en forma automática por cumplimiento y verificación de la documentación solicitada.'
      end
      if (@estado_tarea = 'E') begin
       set @hist = @hist + @preffix + 'Finalización de tarea en forma automática por cumplimiento y verificación de la documentación solicitada.'
      end

      UPDATE informes SET fin_pedido_doc = 1,
           estado_informe = 'F',
           fecha_entregado = GETDATE(),
           historial_informe = @hist
      WHERE informe = @tarea


      /* Log en el informe padre de la finalización automática de la gestión */
      select @hist = convert(varchar(max),informes.historial_informe) from informes where informe = @informe
      SET @hist = iif(@hist is not null, @hist + CHAR(13) + CHAR(10), '')
      set @hist = @hist + @preffix + 'Finalización automática de la tarea de gestión por cumplimiento y verificación de la totalidad de documentación solicitada a la contraparte.'

      UPDATE informes SET historial_informe = @hist,
      excepcion = 0,
      excepcion_prod = 1
      where informe = @informe

      /* PARA QUE APAREZCA EN DOCS OK NO DEBE DARSE POR APROBADA LA TAREA DE GESTIÓN, SINO FINALIZADA */

      -- Aprobación de tarea 
      /*set @hist = @hist + @preffix + 'Aprobación de tarea en forma automática por cumplimiento y verificación de la documentación solicitada.'
       UPDATE informes SET estado_informe = 'K',
       fecha_aprobacion = GETDATE(),
       aprobado_por = @p_user_id,
       historial_informe = @hist
       WHERE informe = @tarea*/



      -- Log en el informe padre de la aprobación automática de la gestión 
      /*select @hist = convert(varchar(max),informes.historial_informe) from informes where informe = @informe
       SET @hist = iif(@hist is not null, @hist + CHAR(13) + CHAR(10), '')
       set @hist = @hist + @preffix + 'Aprobación automática de la tarea de gestión por cumplimiento y verificación de la totalidad de documentación solicitada a la contraparte.'*/

      
      -- Inicio automático del informe en caso de encontrarse previamente en gestión
      
      if (@estado = 'P') begin

       SET @hist = iif(@hist is not null, @hist + CHAR(13) + CHAR(10), '')
       set @hist = @hist + @preffix + 'Informe colocado en proceso en forma automática por cumplimiento y verificación de la totalidad de documentación solicitada a la contraparte.'

       UPDATE informes set estado_informe = 'E', 
       fecha_iniciado = GETDATE(), 
       historial_informe = @hist 
       where informe = @informe

      end

     end

    end

   end

  end

 end


 /*** Dada la contraparte, busca un producto report asociado a un informe en proceso y chequea la tarea de documentación de balances.
  En caso de que esté asignada y los balances verificados / publicados, se la debe poner en proceso para que pueda iniciarse
 
  HARDCODE del ID tipo informe que corresponde al Análisis de Estados Contables
 
  ***/


 if (@accion = 'check_tarea_balances') begin

  DECLARE @id_tipo_analisis_balances INT = 9080511

  if (@p_contraparte > 0) begin

   select @informe = LN_demo.informe,
     @gestion = LN_demo.gestion,
     @producto = LN_demo.producto
   from LN_demo
   inner join LN_gestiones on (LN_demo.contraparte = LN_gestiones.contraparte
          and LN_demo.gestion = LN_gestiones.gestion)
   inner join informes on LN_demo.informe = informes.informe

   where LN_demo.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1

   and informes.estado_informe IN ('P','M','E')
   
   
   if (@informe is not null) begin

    DECLARE @estado_balance varchar(50)

    DECLARE Balances CURSOR FOR

    select LN_docs.estado_doc, docs.estado, count(*) as total_estado
    from LN_docs inner join 

     (select LN_docs.gestion, LN_docs.tipo_doc, LN_docs.doc_version, balances_contables.estado
     from LN_docs 
     inner join LN_set_tipo_doc on LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
     inner join LN_familias on LN_set_tipo_doc.set_doc = LN_familias.set_doc
     inner join LN_contraparte_familias on (LN_familias.familia = LN_contraparte_familias.familia
        AND LN_docs.contraparte = LN_contraparte_familias.contraparte)
     inner join LN_tipos_doc on LN_set_tipo_doc.tipo_doc = LN_tipos_doc.tipo_doc

     left outer join balances_contables on LN_docs.id_externo = balances_contables.id_balance

     where LN_docs.contraparte = @p_contraparte
     and LN_docs.gestion = @gestion
     and LN_docs.estado_doc IN ('N','I','R','V')
     and LN_docs.aplica = 1
     and ISNULL(LN_tipos_doc.es_balance, 0) = 1
     and LN_contraparte_familias.activo = 1
     and LN_set_tipo_doc.activo = 1) docs on 
     
      (LN_docs.gestion = docs.gestion and LN_docs.tipo_doc = docs.tipo_doc and LN_docs.doc_version = docs.doc_version)    
    group by LN_docs.estado_doc, docs.estado


    OPEN Balances
    FETCH NEXT FROM Balances INTO @estado, @estado_balance, @total_estado
    WHILE (@@FETCH_STATUS = 0) BEGIN
     SET @noing = @noing + iif(@estado = 'N', @total_estado, 0)
     SET @ing = @ing + iif(@estado = 'I', @total_estado, 0)
     SET @rech = @rech + iif(@estado = 'R', @total_estado, 0)
     SET @verif = @verif + iif(@estado = 'V', @total_estado, 0)
     SET @publicados = @publicados + iif(@estado_balance = 'PUBLICADO', @total_estado, 0)

     FETCH NEXT FROM Balances INTO @estado, @estado_balance, @total_estado
    END
    CLOSE Balances
    DEALLOCATE Balances

    SET @total_docs = @noing + @ing + @rech + @verif

    --SELECT @total_docs,@noing,@ing,@rech,@verif,@publicados

    if (@total_docs > 0 AND @total_docs = @verif AND @total_docs = @publicados) begin

     /* todos los balances en la gestión verificados / publicados */
     select @tarea = informes.informe,
       @estado_tarea = informes.estado_informe,
       @hist = convert(varchar(max), informes.historial_informe)
     from informes inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
     where informes.estado_informe IN ('I','A','T','E')
     and informes.id_tipo_informe = @id_tipo_analisis_balances
     and informes.informe_padre = @informe


     if (@tarea > 0) begin
      SET @hist = iif(@hist is not null, @hist + CHAR(13) + CHAR(10), '')

      if (@estado_tarea = 'I') begin

       if (@p_user_id > 0)
        update informes set asignado = @p_user_id, fecha_asignado = GETDATE(), fecha_aceptacion = GETDATE(), fecha_iniciado = GETDATE() where informe = @tarea

       set @hist = @hist + @preffix + 'Asignación de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Inicio de tarea en forma automática por encontrarse verificada la documentación de balances de la contraparte.'
      end
      if (@estado_tarea = 'A') begin

       if (@p_user_id > 0)
        update informes set fecha_aceptacion = GETDATE(), fecha_iniciado = GETDATE() where informe = @tarea

       set @hist = @hist + @preffix + 'Aceptación de tarea'
       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Inicio de tarea en forma automática por encontrarse verificada la documentación de balances de la contraparte.'
      end
      if (@estado_tarea = 'T') begin

       if (@p_user_id > 0)
        update informes set fecha_iniciado = GETDATE() where informe = @tarea

       set @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Inicio de tarea en forma automática por encontrarse verificada la documentación de balances de la contraparte.'
      end

      UPDATE informes SET estado_informe = 'E',
           historial_informe = @hist
      WHERE informe = @tarea


      /* Log en el informe padre del inicio automático del análisis de balances */
      select @hist = convert(varchar(max),informes.historial_informe) from informes where informe = @informe
      SET @hist = iif(@hist is not null, @hist + CHAR(13) + CHAR(10), '')
      set @hist = @hist + @preffix + 'Inicio automático de la tarea de análisis de estados contables por encontrarse verificada la documentación de balances de la contraparte.'

      UPDATE informes SET historial_informe = @hist where informe = @informe

     end


    end
   end
  end

 end


 /* registro del tipo de informe */
 if (@accion = 'tipo_informe') begin
  if (@p_id_tipo_informe is not null)

   select tipos_informe.*, 
     productos.producto, productos.nombre_producto, ISNULL(productos.confidencial, 0) AS confidencial, productos.sigla
   from tipos_informe 
   left outer join productos on tipos_informe.grupo_informes = productos.grupo_informes
   where tipos_informe.id_tipo_informe = @p_id_tipo_informe

 end

 /* Dado un informe (padre) trae los datos de la tarea de gestión de documentación */
 if (@accion = 'datos_tarea_gestion') begin
  if (@p_informe is not null)

   select informes.*, users.first_name, users.last_name, users.email
   from informes 
   inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
   left outer join users on informes.asignado = users.user_id
   where informes.informe_padre = @p_informe
   and tipos_informe.genera_solicitud_doc = 1

 end


 /* Dada una contraparte y una fecha límite, busca informes activos que tengan la tarea de gestión en proceso y actualiza el registro 
  de la tarea con dicha fecha límite de carga de la documentación.
  Para utilizar luego de re-enviar el link de acceso facon desde el backend 
 
  Debe actualizar la fecha comprometida de entrega del informa padre
  */


 if (@accion = 'actualizar_tarea_gestion') begin

  if (@p_contraparte is not null AND @p_fecha_limite_doc is not null) begin

   DECLARE @fecha_limite_anterior datetime, @fecha_comprometida_anterior datetime, @fecha_comprometida_update datetime

   select @estado_tarea = informes.estado_informe,
     @tarea = informes.informe_padre,
     @informe = padre.informe,
     @fecha_limite_anterior = informes.fecha_limite_doc,
     @fecha_comprometida_anterior = padre.fecha_comprometida

   from informes 
   inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
   inner join informes as padre on informes.informe_padre = padre.informe
   inner join LN_demo on padre.informe = LN_demo.informe
   inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
   inner join LN_gestiones on LN_contrapartes.contraparte = LN_gestiones.contraparte

   where tipos_informe.genera_solicitud_doc = 1
   and informes.estado_informe in ('P','M','W','E')
   and informes.fin_pedido_doc = 0
   and padre.estado_informe in ('I','A','T','E','P','M','W')
   and LN_contrapartes.contraparte = @p_contraparte
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1

   and LN_contrapartes.cliente = informes.cliente

   if (@tarea is not null AND @informe is not null) begin
    -- debe ser posterior al día de hoy
    if ( convert(date, @p_fecha_limite_doc) >= convert(date, GETDATE()) ) begin

     SET @fecha_comprometida_update = DATEADD(day, datediff(day, @fecha_limite_anterior, @p_fecha_limite_doc), @fecha_comprometida_anterior)

     UPDATE informes SET 
      fecha_limite_doc = Dateadd(second,-1,Dateadd(day,1,@p_fecha_limite_doc)),
      historial_informe = convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @preffix + 'Fecha límite de carga de documentación establecida en ' + convert(varchar(10),@p_fecha_limite_doc,103)
     WHERE informe = @tarea

     /* Aquí corresponde actualizar la fecha comprometida del informe padre - falta definir lógica, por ahora calculamos estirando
      la fecha comprometida preexistente según los días que estiramos la gestión */


     UPDATE informes SET
      fecha_comprometida = @fecha_comprometida_update,
      historial_informe = convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @preffix + 'Fecha comprometida del informe establecida en ' + convert(varchar(10),@fecha_comprometida_update,103) + ' por cambio de la fecha límite de carga de documentación.'
     WHERE informe = @informe

     --select @fecha_comprometida_update, @fecha_limite_anterior, @fecha_comprometida_anterior

    end

   end


  end

 end


 /* BACKEND : Panel de control para documentación de Reports / Documentación para producción de informes / Para buscar un report específico o 
  determinar si una contraparte tiene un report activo vinculado a documentación LED  */

 if (@accion = 'panel_control_reports') begin

  declare @exceptuados varchar(max) = '3982729,2371399,5168031,5218284,4178243,1542401,5837954,9711129,6754119,9176353,3183825,7773973,2484295,651332,9833977,2419690,7726636,4455535,4672751,4991990,7554775,9470808,5340284,652771,2904531,7031105,9689736,9861987,5537769,8220394,7046573,4573001,7849454,3806616,1054380,2023650,4165844,7334274,3108853,3233597,4465843,6401234,3793926,2687541,3786823,6342074,2414915,8801003,2815108,2896510,1306357,2957208,4489107,8540339,4986940,3851105,5716076,1501711,1054097,6094230,793725,8572699,2427354,8964417,9694293,6756499,6831398,2826029,5763219,1320,6955007,1183078,8866570,6564186,1130153,1417132,9057277,8181046,5645895,5450571,3946220,594892,5042479,4601593,9244071,3802363,414608,3922289,509005,9186151,7275700,5606918,2018497,7616862,2694707,7108228,3789485,8645259,4099881,2039463,3034032,1020116,7759330,7560634,503985,6790563,5321667,392174,2050636,840033,742547,2862753,4476180,7876607,1118505,8546756,4809425,42221,9697952,5394529,4320154,5803346,7559539,4688566,14325,2110447,9468990,5399592,5942796,6378600,306466,3458277,511150,2156312,2250938,7893918,7695187,8094812,2578389,9890172,1877551,5525474,1997451,3751555,6158847,6522538,9028232,5758261,8534217,9134153,7968193,3940751,1771522,7575808,2031390,7418772,7532858,1554345,9647700,2895646,5257668,9267616,2342041,5393664,2294633,7203663,7542660,3885937,8272808,5183870,7427451,6074414,7680120,113534,4015131,7207763,5508337,2168887,2198958,3034447,2484543,509031,4500385,9907210,5183043,1312181,6440412,4832339,5562748,9034849,3805165,8786261,5352049,2399261,3475021,9154594,7486757,9084963,5409200,2443292,213664,8980289,6004830,2097805,6620749,115755,259603,799349,864377,4572217,4201884,3426697,5816098,2590867,1394197,6419768,3048099,2972819,4874235,4265288,8474426,91833,464012,7897828,9976694,9635777,6115959,808389,962765,6395559,7165885,4800711,1627634,7802647,1753335,1191904,6029832,4414293,9764410,3469706,4528013,6091823,2681609,22909,5485281,9309304,7173617,5918135,8253457,2962959,2094685,2221611,5754108,5629469,6020365,4725963,4210822,1780264,7745392,7234627,5550378,9646919,4080777,1157428,1538261,9304839,3210357,7568092,4134432,5611449,3514691,1655982,3167730,2125510,9064103,5264350,2826850,7153304,1218272,5671823,6934568,9579040,3418995,3903118,3197133,2440237,2183677,3545621,1888371,9163044,42802,170471,489344,7194760,8253833,6651935,6714306,716395,8186824,6039846,3125827,8252247,2755999,7405605,1833575,4993162,4385744,631414,8633914,5102,5442213,7120540,4618263,2907606,7335232,4219601,5172005,3880101,73188,391756,3811625,7269492,9736447,8918123,3471899,9048051,4010479,3280944,2524651,7840813,8644247,266532,3217715,2874046,8292741,1957201,3124446,9858957,8930573,3557731,8290980,6839691,5158198,2426957,4193275,2191147,3781071,3629913,2009082,2167666,2209905,7045318,1424816,1492183,6429942,7757523,5345998,194726,2935861,916510,6130663,5076660,179463,7482775,5885110,3232244,5190125,8488725,1887654,3237604,736244,3754663,7117376,1258999,5494692'
  
  if (@p_contraparte is null and @p_informe is null)

   -- todos los informes activos con documentación LED

   /*SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
    tipos_informe.texto_email_solicitud, tipos_informe.asunto_email_solicitud,
    LN_demo.contraparte, LN_gestiones.gestion, padrones.nombre_persona, informes.historial_informe,
    padrones.identificacion, padrones.numero, padrones.identificador, identificadores.abreviatura,
    identificadores.country_code, country.country_name,
    convert(varchar(10), informes.fecha_comprometida, 103) as fecha_comprometida,
    convert(varchar(10), informes.fecha_comprometida, 121) as fecha_comprometida_ymd,
    case
    when informes.estado_informe = 'I' then 'Ingresado'
    when informes.estado_informe = 'A' then 'Asignado'
    when informes.estado_informe = 'T' then 'Aceptado'
    when informes.estado_informe = 'P' then 'En gestión'
    when informes.estado_informe = 'M' then 'En espera'
    when informes.estado_informe = 'E' then 'En proceso'
    when informes.estado_informe = 'F' then 'Finalizado'
    when informes.estado_informe = 'K' then 'Aprobado'
    when informes.estado_informe = 'R' then 'En revisión'
    end as nombre_estado,
    clientes.nombre_cliente, tareas.informe as tarea, tareas.estado_informe as estado_tarea, tareas.fin_pedido_doc,
    convert(varchar(10),tareas.fecha_limite_doc,103) as fecha_limite_doc,
    convert(varchar(10),tareas.fecha_limite_doc,121) as fecha_limite_doc_ymd,
   
    /*isnull(indicadores.valor_numerico,0) as cumplimiento,*/

   
    iif(documentacion.total_documentos is not null AND ingresados.total_ingresados is not null,
    iif(documentacion.total_documentos > 0, ROUND(convert(decimal,ingresados.total_ingresados)/convert(decimal,documentacion.total_documentos)*100,0), 0),
    0) as cumplimiento,
   
    iif(documentacion.total_documentos is not null AND verificados.total_verificados is not null,
    iif(documentacion.total_documentos > 0, ROUND(convert(decimal,verificados.total_verificados)/convert(decimal,documentacion.total_documentos)*100,0), 0),
    0) as verificacion
   
    , ingresados.total_ingresados, documentacion.total_documentos, verificados.total_verificados
   
    FROM informes 
    inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
    inner join LN_demo ON informes.informe = LN_demo.informe
    inner join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
    inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join padrones ON LN_contrapartes.id_padron = padrones.id_padron
    inner join identificadores ON padrones.identificador = identificadores.identificador
    inner join country ON identificadores.country_code = country.country_code
    inner join clientes ON LN_contrapartes.cliente = clientes.cliente
   
    inner join informes as tareas ON informes.informe = tareas.informe_padre
    inner join tipos_informe as tipos_tarea on tareas.id_tipo_informe = tipos_tarea.id_tipo_informe
   
    /*LEFT OUTER JOIN (select LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.gestion, LN_contraparte_indicadores.valor_numerico
    from LN_contraparte_indicadores 
    inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
    inner join LN_demo on (LN_contraparte_indicadores.contraparte = LN_demo.contraparte and LN_contraparte_indicadores.gestion = LN_demo.gestion)
    where LN_indicadores.clave_indicador = 'CUMPL_DOC'
    and LN_demo.informe IS NOT NULL) indicadores ON (LN_gestiones.contraparte = indicadores.contraparte and LN_gestiones.gestion = indicadores.gestion)*/

   
    LEFT OUTER JOIN (SELECT COUNT(*) AS total_documentos, LN_demo.contraparte, LN_demo.gestion
    FROM LN_docs 
    inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
    and LN_docs.gestion = LN_demo.gestion)
    inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
    inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
    inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
    and LN_contrapartes.cliente = LN_familias.cliente)
    inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
    and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
    WHERE LN_docs.aplica = 1
    AND LN_familias.visible = 1
    AND LN_contraparte_familias.activo = 1
    GROUP BY LN_demo.contraparte, LN_demo.gestion) documentacion  ON (LN_gestiones.contraparte = documentacion.contraparte and LN_gestiones.gestion = documentacion.gestion)
   
   
    LEFT OUTER JOIN (SELECT COUNT(*) AS total_ingresados, LN_demo.contraparte, LN_demo.gestion
    FROM LN_docs 
    inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
    and LN_docs.gestion = LN_demo.gestion)
    inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
    inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
    inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
    and LN_contrapartes.cliente = LN_familias.cliente)
    inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
    and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
    WHERE LN_docs.aplica = 1
    AND LN_docs.estado_doc IN ('I','V')
    AND LN_familias.visible = 1
    AND LN_contraparte_familias.activo = 1
    GROUP BY LN_demo.contraparte, LN_demo.gestion) ingresados  ON (LN_gestiones.contraparte = ingresados.contraparte and LN_gestiones.gestion = ingresados.gestion)
   
   
    LEFT OUTER JOIN (SELECT COUNT(*) AS total_verificados, LN_demo.contraparte, LN_demo.gestion
    FROM LN_docs 
    inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
    and LN_docs.gestion = LN_demo.gestion)
    inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
    inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
    inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
    and LN_contrapartes.cliente = LN_familias.cliente)
    inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
    and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
    WHERE LN_docs.aplica = 1
    AND LN_docs.estado_doc = 'V'
    AND LN_familias.visible = 1
    AND LN_contraparte_familias.activo = 1
    GROUP BY LN_demo.contraparte, LN_demo.gestion) verificados  ON (LN_gestiones.contraparte = verificados.contraparte and LN_gestiones.gestion = verificados.gestion)
   
   
    LEFT OUTER JOIN dbo.DelimitedSplit8K(@exceptuados, ',') exceptuados ON informes.informe = convert(int,exceptuados.Item)
   
    WHERE informes.estado_informe IN ('I','A','T','P','M','E','W','R')
    and tareas.estado_informe IN ('P','M','E','W','F','K','R')
    --and tareas.fin_pedido_doc = 0
    and tipos_tarea.genera_solicitud_doc = 1
    and exceptuados.Item is null
   
    ORDER BY tareas.fecha_limite_doc*/



   SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
     '' as tipo_informe, '' as version,     ''  as texto_email, '' as texto_email_solicitud,  '' as asunto_email_solicitud, 
     /*tipos_informe.tipo_informe, tipos_informe.version,
      tipos_informe.texto_email, tipos_informe.texto_email_solicitud, tipos_informe.asunto_email_solicitud,*/

     LN_demo.contraparte, LN_gestiones.gestion, padrones.nombre_persona, informes.historial_informe,
     padrones.identificacion, padrones.numero, padrones.identificador, identificadores.abreviatura,
     identificadores.country_code, country.country_name,
     users.first_name, users.last_name, users.email, informes.ingresado_por,
     convert(varchar(10), informes.fecha_ingreso, 103) as fecha_ingreso,
     convert(varchar(10), informes.fecha_aprobacion, 103) as fecha_aprobacion,
     convert(varchar(10), informes.fecha_comprometida, 103) as fecha_comprometida,
     convert(varchar(10), informes.fecha_comprometida, 121) as fecha_comprometida_ymd,
     case
      when informes.estado_informe = 'I' then 'Ingresado'
      when informes.estado_informe = 'A' then 'Asignado'
      when informes.estado_informe = 'T' then 'Aceptado'
      when informes.estado_informe = 'P' then 'En gestión'
      when informes.estado_informe = 'M' then 'En espera'
      when informes.estado_informe = 'E' then 'En proceso'
      when informes.estado_informe = 'F' then 'Finalizado'
      when informes.estado_informe = 'K' then 'Aprobado'
      when informes.estado_informe = 'R' then 'En revisión'
     end as nombre_estado,
     clientes.nombre_cliente, tareas.informe as tarea, tareas.estado_informe as estado_tarea, tareas.fin_pedido_doc,
     convert(varchar(10),tareas.fecha_limite_doc,103) as fecha_limite_doc,
     convert(varchar(10),tareas.fecha_limite_doc,121) as fecha_limite_doc_ymd,

     /*isnull(indicadores.valor_numerico,0) as cumplimiento,*/

     iif(documentacion.total_documentos is not null AND ingresados.total_ingresados is not null,
      iif(documentacion.total_documentos > 0, ROUND(convert(decimal,ingresados.total_ingresados)/convert(decimal,documentacion.total_documentos)*100,0), 0),
      0) as cumplimiento,

     iif(documentacion.total_documentos is not null AND verificados.total_verificados is not null,
      iif(documentacion.total_documentos > 0, ROUND(convert(decimal,verificados.total_verificados)/convert(decimal,documentacion.total_documentos)*100,0), 0),
      0) as verificacion

     , ingresados.total_ingresados, documentacion.total_documentos, verificados.total_verificados

     , CASE
      WHEN ingresados.total_ingresados IS NULL AND documentacion.total_documentos IS NULL AND verificados.total_verificados IS NULL THEN 1
      WHEN exceptuados.Item IS NOT NULL THEN 1
      ELSE 0
     END AS facon
     ,ln_contrapartes.servicio_contratado, productos.nombre_producto as servicio, ln_familias.nombre_familia as familia
     ,convert(varchar(10),ln_contrapartes.limite_carga_inicial,103) as limite_carga_inicial_dmy
     ,convert(varchar(10),ln_contrapartes.limite_carga_inicial,121) as limite_carga_inicial_ymd
     ,tareas.id_tipo_informe as id


       

   FROM informes 
   inner join ln_tipo_informes tipos_informe on informes.id_tipo_informe = tipos_informe.idTipoInforme
   inner join informes as tareas ON informes.informe = tareas.informe_padre
   inner join tipos_informe as tipos_tarea on tareas.id_tipo_informe = tipos_tarea.id_tipo_informe
   left join clientes ON informes.cliente = clientes.cliente
   left outer join users on informes.ingresado_por = users.user_id

   inner join padrones ON (informes.identificador = padrones.identificador AND informes.numero = padrones.numero)

   left join LN_demo ON informes.informe = LN_demo.informe
   left join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
   left join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   left join identificadores ON padrones.identificador = identificadores.identificador
   left join country ON identificadores.country_code = country.country_code
   left join productos on productos.producto = ln_contrapartes.servicio_contratado
   left join ln_contraparte_familias cf on cf.contraparte = ln_contrapartes.contraparte
   left join ln_familias on ln_familias.familia = cf.familia 
    

   /*LEFT OUTER JOIN (select LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.gestion, LN_contraparte_indicadores.valor_numerico
    from LN_contraparte_indicadores 
    inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
    inner join LN_demo on (LN_contraparte_indicadores.contraparte = LN_demo.contraparte and LN_contraparte_indicadores.gestion = LN_demo.gestion)
    where LN_indicadores.clave_indicador = 'CUMPL_DOC'
    and LN_demo.informe IS NOT NULL) indicadores ON (LN_gestiones.contraparte = indicadores.contraparte and LN_gestiones.gestion = indicadores.gestion)*/


   LEFT OUTER JOIN (SELECT COUNT(*) AS total_documentos, LN_demo.contraparte, LN_demo.gestion
        FROM LN_docs 
        inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                 and LN_docs.gestion = LN_demo.gestion)
        inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
        inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
        inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
               and LN_contrapartes.cliente = LN_familias.cliente)
        inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
        WHERE LN_docs.aplica = 1
        AND LN_familias.visible = 1
        AND LN_contraparte_familias.activo = 1
        GROUP BY LN_demo.contraparte, LN_demo.gestion) documentacion  ON (LN_gestiones.contraparte = documentacion.contraparte and LN_gestiones.gestion = documentacion.gestion)


   LEFT OUTER JOIN (SELECT COUNT(*) AS total_ingresados, LN_demo.contraparte, LN_demo.gestion
        FROM LN_docs 
        inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                 and LN_docs.gestion = LN_demo.gestion)
        inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
        inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
        inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
               and LN_contrapartes.cliente = LN_familias.cliente)
        inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
        WHERE LN_docs.aplica = 1
        AND LN_docs.estado_doc IN ('I','V')
        AND LN_familias.visible = 1
        AND LN_contraparte_familias.activo = 1
        GROUP BY LN_demo.contraparte, LN_demo.gestion) ingresados  ON (LN_gestiones.contraparte = ingresados.contraparte and LN_gestiones.gestion = ingresados.gestion)


   LEFT OUTER JOIN (SELECT COUNT(*) AS total_verificados, LN_demo.contraparte, LN_demo.gestion
        FROM LN_docs 
        inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                 and LN_docs.gestion = LN_demo.gestion)
        inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
        inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
        inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
               and LN_contrapartes.cliente = LN_familias.cliente)
        inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
        WHERE LN_docs.aplica = 1
        AND LN_docs.estado_doc = 'V'
        AND LN_familias.visible = 1
        AND LN_contraparte_familias.activo = 1
        GROUP BY LN_demo.contraparte, LN_demo.gestion) verificados  ON (LN_gestiones.contraparte = verificados.contraparte and LN_gestiones.gestion = verificados.gestion)

       
   LEFT OUTER JOIN dbo.DelimitedSplit8K(@exceptuados, ',') exceptuados ON informes.informe = convert(int,exceptuados.Item)

   WHERE informes.estado_informe IN ('I','A','T','P','M','E','W','R')
   and tareas.estado_informe IN ('P','M','E','W','F','K','R','I')
   --and tareas.fin_pedido_doc = 0
   and tipos_tarea.genera_solicitud_doc = 1
   --and exceptuados.Item is null
   

   --and tipos_informe.id_tipo_informe = 1644769


   and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
      and LN_gestiones.vigente = 1


   ORDER BY informes.informe, tareas.fecha_limite_doc



  else 
  
   if (@p_contraparte is not null and @p_informe is null)
    -- para determinar si una contraparte tiene report activo

    SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
      '' as tipo_informe, '' as version,     ''  as texto_email, '' as texto_email_solicitud,  '' as asunto_email_solicitud, 

/* tipos_informe.tipo_informe, tipos_informe.version,
tipos_informe.texto_email, tipos_informe.texto_email_solicitud, tipos_informe.asunto_email_solicitud,*/

      LN_demo.contraparte, LN_gestiones.gestion, padrones.nombre_persona, informes.historial_informe,
      padrones.identificacion, padrones.numero, padrones.identificador, identificadores.abreviatura,
      identificadores.country_code, country.country_name,
      users.first_name, users.last_name, users.email, informes.ingresado_por,
      convert(varchar(10), informes.fecha_ingreso, 103) as fecha_ingreso,
      convert(varchar(10), informes.fecha_aprobacion, 103) as fecha_aprobacion,
      convert(varchar(10), informes.fecha_comprometida, 103) as fecha_comprometida,
      convert(varchar(10), informes.fecha_comprometida, 121) as fecha_comprometida_ymd,
      case
       when informes.estado_informe = 'I' then 'Ingresado'
       when informes.estado_informe = 'A' then 'Asignado'
       when informes.estado_informe = 'T' then 'Aceptado'
       when informes.estado_informe = 'P' then 'En gestión'
       when informes.estado_informe = 'M' then 'En espera'
       when informes.estado_informe = 'E' then 'En proceso'
       when informes.estado_informe = 'F' then 'Finalizado'
       when informes.estado_informe = 'K' then 'Aprobado'
       when informes.estado_informe = 'R' then 'En revisión'
      end as nombre_estado,
      clientes.nombre_cliente, tareas.informe as tarea, tareas.estado_informe as estado_tarea, tareas.fin_pedido_doc,
      convert(varchar(10),tareas.fecha_limite_doc,103) as fecha_limite_doc,
      convert(varchar(10),tareas.fecha_limite_doc,121) as fecha_limite_doc_ymd,
      
      /*isnull(indicadores.valor_numerico,0) as cumplimiento*/

      iif(documentacion.total_documentos is not null AND ingresados.total_ingresados is not null,
       iif(documentacion.total_documentos > 0, ROUND(convert(decimal,ingresados.total_ingresados)/convert(decimal,documentacion.total_documentos)*100,0), 0),
       0) as cumplimiento,

      iif(documentacion.total_documentos is not null AND verificados.total_verificados is not null,
       iif(documentacion.total_documentos > 0, ROUND(convert(decimal,verificados.total_verificados)/convert(decimal,documentacion.total_documentos)*100,0), 0),
       0) as verificacion

      , ingresados.total_ingresados, documentacion.total_documentos, verificados.total_verificados
     ,ln_contrapartes.servicio_contratado, productos.nombre_producto as servicio, ln_familias.nombre_familia as familia
     ,convert(varchar(10),ln_contrapartes.limite_carga_inicial,103) as limite_carga_inicial_dmy
     ,convert(varchar(10),ln_contrapartes.limite_carga_inicial,121) as limite_carga_inicial_ymd
     ,tareas.id_tipo_informe as id



    FROM informes 
    inner join LN_tipo_informes tipos_informe on informes.id_tipo_informe = tipos_informe.idTipoInforme
    inner join LN_demo ON informes.informe = LN_demo.informe
    inner join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
    inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join padrones ON LN_contrapartes.id_padron = padrones.id_padron
    inner join identificadores ON padrones.identificador = identificadores.identificador
    inner join country ON identificadores.country_code = country.country_code
    inner join clientes ON LN_contrapartes.cliente = clientes.cliente
       left join productos on productos.producto = ln_contrapartes.servicio_contratado
    left join ln_contraparte_familias cf on cf.contraparte = ln_contrapartes.contraparte
    left join ln_familias on ln_familias.familia = cf.familia 


    inner join informes as tareas ON informes.informe = tareas.informe_padre
    inner join tipos_informe as tipos_tarea on tareas.id_tipo_informe = tipos_tarea.id_tipo_informe
    left outer join users on informes.ingresado_por = users.user_id

    /*LEFT OUTER JOIN (select LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.gestion, LN_contraparte_indicadores.valor_numerico
     from LN_contraparte_indicadores 
     inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
     inner join LN_demo on (LN_contraparte_indicadores.contraparte = LN_demo.contraparte and LN_contraparte_indicadores.gestion = LN_demo.gestion)
     where LN_indicadores.clave_indicador = 'CUMPL_DOC'
     and LN_demo.informe IS NOT NULL) indicadores ON (LN_gestiones.contraparte = indicadores.contraparte and LN_gestiones.gestion = indicadores.gestion)*/



    LEFT OUTER JOIN (SELECT COUNT(*) AS total_documentos, LN_demo.contraparte, LN_demo.gestion
         FROM LN_docs 
         inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                  and LN_docs.gestion = LN_demo.gestion)
         inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
         inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
         inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
                and LN_contrapartes.cliente = LN_familias.cliente)
         inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                 and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
         WHERE LN_docs.aplica = 1
         AND LN_familias.visible = 1
         AND LN_contraparte_familias.activo = 1
         AND LN_demo.contraparte = @p_contraparte
         GROUP BY LN_demo.contraparte, LN_demo.gestion) documentacion  ON (LN_gestiones.contraparte = documentacion.contraparte and LN_gestiones.gestion = documentacion.gestion)


    LEFT OUTER JOIN (SELECT COUNT(*) AS total_ingresados, LN_demo.contraparte, LN_demo.gestion
         FROM LN_docs 
         inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                  and LN_docs.gestion = LN_demo.gestion)
         inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
         inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
         inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
                and LN_contrapartes.cliente = LN_familias.cliente)
         inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                 and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
         WHERE LN_docs.aplica = 1
         AND LN_docs.estado_doc IN ('I','V')
         AND LN_familias.visible = 1
         AND LN_contraparte_familias.activo = 1
         AND LN_demo.contraparte = @p_contraparte
         GROUP BY LN_demo.contraparte, LN_demo.gestion) ingresados  ON (LN_gestiones.contraparte = ingresados.contraparte and LN_gestiones.gestion = ingresados.gestion)


    LEFT OUTER JOIN (SELECT COUNT(*) AS total_verificados, LN_demo.contraparte, LN_demo.gestion
         FROM LN_docs 
         inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                  and LN_docs.gestion = LN_demo.gestion)
         inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
         inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
         inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
                and LN_contrapartes.cliente = LN_familias.cliente)
         inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                 and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
         WHERE LN_docs.aplica = 1
         AND LN_docs.estado_doc = 'V'
         AND LN_familias.visible = 1
         AND LN_contraparte_familias.activo = 1
         AND LN_demo.contraparte = @p_contraparte
         GROUP BY LN_demo.contraparte, LN_demo.gestion) verificados  ON (LN_gestiones.contraparte = verificados.contraparte and LN_gestiones.gestion = verificados.gestion)


    LEFT OUTER JOIN dbo.DelimitedSplit8K(@exceptuados, ',') exceptuados ON informes.informe = convert(int,exceptuados.Item)      

    WHERE LN_demo.contraparte = @p_contraparte
    --and tareas.fin_pedido_doc = 0
    and tipos_tarea.genera_solicitud_doc = 1
    and exceptuados.Item is null

    and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
   and LN_gestiones.vigente = 1



   else
    -- dados contraparte e informe

    SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
         '' as tipo_informe, '' as version,     ''  as texto_email, '' as texto_email_solicitud,  '' as asunto_email_solicitud, 

      /*tipos_informe.tipo_informe, tipos_informe.version,
       tipos_informe.texto_email, tipos_informe.texto_email_solicitud, tipos_informe.asunto_email_solicitud,*/

      LN_demo.contraparte, LN_gestiones.gestion, padrones.nombre_persona, informes.historial_informe,
      padrones.identificacion, padrones.numero, padrones.identificador, identificadores.abreviatura,
      identificadores.country_code, country.country_name,
      users.first_name, users.last_name, users.email, informes.ingresado_por,
      convert(varchar(10), informes.fecha_ingreso, 103) as fecha_ingreso,
      convert(varchar(10), informes.fecha_aprobacion, 103) as fecha_aprobacion,
      convert(varchar(10), informes.fecha_comprometida, 103) as fecha_comprometida,
      convert(varchar(10), informes.fecha_comprometida, 121) as fecha_comprometida_ymd,
      case
       when informes.estado_informe = 'I' then 'Ingresado'
       when informes.estado_informe = 'A' then 'Asignado'
       when informes.estado_informe = 'T' then 'Aceptado'
       when informes.estado_informe = 'P' then 'En gestión'
       when informes.estado_informe = 'M' then 'En espera'
       when informes.estado_informe = 'E' then 'En proceso'
       when informes.estado_informe = 'F' then 'Finalizado'
       when informes.estado_informe = 'K' then 'Aprobado'
       when informes.estado_informe = 'R' then 'En revisión'
      end as nombre_estado,
      clientes.nombre_cliente, tareas.informe as tarea, tareas.estado_informe as estado_tarea, tareas.fin_pedido_doc,
      convert(varchar(10),tareas.fecha_limite_doc,103) as fecha_limite_doc,
      convert(varchar(10),tareas.fecha_limite_doc,121) as fecha_limite_doc_ymd,
      
      /*isnull(indicadores.valor_numerico,0) as cumplimiento*/

      iif(documentacion.total_documentos is not null AND ingresados.total_ingresados is not null,
       iif(documentacion.total_documentos > 0, ROUND(convert(decimal,ingresados.total_ingresados)/convert(decimal,documentacion.total_documentos)*100,0), 0),
       0) as cumplimiento,

      iif(documentacion.total_documentos is not null AND verificados.total_verificados is not null,
       iif(documentacion.total_documentos > 0, ROUND(convert(decimal,verificados.total_verificados)/convert(decimal,documentacion.total_documentos)*100,0), 0),
       0) as verificacion

      , ingresados.total_ingresados, documentacion.total_documentos, verificados.total_verificados
     ,ln_contrapartes.servicio_contratado, productos.nombre_producto as servicio, ln_familias.nombre_familia as familia
      ,convert(varchar(10),ln_contrapartes.limite_carga_inicial,103) as limite_carga_inicial_dmy
      ,convert(varchar(10),ln_contrapartes.limite_carga_inicial,121) as limite_carga_inicial_ymd
     ,tareas.id_tipo_informe as id



    FROM informes 
    inner join ln_tipo_informes tipos_informe on informes.id_tipo_informe = tipos_informe.idTipoInforme
    inner join LN_demo ON informes.informe = LN_demo.informe
    inner join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
    inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
    inner join padrones ON LN_contrapartes.id_padron = padrones.id_padron
    inner join identificadores ON padrones.identificador = identificadores.identificador
    inner join country ON identificadores.country_code = country.country_code
    inner join clientes ON LN_contrapartes.cliente = clientes.cliente
    left join productos on productos.producto = ln_contrapartes.servicio_contratado
    left join ln_contraparte_familias cf on cf.contraparte = ln_contrapartes.contraparte
    left join ln_familias on ln_familias.familia = cf.familia 


    inner join informes as tareas ON informes.informe = tareas.informe_padre
    inner join tipos_informe as tipos_tarea on tareas.id_tipo_informe = tipos_tarea.id_tipo_informe
    left outer join users on informes.ingresado_por = users.user_id

    /*LEFT OUTER JOIN (select LN_contraparte_indicadores.contraparte, LN_contraparte_indicadores.gestion, LN_contraparte_indicadores.valor_numerico
     from LN_contraparte_indicadores 
     inner join LN_indicadores on LN_contraparte_indicadores.indicador = LN_indicadores.indicador
     inner join LN_demo on (LN_contraparte_indicadores.contraparte = LN_demo.contraparte and LN_contraparte_indicadores.gestion = LN_demo.gestion)
     where LN_indicadores.clave_indicador = 'CUMPL_DOC'
     and LN_demo.informe IS NOT NULL) indicadores ON (LN_gestiones.contraparte = indicadores.contraparte and LN_gestiones.gestion = indicadores.gestion)*/


    LEFT OUTER JOIN (SELECT COUNT(*) AS total_documentos, LN_demo.contraparte, LN_demo.gestion
         FROM LN_docs 
         inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                  and LN_docs.gestion = LN_demo.gestion)
         inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
         inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
         inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
                and LN_contrapartes.cliente = LN_familias.cliente)
         inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                 and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
         WHERE LN_docs.aplica = 1
         AND LN_familias.visible = 1
         AND LN_contraparte_familias.activo = 1
         AND LN_demo.informe = @p_informe
         AND LN_demo.contraparte = @p_contraparte
         GROUP BY LN_demo.contraparte, LN_demo.gestion) documentacion  ON (LN_gestiones.contraparte = documentacion.contraparte and LN_gestiones.gestion = documentacion.gestion)


    LEFT OUTER JOIN (SELECT COUNT(*) AS total_ingresados, LN_demo.contraparte, LN_demo.gestion
         FROM LN_docs 
         inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                  and LN_docs.gestion = LN_demo.gestion)
         inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
         inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
         inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
                and LN_contrapartes.cliente = LN_familias.cliente)
         inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                 and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
         WHERE LN_docs.aplica = 1
         AND LN_docs.estado_doc IN ('I','V')
         AND LN_familias.visible = 1
         AND LN_contraparte_familias.activo = 1
         AND LN_demo.informe = @p_informe
         AND LN_demo.contraparte = @p_contraparte
         GROUP BY LN_demo.contraparte, LN_demo.gestion) ingresados  ON (LN_gestiones.contraparte = ingresados.contraparte and LN_gestiones.gestion = ingresados.gestion)


    LEFT OUTER JOIN (SELECT COUNT(*) AS total_verificados, LN_demo.contraparte, LN_demo.gestion
         FROM LN_docs 
         inner join LN_demo ON (LN_docs.contraparte = LN_demo.contraparte
                  and LN_docs.gestion = LN_demo.gestion)
         inner join LN_contraparte_familias on LN_demo.contraparte = LN_contraparte_familias.contraparte
         inner join LN_contrapartes on LN_demo.contraparte = LN_contrapartes.contraparte
         inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
                and LN_contrapartes.cliente = LN_familias.cliente)
         inner join LN_set_tipo_doc on (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                 and LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc)
         WHERE LN_docs.aplica = 1
         AND LN_docs.estado_doc = 'V'
         AND LN_familias.visible = 1
         AND LN_contraparte_familias.activo = 1
         AND LN_demo.informe = @p_informe
         AND LN_demo.contraparte = @p_contraparte
         GROUP BY LN_demo.contraparte, LN_demo.gestion) verificados  ON (LN_gestiones.contraparte = verificados.contraparte and LN_gestiones.gestion = verificados.gestion)


    LEFT OUTER JOIN dbo.DelimitedSplit8K(@exceptuados, ',') exceptuados ON informes.informe = convert(int,exceptuados.Item)        

    WHERE informes.informe = @p_informe
    and LN_demo.contraparte = @p_contraparte
    --and tareas.fin_pedido_doc = 0
    
    -- COMENTO LA SIGUIENTE LINEA DE TAREA DE GESTION, PORQUE SI ES UN INFORME SIN GESTION PERO LOS DOCS LOS CARGA FIDELITAS ENTONCES LA CONSULTA VUELVE VACIA
    -- SI SE REALIZA UN FETCH-ONE EN ESTA CONSULTA SE OBTIENEN LOS DATOS DEL INFORME SIN PROBLEMAS Y EL BACKEND NO FALLA
    --and tipos_tarea.genera_solicitud_doc = 1

    --and exceptuados.Item is null

    and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
       and LN_gestiones.vigente = 1

  
 end


 /** backend : para dar por finalizada manualmente la gestión de documentación. El informe debe estar en gestión, la tarea en proceso o rechazada
  y la marca de finalización de carga en la tarea (fin_pedido_doc = 0) **/

 if (@accion = 'finalizar_gestion_informe') begin

  if (@p_contraparte is not null AND @p_informe is not null) begin

   declare @historial_informe varchar(max) = NULL
   declare @historial_tarea varchar(max) = NULL

   SELECT @estado = informes.estado_informe, 
     @estado_tarea = tareas.estado_informe,
     @tarea = tareas.informe,
     @historial_informe = convert(varchar(max),informes.historial_informe),
     @historial_tarea = convert(varchar(max),tareas.historial_informe)
   FROM informes 
   inner join LN_demo ON informes.informe = LN_demo.informe
   inner join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
   inner join LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   inner join informes as tareas ON informes.informe = tareas.informe_padre
   inner join tipos_informe as tipos_tarea on tareas.id_tipo_informe = tipos_tarea.id_tipo_informe
   WHERE informes.informe = @p_informe
   and LN_demo.contraparte = @p_contraparte
   --and tareas.fin_pedido_doc = 0
   and tipos_tarea.genera_solicitud_doc = 1

   if (@estado = 'P' AND (@estado_tarea = 'E' OR @estado_tarea = 'R')) begin

    if (@historial_tarea is not null)
     SET @historial_tarea = @historial_tarea + CHAR(13) + CHAR(10)
    else
     SET @historial_tarea = ''

    SET @historial_tarea = @historial_tarea + @preffix + 'Finalización de la tarea por terminación manual de la gestión en backend.'

    UPDATE informes SET
     estado_informe = 'F',
     fin_pedido_doc = 1, 
     fecha_entregado = GETDATE(),
     historial_informe = @historial_tarea
    WHERE informe = @tarea

    if (@historial_informe is not null)
     SET @historial_informe = @historial_informe + CHAR(13) + CHAR(10)
    else
     SET @historial_informe = ''

    SET @historial_informe = @historial_informe + @preffix + 'Tarea de gestión de documentación finalizada manualmente en backend.'

    SET @historial_informe = @historial_informe + CHAR(13) + CHAR(10) + @preffix + 'Informe colocado en proceso automáticamente por finalización manual de la gestión en backend.'

    /* PARA QUE APAREZCA EN DOCS OK NO DEBE DARSE POR APROBADA LA TAREA DE GESTIÓN, SINO FINALIZADA */

    UPDATE informes SET
     historial_informe = @historial_informe,
     excepcion = 0,
     excepcion_prod = 1,
     estado_informe = 'E'
    WHERE informe = @informe



   end

  end
  
 end


 /* Esta opción es para llamar desde el backend cuando se decide publicar un Report / Dossier para que esté visible en el LED del cliente.
  Cierra todas las tareas activas y da el informe por aprobado. Usar con precaución
  */

 if (@accion = 'cerrar_informe') begin

  if (@p_informe > 0) begin

   /* ESTADOS INFORME  : ingresado, no calificado, aceptado, en gestión, en proceso, en espera, finalizado */

   if exists (select informe from informes
      where informe = @p_informe
      and informe_padre is null
      and estado_informe IN ('I','A','T','P','E','W','F') ) begin

    DECLARE @hist_tarea varchar(max)
    DECLARE @asignado int
    DECLARE @operacion varchar(1)

    declare Tareas cursor for

    select informe, estado_informe, CONVERT(VARCHAR(MAX), historial_informe) AS historial_informe, asignado
    from informes
    where informe_padre = @p_informe
    and estado_informe IN ('I','A','T','P','E','W','F','R')

    Open Tareas

    Fetch Next from Tareas into @tarea, @estado_tarea, @detalle_log, @asignado

    While @@FETCH_STATUS = 0 begin

     SET @hist_tarea = @detalle_log

     if (@estado_tarea = 'I' OR @estado_tarea = 'P' OR @estado_tarea = 'E' or @estado_tarea = 'W') begin
      set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Finalización automática de la tarea por publicación del producto en backend.'
     end

     if (@estado_tarea = 'T') begin
      set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Tarea iniciada automáticamente por publicación del producto en backend.'
      set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Finalización automática de la tarea por publicación del producto en backend.'
     end

     if (@estado_tarea = 'A') begin
      set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Aceptación automática de la tarea por publicación del producto en backend.'
      set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Tarea iniciada automáticamente por publicación del producto en backend.'
      set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Finalización automática de la tarea por publicación del producto en backend.'
     end

     if (@estado_tarea = 'R') begin
      set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Tarea iniciada automáticamente por publicación del producto en backend.'
      set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Finalización automática de la tarea por publicación del producto en backend.'
     end

     set @hist_tarea = @hist_tarea + CHAR(13) + CHAR(10) +  @preffix + 'Aprobación automática de la tarea por publicación del producto en backend.'

     UPDATE informes SET estado_informe = 'K',
          historial_informe = @hist_tarea,
          fecha_aceptacion = iif(@estado_tarea = 'A', GETDATE(), fecha_aceptacion),
          fecha_iniciado = iif(@estado_tarea = 'I' OR @estado_tarea = 'A' OR @estado_tarea = 'T', GETDATE(), fecha_iniciado),
          fecha_entregado = iif(@estado_tarea not in ('F','K','N'), GETDATE(), fecha_entregado), /*iif(@estado_tarea != 'F', GETDATE(), fecha_entregado), */
          fecha_aprobacion = iif(@estado_tarea not in ('F','K','N'), GETDATE(), fecha_aprobacion),/*GETDATE(),*/
          aprobado_por = @p_user_id
     WHERE informe = @tarea

     /* Cierro el log de la tarea */
     if (@asignado > 0) begin
      select TOP 1 @operacion = operacion from informes_log where informe = @tarea order by horario desc

      if (@operacion = 'I') begin
       insert into informes_log (informe, horario, user_id, operacion)
       values (@tarea, GETDATE(), @asignado, 'F')
      end
      else
      if (@operacion is null) begin
       insert into informes_log (informe, horario, user_id, operacion)
       values (@tarea, dateadd(minute,-1,getdate()), @asignado, 'I')

       insert into informes_log (informe, horario, user_id, operacion)
       values (@tarea, GETDATE(), @asignado, 'F')
      end

     end



     Fetch Next from Tareas into @tarea, @estado_tarea, @detalle_log, @asignado
    end

    Close Tareas
    Deallocate Tareas

    /* Tareas terminadas, cerrar informe */

    SELECT @estado = estado_informe, @detalle_log = historial_informe
    from informes 
    where informe = @p_informe


    if (@estado = 'I' OR @estado = 'P' OR @estado = 'E' or @estado = 'W') begin
     set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Finalización automática del informe por publicación del producto en backend.'
    end

    if (@estado = 'T') begin
     set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Informe iniciado automáticamente por publicación del producto en backend.'
     set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Finalización automática del informe por publicación del producto en backend.'
    end

    if (@estado = 'A') begin
     set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Aceptación automática del informe por publicación del producto en backend.'
     set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Informe iniciado automáticamente por publicación del producto en backend.'
     set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Finalización automática del informe por publicación del producto en backend.'
    end

    if (@estado = 'R') begin
     set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Informe iniciado automáticamente por publicación del producto en backend.'
     set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Finalización automática del informe por publicación del producto en backend.'
    end

    set @detalle_log = @detalle_log + CHAR(13) + CHAR(10) +  @preffix + 'Aprobación automática del informe por publicación del producto en backend.'

    UPDATE informes SET estado_informe = 'K',
         historial_informe = @detalle_log,
         fecha_aceptacion = iif(@estado = 'A', GETDATE(), fecha_aceptacion),
         fecha_iniciado = iif(@estado = 'I' OR @estado = 'A' OR @estado = 'T', GETDATE(), fecha_iniciado),
         fecha_entregado = iif(@estado_tarea not in ('F','K','N'), GETDATE(), fecha_entregado),/* iif(@estado != 'F', GETDATE(), fecha_entregado),*/
         fecha_aprobacion = iif(@estado_tarea not in ('F','K','N'), GETDATE(), fecha_aprobacion),/*GETDATE(),*/
         aprobado_por = @p_user_id,
         excepcion = 0,
         excepcion_prod = 0         
    WHERE informe = @p_informe


   end

  end

 end

END
GO

Used By

No items found