You can use the User to store stuff temporarily.

Or you can use the Invoice table to store a snapshot of the invoice pre-amendment.

Then on edit, set a status on the Invoice to “being edited” and then create a copy. Use autobind in edit mode. On “Save” (which is will probably what happens most of the time) turn the status back to “done”.

On “Cancel” instead, copy the data from the stored Invoice back over the top.

This then leaves the rare case of them quitting the app in the middle of an edit. Either ask them next time they go in to edit (like Word’s recovered document) or simpler just to copy the edits back.

The reverse of this (which doesn’t leave unsaved edits hanging around) is to create a new invoice from the old data with a status of “draft” and on “save” make that the live one.

The latter is a fairly good way of doing “new” as well. Create a skeleton invoice in draft mode then update the status when they want to create a new one. This does leave “draft” invoices hanging around but they can be cleaned up or left. Useful for getting an idea of how many times users quit in the middle of something. Which in my experience is a lot more often than you think :slight_smile: