AbstractCRUDWindow performs the canEdit(object) check on the cached instance of an object before editing the latest instance. The latest instance may not be editable, e.g. a POSTED invoice.
In the case of invoices this is not a problem, as attempts to save are silently ignored. In general however, the canEdit(object) should be applied to the latest instance of the object.