Hi Frankie,
From the perspective of GUI Design, undo is only for those operations that are not persistent. After booking, database has been changed, there shouldn't be an undo function. The ACID principle tells us that a transaction has to be durable, cannot undo. It is a good design before committing the booking to the database to ask the user for confirmation.
The most important thing with GUI Design (and it goes over all GUI design principles IMO) is ... giving the user the best possible experience (in on other words make a user-friendly GUI).
The problems with confirmation message boxes are that
they make user's work slow they are inefficient Slow, because they force the user to confirm all operations, even the correct ones.
Inefficient, because after 2 days working fulltime, an average CSR will even not read the message box anymore : he will just press "Enter" or click on "Yes".
But anyway, Frankie, what are the differences between "Unbook" and "Undo" after all ?
Unbook is an *additional functionality*. Your client didn't ask for it and may accept it or ... not. And in this context, the fact that a CSR is able to cancel bookings made by another CSR is probably a
feature.
Undo is *an additional feature of an existing functionality*. It's just another way to provide the "Book" functionality, without the need of a confirmation message box and with enhanced security (against mistakes which can be corrected).
Regards,
Phil.