It seems that the problem can be summarized as follows:
Have one virtual product in your cart. Hit the Checkout button. The flow should skip past the "Checkout - Step 1" step and go automatically to "Payment Method - Step 2". The shipping text at the bottom should show "Free Shipping".
Here's what looks like happens.
When hitting the checkout button, the flow goes into the "Checkout - Step 1" stage. In here, there is logic that says:
/includes/modules/pages/checkout_shipping/header_php.php
and then redirects to the next stage in the flow. Eventually it gets to a /includes/modules/order_total/ot_shipping.php fileCode:// if the order contains only virtual products, forward the customer to the billing page as // a shipping address is not needed if ($order->content_type == 'virtual') { $_SESSION['shipping'] = 'free_free'; $_SESSION['shipping']['title'] = 'free_free'; $_SESSION['sendto'] = false;
$_SESSION['shipping'] has a value of 'free_free' from above, but $_SESSION['shipping']['id'] only has a value of 'f'.Code:function process() { ... (snip) ... $module = substr($_SESSION['shipping']['id'], 0, strpos($_SESSION['shipping']['id'], '_'));
in the same function:
I may be missing something, but for this 'free_free' type, it never sets the "shipping_cost"... and how it gets a shipping cost of 'f' I haven't found yet.Code:... (snip) ... if ($_SESSION['shipping'] == 'free_free') { $order->info['shipping_method'] = FREE_SHIPPING_TITLE; }
Can anyone give a solution to the issue? Adding $order->info['shipping_cost'] = 0; to that last code snippet seems to work, but I want to know if there are other side-effects that it would cause? Right place for the 'patch'?



