public function eliminar($formulario_id) { $formulario = Doctrine::getTable('Formulario')->find($formulario_id); if ($formulario->Proceso->cuenta_id != UsuarioBackendSesion::usuario()->cuenta_id) { echo 'Usuario no tiene permisos para eliminar este formulario.'; exit; } $proceso = $formulario->Proceso; $fecha = new DateTime(); // Auditar $registro_auditoria = new AuditoriaOperaciones(); $registro_auditoria->fecha = $fecha->format("Y-m-d H:i:s"); $registro_auditoria->operacion = 'Eliminación de Formulario'; $usuario = UsuarioBackendSesion::usuario(); $registro_auditoria->usuario = $usuario->nombre . ' ' . $usuario->apellidos . ' <' . $usuario->email . '>'; $registro_auditoria->proceso = $proceso->nombre; // Detalles $formulario_array['proceso'] = $proceso->toArray(false); $formulario_array['formulario'] = $formulario->toArray(false); unset($formulario_array['formulario']['proceso_id']); foreach ($formulario->Campos as $campo) { $campo_array = $campo->toArray(false); if ($campo->documento_id != null) { $campo_array['documento'] = $campo->Documento->nombre; } unset($campo_array['documento_id']); $formulario_array['campos'][] = $campo_array; } $registro_auditoria->detalles = json_encode($formulario_array); $registro_auditoria->save(); $formulario->delete(); redirect('backend/formularios/listar/' . $proceso->id); }
/** * * Vuelve a la/s etapa/s anterior/es * En caso de ser la última etapa(ya finalizada), vuelve a dejar el trámite en curso * * @param unknown $etapa_id */ public function retroceder_etapa($etapa_id) { $this->form_validation->set_rules('descripcion', 'Razón', 'required'); $respuesta = new stdClass(); if ($this->form_validation->run() == TRUE) { $fecha = new DateTime(); $etapa = Doctrine::getTable("Etapa")->find($etapa_id); $tramite = Doctrine::getTable("Tramite")->find($etapa->tramite_id); if ($etapa->pendiente == 1) { // Tarea anterior de la actual, ordenada por las etapas $tareas_anteriores = Doctrine_Query::create()->select("c.tarea_id_origen as id, c.tipo, e.id as etapa_id, e.etapa_ancestro_split_id as origen_paralelo")->from("Conexion c, c.TareaOrigen to, to.Etapas e")->where("c.tarea_id_destino = ?", $etapa->tarea_id)->andWhere("e.tramite_id = ?", $tramite->id)->andWhere("e.id != ?", $etapa->id)->orderBy("e.id DESC")->fetchOne(); if (count($tareas_anteriores) > 0) { // Eliminamos la etapa actual $id_etapa_actual = $etapa->id; $id_tarea_actual = $etapa->tarea_id; $etapa->delete(); $tipo_conexion = $tareas_anteriores->tipo; // Si no es union, debe retroceder solo a la ultima etapa de la tarea anterior if ($tipo_conexion != 'union') { $tareas_anteriores = array($tareas_anteriores); } else { $tareas_anteriores = Doctrine_Query::create()->select("c.tarea_id_origen as id, c.tipo, e.id as etapa_id")->from("Conexion c, c.TareaOrigen to, to.Etapas e")->where("c.tarea_id_destino = ?", $etapa->tarea_id)->andWhere("e.tramite_id = ?", $tramite->id)->andWhere("e.id != ?", $etapa->id)->andWhere("e.etapa_ancestro_split_id = ?", $tareas_anteriores->origen_paralelo)->orderBy("e.id DESC")->execute(); } // Si es union va retroceder a todas las etapas de dicha union, sino tareas_anteriores tendra un solo elemento foreach ($tareas_anteriores as $tarea_anterior) { if ($etapa_anterior = Doctrine::getTable("Etapa")->find($tarea_anterior->etapa_id)) { // Auditoría de la etapa a la cual se regresa $registro_auditoria = new AuditoriaOperaciones(); $registro_auditoria->fecha = $fecha->format("Y-m-d H:i:s"); $registro_auditoria->motivo = $this->input->post('descripcion'); $registro_auditoria->operacion = 'Retroceso a Etapa'; $registro_auditoria->proceso = $etapa_anterior->Tramite->Proceso->nombre; $registro_auditoria->cuenta_id = UsuarioBackendSesion::usuario()->cuenta_id; $usuario = UsuarioBackendSesion::usuario(); $registro_auditoria->usuario = $usuario->nombre . ' ' . $usuario->apellidos . ' <' . $usuario->email . '>'; /* Formatear detalles */ $etapa_array['proceso'] = $etapa_anterior->Tramite->Proceso->toArray(false); $etapa_array['tramite'] = $etapa_anterior->Tramite->toArray(false); $etapa_array['etapa'] = $etapa_anterior->toArray(false); unset($etapa_array['etapa']['tarea_id']); unset($etapa_array['etapa']['tramite_id']); unset($etapa_array['etapa']['usuario_id']); unset($etapa_array['etapa']['etapa_ancestro_split_id']); $etapa_array['tarea'] = $etapa_anterior->Tarea->toArray(false); $etapa_array['usuario'] = $etapa_anterior->Usuario->toArray(false); unset($etapa_array['usuario']['password']); unset($etapa_array['usuario']['salt']); $etapa_array['datos_seguimiento'] = Doctrine_Query::create()->from("DatoSeguimiento d")->where("d.etapa_id = ?", $etapa_anterior->id)->execute(array(), Doctrine_Core::HYDRATE_ARRAY); $registro_auditoria->detalles = json_encode($etapa_array); $registro_auditoria->save(); } $etapas_otra_rama = array(); if ($tipo_conexion == 'paralelo' || $tipo_conexion == 'paralelo_evaluacion') { // Select de otras ramas para evitar inconsistencias $etapas_otra_rama = Doctrine_Query::create()->select("c.tarea_id_destino as id")->from("Conexion c, c.TareaDestino to, to.Etapas e")->where("c.tarea_id_origen = ?", $tarea_anterior->id)->andWhere("c.tarea_id_destino != ?", $id_tarea_actual)->andWhere("c.tarea_id_destino != c.tarea_id_origen")->andWhere("e.etapa_ancestro_split_id = ?", $tarea_anterior->etapa_id)->execute(); } // Si es en paralelo, y hay etapas en otras ramas, no se pone en pendiente aun if (count($etapas_otra_rama) == 0) { Doctrine_Query::create()->update("Etapa")->set(array('pendiente' => 1, 'ended_at' => null))->where("id = ?", $tarea_anterior->etapa_id)->execute(); } } } } else { // Auditoría $registro_auditoria = new AuditoriaOperaciones(); $registro_auditoria->fecha = $fecha->format("Y-m-d H:i:s"); $registro_auditoria->motivo = $this->input->post('descripcion'); $registro_auditoria->operacion = 'Retroceso a Etapa'; $registro_auditoria->proceso = $etapa->Tramite->Proceso->nombre; $registro_auditoria->cuenta_id = UsuarioBackendSesion::usuario()->cuenta_id; $usuario = UsuarioBackendSesion::usuario(); $registro_auditoria->usuario = $usuario->nombre . ' ' . $usuario->apellidos . ' <' . $usuario->email . '>'; /* Formatear detalles */ $etapa_array['proceso'] = $etapa->Tramite->Proceso->toArray(false); $etapa_array['tramite'] = $etapa->Tramite->toArray(false); $etapa_array['etapa'] = $etapa->toArray(false); unset($etapa_array['etapa']['tarea_id']); unset($etapa_array['etapa']['tramite_id']); unset($etapa_array['etapa']['usuario_id']); unset($etapa_array['etapa']['etapa_ancestro_split_id']); $etapa_array['tarea'] = $etapa->Tarea->toArray(false); $etapa_array['usuario'] = $etapa->Usuario->toArray(false); unset($etapa_array['usuario']['password']); $etapa_array['datos_seguimiento'] = Doctrine_Query::create()->from("DatoSeguimiento d")->where("d.etapa_id = ?", $etapa->id)->execute(array(), Doctrine_Core::HYDRATE_ARRAY); $registro_auditoria->detalles = json_encode($etapa_array); $registro_auditoria->save(); $etapa->pendiente = 1; $etapa->ended_at = null; $etapa->save(); if ($tramite->pendiente == 0) { $tramite->pendiente = 1; $tramite->ended_at = null; $tramite->save(); } } $respuesta->validacion = TRUE; $respuesta->redirect = site_url('backend/seguimiento/ver/' . $tramite->id); } else { $respuesta->validacion = FALSE; $respuesta->errores = validation_errors(); } echo json_encode($respuesta); }
public function eliminar($documento_id) { $documento = Doctrine::getTable('Documento')->find($documento_id); if ($documento->Proceso->cuenta_id != UsuarioBackendSesion::usuario()->cuenta_id) { echo 'Usuario no tiene permisos para eliminar este documento.'; exit; } $proceso = $documento->Proceso; $fecha = new DateTime(); // Auditar $registro_auditoria = new AuditoriaOperaciones(); $registro_auditoria->fecha = $fecha->format("Y-m-d H:i:s"); $registro_auditoria->operacion = 'Eliminación de Documento'; $usuario = UsuarioBackendSesion::usuario(); $registro_auditoria->usuario = $usuario->nombre . ' ' . $usuario->apellidos . ' <' . $usuario->email . '>'; $registro_auditoria->proceso = $proceso->nombre; // Detalles $documento_array['proceso'] = $proceso->toArray(false); $documento_array['documento'] = $documento->toArray(false); unset($documento_array['documento']['proceso_id']); if ($documento->hsm_configuracion_id) { $documento_array['hsm_configuracion'] = $documento->HsmConfiguracion->toArray(false); } unset($documento_array['hsm_configuracion_id']); $registro_auditoria->detalles = json_encode($documento_array); $registro_auditoria->save(); $documento->delete(); redirect('backend/documentos/listar/' . $proceso->id); }
public function eliminar_tarea($tarea_id) { $tarea = Doctrine::getTable('Tarea')->find($tarea_id); if ($tarea->Proceso->cuenta_id != UsuarioBackendSesion::usuario()->cuenta_id) { echo 'Usuario no tiene permisos para eliminar esta tarea.'; exit; } $proceso = $tarea->Proceso; $fecha = new DateTime(); // Auditar $registro_auditoria = new AuditoriaOperaciones(); $registro_auditoria->fecha = $fecha->format("Y-m-d H:i:s"); $registro_auditoria->operacion = 'Eliminación de Tarea'; $usuario = UsuarioBackendSesion::usuario(); $registro_auditoria->usuario = $usuario->nombre . ' ' . $usuario->apellidos . ' <' . $usuario->email . '>'; $registro_auditoria->proceso = $proceso->nombre; $registro_auditoria->cuenta_id = UsuarioBackendSesion::usuario()->cuenta_id; // Detalles $tarea_array['proceso'] = $proceso->toArray(false); $tarea_array['tarea'] = $tarea->toArray(false); unset($tarea_array['tarea']['posx']); unset($tarea_array['tarea']['posy']); unset($tarea_array['tarea']['proceso_id']); $registro_auditoria->detalles = json_encode($tarea_array); $registro_auditoria->save(); $tarea->delete(); redirect('backend/procesos/editar/' . $proceso->id); }