I think I got it. Changing includes/classes/ajax/zcAjaxOnePageCheckout.php on line 54 seems to do the trick. I've changed it from
Code:
if ($_POST['shipping_is_billing'] == 'true') {
$_SESSION['sendto'] = $_SESSION['billto'];
$_SESSION['shipping_billing'] = true;
$ship_to = 'billing';
$_SESSION['opc']->setTempShippingToBilling();
}
to
Code:
if ($_POST['shipping_is_billing'] == 'true') {
$_SESSION['sendto'] = CHECKOUT_ONE_GUEST_SENDTO_ADDRESS_BOOK_ID;
$_SESSION['shipping_billing'] = true;
$ship_to = 'billing';
$_SESSION['opc']->setTempShippingToBilling();
}
Reason for this change is because if sendto==billto, it doesn't pass validation in validateTempShiptoAddress()
Initial tests indicate it's working OK, but I'm still unsure if this should be considered as an actual solution and what downsides it may have, or evn worse, what problems it may cause. Any ideas would be welcomed, especially if you can foresee any problems by using this code. Thanks!