Create Ticket Action: Custom Clone Ticket Values

Did you enabled Execute Once setting on automation command? If not it executes automation command for each selected orders once.

No Execute Once is not enabled. I have narrowed it down to this behavior.

I have it set to pay ticket after Update Order is performed in the same Rule. If Pay Ticket action is used after Update Order it will only update first selected order regardless of Execute Once enabled or disabled. if I take Pay Ticket out it will updated all selected orders correctly.

I need Pay Ticket in so it settles the ticket before it Clones it.

I don’t think you’ll be able to do all of them in a single rule. When you create a new ticket all actions will run against that ticket. It is a little complicated.

  1. You’ll repoen ticket.
  2. You’ll void orders.
  3. You’ll settle ticket.
  4. You’ll clone ticket.

But you’ll loose selection until you’ll be able to clone ticket. So it seems what you really need is not cloning selected orders. You need to clone orders that have a specific state.

Note: You should enable Exeucte Once setting to be able to clone selected orders.


  1. You’ll reopen ticket.
  2. Store ticket id somewhere.
  3. Void orders.
  4. Clone ticket
  5. update orders on cloned ticket.
  6. Close cloned ticket.
  7. Reload original ticket with stored id.
  8. Settle original ticket.

Ok I will play around with it more today. I understand what you are saying. I may need to just do some more rule magic.

Ok I have some strange behavior. I am using a couple constraints. I am avoiding tickets with 0 items and 0 payment by putting {ORDER COUNT} Equals 1 and {ORDER COUNT} Greater 1 with an Ask Question when you press the Return Item button…

Basically if Order Count is greater than 1 it will Ask the question and then procede with a response that does the clone ticket method…

If order count equals 1 then it does not ask the question and it does not clone order it just converts the ticket to refund and processes it through refund transaction. This prevents tickets with 0 value.

Here is the strange behavior:

Update Order seems to work if I set Execute Once on my Ask Question Automation Command. I can select multiple items press Return Item Command and it will Ask the question Void all of the selected items. pay ticket and clone ticket… HOWEVER the cloned ticket has cloned ALL of the orders even though I set the action to False.

I am still playing with the rules but I thought this behavior was kind of odd.

EDIT: it seems like if the Clone Ticket action is fired from an Ask Question Action and the Ask Question Action is set as Execute Once it skips the False validation on the Clone Ticket/Clone All Orders

Just to clarify… the rule is closing ticket and then cloning in same rule. I know it can catch the False validation if I insert it after close ticket in same rule because it was cloning first selected item before I put the Execute Once validation in. But after selecting Execute Once on the Ask Question Command button it started skipping the false validation completely

I will try using state tracking and play around with that see if I can get different result.

EDIT: after rereading your post. I think I understand why it is doing this behavior. I am trying States now. I think the States method might work better. It seems to be a more natural approach vs trying to open, close, store ticket, and editing both tickets etc.

@Jesse I’ve implemeneted some actions to store selected orders and restore them when needed so probably that will solve your issue.

However I want to clarify something. If we refund $40 of a $100 sale shouldn’t our Account screen display something like that?

Account Name     |   Debit     |   Credit    |   Balance  |   
Sales Accounts   |       40.00 |      300.00 |     260.00 |
  Sales          |             |      300.00 |     300.00 |
  Refunds        |       40.00 |             |      40.00 |
Payment Accounts |      300.00 |       40.00 |     260.00 |
  Cash           |      100.00 |       40.00 |      60.00 |
  CC             |      200.00 |             |     200.00 |

Yes I have some technical formatting to do so it all reports correctly. The main thing is how it handles Calculations. Currently I have not found a way for it to handle that. When you cancel payments it cancels the tip calculation as well. For it to be accurate it should not cancel the tip calculation.

Imho you shouldn’t alter past tickets. You’ll just create a ticket for what you’re refunding. If you’re refunding tax, that ticket will include tax or if you refund tips (in some cases it may happen) it should include tips.

It is creating a new ticket. and it is calculating tax… I just have it hidden on my general screen. The only refund that is not creating a new ticket is a full ticket refund… in other words everything on the ticket I just convert it to Refund ticket.

… but you’re also voiding items on original ticket. Why you need that?

Edit: you can also create a new ticket for full refund. I don’t think you need to handle another case for it. It unnecessarily increases complexity.

Because I have refunds running completely separate including the sales. It is so my Sales Accounts are accurate. I have Refunds Sales accounts that I view to track refunds. In other words my refund Sales do not decrease my main sales accounts balance.

I could get it to work the way you described however… it may be easier I could avoid what I am trying to do now. I will look into that.

If I allow you to list transactions (account details) for both sales and refund accounts (think it like details of blue groups) does it solve your need?

Part of the reason I wanted the original ticket to be edited… is also for another form of tracking…

It opens up the ability to track how many times someone attempts to return item A on receipt 1023 If they return to the store and try to return the item again… my employee will scan the receipt and see that Item A was already refunded. Technically you could go even more advanced and insert some ask questions to tag ID with returns allowing you to track stuff like how many returns without a receipt a customer has made in the last month etc.

OK got it. Trying to prevent multiple returns is a good idea!

Keep in mind that I am developing this for Retail environment where this sort of tracking is VERY valuable.

EDIT: There are a few more requests I will be making but I am not to that point yet. Few things like when I do convert a current ticket into Refund ticket … it copies the Ticket # instead of generating a new one… I know it does this because it is designed too… but It would be nice if it could use a Refund Ticket Number Generator when ticket is changed.

Great! Like I’ve said probably the issue you’re facing is loosing selection while executing specific actions. I’ll let you store / restore selection on next update. I hope that will solve the issue.

That will work. The accounting portion I can work some magic to get it looking more cohesive… I dont think I can get the Work Period Report to be 100% accurate but that is ok I do not like it anyway… I would rather use Custom Report and never look at WPR anyway.

The main issue with WPR is I am using Pre Order for my Refund Tickets so it does not decrease inventory… so it will show all refund sales as Pre Order sales :stuck_out_tongue: IF I had a button called Refunds that does basically same thing as Pre Order it would report correctly. But then again I do not plan on using WPR I will be using strictly custom reports

If I could disable all of the default reports and just list my custom reports on that left panel I would.

EDIT: Finally with this setup… I will not be looking at my accounting screen at all unless something is not working correctly. I will be using my Accounting Dashboard that I made which run live reports. I will be creating very detailed custom Accounting reports to pull that information.

You don’t need to use Pre-Order tickets.

You’ll use Update Order action to set Decrease Inventory setting to false for all orders.

Another solution might be just setting Calulate Price to false on original ticket and enable Increase Inventory for orders on refund ticket.