I've got the problem that virtual products directly become completed after the invoiced.
The thing is, I would what them to become "processing".
If I have a voucher, then my custom code generates the voucher codes, sends a mail, adds it to the customer profile, etc.
I'am doing that this way because if the customer selects bank transfer I want to wait for the payment. As soon as i got that I'll make the invoice and then my custom logic completes the order.
How could I achieve that it's not going to completed directly?
Yes i understand the requirement which you are trying to achieve and it is reported issue over the github as well - https://github.com/magento/magento2/issues/3922 - but more or less its showing as correct behavior as no shipping stage is required so if we generate the invoice then it will marked order as complete
But as a work-around i would suggest you to put that order as an Hold from the backend and from the frontend showcase like it should be in "Processing" and then once you confirm with the bank that payment is received you can generate the invoice and mark it as complete.
Another approach would be add a new status under System / Order Statuses :
The assign this new order status to that order before creating the invoice.
Hope it helps !
I am looking for a similar solution.
I don't want a digital gift card order to complete automatically when an invoice is created. We have a custom gift card, so I have stopped Magento to generate gift card automatically & email but I don't know how to keep order status as processing until I mark the order as shipped even though it's digital.
Can you please help?
@lowes Did you ever find a way?
I have orders to authorize and capture for all payment methods in the site, however, I specifically need some "pause" in between invoiced and completed statuses when there is no shipment required without changing the payment auth & capture.
I would rather not create some ungodly logic which can break 10 other things later.