Here is my implementation and hope someone finds it useful.
I used part of Kendesh’s Abort
Modify with my idea of using the Ticket State and using the advice of Emre in keeping the voided record, here is the following highlights. Kendash’s method use the Ticket Type can be seen easily in a Ticket Lister or Ticker Explorer while using the Ticket State will signify the Ticket State more logically for other processes such when using some of the default Rules from the demo. Keeping the records of items and price in a Void/Aborted ticket has its advantages as well. I also used Ticket Tags base on another thread to record whether there money changing hands. The most important part in my whole implementation is noting the default
The standard version of Abort will allow you to see the Aborted Tickets in Ticket Explorer and Ticket Lister
I added the Ticket State and use that as a filter to create a more visual version for the scenario “when the boss barges in and want to check why this and that ticket with a whole Salmon is Aborted”
Assume the scenario that the customer left without paying but food has already been submitted, the waiter/cashier can just Abort/Voided the whole ticket. Kendash prefers not to use the Abort on submitted orders but my case needs it to here as well.
In yet the final scenario, when a ticket is actually paid but the waiter/cashier decided to Abort/Void purposely or not, the Ticket Tags Kept a record of money changing hands.
**Note: This Reopen Ticket Process is not fully thought thru. there is scenario where we need to Reopen Ticket but necessarily refunding the ticket. Currently it default to alter the Ticket State to Unpaid when pressed. I will spend some time to see whether an Unlock make better sense and add a Refund Process separately. Of course, a lot more tagging and Balance adjustment need to make it the whole process really correct.
The default(that comes in the standard download demo)Payment Check rule in Before Closing Ticket event will alter the Ticket State to “Paid” upon balance being zero using Kendash standard Abort method, so I added this rule in Before Closing Ticket event to alter the Ticket State to Aborted.
The Abort Order action with Emre’s advice
The Ticket Tags used to keep track of money changing hands by QMcKay
I have not checked the accounting of my implementation, so you should check whether the numbers make sense before using the above method(s).
Improvement needed in who Aborted/Voided the Ticket, especially the Paid ones - any suggestion how to implement that?
I also realize there is a need to implement a Refund process along with this Abort because they serve different purposes and thus the tagging should be even more extensive to indicate what actually has happened during the flip-flopping. Expect to see an update to this.