When changing an order status when I select "Shipped" and hit the "Add History" button, the order is changed to "Canceled" status. I can change it to any other status without difficulty but changing it to shipped throws it back into canceled. This error effects all orders that include a coupon code being used. I'm not using any third party coupon modules

I'm getting the same error. I've just noticed it today. All orders with coupons are automatically set to "canceled". I've tried changing it to complete in the history section but it automatically sets to cancelled.

I've processed a second order without the a coupon and everything seems to work fine.

Hi, im having the very same issue.. (and tested on a clean install of OC 2.3.0.2 no mods)

Uses Per Coupon: blank
Uses Per Customer: 1

result - customer can use the coupon to get 10% discount an unlimited amount of times

However, what I did notice was the following orders where the customer has used that coupon more than once, the following order's status' are all set to Cancelled. I think it has a relation to this issue https://github.com/opencart/opencart/issues/3657

Changing the order status to Pending or Complete (as suggested above) had no effect, the customer can still use the coupon an unlimited amount of times.

Reading Daniel's rants to ppl's complaints about this order status & coupon issue in the github thread suggests that this is by design? WTF?

Anyway, even setting the coupon to
Uses Per Coupon: 2
Uses Per Customer: 1
Allows the coupon to be used an unlimited amount of time...
WTF!!!
How can this be fixed to work as it should???? And if it can't, hHas this be 'fixed' in OC3?

If not, think it's time to jump ship and try a new cart.. having read Daniel's comments in said thread and attitude to bugs. Shame really.

I've had the same problem in the past. There are 2 things that could cause it:

- The discount code is expired on the day you change orderstatus. OpenCart will not change the status of an order when the code is expired on the day you want to change the status. (Example: dode was fine when entering on friday, not when changing orderstatus on monday) Quickfix is extend the expiration date for the used code untill the day you want to change the status.
- Capitalization, codes are entered like 'THIS' in the backend, but customer can enter them like 'this'. OpenCart can't handle this somehow. Quickfix is change the entered code in the order to a capitalized version.