We recently had a staff member accidentally delete an invoice and we cannot restore that invoice and cannot remember what was against it. I think it would be very beneficial to have an option to just archive invoices before going to the archive area deciding to delete them permanently. This would also mean you could stop certain staff from being able to accidentally delete invoices but only being able to archive them.
I think there are several good suggestions you have raised here.
In my head, being able to prevent people from deleting invoices (or other items) is an improvement to Role Based Access Control (i.e. giving read-only access to invoices).
Being able to restore a deleted invoice (or any item in Syncro!) is separately a great idea. Rather than an archive, I think of this as a retention period: invoices / assets / customers / etc. go to a “trash” section that gets permanently deleted after X days.
Being able to archive items is different again for me. You might just want to archive invoices, but I would also like to be able to archive customers as well. In my head, this takes the entry out of the normal “workflow” for searching / displaying anywhere, unless we explicitly go into the archived section.