gke_arce_rupe2
.rupe
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
generar_datos_documentos(character varying, character varying)
Parameters
Name
Type
Mode
desde
character varying
IN
hasta
character varying
IN
Definition
declare /* variables auxiliares para actualizar los registros */ aux_prv_id integer; aux_tipo_documento varchar(255); aux_fecha_ingreso timestamp; aux_estado varchar(255); aux_fecha_verificacion timestamp; aux_inciso_verificacion varchar(255); aux_ue_verificacion varchar(255); aux_fecha_validacion timestamp; aux_inciso_validacion VARCHAR(255); aux_ue_validacion VARCHAR(255); aux_fecha_rechazo timestamp; aux_inciso_rechazo VARCHAR(255); aux_ue_rechazo VARCHAR(255); aux_tipo_usuario_verificacion VARCHAR(255); aux_tipo_usuario_validador VARCHAR(255); aux_tipo_usuario_rechazo VARCHAR(255); aux_cedula_verificacion VARCHAR(255); aux_cedula_validacion VARCHAR(255); aux_cedula_rechazo VARCHAR(255); cod_estado integer; cod_documento integer; requiere_validacion boolean; tipo_usuario integer; unidad_ejecutora_id integer; inciso_id integer; vinculacion_procesada integer; insertar boolean; /* cursor que retorna las cuentas bancarias del banco BROU (no eliminadas y en estado: Pendiente Validar o Validada)*/ C_documento CURSOR FOR SELECT d.deo_id FROM rupe.rupe_documentos_electronicos_proveedores d where deo_proveedor_prv_id is not null and deo_crea_fecha >= to_timestamp(desde,'dd/mm/yyyy') and deo_crea_fecha < to_timestamp(hasta,'dd/mm/yyyy'); reg_documento RECORD; BEGIN OPEN C_documento; LOOP FETCH C_documento INTO reg_documento; EXIT WHEN NOT FOUND; select id_vinculacion from rupe.exportar_documentos_indicador into vinculacion_procesada where id_vinculacion = reg_documento.deo_id; if not found then select d.deo_proveedor_prv_id, tde.tdc_nombre, de.doc_crea_fecha, ede.edo_nombre, ede.edo_id, d.deo_documento_electronico_doc_id, tde.tdc_requiere_validacion into aux_prv_id, aux_tipo_documento, aux_fecha_ingreso, aux_estado, cod_estado, cod_documento, requiere_validacion from rupe.rupe_documentos_electronicos_proveedores d, rupe.rupe_documentos_electronicos de, rupe.rupe_tipos_documento_electronico tde, rupe.rupe_estados_documento_electronico ede where d.deo_id = reg_documento.deo_id and d.deo_documento_electronico_doc_id = de.doc_id and de.doc_tipo_documento_tdc_id = tde.tdc_id and de.doc_estado_documento_edo_id = ede.edo_id; aux_cedula_rechazo := null; aux_fecha_rechazo := null; aux_inciso_rechazo := null; aux_ue_rechazo := null; aux_fecha_verificacion := null; aux_inciso_verificacion := null; aux_ue_verificacion := null; aux_cedula_verificacion := null; aux_cedula_validacion := null; aux_fecha_validacion := null; aux_ue_validacion := null; aux_inciso_validacion := null; inciso_id := null; unidad_ejecutora_id := null; tipo_usuario := null; aux_tipo_usuario_verificacion := null; aux_tipo_usuario_validador := null; aux_tipo_usuario_rechazo := null; if cod_estado = 3 then -- estado aprobado if requiere_validacion then select dea.doc_ultmod_fecha, dea.doc_ultmod_usu from audit.rupe_documentos_electronicos_aud dea into aux_fecha_validacion, aux_cedula_validacion where dea.doc_id = cod_documento and dea.rev = (select min(rev) from audit.rupe_documentos_electronicos_aud r1 where r1.doc_estado_documento_edo_id = 3 and cod_documento = r1.doc_id and not exists (select r2.rev from audit.rupe_documentos_electronicos_aud r2 where r2.rev > r1.rev and r2.doc_estado_documento_edo_id != 3 and cod_documento = r2.doc_id)); select ua.usu_tipo,ua.usu_unidad_ejecutora_id from audit.rupe_usuarios_aud ua into tipo_usuario, unidad_ejecutora_id where ua.usu_codigo = aux_cedula_validacion and ua.rev = (select max(rev) from audit.rupe_usuarios_aud r1 where r1.usu_ultmod_fecha < aux_fecha_validacion and aux_cedula_validacion = r1.usu_codigo); aux_tipo_usuario_validador := 'ARCE'; -- usuario de punto de atención if tipo_usuario = 1 then aux_tipo_usuario_validador := 'ORGANISMO'; select uej_nombre,uej_inciso_inc_id from rupe.rupe_unidades_ejecutoras into aux_ue_validacion, inciso_id where uej_id = unidad_ejecutora_id; select inc_nombre from rupe.rupe_incisos into aux_inciso_validacion where inc_id = inciso_id; end if; select dea.doc_ultmod_fecha, dea.doc_ultmod_usu from audit.rupe_documentos_electronicos_aud dea into aux_fecha_verificacion, aux_cedula_verificacion where dea.doc_id = cod_documento and dea.rev = (select max(rev) from audit.rupe_documentos_electronicos_aud r1 where r1.doc_estado_documento_edo_id = 2 and cod_documento = r1.doc_id ); if found then inciso_id := null; unidad_ejecutora_id := null; tipo_usuario := null; aux_tipo_usuario_verificacion := null; select ua.usu_tipo,ua.usu_unidad_ejecutora_id from audit.rupe_usuarios_aud ua into tipo_usuario, unidad_ejecutora_id where ua.usu_codigo = aux_cedula_verificacion and ua.rev = (select max(rev) from audit.rupe_usuarios_aud r1 where r1.usu_ultmod_fecha < aux_fecha_verificacion and aux_cedula_verificacion = r1.usu_codigo); aux_tipo_usuario_verificacion := 'ARCE'; -- usuario de punto de atención if tipo_usuario = 1 then aux_tipo_usuario_verificacion := 'ORGANISMO'; select uej_nombre,uej_inciso_inc_id from rupe.rupe_unidades_ejecutoras into aux_ue_verificacion, inciso_id where uej_id = unidad_ejecutora_id; select inc_nombre from rupe.rupe_incisos into aux_inciso_verificacion where inc_id = inciso_id; end if; end if; end if; if not requiere_validacion then select dea.doc_ultmod_fecha, dea.doc_ultmod_usu from audit.rupe_documentos_electronicos_aud dea into aux_fecha_verificacion, aux_cedula_verificacion where dea.doc_id = cod_documento and dea.rev = (select min(rev) from audit.rupe_documentos_electronicos_aud r1 where r1.doc_estado_documento_edo_id = 3 and cod_documento = r1.doc_id and not exists (select r2.rev from audit.rupe_documentos_electronicos_aud r2 where r2.rev > r1.rev and r2.doc_estado_documento_edo_id != 3 and cod_documento = r2.doc_id)); select ua.usu_tipo,ua.usu_unidad_ejecutora_id from audit.rupe_usuarios_aud ua into tipo_usuario, unidad_ejecutora_id where ua.usu_codigo = aux_cedula_verificacion and ua.rev = (select max(rev) from audit.rupe_usuarios_aud r1 where r1.usu_ultmod_fecha < aux_fecha_verificacion and aux_cedula_verificacion = r1.usu_codigo); aux_tipo_usuario_verificacion := 'ARCE'; -- usuario de punto de atención if tipo_usuario = 1 then aux_tipo_usuario_verificacion := 'ORGANISMO'; select uej_nombre,uej_inciso_inc_id from rupe.rupe_unidades_ejecutoras into aux_ue_verificacion, inciso_id where uej_id = unidad_ejecutora_id; select inc_nombre from rupe.rupe_incisos into aux_inciso_verificacion where inc_id = inciso_id; end if; end if; end if; if cod_estado = 2 then -- estado verificado (pendiente de validación) select dea.doc_ultmod_fecha, dea.doc_ultmod_usu from audit.rupe_documentos_electronicos_aud dea into aux_fecha_verificacion, aux_cedula_verificacion where dea.doc_id = cod_documento and dea.rev = (select min(rev) from audit.rupe_documentos_electronicos_aud r1 where r1.doc_estado_documento_edo_id = 2 and cod_documento = r1.doc_id and not exists (select r2.rev from audit.rupe_documentos_electronicos_aud r2 where r2.rev > r1.rev and r2.doc_estado_documento_edo_id != 2 and cod_documento = r2.doc_id)); select ua.usu_tipo,ua.usu_unidad_ejecutora_id from audit.rupe_usuarios_aud ua into tipo_usuario, unidad_ejecutora_id where ua.usu_codigo = aux_cedula_verificacion and ua.rev = (select max(rev) from audit.rupe_usuarios_aud r1 where r1.usu_ultmod_fecha < aux_fecha_verificacion and aux_cedula_verificacion = r1.usu_codigo); aux_tipo_usuario_verificacion := 'ARCE'; -- usuario de punto de atención if tipo_usuario = 1 then aux_tipo_usuario_verificacion := 'ORGANISMO'; select uej_nombre,uej_inciso_inc_id from rupe.rupe_unidades_ejecutoras into aux_ue_verificacion, inciso_id where uej_id = unidad_ejecutora_id; select inc_nombre from rupe.rupe_incisos into aux_inciso_verificacion where inc_id = inciso_id; end if; end if; if cod_estado = 4 then -- estado rechazado select dea.doc_ultmod_fecha, dea.doc_ultmod_usu from audit.rupe_documentos_electronicos_aud dea into aux_fecha_rechazo, aux_cedula_rechazo where dea.doc_id = cod_documento and dea.rev = (select min(rev) from audit.rupe_documentos_electronicos_aud r1 where r1.doc_estado_documento_edo_id = 4 and cod_documento = r1.doc_id and not exists (select r2.rev from audit.rupe_documentos_electronicos_aud r2 where r2.rev > r1.rev and r2.doc_estado_documento_edo_id != 4 and cod_documento = r2.doc_id)); select ua.usu_tipo,ua.usu_unidad_ejecutora_id from audit.rupe_usuarios_aud ua into tipo_usuario, unidad_ejecutora_id where ua.usu_codigo = aux_cedula_rechazo and ua.rev = (select max(rev) from audit.rupe_usuarios_aud r1 where r1.usu_ultmod_fecha < aux_fecha_rechazo and aux_cedula_rechazo = r1.usu_codigo); aux_tipo_usuario_rechazo := 'ARCE'; -- usuario de punto de atención if tipo_usuario = 1 then aux_tipo_usuario_rechazo := 'ORGANISMO'; select uej_nombre,uej_inciso_inc_id from rupe.rupe_unidades_ejecutoras into aux_ue_rechazo, inciso_id where uej_id = unidad_ejecutora_id; select inc_nombre from rupe.rupe_incisos into aux_inciso_rechazo where inc_id = inciso_id; end if; select dea.doc_ultmod_fecha, dea.doc_ultmod_usu from audit.rupe_documentos_electronicos_aud dea into aux_fecha_verificacion, aux_cedula_verificacion where dea.doc_id = cod_documento and dea.rev = (select max(rev) from audit.rupe_documentos_electronicos_aud r1 where r1.doc_estado_documento_edo_id = 2 and cod_documento = r1.doc_id ); if found then inciso_id := null; unidad_ejecutora_id := null; tipo_usuario := null; aux_tipo_usuario_verificacion := null; select ua.usu_tipo,ua.usu_unidad_ejecutora_id from audit.rupe_usuarios_aud ua into tipo_usuario, unidad_ejecutora_id where ua.usu_codigo = aux_cedula_verificacion and ua.rev = (select max(rev) from audit.rupe_usuarios_aud r1 where r1.usu_ultmod_fecha < aux_fecha_verificacion and aux_cedula_verificacion = r1.usu_codigo); aux_tipo_usuario_verificacion := 'ARCE'; -- usuario de punto de atención if tipo_usuario = 1 then aux_tipo_usuario_verificacion := 'ORGANISMO'; select uej_nombre,uej_inciso_inc_id from rupe.rupe_unidades_ejecutoras into aux_ue_verificacion, inciso_id where uej_id = unidad_ejecutora_id; select inc_nombre from rupe.rupe_incisos into aux_inciso_verificacion where inc_id = inciso_id; end if; end if; end if; insertar := true; if aux_prv_id is null then insertar := false; end if; if insertar then insert into rupe.exportar_documentos_indicador values (reg_documento.deo_id,aux_prv_id,aux_tipo_documento,aux_fecha_ingreso,aux_estado, aux_fecha_verificacion,aux_cedula_verificacion,aux_inciso_verificacion,aux_ue_verificacion,aux_fecha_validacion,aux_cedula_validacion, aux_inciso_validacion,aux_ue_validacion,aux_cedula_rechazo,aux_fecha_rechazo,aux_inciso_rechazo,aux_ue_rechazo,aux_tipo_usuario_verificacion, aux_tipo_usuario_validador,aux_tipo_usuario_rechazo); end if; end if; END LOOP; CLOSE C_documento; Raise debug 'finalizo el proceso de generar tabla para exportar documentos '; END;