You could customize it so you cannot checkout with the Heavy Product in the cart with any other Product in the cart by adding the code in
RED to:
/includes/modules/pages/shopping_cart/header_php.php
// used to display invalid cart issues when checkout is selected that validated cart and returned to cart due to errors
if (isset($_SESSION['valid_to_checkout']) && $_SESSION['valid_to_checkout'] == false) {
$messageStack->add('shopping_cart', ERROR_CART_UPDATE . $_SESSION['cart_errors'] , 'caution');
}
// bof: warn no checkout with mixed cart
$products_id_heavy = 12;
if ($_SESSION['cart']->get_quantity($products_id_heavy) != $_SESSION['cart']->count_contents()) {
$messageStack->add('shopping_cart', 'Checkout unavailable with Heavy Product in cart' , 'caution');
}
// eof: warn no checkout with mixed cart
// build shipping with Tare included
/includes/modules/pages/checkout_shipping/header_php.php
// bof: warn no checkout with mixed cart
$products_id_heavy = 12;
if ($_SESSION['cart']->get_quantity($products_id_heavy) != $_SESSION['cart']->count_contents()) {
zen_redirect(zen_href_link(FILENAME_SHOPPING_CART));
}
// eof: warn no checkout with mixed cart
// if no shipping destination address was selected, use the customers own address as default
/includes/modules/pages/checkout_payment/header_php.php
// bof: warn no checkout with mixed cart
$products_id_heavy = 12;
if ($_SESSION['cart']->get_quantity($products_id_heavy) != $_SESSION['cart']->count_contents()) {
zen_redirect(zen_href_link(FILENAME_SHOPPING_CART));
}
// eof: warn no checkout with mixed cart
// get coupon code
And set the products_id for the Heavy Product where 12 is defined in these:
$products_id_heavy = 12;
to your Heave Product's products_id ...
This will display a message about no checkout when the Heavy Product is combined with other Products ...