I'm going around in circles trying to use Drupal Commerce to make an ecommerce site where some orders cost money and some don't (because some users have coupons that make products free).
I've set up the Checkout process as seen in the screenshot below and have created a rule as such
- Rules Event: Process checkout pane
- Rules Conditions: Price comparison (commerce order = $0)
- Rules Actions:
- Change pane properties (disable billing information, off-site payment redirect, Payment)
- Update the order state to (pending/complete)
With this setup when the user goes through without a coupon it all works fine. When the user uses a coupon to get the price to zero on the Checkout page the user presses the Continue to next step button and goes to an empty Review page (the panes have been set to disabled so there is nothing to see) and they can't progress any further.
Pressing the Continue button on that page just bounces them back to the same page. If they press Cancel and go back to the shopping cart, then on through checkout and press "Continue to next step" again (the coupon has been remembered and the total is still $0) then get sent to the Checkout Complete page and
hook_commerce_checkout_complete($order) is called.
I've tried adding extra actions to the rule, to complete the checkout or change the order status, but they have strange side effects like going to the Review page anyway, or calling that hook twice.
Can anyone help me set up the checkout and rules so that a free order goes straight to complete from the checkout page, whilst still maintaining the normal path for orders that require payments?