A full audit trail is automatically recorded for every change in the system. Selecting records as they were at any point of time is standard functionality.
On each standard screen there is a log tab which shows the changes to this and related records.
Each transaction record every change to every record within that transaction.
The journal can be searched using a number of very suffocated commands.
Any transaction or set of transaction can be reversed by an administrator.