This PR amends the balance process form when processing a return:
Make return.edit service a singleton
Save the return using a database transaction when processing the balance after the refund has been processed, so that any errors stop the return from being progressed
Resolve issue where the refund form continues to display if the balance has been cleared (balance is saved as 0 rather than null)
Email is dispatched after return is saved
To test:
Process a refund using automatic payments
Process a refund using manual payments
Process an exchange where a refund is due
Process an exchange where the customer needs to pay more
This PR amends the balance process form when processing a return:
return.edit
service a singletonnull
)To test: