Records in salesforce are posted/updated the moment the transaction is complete. What you may need is to store the values of fields in shadow fields and alert the user that he/she needs to submit the record for approval. The approval process when completed can copy the values from these shadow fields to the actual fields.
All of this can be done using standard. No code.
So you'll need a shadow field to keep the new value, and the record should be locked from edition.
So whenever the user updates or changes the currency, launch a process builder that will
- Launch the approval process (which will lock the record from edition for that user)
- Update the shadow field to have the new value
- On approval, update the currency field with the value stored in the shadow field
How to update the shadow field ? As mentionned in point 3., you want to update the shadow field value when the record is being approved.
When you create an approval process, you're greeted with this screen which proves to be helpful for the first times you'll use the feature.
What is interesting of course is the line where it mentions that you can add final approval actions, such as update a field
Leaving this screen, you'll have the approval process in a whole. You'll want to add a new final approval action Field Update
Now you'll be in the screen where you can tell which field has to updated, and with which value. You'll want to update your old value with the value of your shadow field of course, so that it reflets your use case.
Voilà, now the shadow has completed his task of holding the new value as long as the record wasn't approved.