Believe Stephane meant to say the terminating event is not ONLY on the business object. Because of course you can use business object events as terminating events. Either provided events or custom events added by extending the business object by delegation. We have training, the Practical Workflow for SAP book that covers this stuff and many many tutorials...it's part of basic training as as workflow developer.
Btw if you are using a terminating event the option for synchronized should be OFF - otherwise you are telling the workflow to complete the task immediately without waiting for the terminating event. Similarly confirm end of processing should be OFF as that is telling the workflow to wait for the user to explicitly click an end of processing/task completed option. Again this is basic knowledge for any workflow person and covered in books, tutorials, and training.
You don't mention which Fiori app you are using?! That could make a big difference to what is happening. E.g. If it's My Inbox you need to implement the BADI /IWWRK/BADI_WF_BEFORE_UPD_IB to control what happens when the Approve button is selected.
Also if it's a different Fiori app the action could be something entirely different as it would depend on how that particular app behaves.
So essentially you are on the right track by creating your own routine to release the sales order, you just need to work out where to put it. Likewise the idea to use a terminating event is a good one... as that would confirm the order is released.