Lock a record (quote, sales order) for future audit

Lock a record (quote, sales order) for future audit

We need a way to lock a record manually or via custom function.

Here is the use case: once a customer issues a PO against a quote, we don't want sales reps modifying the quote anymore due to audit reasons, but sales reps still own the account and should still be able to view or clone the quote.

Thanks.