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
-- 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_ '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
/* MIS 07/08/2024: cuando se finaliza el informe, si aún estaba en carga inicial,
se cierra la carga inicial y la fecha limite se pone ayer
*/
if (@p_contraparte is not null)
BEGIN
if (select carga_inicial from ln_contrapartes where contraparte = @p_contraparte) = 1
begin
update LN_contrapartes
set limite_carga_inicial = dateadd(SECOND,-1,convert(varchar (10),getdate(),126)), -- ayer a las 23:59:59
carga_inicial = 0
where contraparte = @p_contraparte
EXEC LN_contrapartes_queue_ 'insert',NULL,@p_contraparte
end
END
/**/
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
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
-- 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_ '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
/* MIS 07/08/2024: cuando se finaliza el informe, si aún estaba en carga inicial,
se cierra la carga inicial y la fecha limite se pone ayer
*/
if (@p_contraparte is not null)
BEGIN
if (select carga_inicial from ln_contrapartes where contraparte = @p_contraparte) = 1
begin
update LN_contrapartes
set limite_carga_inicial = dateadd(SECOND,-1,convert(varchar (10),getdate(),126)), -- ayer a las 23:59:59
carga_inicial = 0
where contraparte = @p_contraparte
EXEC LN_contrapartes_queue_ 'insert',NULL,@p_contraparte
end
END
/**/
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
Depends On
37- dbo.Genera_ID_Informe_2022
- dbo.LN_contrapartes_queue_
- dbo.LN_demo_
- dbo.balances
- dbo.balances_contables
- dbo.clientes
- dbo.consumo_contratos
- dbo.contratos_grupos
- dbo.contratos_items
- dbo.country
- dbo.docs
- dbo.filiales
- dbo.grupos_clientes
- dbo.identificadores
- dbo.idiomas
- dbo.informes
- dbo.informes_log
- dbo.LN_contraparte_familias
- dbo.LN_contrapartes
- dbo.LN_demo
- dbo.LN_docs
- dbo.LN_familias
- dbo.LN_familias_tipo_informe
- dbo.LN_gestiones
- dbo.LN_set_tipo_doc
- dbo.LN_tipo_informes
- dbo.LN_tipos_doc
- dbo.padrones
- dbo.productos
- dbo.roles
- dbo.roles_tipo_informe
- dbo.tipos_informe
- dbo.tipos_subinformes
- dbo.tipos_tarea
- dbo.users
- dbo.usuarios_roles
- dbo.DelimitedSplit8K