Пример #1
0
 protected function GenerateResponse()
 {
     try {
         $this->response = ConsignacionesController::Cancelar(isset($_GET['productos_almacen']) ? json_decode($_GET['productos_almacen']) : null);
     } catch (Exception $e) {
         //Logger::error($e);
         throw new ApiException($this->error_dispatcher->invalidDatabaseOperation($e->getMessage()));
     }
 }
 /**
  *
  *Este metodo desactiva un usuario, usese cuando un empleado ya no trabaje para usted. Que pasa cuando el usuario tiene cuentas abiertas o ventas a credito con saldo.
  *
  * @param id_usuario int Id del usuario a eliminar
  **/
 public static function EliminarUsuario($id_usuario)
 {
     Logger::log("Eliminando usuario " . $id_usuario);
     //Se obtiene y se verifica que el usuario exista en la base de datos.
     $usuario = UsuarioDAO::getByPK($id_usuario);
     if (is_null($usuario)) {
         Logger::error("El usuario con id " . $id_usuario . " no existe");
         throw new Exception("El usuario no existe", 901);
     }
     //Si el usuario ya esta inactivo, no se le hacen cambios.
     if (!$usuario->getActivo()) {
         Logger::warn("El usuario con id: " . $id_usuario . " ya esta inactivo");
         throw new Exception("El usuario ya esta inactivo", 901);
     }
     //Si el saldo del ejercicio del usuario no es cero, siginifica que debe o que
     //se le debe, entonces no se puede eliminar.
     if ($usuario->getSaldoDelEjercicio() != 0) {
         Logger::error("El usuario con id: " . $id_usuario . " no tiene un saldo en ceros");
         throw new Exception("El usuario no tiene un saldo en ceros", 901);
     }
     //Si el usuario tiene una orden de servicio activa, no se puede eliminar
     $ordenes_de_servicio = OrdenDeServicioDAO::search(new OrdenDeServicio(array("id_usuario_venta" => $id_usuario)));
     foreach ($ordenes_de_servicio as $orden_de_servicio) {
         if ($orden_de_servicio->getActiva()) {
             Logger::error("El usuario " . $id_usuario . " no puede ser desactivado, tiene la orden " . $orden_de_servicio->getIdOrdenDeServicio() . " activa");
             throw new Exception("El usuario no puede ser desactivado pues aun cuenta con ordenes de servicio activas", 901);
         }
     }
     //Se cambia su estado activo a falso y se le asigna como hoy la fecha de baja.
     $usuario->setActivo(0);
     $usuario->setFechaBaja(time());
     DAO::transBegin();
     try {
         //Si el usuario era consignatario se desactiva como tal.
         if ($usuario->getConsignatario()) {
             ConsignacionesController::DesactivarConsignatario($id_usuario);
         }
         //Se actualiza el usuario
         UsuarioDAO::save($usuario);
         //Se eliminan los registros de la tabla permiso_usuario que contengan a este usuario
         $permisos_usuario = PermisoUsuarioDAO::search(new PermisoUsuario(array("id_usuario" => $id_usuario)));
         foreach ($permisos_usuario as $permiso_usuario) {
             PermisoUsuarioDAO::delete($permiso_usuario);
         }
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo eliminar el usuario: " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("No se pudo eliminar el usuario: " . $e->getMessage());
         }
         throw new Exception("No se pudo eliminar el usuario, consulte a su administrador de sistema", 901);
     }
     DAO::transEnd();
     Logger::log("Usuario eliminado exitosamente");
 }