Running zc157c, using built-in shipping modules and standard 3-page checkout.
Initially, set up the admin's Modules :: Shipping to enable flat, item and storepickup shipping methods as well as the moneyorder payment method (for ease in issue reproduction). Log into a customer's account, add a non-virtual product (i.e. one that needs shipping) to the customer's cart and start the checkout process.
On the checkout_shipping page, choose the Flat/Best Way method and continue to the checkout_payment page. Now, head back to the admin and disable the flat shipping module.
Refresh the page. You'll see that the (no-longer-valid) Flat-rate shipping is still in use. Choose the moneyorder payment method and continue to checkout_confirmation -- the flat-rate shipping is still valid. Click the order-confirmation button and the order's now placed with an invalid shipping method.
This is the easiest way to see this issue. In the real world, it's possible that the shipping-method that the customer chose during the shipping phase of checkout is no longer valid by the time they hit the checkout_confirmation page (or worst, checkout_process). Think "Next Day Air, Early Morning" and the drop-off window with UPS has just expired.
Bookmarks