Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 /**
  *
  * 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);
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 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);
 }