Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
27| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_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 | |
| @p_idioma_iso | varchar | 3 | |
| @p_fecha_inicio | datetime | 8 | |
| @p_notas_informe | varchar | -1 | |
| @p_path_archivo | varchar | 150 | |
| @p_extension_archivo | varchar | 5 | |
| @p_fecha_desde | datetime | 8 | |
| @p_fecha_hasta | datetime | 8 | |
| @p_pausa_tarea | bit | 1 | |
| @p_plataforma | varchar | 10 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/* SP LN_BLUE */
CREATE OR ALTER PROCEDURE dbo.LN_Blue_MIS
@p_accion varchar(50) = NULL,
@p_contraparte int = NULL,
@p_informe int OUTPUT,
@p_user_id int = NULL,
@p_item_contrato int = NULL,
@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,
@p_producto_led int = NULL,
@p_fecha_comprometida datetime = NULL,
@p_objeto_informe varchar(max) = NULL,
@p_familia int = NULL,
@p_idioma_iso varchar(3) = 'spa',
@p_fecha_inicio datetime = null,
@p_notas_informe varchar(max) = NULL,
@p_path_archivo varchar(150)= null,
@p_extension_archivo varchar(5)= null,
@p_fecha_desde datetime = null,
@p_fecha_hasta datetime = null,
@p_pausa_tarea bit = 0,
@p_plataforma varchar(10)=null
AS
BEGIN
SET NOCOUNT ON;
/*
exec LN_Blue 'tareas_informe',null,100603443
exec LN_Blue2 'tareas_informe',null,100603443
EXEC LN_Blue_Tareas_Informe 'tareas_informe',NULL,100603443
EXEC LN_Blue 'USERS_BACK',NULL,NULL
*/
IF (@p_plataforma IS NULL)
BEGIN
SET @p_plataforma = '10'
END
/* AGB DECLARAMOS VARIABLES PARA EVITAR PARAMETER SNIFFING EN LA CONFECCIÓN DEL QUERY PLAN */
DECLARE @V_accion varchar(50) = @p_accion
DECLARE @V_contraparte int = @p_contraparte
DECLARE @V_informe int = @p_informe
DECLARE @V_user_id int = @p_user_id
DECLARE @V_item_contrato int = @p_item_contrato
DECLARE @V_producto smallint = @p_producto
DECLARE @V_id_tipo_informe int = @p_id_tipo_informe
DECLARE @V_prioridad tinyint = @p_prioridad
DECLARE @V_estado_informe varchar(1) = @p_estado_informe
DECLARE @V_ingresado_por int = @p_ingresado_por
DECLARE @V_datamanager int = @p_datamanager
DECLARE @V_asignado int = @p_asignado
DECLARE @V_cliente int = @p_cliente
DECLARE @V_fecha_limite_doc datetime = @p_fecha_limite_doc
DECLARE @V_producto_led int = @p_producto_led
DECLARE @V_fecha_comprometida datetime = @p_fecha_comprometida
DECLARE @V_objeto_informe varchar (max) = @p_objeto_informe
DECLARE @V_familia int = @p_familia
DECLARE @V_idioma_iso varchar(3) = @p_idioma_iso
DECLARE @V_fecha_inicio datetime = @p_fecha_inicio
DECLARE @V_notas_informe varchar (max) = @p_notas_informe
DECLARE @V_path_archivo varchar(150) = @p_path_archivo
DECLARE @V_extension_archivo varchar(5) = @p_extension_archivo
DECLARE @V_fecha_desde datetime = @p_fecha_desde
DECLARE @V_fecha_hasta datetime = @p_fecha_hasta
DECLARE @V_pausa_tarea bit = @p_pausa_tarea
DECLARE @v_plataforma VARCHAR(10) = @p_plataforma
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
if (@V_user_id > 0)
begin
select @usuario = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_user_id
SET @preffix = '['+@usuario+' - '+convert(varchar(10),@ahora,103) + ' ' + substring(convert(varchar,@ahora,121),12,5)+']: '
end
else
begin
SET @preffix = '['+convert(varchar(10),@ahora,103) + ' ' + substring(convert(varchar,@ahora,121),12,5)+']: '
end
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)
declare @logs_total table (informe bigint, desde datetime, hasta datetime, duracion int, pausa_fin char(1))
declare @logs_rango table (informe bigint, desde datetime, hasta datetime, duracion int, pausa_fin char(1))
if (@V_accion='REPORTE_TAREAS_LOG_TOTAL')
BEGIN
insert into @logs_total
select subinformes.informe, a1.created, b1.created, datediff(minute,a1.created,b1.created) as duracion, b1.tipo_accion
from informes
inner join informes as subinformes on informes.informe = subinformes.informe_padre
/*inner join tipos_informe as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe*/
inner join ln_tareas as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe_blue
inner join trazabilidad a1 on (a1.idtarea = subinformes.informe and a1.tipo_accion in ('I','C'))
left outer join trazabilidad b1
on (b1.idtarea = a1.idtarea and b1.tipo_accion in ('F','P')
and b1.created > a1.created
and b1.created = (select min(c.created)
from trazabilidad c
where c.idtarea = a1.idtarea and
c.tipo_accion in ('F','P') and c.created > a1.created))
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_gestiones.contraparte = ln_contrapartes.contraparte
where subinformes.fecha_entregado between @V_fecha_desde and (@V_fecha_hasta+1)
and subinformes.estado_informe IN ('F', 'K')
--and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0
and (informes.cliente = @V_cliente or @V_cliente = 0)
--and (subinformes.id_tipo_informe = @V_id_tipo_informe or @V_id_tipo_informe = 0)
--and (subinformes.asignado = @V_user_id or @V_user_id = 0)
and LN_gestiones.desde <= CONVERT(date, GETDATE())
AND LN_gestiones.hasta >= CONVERT(date, GETDATE())
--and isnull(ln_demo.visible,0)=1
AND LN_contrapartes.activo = 1
order by subinformes.informe, a1.created
select * from @logs_total order by informe,desde
END
if (@V_accion='REPORTE_TAREAS_LOG_RANGO')
BEGIN
insert into @logs_rango
select subinformes.informe, a1.created, b1.created, datediff(minute,a1.created,b1.created) as duracion, b1.tipo_accion
from informes
inner join informes as subinformes on informes.informe = subinformes.informe_padre
inner join ln_tareas as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe_blue
inner join trazabilidad a1 on a1.idtarea = subinformes.informe
left outer join trazabilidad b1
on (b1.idtarea = a1.idtarea and b1.tipo_accion in ('F','P')
and b1.created > a1.created
and b1.created = (select min(c.created)
from trazabilidad c
where c.idtarea = a1.idtarea and
c.tipo_accion in ('F','P') and c.created > a1.created))
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_gestiones.contraparte = ln_contrapartes.contraparte
where LN_demo.fecha_publicacion between @V_fecha_desde and (@V_fecha_hasta+1)
/*subinformes.fecha_entregado between '2023-02-01' and (getdate()+1)*/
and subinformes.estado_informe IN ('F', 'K')
/*and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0*/
and (informes.cliente = @V_cliente or @V_cliente = 0)
--and (subinformes.id_tipo_informe = null or null = 0)
-- and (subinformes.asignado = null or null = 0)
and a1.tipo_accion in ('I','C')
and b1.created between @V_fecha_desde and (@V_fecha_hasta+1)
and LN_gestiones.desde <= CONVERT(date, GETDATE())
AND LN_gestiones.hasta >= CONVERT(date, GETDATE())
--and isnull(ln_demo.visible,0)=1
AND LN_contrapartes.activo = 1
order by subinformes.informe, a1.created
select * from @logs_rango order by informe,desde
END
if (@V_accion='REPORTE_TAREAS')
BEGIN
insert into @logs_total
exec LN_Blue_mis 'REPORTE_TAREAS_LOG_TOTAL',NULL,NULL,@V_user_id,NULL,NULL,
@V_id_tipo_informe,NULL,NULL,NULL,NULL,NULL,@V_cliente,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@V_fecha_desde,@V_fecha_hasta
insert into @logs_rango
exec LN_Blue_mis 'REPORTE_TAREAS_LOG_RANGO',NULL,NULL,@V_user_id,NULL,NULL,
@V_id_tipo_informe,NULL,NULL,NULL,NULL,NULL,@V_cliente,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@V_fecha_desde,@V_fecha_hasta
select informes.informe, subinformes.informe as tarea,
clientes.nombre_cliente,
tipos_informe_padre.nombre_tipo_informe as tipo_informe_padre,
/*exec LN_BLUE 'REPORTE_TAREAS',null,null, 0,null,null,0, null, null,null,null, null,0, null,null,null,null,null,NULL,null,null,null,null,'2023-03-01 00:00:00','2023-03-03 23:59:59'*/
users.first_name, users.last_name,
ISNULL(users.first_name,'') + ' ' + ISNULL(users.last_name,'') as usuario,
/*tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,*/
tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,
subinformes.fecha_iniciado as fecha_iniciado, subinformes.fecha_entregado, identificadores.abreviatura,
identificadores.country_code, padrones.numero, padrones.nombre_persona, country.country_name
,
(select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) as minutos_tardo,
datediff(minute,subinformes.fecha_iniciado,subinformes.fecha_entregado) as minutos_tardo2,
/* lo que tardo en total en minutos */
tipos_informe_tarea.duracion as minutos_std,
/* duracion standard de la tarea en minutos */
format(tipos_informe_tarea.duracion/60*100 +tipos_informe_tarea.duracion%60*1 ,'00:00') as duracion, /* duracion standard de la tarea en hh:mm */
format(
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)%60*1,'00:00')
as tiempo_rango, /* lo que tardo dentro del rango de fechas solicitadas en hh:mm */
format(
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)%60*1,'00:00')
as tiempo_acumulado, /* lo que tardo en total en hh:mm */
format(
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
tipos_informe_tarea.duracion)/60*100+
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
tipos_informe_tarea.duracion)%60*1,'00:00')
as diferencia, /* diferencia entre la duracion standard de la tarea y lo que tardo en total */
detalle.detalle
from informes inner join informes as subinformes on informes.informe = subinformes.informe_padre
/*inner join tipos_informe as tipos_informe_padre1 on informes.id_tipo_informe = tipos_informe_padre.id_tipo_informe*/
inner join ln_demo on (ln_demo.informe=informes.informe)
inner join ln_contrapartes on (ln_demo.contraparte=ln_contrapartes.contraparte and LN_contrapartes.servicio_contratado = 10)
inner join LN_tipo_informes as tipos_informe_padre on informes.id_tipo_informe=tipos_informe_padre.idTipoInforme
/*inner join tipos_informe as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe*/
inner join ln_tareas as tipos_informe_tarea on subinformes.idtarea = tipos_informe_tarea.idTarea
inner join clientes on informes.cliente = clientes.cliente
inner join users on subinformes.asignado = users.user_id
inner join padrones on (informes.identificador = padrones.identificador and informes.numero = padrones.numero)
inner join identificadores on padrones.identificador = identificadores.identificador
inner join country on identificadores.country_code = country.country_code
left join (SELECT informe , detalle=STUFF(
(SELECT '; ' + convert(varchar,desde,20) + ' a ' + convert(varchar,hasta,20) + ' (' + format((duracion/60*100+duracion%60*1),'00:00') + ') ' + pausa_fin AS [text()]
FROM @logs_total XT
WHERE XT.informe = T.informe
order by informe,desde
FOR XML PATH('')), 1, 2, '')
FROM @logs_total T
GROUP BY informe) detalle on (detalle.informe = subinformes.informe)
where /*ln_demo.fecha_publicacion between @V_fecha_desde and (@V_fecha_hasta+1)*/
(subinformes.fecha_entregado between @V_fecha_desde and (@V_fecha_hasta+1) or subinformes.fecha_aprobacion between @V_fecha_desde and (@V_fecha_hasta+1) )
and subinformes.estado_informe IN ('F', 'K', 'N')
/*and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0*/
/* estos 3 filtros de abajo AGB se los habia sacado,
pero MIS se los volvi a poner el 16/2/2023 porque sino justamente no hacia los filtros en el panel...
no se si los sacaron porque estaba queriendo usar la misma acción de este SP, para otra cosa */
and (clientes.cliente = @V_cliente or @V_cliente = 0)
and (subinformes.id_tipo_informe = @V_id_tipo_informe or @V_id_tipo_informe = 0)
and (users.user_id = @V_user_id or @V_user_id = 0)
order by
subinformes.fecha_entregado asc
END
if (@V_accion='REPORTE_TAREAS_OLD')
BEGIN
insert into @logs_total
exec LN_Blue 'REPORTE_TAREAS_LOG_TOTAL',NULL,NULL,@V_user_id,NULL,NULL,
@V_id_tipo_informe,NULL,NULL,NULL,NULL,NULL,@V_cliente,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@V_fecha_desde,@V_fecha_hasta
insert into @logs_rango
exec LN_Blue 'REPORTE_TAREAS_LOG_RANGO',NULL,NULL,@V_user_id,NULL,NULL,
@V_id_tipo_informe,NULL,NULL,NULL,NULL,NULL,@V_cliente,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@V_fecha_desde,@V_fecha_hasta
select informes.informe, subinformes.informe as tarea,
clientes.nombre_cliente,
tipos_informe_padre.nombre_tipo_informe as tipo_informe_padre,
-- exec LN_BLUE 'REPORTE_TAREAS',null,null, 0,null,null,0, null, null,null,null, null,0, null,null,null,null,null,NULL,null,null,null,null,'2023-03-01 00:00:00','2023-03-03 23:59:59'
users.first_name, users.last_name,
ISNULL(users.first_name,'') + ' ' + ISNULL(users.last_name,'') as usuario,
/*tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,*/
tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,
subinformes.fecha_inicio as fecha_iniciado, subinformes.fecha_entregado, identificadores.abreviatura,
identificadores.country_code, padrones.numero, padrones.nombre_persona, country.country_name
,
(select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) as minutos_tardo,
/* lo que tardo en total en minutos */
datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion) as minutos_std,
/* duracion standard de la tarea en minutos */
format(
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)/60*100)+
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)%60*1)
,'00:00') as duracion, /* duracion standard de la tarea en hh:mm */
format(
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)%60*1,'00:00')
as tiempo_rango, /* lo que tardo dentro del rango de fechas solicitadas en hh:mm */
format(
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)%60*1,'00:00')
as tiempo_acumulado, /* lo que tardo en total en hh:mm */
format(
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)))/60*100+
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)))%60*1,'00:00')
as diferencia, /* diferencia entre la duracion standard de la tarea y lo que tardo en total */
detalle.detalle
from informes inner join informes as subinformes on informes.informe = subinformes.informe_padre
/*inner join tipos_informe as tipos_informe_padre1 on informes.id_tipo_informe = tipos_informe_padre.id_tipo_informe*/
inner join ln_demo on (ln_demo.informe=informes.informe)
inner join ln_contrapartes on (ln_demo.contraparte=ln_contrapartes.contraparte and LN_contrapartes.servicio_contratado = 10)
inner join LN_tipo_informes as tipos_informe_padre on informes.id_tipo_informe=tipos_informe_padre.idTipoInforme
/*inner join tipos_informe as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe*/
inner join ln_tareas as tipos_informe_tarea on subinformes.idtarea = tipos_informe_tarea.idTarea
inner join clientes on informes.cliente = clientes.cliente
inner join users on subinformes.asignado = users.user_id
inner join padrones on (informes.identificador = padrones.identificador and informes.numero = padrones.numero)
inner join identificadores on padrones.identificador = identificadores.identificador
inner join country on identificadores.country_code = country.country_code
left join (SELECT informe , detalle=STUFF(
(SELECT '; ' + convert(varchar,desde,20) + ' a ' + convert(varchar,hasta,20) + ' (' + format((duracion/60*100+duracion%60*1),'00:00') + ') ' + pausa_fin AS [text()]
FROM @logs_total XT
WHERE XT.informe = T.informe
order by informe,desde
FOR XML PATH('')), 1, 2, '')
FROM @logs_total T
GROUP BY informe) detalle on (detalle.informe = subinformes.informe)
where /*ln_demo.fecha_publicacion between @V_fecha_desde and (@V_fecha_hasta+1)*/
(subinformes.fecha_entregado between @V_fecha_desde and (@V_fecha_hasta+1) or subinformes.fecha_aprobacion between @V_fecha_desde and (@V_fecha_hasta+1) )
and subinformes.estado_informe IN ('F', 'K', 'N')
/*and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0*/
/* estos 3 filtros de abajo AGB se los habia sacado,
pero MIS se los volvi a poner el 16/2/2023 porque sino justamente no hacia los filtros en el panel...
no se si los sacaron porque estaba queriendo usar la misma acción de este SP, para otra cosa */
and (clientes.cliente = @V_cliente or @V_cliente = 0)
and (subinformes.id_tipo_informe = @V_id_tipo_informe or @V_id_tipo_informe = 0)
and (users.user_id = @V_user_id or @V_user_id = 0)
order by
subinformes.fecha_entregado asc
/*
select informes.informe, subinformes.informe as tarea,
clientes.nombre_cliente, tipos_informe_padre.nombre_tipo_informe as tipo_informe_padre,
users.first_name, users.last_name,
ISNULL(users.first_name,'') + ' ' + ISNULL(users.last_name,'') as usuario,
tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,
subinformes.fecha_iniciado, subinformes.fecha_entregado, identificadores.abreviatura,
identificadores.country_code, padrones.numero, padrones.nombre_persona, country.country_name,
(select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) as minutos_tardo,
/* lo que tardo en total en minutos */
datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion) as minutos_std,
/* duracion standard de la tarea en minutos */
format(
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)/60*100)+
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)%60*1)
,'00:00') as duracion, /* duracion standard de la tarea en hh:mm */
format(
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)%60*1,'00:00')
as tiempo_rango, /* lo que tardo dentro del rango de fechas solicitadas en hh:mm */
format(
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)%60*1,'00:00')
as tiempo_acumulado, /* lo que tardo en total en hh:mm */
format(
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)))/60*100+
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)))%60*1,'00:00')
as diferencia, /* diferencia entre la duracion standard de la tarea y lo que tardo en total */
detalle.detalle
from informes inner join informes as subinformes on informes.informe = subinformes.informe_padre
inner join tipos_informe as tipos_informe_padre on informes.id_tipo_informe = tipos_informe_padre.id_tipo_informe
/*inner join tipos_informe as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe*/
inner join ln_tareas as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe_blue
inner join clientes on informes.cliente = clientes.cliente
inner join users on subinformes.asignado = users.user_id
inner join padrones on (informes.identificador = padrones.identificador and informes.numero = padrones.numero)
inner join identificadores on padrones.identificador = identificadores.identificador
inner join country on identificadores.country_code = country.country_code
left join (SELECT informe , detalle=STUFF(
(SELECT '; ' + convert(varchar,desde,20) + ' a ' + convert(varchar,hasta,20) + ' (' + format((duracion/60*100+duracion%60*1),'00:00') + ') ' + pausa_fin AS [text()]
FROM @logs_total XT
WHERE XT.informe = T.informe
order by informe,desde
FOR XML PATH('')), 1, 2, '')
FROM @logs_total T
GROUP BY informe) detalle on (detalle.informe = subinformes.informe)
where subinformes.fecha_entregado between @V_fecha_desde and (@V_fecha_hasta+1)
and subinformes.estado_informe IN ('F', 'K')
/*and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0*/
and (clientes.cliente = @V_cliente or @V_cliente = 0)
/*and (subinformes.id_tipo_informe = @V_id_tipo_informe or @V_id_tipo_informe = 0)*/
and (users.user_id = @V_user_id or @V_user_id = 0)
order by
subinformes.fecha_entregado asc
*/
END
if (@V_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 @V_informe = @nuevo
end
/* Dada la contraparte, obtener qué tipos de informe se le pueden generar */
if (@V_accion = 'tipos_informe') begin
if (@V_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.estado_contrato = 'A'
and LN_contrapartes.contraparte = @V_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 = @V_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.estado_contrato = 'A'
and LN_contrapartes.contraparte = @V_contraparte
and tipos_informe.id_tipo_informe = @V_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 = @V_contraparte ))
end
/* INICIO TIPOS DE INFORME DE BLUE CORRESPONDIENTE A LA FAMILIA DE LA CONTRAPARTE */
if (@V_accion = 'tipos_informe_familia')
BEGIN
SET @cliente=7855254
SET @V_familia = 150
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
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 = @V_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 = @V_cliente)
and LN_familias_tipo_informe.familia = @V_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 (@V_accion = 'tipos_informe_cliente') begin
if (@V_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, 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 = @V_cliente
and productos.estado_producto = 'A'
and tipos_informe.vigente = 1
and tipos_informe.selec_nuevo_informe = 1
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 = @V_cliente
and tipos_informe.id_tipo_informe = @V_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 = @V_cliente)
end
if (upper(@V_accion) = 'LISTA_TAREAS')
begin
select tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe
from tipos_informe inner join tipos_subinformes on
tipos_informe.id_tipo_informe = tipos_subinformes.id_tipo_subinforme
where tipos_informe.vigente = 1
group by tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe
order by tipos_informe.nombre_tipo_informe
end
if (@V_accion = 'users_informe')
begin
select distinct users.user_id, users.first_name, users.last_name, isnull(users.first_name,'') + ' ' + isnull(users.last_name,'') as usuario,users.username,
/*ROLES.nombre_rol,ROLES.activo,ROLES.country_code,*/ROLES.PLATAFORMA,users.email,users.password as clave,users.active_user as estado_login
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.plataforma = 'BLUE' AND ROLES.ACTIVO = 1 and users.user_id not in (29428643,62352520,44240542,6946599,29008337,608083,35426548,11069147)
/*and idiomas.codigo_idioma = 'ES'
and roles.datamanager = 1*/
and users.active_user = 'Y'
order by isnull(users.first_name,'') + ' ' + isnull(users.last_name,'')
end
if (UPPER(@V_accion)='USERS_BACK')
begin
select distinct users.user_id, users.first_name, users.last_name, isnull(users.first_name,'') + ' ' + isnull(users.last_name,'') as usuario,users.username,
convert(varchar(10),users.preferences) as PLATAFORMA,users.email,users.password as clave,users.active_user as estado_login,users.country_code,country.country_name ,idiomas.codigo_iso
from users
inner join idiomas on users.idioma = idiomas.idioma
inner join country on users.country_code=country.country_code
where convert(varchar(10),users.preferences) = @v_plataforma
order by isnull(users.first_name,'') + ' ' + isnull(users.last_name,'')
end
if (@V_accion = 'users_produccion')
begin
select distinct users.user_id, users.first_name, users.last_name, isnull(users.first_name,'') + ' ' + isnull(users.last_name,'') as usuario,users.username,
/*ROLES.nombre_rol,ROLES.activo,ROLES.country_code,*/ROLES.PLATAFORMA,users.email,users.password as clave,users.active_user as estado_login,users.country_code,country.country_name ,idiomas.codigo_iso
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 country on users.country_code=country.country_code
where
ROLES.plataforma = 'BLUE'
AND ROLES.ACTIVO = 1
/*and idiomas.codigo_idioma = 'ES'
and roles.datamanager = 1*/
order by isnull(users.first_name,'') + ' ' + isnull(users.last_name,'')
end
/* Dado un tipo de informe, obtener qué usuarios de producción se pueden vincular al nuevo informe como "Responsable" o "Datamanager" */
if (@V_accion = 'responsables_informe')
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 = @V_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 (@V_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 = @V_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 (@V_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 = @V_id_tipo_informe
and idiomas.codigo_idioma = 'ES'
and users.active_user = 'Y'
end
if (@V_accion = 'UPD_HIST_INFORME')
BEGIN
update informes set historial_informe = convert(varchar(max),historial_informe) + '<br>' + @V_notas_informe where informe = @V_informe and informe_padre is null
END
if (@V_accion = 'archivo_informe')
begin
insert into archivos_informe (path_archivo,fecha_subido,subido_por,mime_type,informe)
values (@V_path_archivo,getdate(),@V_user_id,@V_extension_archivo,@V_informe)
end
if (@V_accion = 'list_archivos')
begin
select archivos_informe.*,users.last_name,users.first_name from archivos_informe inner join users on archivos_informe.subido_por=users.user_id where informe = @V_informe
/* insert into archivos_informe (path_archivo,fecha_subido,subido_por,mime_type,informe)
values (@V_path_archivo,getdate(),@usuario,@V_extension_archivo,@V_informe)
*/
end
/* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
if (@V_accion = 'UPD_informe') begin
/* debe asociarse el informe a un item de contrato, obligatoriamente */
/*if (@V_item_contrato !=-1 and @V_contraparte IS NOT NULL and @V_user_id IS NOT NULL /*and @V_id_tipo_informe IS NOT NULL*/)
begin*/
/*
EXEC LN_Blue 'UPD_informe',195057,100566624,422946826,NULL,NULL,NULL,1,'P',793639331,NULL,28750576,2254875,NULL,NULL,'2022-11-24 12:02:00',NULL,NULL,'por','2022-11-23 18:23:00'
select * from informes where fecha_ingreso > '2022-11-24 11:00:00.627'
select * from informes where informe = 100566624
*/
DECLARE @V_idioma1 smallint = NULL
DECLARE @V_filial1 smallint = NULL
select @V_idioma1 = idioma from idiomas where codigo_iso = @V_idioma_iso
select @V_filial1 = 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 = @V_contraparte
select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
@grupo_informes = grupo_informes
from tipos_informe
where id_tipo_informe = @V_id_tipo_informe
set @id=@V_informe
if (@id IS NOT NULL) begin
DECLARE @hist1 varchar(max) = @preffix + 'Actualización del informe.'
if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin
select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_asignado
SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Asignación del informe a ' + @nombre_asignado
end
if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Aceptación del informe.'
end
if (@V_estado_informe = 'P') begin
SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Informe puesto en gestión.'
end
DECLARE @fecha_limite1 datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
DECLARE @fecha_comprometida1 datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))
UPDATE informes SET /*informe=@id, cliente=@cliente,*/ identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@V_id_tipo_informe,
objeto_informe='INFORME GENERADO A TRAVES DE BACKEND - CARGA DE INFORMES ' + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''),
historial_informe= convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @hist1, ingresado_por=@V_ingresado_por, idioma=@V_idioma1, filial=@V_filial1, prioridad=@V_prioridad, datamanager=@V_datamanager,
asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL), estado_informe=@V_estado_informe,
fecha_asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,
/*fecha_inicio = @V_fecha_inicio,*/
fecha_inicio = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
fecha_iniciado = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
fecha_entregado= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_entregado),
fecha_aprobacion= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_aprobacion),
nombre_contacto_1=@nombre,
email_contacto_1=@email,
telefono_contacto_1=@telefono,
fecha_limite_doc=@fecha_limite1,
/*fecha_comprometida=@fecha_comprometida1*/
fecha_comprometida=@V_fecha_comprometida
WHERE informe = @id and idreg=@id
SET @V_informe = @id
if (@V_producto_led > 0) begin
/* Actualización de la tabla LED para vincular el informe al producto */
EXEC LN_demo_ 'UPDATE',@V_contraparte,@cliente,@V_producto_led,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@id
end
SELECT @id AS informe
end
end
if (upper(@V_accion) = 'CIERRE_TOTAL')
begin
DECLARE @servicio_contratadoCierre INT = NULL
DECLARE @InfPadreCierre int = null
DECLARE @GestionCierre int = null
DECLARE @ClienteCierre int = null
/*
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),
@servicio_contratadoCierre= LN_contrapartes.servicio_contratado
from LN_contrapartes
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join clientes on LN_contrapartes.cliente = clientes.cliente
where LN_contrapartes.contraparte = @V_contraparte
*/
/*select @InfPadreCierre=informe_padre FROM informes where informe = @V_informe*/
/*select @servicio_contratadoCierre,@InfPadreCierre*/
/*AVERIGUAMOS LOS DATOS DE INFORME PADRE Y GESTION */
select distinct @servicio_contratadoCierre= ln_contrapartes.servicio_contratado,@InfPadreCierre= informes.informe_padre,@GestionCierre=ln_demo.gestion,@ClienteCierre=informes.cliente
from informes inner join ln_demo on informes.informe_padre=ln_demo.informe
inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
where informes.informe = @V_informe /*and estado_informe not in ('N','C','K','X')*/
set @id=@V_informe
if (@id IS NOT NULL) begin
/*DECLARE @histT varchar(max) = @preffix + 'Creación de la tarea.'*/
DECLARE @histCierre varchar(max) = @preffix
if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin
select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_asignado
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Asignación de la tarea a ' + @nombre_asignado
end
if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de la tarea.'
end
if (@V_estado_informe = 'P') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en gestión.'
end
if (@V_estado_informe = 'E') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso.'
end
if (@V_estado_informe = 'N') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea anulada.'
end
if (@V_estado_informe = 'W') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en pausa.'
end
if (@V_estado_informe = 'F') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea finalizada.'
end
if (@V_estado_informe = 'M') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea a completar.'
end
if (@V_estado_informe = 'K') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea aprobada.'
end
/*ACTUALIZA LA TAREA */
UPDATE informes SET estado_informe=@V_estado_informe WHERE informe = @id and idreg=@id
SET @V_informe = @id
/*INSERTA LOG DE TAREA */
insert into informes_log (informe,horario,user_id,operacion) values (@id,getdate(),@V_user_id,iif(@V_estado_informe in ('P','E'),'I',iif(@V_estado_informe in ('W','M'),'P',iif(@V_estado_informe in ('F','K','C','N'),'F','F'))))
/* TRAZABILIDAD DEL UPDATE DE TAREAS */
exec insertar_trazabilidad 'ACTUALIZACION DE TAREAS',@ClienteCierre,'UPDTASKS','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratadoCierre
/* select ln_contrapartes.servicio_contratado,informes.informe_padre,ln_demo.gestion
from informes inner join ln_demo on informes.informe_padre=ln_demo.informe
inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
where informe_padre = 100601899 and estado_informe not in ('N','C','K','X')
*/
/*ACTUALIZAMOS TODAS LAS TAREAS Y EL INFORME QUE HAYA QUE APROBAR */
if (@InfPadreCierre is not null )
begin
update informes set estado_informe='K',fecha_aprobacion=getdate(),aprobado_por=@V_user_id
from informes inner join ln_demo on informes.informe_padre=ln_demo.informe
inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
where informe_padre = @InfPadreCierre and estado_informe not in ('N','C','K','X')
/*PUBLICAMOS EL INFORME */
UPDATE ln_demo set visible=1,fecha_publicacion=getdate() where contraparte=@V_contraparte AND GESTION = @GestionCierre
exec insertar_trazabilidad 'CIERRE Y PUBLICACION',@ClienteCierre,'CIERREINFORME','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratadoCierre
end
SELECT @id AS informe
end
end
/* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
if (upper(@V_accion) = 'UPD_TAREA') begin
DECLARE @V_idiomaT smallint = NULL
DECLARE @V_filialT smallint = NULL
DECLARE @servicio_contratado INT = NULL
select @V_idioma1 = idioma from idiomas where codigo_iso = @V_idioma_iso
select @V_filial1 = 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),
@servicio_contratado= LN_contrapartes.servicio_contratado
from LN_contrapartes
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join clientes on LN_contrapartes.cliente = clientes.cliente
where LN_contrapartes.contraparte = @V_contraparte
select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
@grupo_informes = grupo_informes,@V_id_tipo_informe=id_tipo_informe
from tipos_informe where id_tipo_informe in (SELECT id_tipo_informe FROM informes where informe = @V_informe)
set @id=@V_informe
if (@id IS NOT NULL) begin
/*DECLARE @histT varchar(max) = @preffix + 'Creación de la tarea.'*/
DECLARE @histT varchar(max) = @preffix
if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin
select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_asignado
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Asignación de la tarea a ' + @nombre_asignado
end
if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de la tarea.'
end
if (@V_estado_informe = 'P') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en gestión.'
end
if (@V_estado_informe = 'E') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso.'
end
if (@V_estado_informe = 'N') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea anulada.'
end
if (@V_estado_informe = 'W') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en pausa.'
end
if (@V_estado_informe = 'F') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea finalizada.'
end
if (@V_estado_informe = 'M') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea a completar.'
end
if (@V_estado_informe = 'K') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea aprobada.'
end
DECLARE @fecha_limiteT datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
DECLARE @fecha_comprometidaT datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))
set @fecha_comprometidaT = @V_fecha_comprometida
UPDATE informes SET identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@V_id_tipo_informe,
objeto_informe='TAREA GENERADA ' + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''),
historial_informe=convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @hist1, ingresado_por=@V_ingresado_por, idioma=@V_idioma1, filial=@V_filial1, prioridad=@V_prioridad, datamanager=@V_datamanager,
/*asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL), */
asignado=@V_asignado,
estado_informe=@V_estado_informe,
fecha_asignado=iif(asignado != @V_asignado, @ahora, fecha_asignado),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, fecha_aceptacion),
/* fecha_asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
*/
/* fecha_asignado=getdate(),
fecha_aceptacion=getdate(),
*/
excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,
fecha_inicio = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
fecha_iniciado = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
fecha_entregado= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_entregado),
fecha_aprobacion= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_aprobacion),
nombre_contacto_1=@nombre, email_contacto_1=@email, telefono_contacto_1=@telefono,fecha_limite_doc=@fecha_limite1,
fecha_comprometida=@fecha_comprometidaT
WHERE informe = @id and idreg=@id
SET @V_informe = @id
/*
AGB UPD LOG INFORMES
*/
insert into informes_log (informe,horario,user_id,operacion)
values (@id,getdate(),@V_user_id,iif(@V_estado_informe in ('P','E'),'I',iif(@V_estado_informe in ('W','M'),'P',iif(@V_estado_informe in ('F','K','C','N'),'F','F'))))
/* TRAZABILIDAD DEL UPDATE DE TAREAS */
exec insertar_trazabilidad 'ACTUALIZACION DE TAREAS',@cliente,'UPDTASKS','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratado
/* READY TO START */
if (@V_estado_informe in ('K','F')) /* SOLO SI LA TAREA ES APROBADA */
begin
declare @triggerPadre int = null
select @nombre_tipo_informe= nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',@grupo_informes = grupo_informes,@V_id_tipo_informe = tipos_informe.id_tipo_informe,
@triggerPadre= informes.informe_padre
from tipos_informe inner join informes on tipos_informe.id_tipo_informe = informes.id_tipo_informe
where informes.informe = @V_informe
/* select nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')', grupo_informes, tipos_informe.id_tipo_informe,
informes.informe_padre,informes.idTarea,LNTHijo.idTarea,LNTHijo.id_tipo_informe_blue,LNTHijo.*
from tipos_informe inner join informes on tipos_informe.id_tipo_informe = informes.id_tipo_informe
left join ln_tareas on informes.id_tipo_informe=LN_tareas.id_tipo_informe_blue
left join ln_tareas LNTHijo on ln_tareas.idTarea=LNTHijo.idTarea_Padre
where informes.informe in (/*100601412,100601409*/100601411) and LNTHijo.id_tipo_informe_blue is not null
*/
/*
select informe_padre,ready_to_start, * from informes where informe_padre=100601406
update informes set estado_informe='A',ready_to_start=0 where informe_padre=100601406
update informes set estado_informe='A',ready_to_start=1 where informe_padre=100601406 and id_tipo_informe = 4071729
*/
/*
if (@V_id_tipo_informe = 4071729)
begin
update informes set ready_to_start=1,ready_to_start_trigger_task=@V_informe,ready_to_start_date=getdate() where informe_padre=@triggerPadre and id_tipo_informe=1767927
end
*/
/* update informes set estado_informe=estado_informe,
ready_to_start=1,ready_to_start_user_id=@V_user_id,ready_to_start_date=getdate(),ready_to_start_trigger_task=@V_informe
where informe_padre = @triggerPadre and id_tipo_informe in (select id_tipo_informe from tipos_informes_requeridos where id_tipo_informe_requerido=@V_id_tipo_informe) and estado_informe='A'
*/
update informes set estado_informe=estado_informe,
ready_to_start=1,ready_to_start_user_id=@V_user_id,ready_to_start_date=getdate(),ready_to_start_trigger_task=@V_informe
where informe_padre = @triggerPadre and id_tipo_informe in (select id_tipo_informe_blue from LN_tareas where idTarea_Padre in (select idTarea from LN_tareas where id_tipo_informe_blue=@V_id_tipo_informe))
and estado_informe='A'
/* TRAZABILIDAD DEL READY 2 START*/
exec insertar_trazabilidad 'TAREAS DEPENDIENTES LISTAS PARA INICIAR',@cliente,'READYTOSTART','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratado
end
/*READY TO START */
SELECT @id AS informe
end
end
/* PAUSAR TAREAS */
if (upper(@V_accion) = 'PAUSA_TAREA')
begin
/*AGB */
update informes set pausa = @V_pausa_tarea where informe = @V_informe and idreg=@V_informe and informe_padre is not null
/*
AGB UPD LOG INFORMES
*/
insert into informes_log (informe,horario,user_id,operacion)
values (@V_informe,getdate(),@V_user_id,iif(@V_pausa_tarea = 1,'P','I'))
select @V_informe as tarea,@V_pausa_tarea as pausa,@V_informe as ID,@V_user_id as usuario,iif(@V_pausa_tarea = 1,'P','I') as operacion
end
/* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
if (@V_accion = 'ingresar_informe') begin
/* debe asociarse el informe a un item de contrato, obligatoriamente */
if (@V_item_contrato IS NOT NULL and @V_contraparte IS NOT NULL and @V_user_id IS NOT NULL and @V_id_tipo_informe IS NOT NULL) begin
DECLARE @V_idioma smallint = NULL
DECLARE @V_filial smallint = NULL
select @V_idioma = idioma from idiomas where codigo_iso = @V_idioma_iso
select @V_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 = @V_contraparte
select @precio = isnull(precio_unitario, 0),
@moneda = moneda,
@id_contrato = id_contrato
from contratos_items
where item_contrato = @V_item_contrato
select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
@grupo_informes = grupo_informes
from tipos_informe
where id_tipo_informe = @V_id_tipo_informe
/* obtener nuevo ID de informe */
exec @id = Genera_ID_Informe_2022 @cliente,null
if (@id IS NOT NULL) begin
DECLARE @hist varchar(max) = @preffix + 'Creación del informe.'
if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin
select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_asignado
SET @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Asignación del informe a ' + @nombre_asignado
end
if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
SET @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Aceptación del informe.'
end
if (@V_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,@V_fecha_limite_doc))
DECLARE @fecha_comprometida datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))
UPDATE informes SET /*informe=@id, cliente=@cliente,*/ identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@V_id_tipo_informe,
objeto_informe='INFORME GENERADO A TRAVES DE BACKEND FIDELITAS - CARGA DE REPORTS LED' + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''),
historial_informe=@hist, ingresado_por=@V_ingresado_por, idioma=@V_idioma, filial=@V_filial, prioridad=@V_prioridad, datamanager=@V_datamanager,
asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL), estado_informe=@V_estado_informe, fecha_asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,fecha_inicio = @V_fecha_inicio,
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
/*
INSERT INTO informes
(informe, cliente, identificador, numero, fecha_ingreso, id_tipo_informe,
objeto_informe, historial_informe, ingresado_por, idioma, filial, prioridad, datamanager,
asignado, estado_informe, fecha_asignado, fecha_aceptacion,
excepcion, excepcion_prod, notificar_cliente, precio, moneda,
nombre_contacto_1, email_contacto_1, telefono_contacto_1,fecha_limite_doc,fecha_comprometida)
VALUES
(@id, @cliente, @identificador, @numero, @ahora, @V_id_tipo_informe,
'INFORME GENERADO A TRAVES DE BACKEND FIDELITAS - CARGA DE REPORTS LED' + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''),
@hist,
@V_ingresado_por, @V_idioma, @V_filial, @V_prioridad, @V_datamanager,
iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL),
@V_estado_informe,
iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL), 0, 0, 0, @precio, @moneda,
@nombre, @email, @telefono, @fecha_limite, @fecha_comprometida)
*/
/* 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 = @V_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=@V_ingresado_por, idioma=@V_idioma,
filial=@V_filial, prioridad=iif(@prioridad_tarea > 0, @prioridad_tarea, @V_prioridad), datamanager=@V_datamanager, estado_informe= 'I', orden=@orden, informe_padre=@id
where informe = @tarea and idreg=@tarea
/*
INSERT INTO informes
(informe, cliente, identificador, numero, fecha_ingreso, id_tipo_informe,
objeto_informe, historial_informe, ingresado_por, idioma,
filial, prioridad, datamanager, estado_informe, orden, informe_padre)
VALUES
(@tarea, @cliente, @identificador, @numero, @ahora, @tipo_subinforme,
NULL, @preffix + 'Creación del informe.', @V_ingresado_por, @V_idioma,
@V_filial, iif(@prioridad_tarea > 0, @prioridad_tarea, @V_prioridad), @V_datamanager, 'I', @orden, @id)
*/
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
(@V_item_contrato, @cliente, @V_producto, 1, @id, 1, @V_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, @V_user_id, @id_contrato, @V_item_contrato, @consumo, @detalle_log)
/* Devolución del ID del informe padre generado
SELECT @id */
SET @V_informe = @id
if (@V_producto_led > 0) begin
/* Actualización de la tabla LED para vincular el informe al producto */
EXEC LN_demo_ 'UPDATE',@V_contraparte,@cliente,@V_producto_led,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@id
end
SELECT @id AS informe
end
end
end
/** Cancelar un informe en producción y colocar en null el campo "informe" en la tabla **/
if (@V_accion = 'cancelar_informe') begin
if (@V_contraparte > 0 AND @V_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,
@V_item_contrato = consumo_contratos.item_contrato,
@V_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 = @V_contraparte
and LN_demo.informe = @V_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 = @V_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 = @V_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
(@V_item_contrato, @cliente, @V_producto, 1, @V_informe, -1, @V_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, @V_user_id, @id_contrato, @V_item_contrato, @consumo, @detalle_log)
update LN_demo set informe = NULL
where contraparte = @V_contraparte
and producto = @producto
and informe = @V_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 (@V_accion = 'activar_gestion_documentacion') begin
if (@V_informe > 0 AND @V_asignado > 0 AND @V_fecha_limite_doc is not null) begin
DECLARE @fecha_limite_doc datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
DECLARE @fecha_comprometida_doc datetime = dateadd(second,-1,dateadd(day,1,@V_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 = @V_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 = @V_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 = @V_asignado,
fecha_limite_doc = @fecha_limite_doc,
fecha_asignado = GETDATE(),
fecha_aceptacion = GETDATE(),
fecha_iniciado = GETDATE(),
/*fecha_comprometida = DATEADD(HOUR,12,DATEADD(DAY,1,@V_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 (@V_accion = 'check_docs_ok') begin
if (@V_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 = @V_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 = @V_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 = @V_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
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 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 (@V_user_id > 0)
update informes set asignado = @V_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 (@V_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 (@V_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
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 (@V_accion = 'check_tarea_balances') begin
DECLARE @id_tipo_analisis_balances INT = 9080511
if (@V_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 = @V_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 = @V_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
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 (@V_user_id > 0)
update informes set asignado = @V_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 (@V_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 (@V_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 (@V_accion = 'tipo_informe') begin
if (@V_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 = @V_id_tipo_informe
end
/* Dado un informe (padre) trae los datos de la tarea de gestión de documentación */
if (@V_accion = 'datos_tarea_gestion') begin
if (@V_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 = @V_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 (@V_accion = 'actualizar_tarea_gestion') begin
if (@V_contraparte is not null AND @V_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 = @V_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
if ( convert(date, @V_fecha_limite_doc) >= convert(date, GETDATE()) ) begin
SET @fecha_comprometida_update = DATEADD(day, datediff(day, @fecha_limite_anterior, @V_fecha_limite_doc), @fecha_comprometida_anterior)
UPDATE informes SET
fecha_limite_doc = Dateadd(second,-1,Dateadd(day,1,@V_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),@V_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
end
end
end
end
/*
EXEC LN_Blue_Tareas_Informe 'tareas_informe',NULL,100615876
*/
if (upper(@V_accion)='TAREAS_INFORME')
begin
SELECT distinct LN_informe_design.idTipoInforme,
LN_informe_design.duracion as duracion,
LN_informe_design.orden as ordTarea,
tareas.id_tipo_informe as id_tipo_tarea,
LN_tareas.idTarea_Padre as dependencia ,
LN_informe_design.dependency_tree,
tareas.informe as tarea, tareas.informe_padre, tareas.estado_informe as estado_tarea,
case
when tareas.estado_informe = 'I' then 'Ingresado'
when tareas.estado_informe = 'A' then 'No calificado'
when tareas.estado_informe = 'X' then 'Carga Comercial'
when tareas.estado_informe = 'T' then 'Aceptado'
when tareas.estado_informe = 'P' then 'En gestión'
when tareas.estado_informe = 'W' then 'En espera'
when tareas.estado_informe = 'M' then 'A Completar'
when tareas.estado_informe = 'E' then 'En proceso'
when tareas.estado_informe = 'F' then 'Finalizado'
when tareas.estado_informe = 'K' then 'Aprobado'
when tareas.estado_informe = 'R' then 'En revisión'
when tareas.estado_informe = 'C' then 'Cancelado'
when tareas.estado_informe = 'N' then 'Anulado'
end as nombre_estado_tarea,
upper(LN_tareas.nombre_tarea) as nombre_tipo_tarea,
LN_demo.contraparte, LN_gestiones.gestion, padrones.nombre_persona, convert(varchar(max),tareas.historial_informe) as historial_informe,
padrones.identificacion, padrones.identificador,
identificadores.country_code, country.country_name,
users.first_name, users.last_name, users.email, tareas.ingresado_por,
convert(varchar(10), tareas.fecha_ingreso, 103) as fecha_ingreso,
convert(varchar(10), tareas.fecha_aprobacion, 103) as fecha_aprobacion,
convert(varchar(10), tareas.fecha_comprometida, 103) as fecha_comprometidaINF,
convert(varchar(10), tareas.fecha_comprometida, 121) as fecha_comprometida_ymd,
clientes.nombre_cliente,
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
,isnull(LN_demo.fecha_comprometida,getdate()-1) as fecha_comprometidaINF,
datediff(day,getdate(),isnull(LN_demo.fecha_comprometida,getdate()-1)) as diffdiasINF,
datediff(day,getdate(),isnull(LN_demo.fecha_publicacion,getdate()-1)) as diffpublicacionINF,
tareas.fecha_comprometida as fecha_comprometidaTAR,
datediff(day,getdate(),isnull(tareas.fecha_comprometida,getdate()-1)) as diffdiasTAR,
LN_demo.fecha_publicacion,isnull(LN_demo.visible,0) as publicado,
isnull(LN_demo.integ_carga,0) as integ_carga,isnull(LN_demo.integ_rech,0) as integ_rech,isnull(LN_demo.integ_verif,0) as integ_verif,isnull(LN_demo.docs_ok,0) as docs_ok,
tareas.asignado as inf_asignado,tareas.asignado as tar_asignado,
USRINF.last_name + ' ' + USRINF.first_name as informe_usuario_asignado,
USRTAR.last_name + ' ' + USRTAR.first_name as tarea_usuario_asignado,
tareas.fecha_inicio ,
tareas.prioridad as dedicacion,
tareas.informe_padre as tarea_padre, tareas.pausa,
tareas.ready_to_start_trigger_task as idTareaPadre,
tareas.ready_to_start_date,
tareas.ready_to_start,
tareas.ready_to_start_user_id,
'' as estadoTareaPadre,LN_Tareas.id_tip_doc_dependiente as id_tipo_doc_dependiente
FROM informes tareas
inner join informes InfPadre on tareas.informe_padre = InfPadre.informe
left join clientes ON tareas.cliente = clientes.cliente
left outer join users on tareas.ingresado_por = users.user_id
left join LN_demo ON tareas.informe_padre = LN_demo.informe
left join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
inner join padrones ON (ln_contrapartes.id_padron = padrones.id_padron)
left join LN_gestiones ON (LN_contrapartes.contraparte = LN_gestiones.contraparte and ln_demo.gestion=LN_gestiones.gestion)
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 join users USRINF on USRINF.user_id = tareas.asignado
left join users USRTAR on USRTAR.user_id = tareas.asignado
left join LN_tareas on LN_tareas.id_tipo_informe_blue=tareas.id_tipo_informe
inner join LN_informe_design on (ln_tareas.idTarea = LN_informe_design.idElem and LN_informe_design.tipo_elem='T' and InfPadre.id_tipo_informe=LN_informe_design.idTipoInforme)
WHERE tareas.informe_padre = @V_informe
ORDER BY LN_informe_design.orden ASC,tareas.informe ASC
END
if (@V_accion='tareas_informeOLD')
begin
/*if (@V_contraparte is null and @V_informe is null)*/
SELECT distinct 1 as etapa, tareas.informe as tarea, tareas.informe_padre, tareas.estado_informe as estado_tarea, tareas.id_tipo_informe as id_tipo_tarea,
case
when tareas.estado_informe = 'I' then 'Ingresado'
when tareas.estado_informe = 'A' then 'No calificado'
when tareas.estado_informe = 'X' then 'Carga Comercial'
when tareas.estado_informe = 'T' then 'Aceptado'
when tareas.estado_informe = 'P' then 'En gestión'
when tareas.estado_informe = 'W' then 'En espera'
when tareas.estado_informe = 'M' then 'A Completar'
when tareas.estado_informe = 'E' then 'En proceso'
when tareas.estado_informe = 'F' then 'Finalizado'
when tareas.estado_informe = 'K' then 'Aprobado'
when tareas.estado_informe = 'R' then 'En revisión'
when tareas.estado_informe = 'C' then 'Cancelado'
when tareas.estado_informe = 'N' then 'Anulado'
end as nombre_estado_tarea,
/*tipos_informe.nombre_tipo_informe as nombre_tipo_tarea,*/
/*tipos_informe.nombre_tipo_informe as nombre_tarea,*/
upper(LN_tareas.nombre_tarea) as nombre_tipo_tarea,
LN_demo.contraparte, LN_gestiones.gestion, padrones.nombre_persona, convert(varchar(max),tareas.historial_informe) as historial_informe,
padrones.identificacion, padrones.identificador,
identificadores.country_code, country.country_name,
users.first_name, users.last_name, users.email, tareas.ingresado_por,
convert(varchar(10), tareas.fecha_ingreso, 103) as fecha_ingreso,
convert(varchar(10), tareas.fecha_aprobacion, 103) as fecha_aprobacion,
convert(varchar(10), tareas.fecha_comprometida, 103) as fecha_comprometidaINF,
convert(varchar(10), tareas.fecha_comprometida, 121) as fecha_comprometida_ymd,
clientes.nombre_cliente,
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
,isnull(LN_demo.fecha_comprometida,getdate()-1) as fecha_comprometidaINF,
datediff(day,getdate(),isnull(LN_demo.fecha_comprometida,getdate()-1)) as diffdiasINF,
datediff(day,getdate(),isnull(LN_demo.fecha_publicacion,getdate()-1)) as diffpublicacionINF,
tareas.fecha_comprometida as fecha_comprometidaTAR,
datediff(day,getdate(),isnull(tareas.fecha_comprometida,getdate()-1)) as diffdiasTAR,
LN_demo.fecha_publicacion,isnull(LN_demo.visible,0) as publicado,
isnull(LN_demo.integ_carga,0) as integ_carga,isnull(LN_demo.integ_rech,0) as integ_rech,isnull(LN_demo.integ_verif,0) as integ_verif,isnull(LN_demo.docs_ok,0) as docs_ok,
tareas.asignado as inf_asignado,tareas.asignado as tar_asignado,
USRINF.last_name + ' ' + USRINF.first_name as informe_usuario_asignado,
USRTAR.last_name + ' ' + USRTAR.first_name as tarea_usuario_asignado,
tareas.fecha_inicio ,
tareas.prioridad as dedicacion,
LN_tareas.duracion as duracion1,
LN_informe_design.duracion as duracion,
tareas.informe_padre as tarea_padre, tareas.pausa,tareas.orden as ordTarea,
tareas.ready_to_start_trigger_task as idTareaPadre,
tareas.ready_to_start_date,
tareas.ready_to_start,
tareas.ready_to_start_user_id,
'' as estadoTareaPadre,
LN_tareas.idTarea_Padre as dependencia
FROM informes tareas
inner join tipos_informe on tareas.id_tipo_informe = tipos_informe.id_tipo_informe
inner join tipos_informe as tipos_tarea on tareas.id_tipo_informe = tipos_tarea.id_tipo_informe
left join clientes ON tareas.cliente = clientes.cliente
left outer join users on tareas.ingresado_por = users.user_id
left join LN_demo ON tareas.informe_padre = LN_demo.informe
left join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
inner join padrones ON (ln_contrapartes.id_padron = padrones.id_padron)
left join LN_gestiones ON (LN_contrapartes.contraparte = LN_gestiones.contraparte and ln_demo.gestion=LN_gestiones.gestion)
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 join users USRINF on USRINF.user_id = tareas.asignado
left join users USRTAR on USRTAR.user_id = tareas.asignado
left join LN_tareas on LN_tareas.id_tipo_informe_blue=tareas.id_tipo_informe
inner join LN_informe_design on (ln_tareas.idTarea = LN_informe_design.idElem and LN_informe_design.tipo_elem='T')
/*
exec LN_Blue 'tareas_informe',null,100603443
*/
WHERE /*tareas.estado_informe IN ('P','M','E','W','F','K','R','I')
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_gestiones.vigente = 1
and */ tareas.informe_padre = @V_informe
ORDER BY ordTarea ASC,tareas.informe ASC
/*
exec LN_Blue 'informes_panel',null,null
exec LN_Blue 'tareas_informe',null,100603443
*/
end
if (@V_accion='informes_panel') begin
if (@V_contraparte is null and @V_informe is null)
SELECT 1 as etapa, informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
/*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_comprometidaINF,
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'
when informes.estado_informe = 'W' then 'En espera'
end as nombre_estado_informe,
clientes.nombre_cliente,
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,
isnull(LN_demo.fecha_comprometida,getdate()-1) as fecha_comprometida,
datediff(day,getdate(),isnull(LN_demo.fecha_comprometida,getdate()-1)) as diffdias,
datediff(day,getdate(),isnull(LN_demo.fecha_publicacion,getdate()-1)) as diffpublicacion,
LN_demo.fecha_publicacion,isnull(LN_demo.visible,0) as publicado,isnull(LN_demo.integ_carga,0) as integ_carga,isnull(LN_demo.integ_rech,0) as integ_rech,isnull(LN_demo.integ_verif,0),isnull(LN_demo.docs_ok,0) as docs_ok,
informes.asignado as inf_asignado,
USRINF.last_name + ' ' + USRINF.first_name as informe_usuario_asignado
FROM informes
inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
inner join tipos_informe as tipos_tarea on informes.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 join users USRINF on USRINF.user_id = informes.asignado
WHERE informes.estado_informe IN ('I','A','T','P','M','E','W','R')
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_gestiones.vigente = 1
ORDER BY diffdias asc
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 (@V_accion = 'panel_control_reports' or @V_accion='informes_panel2') 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 (@V_contraparte is null and @V_informe is null)
SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
/*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_comprometidaINF,
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_informe,
clientes.nombre_cliente, tareas.informe as tarea, tareas.estado_informe as estado_tarea,
case
when tareas.estado_informe = 'I' then 'Ingresado'
when tareas.estado_informe = 'A' then 'Asignado'
when tareas.estado_informe = 'T' then 'Aceptado'
when tareas.estado_informe = 'P' then 'En gestión'
when tareas.estado_informe = 'M' then 'En espera'
when tareas.estado_informe = 'E' then 'En proceso'
when tareas.estado_informe = 'F' then 'Finalizado'
when tareas.estado_informe = 'K' then 'Aprobado'
when tareas.estado_informe = 'R' then 'En revisión'
end as nombre_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_tipo_tarea,tipos_tarea.nombre_tipo_informe as nombre_tipo_tarea,
isnull(LN_demo.fecha_comprometida,getdate()-1) as fecha_comprometidaDEMO,LN_demo.fecha_publicacion,isnull(LN_demo.visible,0) as publicado,isnull(LN_demo.integ_carga,0) as integ_carga,isnull(LN_demo.integ_rech,0) as integ_rech,isnull(LN_demo.integ_verif,0),isnull(LN_demo.docs_ok,0) as docs_ok,
informes.asignado as inf_asignado,tareas.asignado as tar_asignado,
/*USRINF.username as informe_usuario_asignado,*/
/*USRTAR.username as tarea_usuario_asignado,*/
USRINF.last_name + ' ' + USRINF.first_name as informe_usuario_asignado,
USRTAR.last_name + ' ' + USRTAR.first_name as tarea_usuario_asignado,
tareas.fecha_comprometida as fecha_comprometidaTAR
FROM informes
inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
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 join users USRINF on USRINF.user_id = informes.asignado
left join users USRTAR on USRTAR.user_id = tareas.asignado
/*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)
*/
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 LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_gestiones.vigente = 1
ORDER BY informes.informe, tareas.fecha_limite_doc
else
if (@V_contraparte is not null and @V_informe is null)
SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
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 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
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 = @V_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 = @V_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 = @V_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 = @V_contraparte
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
SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
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 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
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 = @V_informe
AND LN_demo.contraparte = @V_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 = @V_informe
AND LN_demo.contraparte = @V_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 = @V_informe
AND LN_demo.contraparte = @V_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 = @V_informe
and LN_demo.contraparte = @V_contraparte
/* 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 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 (@V_accion = 'finalizar_gestion_informe') begin
if (@V_contraparte is not null AND @V_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 = @V_informe
and LN_demo.contraparte = @V_contraparte
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 (@V_accion = 'cerrar_informe') begin
if (@V_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 = @V_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 = @V_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 = @V_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 = @V_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 not in ('F','K','N'), GETDATE(), fecha_entregado), /*iif(@estado != 'F', GETDATE(), fecha_entregado),*/
fecha_aprobacion = iif(@estado not in ('F','K','N'), GETDATE(), fecha_aprobacion),/*GETDATE(),*/
aprobado_por = @V_user_id,
excepcion = 0,
excepcion_prod = 0
WHERE informe = @V_informe
end
end
end
END
GO
GO
/* SP LN_BLUE */
CREATE OR ALTER PROCEDURE dbo.LN_Blue_MIS
@p_accion varchar(50) = NULL,
@p_contraparte int = NULL,
@p_informe int OUTPUT,
@p_user_id int = NULL,
@p_item_contrato int = NULL,
@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,
@p_producto_led int = NULL,
@p_fecha_comprometida datetime = NULL,
@p_objeto_informe varchar(max) = NULL,
@p_familia int = NULL,
@p_idioma_iso varchar(3) = 'spa',
@p_fecha_inicio datetime = null,
@p_notas_informe varchar(max) = NULL,
@p_path_archivo varchar(150)= null,
@p_extension_archivo varchar(5)= null,
@p_fecha_desde datetime = null,
@p_fecha_hasta datetime = null,
@p_pausa_tarea bit = 0,
@p_plataforma varchar(10)=null
AS
BEGIN
SET NOCOUNT ON;
/*
exec LN_Blue 'tareas_informe',null,100603443
exec LN_Blue2 'tareas_informe',null,100603443
EXEC LN_Blue_Tareas_Informe 'tareas_informe',NULL,100603443
EXEC LN_Blue 'USERS_BACK',NULL,NULL
*/
IF (@p_plataforma IS NULL)
BEGIN
SET @p_plataforma = '10'
END
/* AGB DECLARAMOS VARIABLES PARA EVITAR PARAMETER SNIFFING EN LA CONFECCIÓN DEL QUERY PLAN */
DECLARE @V_accion varchar(50) = @p_accion
DECLARE @V_contraparte int = @p_contraparte
DECLARE @V_informe int = @p_informe
DECLARE @V_user_id int = @p_user_id
DECLARE @V_item_contrato int = @p_item_contrato
DECLARE @V_producto smallint = @p_producto
DECLARE @V_id_tipo_informe int = @p_id_tipo_informe
DECLARE @V_prioridad tinyint = @p_prioridad
DECLARE @V_estado_informe varchar(1) = @p_estado_informe
DECLARE @V_ingresado_por int = @p_ingresado_por
DECLARE @V_datamanager int = @p_datamanager
DECLARE @V_asignado int = @p_asignado
DECLARE @V_cliente int = @p_cliente
DECLARE @V_fecha_limite_doc datetime = @p_fecha_limite_doc
DECLARE @V_producto_led int = @p_producto_led
DECLARE @V_fecha_comprometida datetime = @p_fecha_comprometida
DECLARE @V_objeto_informe varchar (max) = @p_objeto_informe
DECLARE @V_familia int = @p_familia
DECLARE @V_idioma_iso varchar(3) = @p_idioma_iso
DECLARE @V_fecha_inicio datetime = @p_fecha_inicio
DECLARE @V_notas_informe varchar (max) = @p_notas_informe
DECLARE @V_path_archivo varchar(150) = @p_path_archivo
DECLARE @V_extension_archivo varchar(5) = @p_extension_archivo
DECLARE @V_fecha_desde datetime = @p_fecha_desde
DECLARE @V_fecha_hasta datetime = @p_fecha_hasta
DECLARE @V_pausa_tarea bit = @p_pausa_tarea
DECLARE @v_plataforma VARCHAR(10) = @p_plataforma
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
if (@V_user_id > 0)
begin
select @usuario = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_user_id
SET @preffix = '['+@usuario+' - '+convert(varchar(10),@ahora,103) + ' ' + substring(convert(varchar,@ahora,121),12,5)+']: '
end
else
begin
SET @preffix = '['+convert(varchar(10),@ahora,103) + ' ' + substring(convert(varchar,@ahora,121),12,5)+']: '
end
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)
declare @logs_total table (informe bigint, desde datetime, hasta datetime, duracion int, pausa_fin char(1))
declare @logs_rango table (informe bigint, desde datetime, hasta datetime, duracion int, pausa_fin char(1))
if (@V_accion='REPORTE_TAREAS_LOG_TOTAL')
BEGIN
insert into @logs_total
select subinformes.informe, a1.created, b1.created, datediff(minute,a1.created,b1.created) as duracion, b1.tipo_accion
from informes
inner join informes as subinformes on informes.informe = subinformes.informe_padre
/*inner join tipos_informe as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe*/
inner join ln_tareas as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe_blue
inner join trazabilidad a1 on (a1.idtarea = subinformes.informe and a1.tipo_accion in ('I','C'))
left outer join trazabilidad b1
on (b1.idtarea = a1.idtarea and b1.tipo_accion in ('F','P')
and b1.created > a1.created
and b1.created = (select min(c.created)
from trazabilidad c
where c.idtarea = a1.idtarea and
c.tipo_accion in ('F','P') and c.created > a1.created))
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_gestiones.contraparte = ln_contrapartes.contraparte
where subinformes.fecha_entregado between @V_fecha_desde and (@V_fecha_hasta+1)
and subinformes.estado_informe IN ('F', 'K')
--and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0
and (informes.cliente = @V_cliente or @V_cliente = 0)
--and (subinformes.id_tipo_informe = @V_id_tipo_informe or @V_id_tipo_informe = 0)
--and (subinformes.asignado = @V_user_id or @V_user_id = 0)
and LN_gestiones.desde <= CONVERT(date, GETDATE())
AND LN_gestiones.hasta >= CONVERT(date, GETDATE())
--and isnull(ln_demo.visible,0)=1
AND LN_contrapartes.activo = 1
order by subinformes.informe, a1.created
select * from @logs_total order by informe,desde
END
if (@V_accion='REPORTE_TAREAS_LOG_RANGO')
BEGIN
insert into @logs_rango
select subinformes.informe, a1.created, b1.created, datediff(minute,a1.created,b1.created) as duracion, b1.tipo_accion
from informes
inner join informes as subinformes on informes.informe = subinformes.informe_padre
inner join ln_tareas as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe_blue
inner join trazabilidad a1 on a1.idtarea = subinformes.informe
left outer join trazabilidad b1
on (b1.idtarea = a1.idtarea and b1.tipo_accion in ('F','P')
and b1.created > a1.created
and b1.created = (select min(c.created)
from trazabilidad c
where c.idtarea = a1.idtarea and
c.tipo_accion in ('F','P') and c.created > a1.created))
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_gestiones.contraparte = ln_contrapartes.contraparte
where LN_demo.fecha_publicacion between @V_fecha_desde and (@V_fecha_hasta+1)
/*subinformes.fecha_entregado between '2023-02-01' and (getdate()+1)*/
and subinformes.estado_informe IN ('F', 'K')
/*and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0*/
and (informes.cliente = @V_cliente or @V_cliente = 0)
--and (subinformes.id_tipo_informe = null or null = 0)
-- and (subinformes.asignado = null or null = 0)
and a1.tipo_accion in ('I','C')
and b1.created between @V_fecha_desde and (@V_fecha_hasta+1)
and LN_gestiones.desde <= CONVERT(date, GETDATE())
AND LN_gestiones.hasta >= CONVERT(date, GETDATE())
--and isnull(ln_demo.visible,0)=1
AND LN_contrapartes.activo = 1
order by subinformes.informe, a1.created
select * from @logs_rango order by informe,desde
END
if (@V_accion='REPORTE_TAREAS')
BEGIN
insert into @logs_total
exec LN_Blue_mis 'REPORTE_TAREAS_LOG_TOTAL',NULL,NULL,@V_user_id,NULL,NULL,
@V_id_tipo_informe,NULL,NULL,NULL,NULL,NULL,@V_cliente,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@V_fecha_desde,@V_fecha_hasta
insert into @logs_rango
exec LN_Blue_mis 'REPORTE_TAREAS_LOG_RANGO',NULL,NULL,@V_user_id,NULL,NULL,
@V_id_tipo_informe,NULL,NULL,NULL,NULL,NULL,@V_cliente,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@V_fecha_desde,@V_fecha_hasta
select informes.informe, subinformes.informe as tarea,
clientes.nombre_cliente,
tipos_informe_padre.nombre_tipo_informe as tipo_informe_padre,
/*exec LN_BLUE 'REPORTE_TAREAS',null,null, 0,null,null,0, null, null,null,null, null,0, null,null,null,null,null,NULL,null,null,null,null,'2023-03-01 00:00:00','2023-03-03 23:59:59'*/
users.first_name, users.last_name,
ISNULL(users.first_name,'') + ' ' + ISNULL(users.last_name,'') as usuario,
/*tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,*/
tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,
subinformes.fecha_iniciado as fecha_iniciado, subinformes.fecha_entregado, identificadores.abreviatura,
identificadores.country_code, padrones.numero, padrones.nombre_persona, country.country_name
,
(select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) as minutos_tardo,
datediff(minute,subinformes.fecha_iniciado,subinformes.fecha_entregado) as minutos_tardo2,
/* lo que tardo en total en minutos */
tipos_informe_tarea.duracion as minutos_std,
/* duracion standard de la tarea en minutos */
format(tipos_informe_tarea.duracion/60*100 +tipos_informe_tarea.duracion%60*1 ,'00:00') as duracion, /* duracion standard de la tarea en hh:mm */
format(
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)%60*1,'00:00')
as tiempo_rango, /* lo que tardo dentro del rango de fechas solicitadas en hh:mm */
format(
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)%60*1,'00:00')
as tiempo_acumulado, /* lo que tardo en total en hh:mm */
format(
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
tipos_informe_tarea.duracion)/60*100+
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
tipos_informe_tarea.duracion)%60*1,'00:00')
as diferencia, /* diferencia entre la duracion standard de la tarea y lo que tardo en total */
detalle.detalle
from informes inner join informes as subinformes on informes.informe = subinformes.informe_padre
/*inner join tipos_informe as tipos_informe_padre1 on informes.id_tipo_informe = tipos_informe_padre.id_tipo_informe*/
inner join ln_demo on (ln_demo.informe=informes.informe)
inner join ln_contrapartes on (ln_demo.contraparte=ln_contrapartes.contraparte and LN_contrapartes.servicio_contratado = 10)
inner join LN_tipo_informes as tipos_informe_padre on informes.id_tipo_informe=tipos_informe_padre.idTipoInforme
/*inner join tipos_informe as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe*/
inner join ln_tareas as tipos_informe_tarea on subinformes.idtarea = tipos_informe_tarea.idTarea
inner join clientes on informes.cliente = clientes.cliente
inner join users on subinformes.asignado = users.user_id
inner join padrones on (informes.identificador = padrones.identificador and informes.numero = padrones.numero)
inner join identificadores on padrones.identificador = identificadores.identificador
inner join country on identificadores.country_code = country.country_code
left join (SELECT informe , detalle=STUFF(
(SELECT '; ' + convert(varchar,desde,20) + ' a ' + convert(varchar,hasta,20) + ' (' + format((duracion/60*100+duracion%60*1),'00:00') + ') ' + pausa_fin AS [text()]
FROM @logs_total XT
WHERE XT.informe = T.informe
order by informe,desde
FOR XML PATH('')), 1, 2, '')
FROM @logs_total T
GROUP BY informe) detalle on (detalle.informe = subinformes.informe)
where /*ln_demo.fecha_publicacion between @V_fecha_desde and (@V_fecha_hasta+1)*/
(subinformes.fecha_entregado between @V_fecha_desde and (@V_fecha_hasta+1) or subinformes.fecha_aprobacion between @V_fecha_desde and (@V_fecha_hasta+1) )
and subinformes.estado_informe IN ('F', 'K', 'N')
/*and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0*/
/* estos 3 filtros de abajo AGB se los habia sacado,
pero MIS se los volvi a poner el 16/2/2023 porque sino justamente no hacia los filtros en el panel...
no se si los sacaron porque estaba queriendo usar la misma acción de este SP, para otra cosa */
and (clientes.cliente = @V_cliente or @V_cliente = 0)
and (subinformes.id_tipo_informe = @V_id_tipo_informe or @V_id_tipo_informe = 0)
and (users.user_id = @V_user_id or @V_user_id = 0)
order by
subinformes.fecha_entregado asc
END
if (@V_accion='REPORTE_TAREAS_OLD')
BEGIN
insert into @logs_total
exec LN_Blue 'REPORTE_TAREAS_LOG_TOTAL',NULL,NULL,@V_user_id,NULL,NULL,
@V_id_tipo_informe,NULL,NULL,NULL,NULL,NULL,@V_cliente,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@V_fecha_desde,@V_fecha_hasta
insert into @logs_rango
exec LN_Blue 'REPORTE_TAREAS_LOG_RANGO',NULL,NULL,@V_user_id,NULL,NULL,
@V_id_tipo_informe,NULL,NULL,NULL,NULL,NULL,@V_cliente,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@V_fecha_desde,@V_fecha_hasta
select informes.informe, subinformes.informe as tarea,
clientes.nombre_cliente,
tipos_informe_padre.nombre_tipo_informe as tipo_informe_padre,
-- exec LN_BLUE 'REPORTE_TAREAS',null,null, 0,null,null,0, null, null,null,null, null,0, null,null,null,null,null,NULL,null,null,null,null,'2023-03-01 00:00:00','2023-03-03 23:59:59'
users.first_name, users.last_name,
ISNULL(users.first_name,'') + ' ' + ISNULL(users.last_name,'') as usuario,
/*tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,*/
tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,
subinformes.fecha_inicio as fecha_iniciado, subinformes.fecha_entregado, identificadores.abreviatura,
identificadores.country_code, padrones.numero, padrones.nombre_persona, country.country_name
,
(select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) as minutos_tardo,
/* lo que tardo en total en minutos */
datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion) as minutos_std,
/* duracion standard de la tarea en minutos */
format(
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)/60*100)+
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)%60*1)
,'00:00') as duracion, /* duracion standard de la tarea en hh:mm */
format(
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)%60*1,'00:00')
as tiempo_rango, /* lo que tardo dentro del rango de fechas solicitadas en hh:mm */
format(
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)%60*1,'00:00')
as tiempo_acumulado, /* lo que tardo en total en hh:mm */
format(
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)))/60*100+
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)))%60*1,'00:00')
as diferencia, /* diferencia entre la duracion standard de la tarea y lo que tardo en total */
detalle.detalle
from informes inner join informes as subinformes on informes.informe = subinformes.informe_padre
/*inner join tipos_informe as tipos_informe_padre1 on informes.id_tipo_informe = tipos_informe_padre.id_tipo_informe*/
inner join ln_demo on (ln_demo.informe=informes.informe)
inner join ln_contrapartes on (ln_demo.contraparte=ln_contrapartes.contraparte and LN_contrapartes.servicio_contratado = 10)
inner join LN_tipo_informes as tipos_informe_padre on informes.id_tipo_informe=tipos_informe_padre.idTipoInforme
/*inner join tipos_informe as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe*/
inner join ln_tareas as tipos_informe_tarea on subinformes.idtarea = tipos_informe_tarea.idTarea
inner join clientes on informes.cliente = clientes.cliente
inner join users on subinformes.asignado = users.user_id
inner join padrones on (informes.identificador = padrones.identificador and informes.numero = padrones.numero)
inner join identificadores on padrones.identificador = identificadores.identificador
inner join country on identificadores.country_code = country.country_code
left join (SELECT informe , detalle=STUFF(
(SELECT '; ' + convert(varchar,desde,20) + ' a ' + convert(varchar,hasta,20) + ' (' + format((duracion/60*100+duracion%60*1),'00:00') + ') ' + pausa_fin AS [text()]
FROM @logs_total XT
WHERE XT.informe = T.informe
order by informe,desde
FOR XML PATH('')), 1, 2, '')
FROM @logs_total T
GROUP BY informe) detalle on (detalle.informe = subinformes.informe)
where /*ln_demo.fecha_publicacion between @V_fecha_desde and (@V_fecha_hasta+1)*/
(subinformes.fecha_entregado between @V_fecha_desde and (@V_fecha_hasta+1) or subinformes.fecha_aprobacion between @V_fecha_desde and (@V_fecha_hasta+1) )
and subinformes.estado_informe IN ('F', 'K', 'N')
/*and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0*/
/* estos 3 filtros de abajo AGB se los habia sacado,
pero MIS se los volvi a poner el 16/2/2023 porque sino justamente no hacia los filtros en el panel...
no se si los sacaron porque estaba queriendo usar la misma acción de este SP, para otra cosa */
and (clientes.cliente = @V_cliente or @V_cliente = 0)
and (subinformes.id_tipo_informe = @V_id_tipo_informe or @V_id_tipo_informe = 0)
and (users.user_id = @V_user_id or @V_user_id = 0)
order by
subinformes.fecha_entregado asc
/*
select informes.informe, subinformes.informe as tarea,
clientes.nombre_cliente, tipos_informe_padre.nombre_tipo_informe as tipo_informe_padre,
users.first_name, users.last_name,
ISNULL(users.first_name,'') + ' ' + ISNULL(users.last_name,'') as usuario,
tipos_informe_tarea.nombre_tarea as tipo_informe_tarea,
subinformes.fecha_iniciado, subinformes.fecha_entregado, identificadores.abreviatura,
identificadores.country_code, padrones.numero, padrones.nombre_persona, country.country_name,
(select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) as minutos_tardo,
/* lo que tardo en total en minutos */
datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion) as minutos_std,
/* duracion standard de la tarea en minutos */
format(
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)/60*100)+
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)%60*1)
,'00:00') as duracion, /* duracion standard de la tarea en hh:mm */
format(
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_rango log1 where log1.informe = subinformes.informe)%60*1,'00:00')
as tiempo_rango, /* lo que tardo dentro del rango de fechas solicitadas en hh:mm */
format(
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)/60*100+
(select sum(duracion) from @logs_total log2 where log2.informe = subinformes.informe)%60*1,'00:00')
as tiempo_acumulado, /* lo que tardo en total en hh:mm */
format(
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)))/60*100+
((select sum(duracion) from @logs_total log1 where log1.informe = subinformes.informe) -
(datediff(minute,'1899-12-30 00:00:00.000',tipos_informe_tarea.duracion)))%60*1,'00:00')
as diferencia, /* diferencia entre la duracion standard de la tarea y lo que tardo en total */
detalle.detalle
from informes inner join informes as subinformes on informes.informe = subinformes.informe_padre
inner join tipos_informe as tipos_informe_padre on informes.id_tipo_informe = tipos_informe_padre.id_tipo_informe
/*inner join tipos_informe as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe*/
inner join ln_tareas as tipos_informe_tarea on subinformes.id_tipo_informe = tipos_informe_tarea.id_tipo_informe_blue
inner join clientes on informes.cliente = clientes.cliente
inner join users on subinformes.asignado = users.user_id
inner join padrones on (informes.identificador = padrones.identificador and informes.numero = padrones.numero)
inner join identificadores on padrones.identificador = identificadores.identificador
inner join country on identificadores.country_code = country.country_code
left join (SELECT informe , detalle=STUFF(
(SELECT '; ' + convert(varchar,desde,20) + ' a ' + convert(varchar,hasta,20) + ' (' + format((duracion/60*100+duracion%60*1),'00:00') + ') ' + pausa_fin AS [text()]
FROM @logs_total XT
WHERE XT.informe = T.informe
order by informe,desde
FOR XML PATH('')), 1, 2, '')
FROM @logs_total T
GROUP BY informe) detalle on (detalle.informe = subinformes.informe)
where subinformes.fecha_entregado between @V_fecha_desde and (@V_fecha_hasta+1)
and subinformes.estado_informe IN ('F', 'K')
/*and ISNULL(tipos_informe_tarea.genera_solicitud_doc, 0) = 0*/
and (clientes.cliente = @V_cliente or @V_cliente = 0)
/*and (subinformes.id_tipo_informe = @V_id_tipo_informe or @V_id_tipo_informe = 0)*/
and (users.user_id = @V_user_id or @V_user_id = 0)
order by
subinformes.fecha_entregado asc
*/
END
if (@V_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 @V_informe = @nuevo
end
/* Dada la contraparte, obtener qué tipos de informe se le pueden generar */
if (@V_accion = 'tipos_informe') begin
if (@V_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.estado_contrato = 'A'
and LN_contrapartes.contraparte = @V_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 = @V_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.estado_contrato = 'A'
and LN_contrapartes.contraparte = @V_contraparte
and tipos_informe.id_tipo_informe = @V_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 = @V_contraparte ))
end
/* INICIO TIPOS DE INFORME DE BLUE CORRESPONDIENTE A LA FAMILIA DE LA CONTRAPARTE */
if (@V_accion = 'tipos_informe_familia')
BEGIN
SET @cliente=7855254
SET @V_familia = 150
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
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 = @V_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 = @V_cliente)
and LN_familias_tipo_informe.familia = @V_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 (@V_accion = 'tipos_informe_cliente') begin
if (@V_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, 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 = @V_cliente
and productos.estado_producto = 'A'
and tipos_informe.vigente = 1
and tipos_informe.selec_nuevo_informe = 1
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 = @V_cliente
and tipos_informe.id_tipo_informe = @V_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 = @V_cliente)
end
if (upper(@V_accion) = 'LISTA_TAREAS')
begin
select tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe
from tipos_informe inner join tipos_subinformes on
tipos_informe.id_tipo_informe = tipos_subinformes.id_tipo_subinforme
where tipos_informe.vigente = 1
group by tipos_informe.id_tipo_informe, tipos_informe.nombre_tipo_informe
order by tipos_informe.nombre_tipo_informe
end
if (@V_accion = 'users_informe')
begin
select distinct users.user_id, users.first_name, users.last_name, isnull(users.first_name,'') + ' ' + isnull(users.last_name,'') as usuario,users.username,
/*ROLES.nombre_rol,ROLES.activo,ROLES.country_code,*/ROLES.PLATAFORMA,users.email,users.password as clave,users.active_user as estado_login
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.plataforma = 'BLUE' AND ROLES.ACTIVO = 1 and users.user_id not in (29428643,62352520,44240542,6946599,29008337,608083,35426548,11069147)
/*and idiomas.codigo_idioma = 'ES'
and roles.datamanager = 1*/
and users.active_user = 'Y'
order by isnull(users.first_name,'') + ' ' + isnull(users.last_name,'')
end
if (UPPER(@V_accion)='USERS_BACK')
begin
select distinct users.user_id, users.first_name, users.last_name, isnull(users.first_name,'') + ' ' + isnull(users.last_name,'') as usuario,users.username,
convert(varchar(10),users.preferences) as PLATAFORMA,users.email,users.password as clave,users.active_user as estado_login,users.country_code,country.country_name ,idiomas.codigo_iso
from users
inner join idiomas on users.idioma = idiomas.idioma
inner join country on users.country_code=country.country_code
where convert(varchar(10),users.preferences) = @v_plataforma
order by isnull(users.first_name,'') + ' ' + isnull(users.last_name,'')
end
if (@V_accion = 'users_produccion')
begin
select distinct users.user_id, users.first_name, users.last_name, isnull(users.first_name,'') + ' ' + isnull(users.last_name,'') as usuario,users.username,
/*ROLES.nombre_rol,ROLES.activo,ROLES.country_code,*/ROLES.PLATAFORMA,users.email,users.password as clave,users.active_user as estado_login,users.country_code,country.country_name ,idiomas.codigo_iso
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 country on users.country_code=country.country_code
where
ROLES.plataforma = 'BLUE'
AND ROLES.ACTIVO = 1
/*and idiomas.codigo_idioma = 'ES'
and roles.datamanager = 1*/
order by isnull(users.first_name,'') + ' ' + isnull(users.last_name,'')
end
/* Dado un tipo de informe, obtener qué usuarios de producción se pueden vincular al nuevo informe como "Responsable" o "Datamanager" */
if (@V_accion = 'responsables_informe')
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 = @V_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 (@V_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 = @V_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 (@V_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 = @V_id_tipo_informe
and idiomas.codigo_idioma = 'ES'
and users.active_user = 'Y'
end
if (@V_accion = 'UPD_HIST_INFORME')
BEGIN
update informes set historial_informe = convert(varchar(max),historial_informe) + '<br>' + @V_notas_informe where informe = @V_informe and informe_padre is null
END
if (@V_accion = 'archivo_informe')
begin
insert into archivos_informe (path_archivo,fecha_subido,subido_por,mime_type,informe)
values (@V_path_archivo,getdate(),@V_user_id,@V_extension_archivo,@V_informe)
end
if (@V_accion = 'list_archivos')
begin
select archivos_informe.*,users.last_name,users.first_name from archivos_informe inner join users on archivos_informe.subido_por=users.user_id where informe = @V_informe
/* insert into archivos_informe (path_archivo,fecha_subido,subido_por,mime_type,informe)
values (@V_path_archivo,getdate(),@usuario,@V_extension_archivo,@V_informe)
*/
end
/* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
if (@V_accion = 'UPD_informe') begin
/* debe asociarse el informe a un item de contrato, obligatoriamente */
/*if (@V_item_contrato !=-1 and @V_contraparte IS NOT NULL and @V_user_id IS NOT NULL /*and @V_id_tipo_informe IS NOT NULL*/)
begin*/
/*
EXEC LN_Blue 'UPD_informe',195057,100566624,422946826,NULL,NULL,NULL,1,'P',793639331,NULL,28750576,2254875,NULL,NULL,'2022-11-24 12:02:00',NULL,NULL,'por','2022-11-23 18:23:00'
select * from informes where fecha_ingreso > '2022-11-24 11:00:00.627'
select * from informes where informe = 100566624
*/
DECLARE @V_idioma1 smallint = NULL
DECLARE @V_filial1 smallint = NULL
select @V_idioma1 = idioma from idiomas where codigo_iso = @V_idioma_iso
select @V_filial1 = 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 = @V_contraparte
select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
@grupo_informes = grupo_informes
from tipos_informe
where id_tipo_informe = @V_id_tipo_informe
set @id=@V_informe
if (@id IS NOT NULL) begin
DECLARE @hist1 varchar(max) = @preffix + 'Actualización del informe.'
if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin
select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_asignado
SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Asignación del informe a ' + @nombre_asignado
end
if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Aceptación del informe.'
end
if (@V_estado_informe = 'P') begin
SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Informe puesto en gestión.'
end
DECLARE @fecha_limite1 datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
DECLARE @fecha_comprometida1 datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))
UPDATE informes SET /*informe=@id, cliente=@cliente,*/ identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@V_id_tipo_informe,
objeto_informe='INFORME GENERADO A TRAVES DE BACKEND - CARGA DE INFORMES ' + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''),
historial_informe= convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @hist1, ingresado_por=@V_ingresado_por, idioma=@V_idioma1, filial=@V_filial1, prioridad=@V_prioridad, datamanager=@V_datamanager,
asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL), estado_informe=@V_estado_informe,
fecha_asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,
/*fecha_inicio = @V_fecha_inicio,*/
fecha_inicio = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
fecha_iniciado = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
fecha_entregado= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_entregado),
fecha_aprobacion= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_aprobacion),
nombre_contacto_1=@nombre,
email_contacto_1=@email,
telefono_contacto_1=@telefono,
fecha_limite_doc=@fecha_limite1,
/*fecha_comprometida=@fecha_comprometida1*/
fecha_comprometida=@V_fecha_comprometida
WHERE informe = @id and idreg=@id
SET @V_informe = @id
if (@V_producto_led > 0) begin
/* Actualización de la tabla LED para vincular el informe al producto */
EXEC LN_demo_ 'UPDATE',@V_contraparte,@cliente,@V_producto_led,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@id
end
SELECT @id AS informe
end
end
if (upper(@V_accion) = 'CIERRE_TOTAL')
begin
DECLARE @servicio_contratadoCierre INT = NULL
DECLARE @InfPadreCierre int = null
DECLARE @GestionCierre int = null
DECLARE @ClienteCierre int = null
/*
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),
@servicio_contratadoCierre= LN_contrapartes.servicio_contratado
from LN_contrapartes
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join clientes on LN_contrapartes.cliente = clientes.cliente
where LN_contrapartes.contraparte = @V_contraparte
*/
/*select @InfPadreCierre=informe_padre FROM informes where informe = @V_informe*/
/*select @servicio_contratadoCierre,@InfPadreCierre*/
/*AVERIGUAMOS LOS DATOS DE INFORME PADRE Y GESTION */
select distinct @servicio_contratadoCierre= ln_contrapartes.servicio_contratado,@InfPadreCierre= informes.informe_padre,@GestionCierre=ln_demo.gestion,@ClienteCierre=informes.cliente
from informes inner join ln_demo on informes.informe_padre=ln_demo.informe
inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
where informes.informe = @V_informe /*and estado_informe not in ('N','C','K','X')*/
set @id=@V_informe
if (@id IS NOT NULL) begin
/*DECLARE @histT varchar(max) = @preffix + 'Creación de la tarea.'*/
DECLARE @histCierre varchar(max) = @preffix
if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin
select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_asignado
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Asignación de la tarea a ' + @nombre_asignado
end
if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de la tarea.'
end
if (@V_estado_informe = 'P') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en gestión.'
end
if (@V_estado_informe = 'E') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso.'
end
if (@V_estado_informe = 'N') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea anulada.'
end
if (@V_estado_informe = 'W') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en pausa.'
end
if (@V_estado_informe = 'F') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea finalizada.'
end
if (@V_estado_informe = 'M') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea a completar.'
end
if (@V_estado_informe = 'K') begin
SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea aprobada.'
end
/*ACTUALIZA LA TAREA */
UPDATE informes SET estado_informe=@V_estado_informe WHERE informe = @id and idreg=@id
SET @V_informe = @id
/*INSERTA LOG DE TAREA */
insert into informes_log (informe,horario,user_id,operacion) values (@id,getdate(),@V_user_id,iif(@V_estado_informe in ('P','E'),'I',iif(@V_estado_informe in ('W','M'),'P',iif(@V_estado_informe in ('F','K','C','N'),'F','F'))))
/* TRAZABILIDAD DEL UPDATE DE TAREAS */
exec insertar_trazabilidad 'ACTUALIZACION DE TAREAS',@ClienteCierre,'UPDTASKS','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratadoCierre
/* select ln_contrapartes.servicio_contratado,informes.informe_padre,ln_demo.gestion
from informes inner join ln_demo on informes.informe_padre=ln_demo.informe
inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
where informe_padre = 100601899 and estado_informe not in ('N','C','K','X')
*/
/*ACTUALIZAMOS TODAS LAS TAREAS Y EL INFORME QUE HAYA QUE APROBAR */
if (@InfPadreCierre is not null )
begin
update informes set estado_informe='K',fecha_aprobacion=getdate(),aprobado_por=@V_user_id
from informes inner join ln_demo on informes.informe_padre=ln_demo.informe
inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
where informe_padre = @InfPadreCierre and estado_informe not in ('N','C','K','X')
/*PUBLICAMOS EL INFORME */
UPDATE ln_demo set visible=1,fecha_publicacion=getdate() where contraparte=@V_contraparte AND GESTION = @GestionCierre
exec insertar_trazabilidad 'CIERRE Y PUBLICACION',@ClienteCierre,'CIERREINFORME','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratadoCierre
end
SELECT @id AS informe
end
end
/* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
if (upper(@V_accion) = 'UPD_TAREA') begin
DECLARE @V_idiomaT smallint = NULL
DECLARE @V_filialT smallint = NULL
DECLARE @servicio_contratado INT = NULL
select @V_idioma1 = idioma from idiomas where codigo_iso = @V_idioma_iso
select @V_filial1 = 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),
@servicio_contratado= LN_contrapartes.servicio_contratado
from LN_contrapartes
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join clientes on LN_contrapartes.cliente = clientes.cliente
where LN_contrapartes.contraparte = @V_contraparte
select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
@grupo_informes = grupo_informes,@V_id_tipo_informe=id_tipo_informe
from tipos_informe where id_tipo_informe in (SELECT id_tipo_informe FROM informes where informe = @V_informe)
set @id=@V_informe
if (@id IS NOT NULL) begin
/*DECLARE @histT varchar(max) = @preffix + 'Creación de la tarea.'*/
DECLARE @histT varchar(max) = @preffix
if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin
select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_asignado
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Asignación de la tarea a ' + @nombre_asignado
end
if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de la tarea.'
end
if (@V_estado_informe = 'P') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en gestión.'
end
if (@V_estado_informe = 'E') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso.'
end
if (@V_estado_informe = 'N') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea anulada.'
end
if (@V_estado_informe = 'W') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en pausa.'
end
if (@V_estado_informe = 'F') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea finalizada.'
end
if (@V_estado_informe = 'M') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea a completar.'
end
if (@V_estado_informe = 'K') begin
SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea aprobada.'
end
DECLARE @fecha_limiteT datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
DECLARE @fecha_comprometidaT datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))
set @fecha_comprometidaT = @V_fecha_comprometida
UPDATE informes SET identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@V_id_tipo_informe,
objeto_informe='TAREA GENERADA ' + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''),
historial_informe=convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @hist1, ingresado_por=@V_ingresado_por, idioma=@V_idioma1, filial=@V_filial1, prioridad=@V_prioridad, datamanager=@V_datamanager,
/*asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL), */
asignado=@V_asignado,
estado_informe=@V_estado_informe,
fecha_asignado=iif(asignado != @V_asignado, @ahora, fecha_asignado),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, fecha_aceptacion),
/* fecha_asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
*/
/* fecha_asignado=getdate(),
fecha_aceptacion=getdate(),
*/
excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,
fecha_inicio = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
fecha_iniciado = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
fecha_entregado= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_entregado),
fecha_aprobacion= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_aprobacion),
nombre_contacto_1=@nombre, email_contacto_1=@email, telefono_contacto_1=@telefono,fecha_limite_doc=@fecha_limite1,
fecha_comprometida=@fecha_comprometidaT
WHERE informe = @id and idreg=@id
SET @V_informe = @id
/*
AGB UPD LOG INFORMES
*/
insert into informes_log (informe,horario,user_id,operacion)
values (@id,getdate(),@V_user_id,iif(@V_estado_informe in ('P','E'),'I',iif(@V_estado_informe in ('W','M'),'P',iif(@V_estado_informe in ('F','K','C','N'),'F','F'))))
/* TRAZABILIDAD DEL UPDATE DE TAREAS */
exec insertar_trazabilidad 'ACTUALIZACION DE TAREAS',@cliente,'UPDTASKS','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratado
/* READY TO START */
if (@V_estado_informe in ('K','F')) /* SOLO SI LA TAREA ES APROBADA */
begin
declare @triggerPadre int = null
select @nombre_tipo_informe= nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',@grupo_informes = grupo_informes,@V_id_tipo_informe = tipos_informe.id_tipo_informe,
@triggerPadre= informes.informe_padre
from tipos_informe inner join informes on tipos_informe.id_tipo_informe = informes.id_tipo_informe
where informes.informe = @V_informe
/* select nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')', grupo_informes, tipos_informe.id_tipo_informe,
informes.informe_padre,informes.idTarea,LNTHijo.idTarea,LNTHijo.id_tipo_informe_blue,LNTHijo.*
from tipos_informe inner join informes on tipos_informe.id_tipo_informe = informes.id_tipo_informe
left join ln_tareas on informes.id_tipo_informe=LN_tareas.id_tipo_informe_blue
left join ln_tareas LNTHijo on ln_tareas.idTarea=LNTHijo.idTarea_Padre
where informes.informe in (/*100601412,100601409*/100601411) and LNTHijo.id_tipo_informe_blue is not null
*/
/*
select informe_padre,ready_to_start, * from informes where informe_padre=100601406
update informes set estado_informe='A',ready_to_start=0 where informe_padre=100601406
update informes set estado_informe='A',ready_to_start=1 where informe_padre=100601406 and id_tipo_informe = 4071729
*/
/*
if (@V_id_tipo_informe = 4071729)
begin
update informes set ready_to_start=1,ready_to_start_trigger_task=@V_informe,ready_to_start_date=getdate() where informe_padre=@triggerPadre and id_tipo_informe=1767927
end
*/
/* update informes set estado_informe=estado_informe,
ready_to_start=1,ready_to_start_user_id=@V_user_id,ready_to_start_date=getdate(),ready_to_start_trigger_task=@V_informe
where informe_padre = @triggerPadre and id_tipo_informe in (select id_tipo_informe from tipos_informes_requeridos where id_tipo_informe_requerido=@V_id_tipo_informe) and estado_informe='A'
*/
update informes set estado_informe=estado_informe,
ready_to_start=1,ready_to_start_user_id=@V_user_id,ready_to_start_date=getdate(),ready_to_start_trigger_task=@V_informe
where informe_padre = @triggerPadre and id_tipo_informe in (select id_tipo_informe_blue from LN_tareas where idTarea_Padre in (select idTarea from LN_tareas where id_tipo_informe_blue=@V_id_tipo_informe))
and estado_informe='A'
/* TRAZABILIDAD DEL READY 2 START*/
exec insertar_trazabilidad 'TAREAS DEPENDIENTES LISTAS PARA INICIAR',@cliente,'READYTOSTART','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratado
end
/*READY TO START */
SELECT @id AS informe
end
end
/* PAUSAR TAREAS */
if (upper(@V_accion) = 'PAUSA_TAREA')
begin
/*AGB */
update informes set pausa = @V_pausa_tarea where informe = @V_informe and idreg=@V_informe and informe_padre is not null
/*
AGB UPD LOG INFORMES
*/
insert into informes_log (informe,horario,user_id,operacion)
values (@V_informe,getdate(),@V_user_id,iif(@V_pausa_tarea = 1,'P','I'))
select @V_informe as tarea,@V_pausa_tarea as pausa,@V_informe as ID,@V_user_id as usuario,iif(@V_pausa_tarea = 1,'P','I') as operacion
end
/* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
if (@V_accion = 'ingresar_informe') begin
/* debe asociarse el informe a un item de contrato, obligatoriamente */
if (@V_item_contrato IS NOT NULL and @V_contraparte IS NOT NULL and @V_user_id IS NOT NULL and @V_id_tipo_informe IS NOT NULL) begin
DECLARE @V_idioma smallint = NULL
DECLARE @V_filial smallint = NULL
select @V_idioma = idioma from idiomas where codigo_iso = @V_idioma_iso
select @V_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 = @V_contraparte
select @precio = isnull(precio_unitario, 0),
@moneda = moneda,
@id_contrato = id_contrato
from contratos_items
where item_contrato = @V_item_contrato
select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
@grupo_informes = grupo_informes
from tipos_informe
where id_tipo_informe = @V_id_tipo_informe
/* obtener nuevo ID de informe */
exec @id = Genera_ID_Informe_2022 @cliente,null
if (@id IS NOT NULL) begin
DECLARE @hist varchar(max) = @preffix + 'Creación del informe.'
if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin
select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
from users where user_id = @V_asignado
SET @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Asignación del informe a ' + @nombre_asignado
end
if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
SET @hist = @hist + CHAR(13) + CHAR(10) + @preffix + 'Aceptación del informe.'
end
if (@V_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,@V_fecha_limite_doc))
DECLARE @fecha_comprometida datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))
UPDATE informes SET /*informe=@id, cliente=@cliente,*/ identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@V_id_tipo_informe,
objeto_informe='INFORME GENERADO A TRAVES DE BACKEND FIDELITAS - CARGA DE REPORTS LED' + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''),
historial_informe=@hist, ingresado_por=@V_ingresado_por, idioma=@V_idioma, filial=@V_filial, prioridad=@V_prioridad, datamanager=@V_datamanager,
asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL), estado_informe=@V_estado_informe, fecha_asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,fecha_inicio = @V_fecha_inicio,
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
/*
INSERT INTO informes
(informe, cliente, identificador, numero, fecha_ingreso, id_tipo_informe,
objeto_informe, historial_informe, ingresado_por, idioma, filial, prioridad, datamanager,
asignado, estado_informe, fecha_asignado, fecha_aceptacion,
excepcion, excepcion_prod, notificar_cliente, precio, moneda,
nombre_contacto_1, email_contacto_1, telefono_contacto_1,fecha_limite_doc,fecha_comprometida)
VALUES
(@id, @cliente, @identificador, @numero, @ahora, @V_id_tipo_informe,
'INFORME GENERADO A TRAVES DE BACKEND FIDELITAS - CARGA DE REPORTS LED' + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''),
@hist,
@V_ingresado_por, @V_idioma, @V_filial, @V_prioridad, @V_datamanager,
iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL),
@V_estado_informe,
iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL), 0, 0, 0, @precio, @moneda,
@nombre, @email, @telefono, @fecha_limite, @fecha_comprometida)
*/
/* 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 = @V_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=@V_ingresado_por, idioma=@V_idioma,
filial=@V_filial, prioridad=iif(@prioridad_tarea > 0, @prioridad_tarea, @V_prioridad), datamanager=@V_datamanager, estado_informe= 'I', orden=@orden, informe_padre=@id
where informe = @tarea and idreg=@tarea
/*
INSERT INTO informes
(informe, cliente, identificador, numero, fecha_ingreso, id_tipo_informe,
objeto_informe, historial_informe, ingresado_por, idioma,
filial, prioridad, datamanager, estado_informe, orden, informe_padre)
VALUES
(@tarea, @cliente, @identificador, @numero, @ahora, @tipo_subinforme,
NULL, @preffix + 'Creación del informe.', @V_ingresado_por, @V_idioma,
@V_filial, iif(@prioridad_tarea > 0, @prioridad_tarea, @V_prioridad), @V_datamanager, 'I', @orden, @id)
*/
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
(@V_item_contrato, @cliente, @V_producto, 1, @id, 1, @V_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, @V_user_id, @id_contrato, @V_item_contrato, @consumo, @detalle_log)
/* Devolución del ID del informe padre generado
SELECT @id */
SET @V_informe = @id
if (@V_producto_led > 0) begin
/* Actualización de la tabla LED para vincular el informe al producto */
EXEC LN_demo_ 'UPDATE',@V_contraparte,@cliente,@V_producto_led,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@id
end
SELECT @id AS informe
end
end
end
/** Cancelar un informe en producción y colocar en null el campo "informe" en la tabla **/
if (@V_accion = 'cancelar_informe') begin
if (@V_contraparte > 0 AND @V_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,
@V_item_contrato = consumo_contratos.item_contrato,
@V_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 = @V_contraparte
and LN_demo.informe = @V_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 = @V_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 = @V_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
(@V_item_contrato, @cliente, @V_producto, 1, @V_informe, -1, @V_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, @V_user_id, @id_contrato, @V_item_contrato, @consumo, @detalle_log)
update LN_demo set informe = NULL
where contraparte = @V_contraparte
and producto = @producto
and informe = @V_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 (@V_accion = 'activar_gestion_documentacion') begin
if (@V_informe > 0 AND @V_asignado > 0 AND @V_fecha_limite_doc is not null) begin
DECLARE @fecha_limite_doc datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
DECLARE @fecha_comprometida_doc datetime = dateadd(second,-1,dateadd(day,1,@V_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 = @V_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 = @V_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 = @V_asignado,
fecha_limite_doc = @fecha_limite_doc,
fecha_asignado = GETDATE(),
fecha_aceptacion = GETDATE(),
fecha_iniciado = GETDATE(),
/*fecha_comprometida = DATEADD(HOUR,12,DATEADD(DAY,1,@V_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 (@V_accion = 'check_docs_ok') begin
if (@V_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 = @V_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 = @V_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 = @V_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
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 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 (@V_user_id > 0)
update informes set asignado = @V_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 (@V_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 (@V_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
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 (@V_accion = 'check_tarea_balances') begin
DECLARE @id_tipo_analisis_balances INT = 9080511
if (@V_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 = @V_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 = @V_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
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 (@V_user_id > 0)
update informes set asignado = @V_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 (@V_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 (@V_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 (@V_accion = 'tipo_informe') begin
if (@V_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 = @V_id_tipo_informe
end
/* Dado un informe (padre) trae los datos de la tarea de gestión de documentación */
if (@V_accion = 'datos_tarea_gestion') begin
if (@V_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 = @V_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 (@V_accion = 'actualizar_tarea_gestion') begin
if (@V_contraparte is not null AND @V_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 = @V_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
if ( convert(date, @V_fecha_limite_doc) >= convert(date, GETDATE()) ) begin
SET @fecha_comprometida_update = DATEADD(day, datediff(day, @fecha_limite_anterior, @V_fecha_limite_doc), @fecha_comprometida_anterior)
UPDATE informes SET
fecha_limite_doc = Dateadd(second,-1,Dateadd(day,1,@V_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),@V_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
end
end
end
end
/*
EXEC LN_Blue_Tareas_Informe 'tareas_informe',NULL,100615876
*/
if (upper(@V_accion)='TAREAS_INFORME')
begin
SELECT distinct LN_informe_design.idTipoInforme,
LN_informe_design.duracion as duracion,
LN_informe_design.orden as ordTarea,
tareas.id_tipo_informe as id_tipo_tarea,
LN_tareas.idTarea_Padre as dependencia ,
LN_informe_design.dependency_tree,
tareas.informe as tarea, tareas.informe_padre, tareas.estado_informe as estado_tarea,
case
when tareas.estado_informe = 'I' then 'Ingresado'
when tareas.estado_informe = 'A' then 'No calificado'
when tareas.estado_informe = 'X' then 'Carga Comercial'
when tareas.estado_informe = 'T' then 'Aceptado'
when tareas.estado_informe = 'P' then 'En gestión'
when tareas.estado_informe = 'W' then 'En espera'
when tareas.estado_informe = 'M' then 'A Completar'
when tareas.estado_informe = 'E' then 'En proceso'
when tareas.estado_informe = 'F' then 'Finalizado'
when tareas.estado_informe = 'K' then 'Aprobado'
when tareas.estado_informe = 'R' then 'En revisión'
when tareas.estado_informe = 'C' then 'Cancelado'
when tareas.estado_informe = 'N' then 'Anulado'
end as nombre_estado_tarea,
upper(LN_tareas.nombre_tarea) as nombre_tipo_tarea,
LN_demo.contraparte, LN_gestiones.gestion, padrones.nombre_persona, convert(varchar(max),tareas.historial_informe) as historial_informe,
padrones.identificacion, padrones.identificador,
identificadores.country_code, country.country_name,
users.first_name, users.last_name, users.email, tareas.ingresado_por,
convert(varchar(10), tareas.fecha_ingreso, 103) as fecha_ingreso,
convert(varchar(10), tareas.fecha_aprobacion, 103) as fecha_aprobacion,
convert(varchar(10), tareas.fecha_comprometida, 103) as fecha_comprometidaINF,
convert(varchar(10), tareas.fecha_comprometida, 121) as fecha_comprometida_ymd,
clientes.nombre_cliente,
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
,isnull(LN_demo.fecha_comprometida,getdate()-1) as fecha_comprometidaINF,
datediff(day,getdate(),isnull(LN_demo.fecha_comprometida,getdate()-1)) as diffdiasINF,
datediff(day,getdate(),isnull(LN_demo.fecha_publicacion,getdate()-1)) as diffpublicacionINF,
tareas.fecha_comprometida as fecha_comprometidaTAR,
datediff(day,getdate(),isnull(tareas.fecha_comprometida,getdate()-1)) as diffdiasTAR,
LN_demo.fecha_publicacion,isnull(LN_demo.visible,0) as publicado,
isnull(LN_demo.integ_carga,0) as integ_carga,isnull(LN_demo.integ_rech,0) as integ_rech,isnull(LN_demo.integ_verif,0) as integ_verif,isnull(LN_demo.docs_ok,0) as docs_ok,
tareas.asignado as inf_asignado,tareas.asignado as tar_asignado,
USRINF.last_name + ' ' + USRINF.first_name as informe_usuario_asignado,
USRTAR.last_name + ' ' + USRTAR.first_name as tarea_usuario_asignado,
tareas.fecha_inicio ,
tareas.prioridad as dedicacion,
tareas.informe_padre as tarea_padre, tareas.pausa,
tareas.ready_to_start_trigger_task as idTareaPadre,
tareas.ready_to_start_date,
tareas.ready_to_start,
tareas.ready_to_start_user_id,
'' as estadoTareaPadre,LN_Tareas.id_tip_doc_dependiente as id_tipo_doc_dependiente
FROM informes tareas
inner join informes InfPadre on tareas.informe_padre = InfPadre.informe
left join clientes ON tareas.cliente = clientes.cliente
left outer join users on tareas.ingresado_por = users.user_id
left join LN_demo ON tareas.informe_padre = LN_demo.informe
left join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
inner join padrones ON (ln_contrapartes.id_padron = padrones.id_padron)
left join LN_gestiones ON (LN_contrapartes.contraparte = LN_gestiones.contraparte and ln_demo.gestion=LN_gestiones.gestion)
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 join users USRINF on USRINF.user_id = tareas.asignado
left join users USRTAR on USRTAR.user_id = tareas.asignado
left join LN_tareas on LN_tareas.id_tipo_informe_blue=tareas.id_tipo_informe
inner join LN_informe_design on (ln_tareas.idTarea = LN_informe_design.idElem and LN_informe_design.tipo_elem='T' and InfPadre.id_tipo_informe=LN_informe_design.idTipoInforme)
WHERE tareas.informe_padre = @V_informe
ORDER BY LN_informe_design.orden ASC,tareas.informe ASC
END
if (@V_accion='tareas_informeOLD')
begin
/*if (@V_contraparte is null and @V_informe is null)*/
SELECT distinct 1 as etapa, tareas.informe as tarea, tareas.informe_padre, tareas.estado_informe as estado_tarea, tareas.id_tipo_informe as id_tipo_tarea,
case
when tareas.estado_informe = 'I' then 'Ingresado'
when tareas.estado_informe = 'A' then 'No calificado'
when tareas.estado_informe = 'X' then 'Carga Comercial'
when tareas.estado_informe = 'T' then 'Aceptado'
when tareas.estado_informe = 'P' then 'En gestión'
when tareas.estado_informe = 'W' then 'En espera'
when tareas.estado_informe = 'M' then 'A Completar'
when tareas.estado_informe = 'E' then 'En proceso'
when tareas.estado_informe = 'F' then 'Finalizado'
when tareas.estado_informe = 'K' then 'Aprobado'
when tareas.estado_informe = 'R' then 'En revisión'
when tareas.estado_informe = 'C' then 'Cancelado'
when tareas.estado_informe = 'N' then 'Anulado'
end as nombre_estado_tarea,
/*tipos_informe.nombre_tipo_informe as nombre_tipo_tarea,*/
/*tipos_informe.nombre_tipo_informe as nombre_tarea,*/
upper(LN_tareas.nombre_tarea) as nombre_tipo_tarea,
LN_demo.contraparte, LN_gestiones.gestion, padrones.nombre_persona, convert(varchar(max),tareas.historial_informe) as historial_informe,
padrones.identificacion, padrones.identificador,
identificadores.country_code, country.country_name,
users.first_name, users.last_name, users.email, tareas.ingresado_por,
convert(varchar(10), tareas.fecha_ingreso, 103) as fecha_ingreso,
convert(varchar(10), tareas.fecha_aprobacion, 103) as fecha_aprobacion,
convert(varchar(10), tareas.fecha_comprometida, 103) as fecha_comprometidaINF,
convert(varchar(10), tareas.fecha_comprometida, 121) as fecha_comprometida_ymd,
clientes.nombre_cliente,
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
,isnull(LN_demo.fecha_comprometida,getdate()-1) as fecha_comprometidaINF,
datediff(day,getdate(),isnull(LN_demo.fecha_comprometida,getdate()-1)) as diffdiasINF,
datediff(day,getdate(),isnull(LN_demo.fecha_publicacion,getdate()-1)) as diffpublicacionINF,
tareas.fecha_comprometida as fecha_comprometidaTAR,
datediff(day,getdate(),isnull(tareas.fecha_comprometida,getdate()-1)) as diffdiasTAR,
LN_demo.fecha_publicacion,isnull(LN_demo.visible,0) as publicado,
isnull(LN_demo.integ_carga,0) as integ_carga,isnull(LN_demo.integ_rech,0) as integ_rech,isnull(LN_demo.integ_verif,0) as integ_verif,isnull(LN_demo.docs_ok,0) as docs_ok,
tareas.asignado as inf_asignado,tareas.asignado as tar_asignado,
USRINF.last_name + ' ' + USRINF.first_name as informe_usuario_asignado,
USRTAR.last_name + ' ' + USRTAR.first_name as tarea_usuario_asignado,
tareas.fecha_inicio ,
tareas.prioridad as dedicacion,
LN_tareas.duracion as duracion1,
LN_informe_design.duracion as duracion,
tareas.informe_padre as tarea_padre, tareas.pausa,tareas.orden as ordTarea,
tareas.ready_to_start_trigger_task as idTareaPadre,
tareas.ready_to_start_date,
tareas.ready_to_start,
tareas.ready_to_start_user_id,
'' as estadoTareaPadre,
LN_tareas.idTarea_Padre as dependencia
FROM informes tareas
inner join tipos_informe on tareas.id_tipo_informe = tipos_informe.id_tipo_informe
inner join tipos_informe as tipos_tarea on tareas.id_tipo_informe = tipos_tarea.id_tipo_informe
left join clientes ON tareas.cliente = clientes.cliente
left outer join users on tareas.ingresado_por = users.user_id
left join LN_demo ON tareas.informe_padre = LN_demo.informe
left join LN_contrapartes ON LN_demo.contraparte = LN_contrapartes.contraparte
inner join padrones ON (ln_contrapartes.id_padron = padrones.id_padron)
left join LN_gestiones ON (LN_contrapartes.contraparte = LN_gestiones.contraparte and ln_demo.gestion=LN_gestiones.gestion)
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 join users USRINF on USRINF.user_id = tareas.asignado
left join users USRTAR on USRTAR.user_id = tareas.asignado
left join LN_tareas on LN_tareas.id_tipo_informe_blue=tareas.id_tipo_informe
inner join LN_informe_design on (ln_tareas.idTarea = LN_informe_design.idElem and LN_informe_design.tipo_elem='T')
/*
exec LN_Blue 'tareas_informe',null,100603443
*/
WHERE /*tareas.estado_informe IN ('P','M','E','W','F','K','R','I')
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_gestiones.vigente = 1
and */ tareas.informe_padre = @V_informe
ORDER BY ordTarea ASC,tareas.informe ASC
/*
exec LN_Blue 'informes_panel',null,null
exec LN_Blue 'tareas_informe',null,100603443
*/
end
if (@V_accion='informes_panel') begin
if (@V_contraparte is null and @V_informe is null)
SELECT 1 as etapa, informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
/*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_comprometidaINF,
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'
when informes.estado_informe = 'W' then 'En espera'
end as nombre_estado_informe,
clientes.nombre_cliente,
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,
isnull(LN_demo.fecha_comprometida,getdate()-1) as fecha_comprometida,
datediff(day,getdate(),isnull(LN_demo.fecha_comprometida,getdate()-1)) as diffdias,
datediff(day,getdate(),isnull(LN_demo.fecha_publicacion,getdate()-1)) as diffpublicacion,
LN_demo.fecha_publicacion,isnull(LN_demo.visible,0) as publicado,isnull(LN_demo.integ_carga,0) as integ_carga,isnull(LN_demo.integ_rech,0) as integ_rech,isnull(LN_demo.integ_verif,0),isnull(LN_demo.docs_ok,0) as docs_ok,
informes.asignado as inf_asignado,
USRINF.last_name + ' ' + USRINF.first_name as informe_usuario_asignado
FROM informes
inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
inner join tipos_informe as tipos_tarea on informes.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 join users USRINF on USRINF.user_id = informes.asignado
WHERE informes.estado_informe IN ('I','A','T','P','M','E','W','R')
and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_gestiones.vigente = 1
ORDER BY diffdias asc
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 (@V_accion = 'panel_control_reports' or @V_accion='informes_panel2') 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 (@V_contraparte is null and @V_informe is null)
SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
/*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_comprometidaINF,
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_informe,
clientes.nombre_cliente, tareas.informe as tarea, tareas.estado_informe as estado_tarea,
case
when tareas.estado_informe = 'I' then 'Ingresado'
when tareas.estado_informe = 'A' then 'Asignado'
when tareas.estado_informe = 'T' then 'Aceptado'
when tareas.estado_informe = 'P' then 'En gestión'
when tareas.estado_informe = 'M' then 'En espera'
when tareas.estado_informe = 'E' then 'En proceso'
when tareas.estado_informe = 'F' then 'Finalizado'
when tareas.estado_informe = 'K' then 'Aprobado'
when tareas.estado_informe = 'R' then 'En revisión'
end as nombre_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_tipo_tarea,tipos_tarea.nombre_tipo_informe as nombre_tipo_tarea,
isnull(LN_demo.fecha_comprometida,getdate()-1) as fecha_comprometidaDEMO,LN_demo.fecha_publicacion,isnull(LN_demo.visible,0) as publicado,isnull(LN_demo.integ_carga,0) as integ_carga,isnull(LN_demo.integ_rech,0) as integ_rech,isnull(LN_demo.integ_verif,0),isnull(LN_demo.docs_ok,0) as docs_ok,
informes.asignado as inf_asignado,tareas.asignado as tar_asignado,
/*USRINF.username as informe_usuario_asignado,*/
/*USRTAR.username as tarea_usuario_asignado,*/
USRINF.last_name + ' ' + USRINF.first_name as informe_usuario_asignado,
USRTAR.last_name + ' ' + USRTAR.first_name as tarea_usuario_asignado,
tareas.fecha_comprometida as fecha_comprometidaTAR
FROM informes
inner join tipos_informe on informes.id_tipo_informe = tipos_informe.id_tipo_informe
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 join users USRINF on USRINF.user_id = informes.asignado
left join users USRTAR on USRTAR.user_id = tareas.asignado
/*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)
*/
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 LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
and LN_gestiones.vigente = 1
ORDER BY informes.informe, tareas.fecha_limite_doc
else
if (@V_contraparte is not null and @V_informe is null)
SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
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 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
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 = @V_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 = @V_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 = @V_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 = @V_contraparte
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
SELECT informes.informe, informes.estado_informe, informes.id_tipo_informe, tipos_informe.nombre_tipo_informe,
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 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
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 = @V_informe
AND LN_demo.contraparte = @V_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 = @V_informe
AND LN_demo.contraparte = @V_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 = @V_informe
AND LN_demo.contraparte = @V_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 = @V_informe
and LN_demo.contraparte = @V_contraparte
/* 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 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 (@V_accion = 'finalizar_gestion_informe') begin
if (@V_contraparte is not null AND @V_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 = @V_informe
and LN_demo.contraparte = @V_contraparte
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 (@V_accion = 'cerrar_informe') begin
if (@V_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 = @V_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 = @V_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 = @V_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 = @V_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 not in ('F','K','N'), GETDATE(), fecha_entregado), /*iif(@estado != 'F', GETDATE(), fecha_entregado),*/
fecha_aprobacion = iif(@estado not in ('F','K','N'), GETDATE(), fecha_aprobacion),/*GETDATE(),*/
aprobado_por = @V_user_id,
excepcion = 0,
excepcion_prod = 0
WHERE informe = @V_informe
end
end
end
END
GO
Depends On
42- dbo.Genera_ID_Informe_2022
- dbo.insertar_trazabilidad
- dbo.LN_Blue
- dbo.LN_demo_
- dbo.archivos_informe
- 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_informe_design
- dbo.LN_set_tipo_doc
- dbo.LN_tareas
- 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.trazabilidad
- dbo.users
- dbo.usuarios_roles
- dbo.DelimitedSplit8K
Used By
No items found