I don't know how to even do that, but I'll give it a try. Thanks for the suggestion!
Printable View
I wasn't able to accomplish your suggestion (my knowledge of PHP is quite... how should I put it "primitive" :blush:) however I was able (sort of) to do what I needed without any errors (sort of) by moving the code around the tpl_modules_opc_submit_block.php page and looking at "hiding" the buttons instead preventing them from displaying, which surprisingly worked.
If an order that qualified for free shipping receives any discounts that lowers the total, the message is displayed on top of the buttons, preventing the customer from checking out. HOWEVER, if the customer decides to change the shipping option, the page doesn't refresh keeping the buttons hidden, not good.Code:<?php
// -----
// Part of the One-Page Checkout plugin, provided under GPL 2.0 license by lat9 ([email protected]).
// Copyright (C) 2013-2017, Vinos de Frutas Tropicales. All rights reserved.
//
// Check to see that at least one shipping-method and one payment-method is enabled; if not, don't render the submit-button.
//
if ($shipping_module_available && $payment_module_available) {
// -----
// Set up two form-submittal buttons, one for payment methods that require confirmation and one for those that don't.
// This page's header_php.php has created an array of payment modules that require confirmation, which is pulled into the
// page's jscript_main.php.
//
?>
<!-- bof disable checkout button from displaying 1 of 2 -->
<?php
if (!IS_ADMIN_FLAG) {
global $order;
if (($order->info['total'] < 100) && is_object ($freeoptions)) {
echo '<div style="border: 3px solid #777777; padding: 10px 0;"><p style="text-align: center;"><strong>Your order does not qualify for Free Shipping at this time.</strong></p>
<p style="text-align: center;"><strong>Please go back to the - <a href="index.php?main_page=shopping_cart">SHOPPING BAG</a> - to add more products or increase the quantity of products in your bag to meet the minimum order amount required to qualify
for free shipping,</strong><br /><strong>or select a different shipping option.</strong></p>';
echo'<span id="opc-order-confirm"></span>';
} else {
} }
?>
<!-- eof disable checkout button from displaying 1 of 2 -->
<!--bof submit block -->
<div id="checkoutOneSubmit" class="buttonRow">
<span id="opc-order-confirm"><?php echo zen_image_button(BUTTON_IMAGE_CHECKOUT_ONE_CONFIRM, BUTTON_CHECKOUT_ONE_CONFIRM_ALT, 'name="btn_submit" id="btn_submit"'); ?></span>
<span id="opc-order-review"><?php echo zen_image_button(BUTTON_IMAGE_CHECKOUT_ONE_REVIEW, BUTTON_CHECKOUT_ONE_REVIEW_ALT, 'name="btn_submit" id="btn_submit"'); ?></span>
<?php echo zen_draw_hidden_field('order_confirmed', '1', 'id="confirm-the-order"') . zen_draw_hidden_field ('current_order_total', '0', 'id="current-order-total"'); ?>
</div>
<div class="clearBoth"></div>
<!--eof submit block -->
<?php
}
Is there any way to make the page "refresh" if customer selects another shipping option?
Silly me didn't realize there was a "refresh" setting. :blush:
However the code I posted doesn't work the way I need it.
Regardless of what shipping option is selected if the order is less than $100 it won't allow the checkout buttons to appear unless selecting a shipping option that increases the total to $100 or above.
I need to modify this codeto make it work.Code:if (($order->info['total'] < 100) && is_object ($freeoptions)) {
@mvstudio, before I head down a code-generation path, would you post a screenshot of your store's settings for Modules->Shipping->Free Shipping Options?
From your description, it sounds like you want to offer Free Shipping if the order's total is greater than $100.00. If that's the case, you should be able to simply set that freeoptions shipping-module's Total >= value to 100.00.
That's exactly what I have it set up.
Attachment 18614
Is that the only shipping-module enabled?
The problem with freeoptions is that any discounts applied to the order during checkout won't override the freeoptions selection. So if a client adds $120 worth of products, then during checkout uses reward points, or coupons, etc and discounts the total to $40, the client still receives free shipping.
The code that I had which worked with the regular checkout took care of that in a simple way. However the code now isn't working the way it should.
The object freeoptions isn't getting called at all. So even when changing shipping option to fedex or usps after refreshing the page, if the order total is still bellow the minimum the message still gets displayed not allowing the checkout process to continue.
Code:<!-- bof disable checkout button from displaying 1 of 1 -->
<?php
if (!IS_ADMIN_FLAG) {
global $order, $db;
if (($order->info['total'] < MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN) && is_object ($freeoptions)) {
echo '<div style="border: 3px solid #777777; padding: 10px 0;"><p style="text-align: center;"><strong>Your order does not qualify for Free Shipping at this time.</strong></p>
<p style="text-align: center;"><strong>Please go back to the - <a href="index.php?main_page=shopping_cart">SHOPPING BAG</a> - to add more products, increase the quantity of products in your bag to meet the minimum order amount required to qualify
for free shipping, or select a different shipping option.</strong></p>';
echo'<span id="opc-order-confirm"></span>';
} }
?>
<!-- eof disable checkout button from displaying 1 of 1 -->
Do you also have coupons that provide free shipping?