Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
3| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_doc_id | bigint | 8 | |
| @p_lista_recursos | varchar | -1 | |
| @p_user_id | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Imperium_Verificar_Documento_Parcial
-- Add the parameters for the stored procedure here
@p_doc_id bigint = null,
@p_lista_recursos varchar(max) = NULL,
@p_user_id int = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
if (@p_doc_id > 0 and @p_lista_recursos is not null and @p_user_id > 0) begin
declare @estado varchar(1)
select @estado = estado_doc from led_docs where doc_id = @p_doc_id
if (@estado = 'I') begin
declare @vcuit tinyint, @vcuil tinyint, @vdom tinyint, @tipo_doc int = null, @contratista int, @contratista_1 int, @periodo int, @nombre_tipo_doc varchar(200),
@nombre_persona varchar(100), @abreviatura varchar(10), @identificacion varchar(30), @cliente int, @nombre_cliente varchar(200), @usuario_contratista int,
@docVersion int
select @vcuit = led_tipos_doc.validar_cuit,
@vcuil = led_tipos_doc.validar_lista_cuil,
@vdom = led_tipos_doc.validar_lista_dominios,
@tipo_doc = led_tipos_doc.tipo_doc,
@contratista = led_docs.contratista,
@contratista_1 = led_contratistas.contratista_1,
@usuario_contratista = contratista1.user_id,
@periodo = led_docs.periodo,
@nombre_tipo_doc = led_tipos_doc.nombre_tipo_doc,
@nombre_persona = padrones.nombre_persona,
@abreviatura = identificadores.abreviatura,
@identificacion = padrones.identificacion,
@nombre_cliente = clientes.nombre_cliente,
@cliente = led_contratistas.cliente,
@docVersion = led_docs.doc_version
from led_docs inner join led_tipos_doc on led_docs.tipo_doc = led_tipos_doc.tipo_doc
inner join led_contratistas on led_docs.contratista = led_contratistas.contratista
inner join led_contratistas contratista1 on led_contratistas.contratista_1 = contratista1.contratista
inner join padrones on led_contratistas.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join clientes on led_contratistas.cliente = clientes.cliente
where led_docs.doc_id = @p_doc_id
declare @nya varchar(100)
--select @nya = isnull(first_name, '')+' '+isnull(last_name,'') from users where user_id = @p_user_id
select @nya = isnull(aliasname, '') from users where user_id = @p_user_id
declare @log varchar(200) = convert(varchar(10),getdate(),103)+' '+convert(varchar(5),getdate(),14)+': Documento verificado parcial por el usuario '+@nya
update led_docs set estado_doc = 'I',
compliance_doc = 'I',
aprobacion_parcial = 1,
reapertura_por_alta = 0,
parcial_actualizado = 0,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
where doc_id = @p_doc_id
/* HACEMOS UPDATE DE LA VERSIÓN EN LA TABLA DOCS_AUX */
update led_docs_aux set estado_doc = 'I',
compliance_doc = 'I',
aprobacion_parcial = 1,
reapertura_por_alta = 0,
parcial_actualizado = 0,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
where doc_id = @p_doc_id and doc_version = @docVersion
-- Verifico la actualización parcial documentos hijos
declare @header_notificacion varchar(1000) = NULL
declare @lista_notificacion varchar(max) = ''
declare @secc varchar(1) = NULL
set @secc = iif(@vcuit = 1, 'C', iif(@vcuil = 1, 'E', (iif(@vdom = 1, 'V', NULL))))
if (@secc is not null) begin
set @header_notificacion = 'El documento ' + @nombre_tipo_doc + ' correspondiente al período '
+ SUBSTRING(convert(varchar,@periodo),5,2)+'-'+SUBSTRING(convert(varchar,@periodo),1,4)
+ 'ha sido verificado en forma parcial. <br><br>'
+ 'Contratante: ' + @nombre_cliente + '<br>'
+ 'Contratista: ' + @nombre_persona + ' (' + @abreviatura + ' ' + @identificacion + ')'
+ '<br><br>'
+ 'Detalle de documentación faltante: <br><br>'
if (@secc = 'C') begin
-- En documentos nivel empresa vienen los doc id en la lista recursos
update led_docs set estado_doc = 'V',
compliance_doc = 'V',
verificado = GETDATE(),
verificado_por = @p_user_id,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
from led_docs inner join dbo.DelimitedSplit8K(@p_lista_recursos, ',') docs
on led_docs.doc_id = docs.Item
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'C'
and led_docs.estado_doc != 'V'
--- Generar notificación con la lista de documentos pendientes
declare @tipo_doc_hijo varchar(max)
SELECT @tipo_doc_hijo = STUFF(
(select '|'+led_tipos_doc.nombre_tipo_doc
from led_docs inner join led_tipos_doc on led_docs.tipo_doc = led_tipos_doc.tipo_doc
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'C'
and led_docs.estado_doc != 'V'
for xml path(''))
, 1, 1, '')
SET @lista_notificacion = REPLACE(@tipo_doc_hijo,'|','<br>')
end
else if (@secc = 'E') begin
-- En documentos nivel empleado vienen los ID de empleado en la lista recursos
update led_docs set estado_doc = 'V',
compliance_doc = 'V',
verificado = GETDATE(),
verificado_por = @p_user_id,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
from led_docs inner join dbo.DelimitedSplit8K(@p_lista_recursos, ',') empleados
on led_docs.empleado = empleados.Item
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'E'
and led_docs.estado_doc != 'V'
--- Generar notificación con la lista de recursos pendientes
declare @empleados_pend varchar(max)
SELECT @empleados_pend = STUFF(
(select '|' + padrones.nombre_persona + ' (' + identificadores.abreviatura + ' ' + padrones.identificacion + ')'
from led_docs
inner join led_empleados on led_docs.empleado = led_empleados.empleado
inner join padrones on led_empleados.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join led_empleados_periodo on (led_docs.empleado=led_empleados_periodo.empleado and led_empleados_periodo.periodo=@periodo)
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'E'
and led_docs.estado_doc != 'V'
and led_empleados.estado_empleado = 'A'
group by padrones.nombre_persona, identificadores.abreviatura, padrones.identificacion
for xml path(''))
, 1, 1, '')
SET @lista_notificacion = REPLACE(@empleados_pend,'|','<br>')
end
else if (@secc = 'V') begin
-- En documentos de vehículos vienen los ID de vehículos en la lista recursos
update led_docs set estado_doc = 'V',
compliance_doc = 'V',
verificado = GETDATE(),
verificado_por = @p_user_id,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
from led_docs inner join dbo.DelimitedSplit8K(@p_lista_recursos, ',') vehiculos
on led_docs.vehiculo = vehiculos.Item
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'V'
and led_docs.estado_doc != 'V'
--- Generar notificación con la lista de recursos pendientes
declare @vehiculos_pend varchar(max)
SELECT @vehiculos_pend = STUFF(
(select '|' + led_vehiculos.nombre_vehiculo + ' (' + led_vehiculos.dominio + ')'
from led_docs
inner join led_vehiculos on led_docs.vehiculo = led_vehiculos.vehiculo
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'V'
and led_docs.estado_doc != 'V'
group by led_vehiculos.nombre_vehiculo, led_vehiculos.dominio
for xml path(''))
, 1, 1, '')
SET @lista_notificacion = REPLACE(@vehiculos_pend,'|','<br>')
end
--- Generar notificación
declare @notificacion int
declare @texto_notificacion varchar(max) = @header_notificacion + @lista_notificacion
insert into led_notificaciones
(horario, tipo_notificacion, texto_notificacion, visible_contratista, cliente, contratista, leido, horario_leido, usuario_de, usuario_para, doc_id)
values
(GETDATE(), 'A2C', @texto_notificacion, 1, @cliente, @contratista_1, 0, NULL, @p_user_id, @usuario_contratista, @p_doc_id)
SET @notificacion = SCOPE_IDENTITY()
update led_docs set
notificacion = @notificacion,
doc_log = CONVERT(VARCHAR(MAX), doc_log) + CHAR(13) + CHAR(10) + 'Lista de documentación faltante:'
+ CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) + REPLACE(@lista_notificacion, '<br>', CHAR(13)+CHAR(10))
where doc_id = @p_doc_id
-- Trazabilidad
insert into trazabilidad
(texto, cliente, accion, id_plataforma, contraparte, user_id, created, doc_id)
values
(LEFT(@texto_notificacion,1000), @cliente, 'APROBACION_PARCIAL_IMPERIUM', 'IMPERIUM', @contratista, @p_user_id, GETDATE(), @p_doc_id)
select @lista_notificacion as lista_faltantes
end
end
end
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Imperium_Verificar_Documento_Parcial
-- Add the parameters for the stored procedure here
@p_doc_id bigint = null,
@p_lista_recursos varchar(max) = NULL,
@p_user_id int = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
if (@p_doc_id > 0 and @p_lista_recursos is not null and @p_user_id > 0) begin
declare @estado varchar(1)
select @estado = estado_doc from led_docs where doc_id = @p_doc_id
if (@estado = 'I') begin
declare @vcuit tinyint, @vcuil tinyint, @vdom tinyint, @tipo_doc int = null, @contratista int, @contratista_1 int, @periodo int, @nombre_tipo_doc varchar(200),
@nombre_persona varchar(100), @abreviatura varchar(10), @identificacion varchar(30), @cliente int, @nombre_cliente varchar(200), @usuario_contratista int,
@docVersion int
select @vcuit = led_tipos_doc.validar_cuit,
@vcuil = led_tipos_doc.validar_lista_cuil,
@vdom = led_tipos_doc.validar_lista_dominios,
@tipo_doc = led_tipos_doc.tipo_doc,
@contratista = led_docs.contratista,
@contratista_1 = led_contratistas.contratista_1,
@usuario_contratista = contratista1.user_id,
@periodo = led_docs.periodo,
@nombre_tipo_doc = led_tipos_doc.nombre_tipo_doc,
@nombre_persona = padrones.nombre_persona,
@abreviatura = identificadores.abreviatura,
@identificacion = padrones.identificacion,
@nombre_cliente = clientes.nombre_cliente,
@cliente = led_contratistas.cliente,
@docVersion = led_docs.doc_version
from led_docs inner join led_tipos_doc on led_docs.tipo_doc = led_tipos_doc.tipo_doc
inner join led_contratistas on led_docs.contratista = led_contratistas.contratista
inner join led_contratistas contratista1 on led_contratistas.contratista_1 = contratista1.contratista
inner join padrones on led_contratistas.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join clientes on led_contratistas.cliente = clientes.cliente
where led_docs.doc_id = @p_doc_id
declare @nya varchar(100)
--select @nya = isnull(first_name, '')+' '+isnull(last_name,'') from users where user_id = @p_user_id
select @nya = isnull(aliasname, '') from users where user_id = @p_user_id
declare @log varchar(200) = convert(varchar(10),getdate(),103)+' '+convert(varchar(5),getdate(),14)+': Documento verificado parcial por el usuario '+@nya
update led_docs set estado_doc = 'I',
compliance_doc = 'I',
aprobacion_parcial = 1,
reapertura_por_alta = 0,
parcial_actualizado = 0,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
where doc_id = @p_doc_id
/* HACEMOS UPDATE DE LA VERSIÓN EN LA TABLA DOCS_AUX */
update led_docs_aux set estado_doc = 'I',
compliance_doc = 'I',
aprobacion_parcial = 1,
reapertura_por_alta = 0,
parcial_actualizado = 0,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
where doc_id = @p_doc_id and doc_version = @docVersion
-- Verifico la actualización parcial documentos hijos
declare @header_notificacion varchar(1000) = NULL
declare @lista_notificacion varchar(max) = ''
declare @secc varchar(1) = NULL
set @secc = iif(@vcuit = 1, 'C', iif(@vcuil = 1, 'E', (iif(@vdom = 1, 'V', NULL))))
if (@secc is not null) begin
set @header_notificacion = 'El documento ' + @nombre_tipo_doc + ' correspondiente al período '
+ SUBSTRING(convert(varchar,@periodo),5,2)+'-'+SUBSTRING(convert(varchar,@periodo),1,4)
+ 'ha sido verificado en forma parcial. <br><br>'
+ 'Contratante: ' + @nombre_cliente + '<br>'
+ 'Contratista: ' + @nombre_persona + ' (' + @abreviatura + ' ' + @identificacion + ')'
+ '<br><br>'
+ 'Detalle de documentación faltante: <br><br>'
if (@secc = 'C') begin
-- En documentos nivel empresa vienen los doc id en la lista recursos
update led_docs set estado_doc = 'V',
compliance_doc = 'V',
verificado = GETDATE(),
verificado_por = @p_user_id,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
from led_docs inner join dbo.DelimitedSplit8K(@p_lista_recursos, ',') docs
on led_docs.doc_id = docs.Item
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'C'
and led_docs.estado_doc != 'V'
--- Generar notificación con la lista de documentos pendientes
declare @tipo_doc_hijo varchar(max)
SELECT @tipo_doc_hijo = STUFF(
(select '|'+led_tipos_doc.nombre_tipo_doc
from led_docs inner join led_tipos_doc on led_docs.tipo_doc = led_tipos_doc.tipo_doc
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'C'
and led_docs.estado_doc != 'V'
for xml path(''))
, 1, 1, '')
SET @lista_notificacion = REPLACE(@tipo_doc_hijo,'|','<br>')
end
else if (@secc = 'E') begin
-- En documentos nivel empleado vienen los ID de empleado en la lista recursos
update led_docs set estado_doc = 'V',
compliance_doc = 'V',
verificado = GETDATE(),
verificado_por = @p_user_id,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
from led_docs inner join dbo.DelimitedSplit8K(@p_lista_recursos, ',') empleados
on led_docs.empleado = empleados.Item
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'E'
and led_docs.estado_doc != 'V'
--- Generar notificación con la lista de recursos pendientes
declare @empleados_pend varchar(max)
SELECT @empleados_pend = STUFF(
(select '|' + padrones.nombre_persona + ' (' + identificadores.abreviatura + ' ' + padrones.identificacion + ')'
from led_docs
inner join led_empleados on led_docs.empleado = led_empleados.empleado
inner join padrones on led_empleados.id_padron = padrones.id_padron
inner join identificadores on padrones.identificador = identificadores.identificador
inner join led_empleados_periodo on (led_docs.empleado=led_empleados_periodo.empleado and led_empleados_periodo.periodo=@periodo)
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'E'
and led_docs.estado_doc != 'V'
and led_empleados.estado_empleado = 'A'
group by padrones.nombre_persona, identificadores.abreviatura, padrones.identificacion
for xml path(''))
, 1, 1, '')
SET @lista_notificacion = REPLACE(@empleados_pend,'|','<br>')
end
else if (@secc = 'V') begin
-- En documentos de vehículos vienen los ID de vehículos en la lista recursos
update led_docs set estado_doc = 'V',
compliance_doc = 'V',
verificado = GETDATE(),
verificado_por = @p_user_id,
doc_log = convert(varchar(max),doc_log)+char(13)+char(10)+@log
from led_docs inner join dbo.DelimitedSplit8K(@p_lista_recursos, ',') vehiculos
on led_docs.vehiculo = vehiculos.Item
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'V'
and led_docs.estado_doc != 'V'
--- Generar notificación con la lista de recursos pendientes
declare @vehiculos_pend varchar(max)
SELECT @vehiculos_pend = STUFF(
(select '|' + led_vehiculos.nombre_vehiculo + ' (' + led_vehiculos.dominio + ')'
from led_docs
inner join led_vehiculos on led_docs.vehiculo = led_vehiculos.vehiculo
where led_docs.doc_id_lista = @tipo_doc
and led_docs.contratista = @contratista
and led_docs.periodo = @periodo
and led_docs.led_seccion = 'V'
and led_docs.estado_doc != 'V'
group by led_vehiculos.nombre_vehiculo, led_vehiculos.dominio
for xml path(''))
, 1, 1, '')
SET @lista_notificacion = REPLACE(@vehiculos_pend,'|','<br>')
end
--- Generar notificación
declare @notificacion int
declare @texto_notificacion varchar(max) = @header_notificacion + @lista_notificacion
insert into led_notificaciones
(horario, tipo_notificacion, texto_notificacion, visible_contratista, cliente, contratista, leido, horario_leido, usuario_de, usuario_para, doc_id)
values
(GETDATE(), 'A2C', @texto_notificacion, 1, @cliente, @contratista_1, 0, NULL, @p_user_id, @usuario_contratista, @p_doc_id)
SET @notificacion = SCOPE_IDENTITY()
update led_docs set
notificacion = @notificacion,
doc_log = CONVERT(VARCHAR(MAX), doc_log) + CHAR(13) + CHAR(10) + 'Lista de documentación faltante:'
+ CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) + REPLACE(@lista_notificacion, '<br>', CHAR(13)+CHAR(10))
where doc_id = @p_doc_id
-- Trazabilidad
insert into trazabilidad
(texto, cliente, accion, id_plataforma, contraparte, user_id, created, doc_id)
values
(LEFT(@texto_notificacion,1000), @cliente, 'APROBACION_PARCIAL_IMPERIUM', 'IMPERIUM', @contratista, @p_user_id, GETDATE(), @p_doc_id)
select @lista_notificacion as lista_faltantes
end
end
end
END
GO
Depends On
13Used By
No items found