I know there is a mod to ban PO boxes altogether, but is there a way to disable a specific shipping method when the address is a po box?
TIA!
I know there is a mod to ban PO boxes altogether, but is there a way to disable a specific shipping method when the address is a po box?
TIA!
Danielle
You could try customizing the code in:
/includes/modules/shipping/ups.php
with the code in RED:
Code:// disable only when entire cart is free shipping if (zen_get_shipping_enabled($this->code)) { $this->enabled = ((MODULE_SHIPPING_UPS_STATUS == 'True') ? true : false); } // bof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb'] if (!IS_ADMIN_FLAG) { global $order; $street_address = $order->delivery['street_address']; // BEGIN PO Box Ban street address if ( preg_match('/PO BOX/si', $street_address) ) { $error = true; } else if ( preg_match('/BOX/si', $street_address) ) { $error = true; } else if ( preg_match('/POBOX/si', $street_address) ) { $error = true; } else if ( preg_match('/P\.O\./si', $street_address) ) { $error = true; } else if ( preg_match('/P\.O/si', $street_address) ) { $error = true; } else if ( preg_match('/PO\./si', $street_address) ) { $error = true; } $suburb = $order->delivery['suburb']; // BEGIN PO Box Ban suburb if ( preg_match('/PO BOX/si', $suburb) ) { $error = true; } else if ( preg_match('/BOX/si', $suburb) ) { $error = true; } else if ( preg_match('/POBOX/si', $suburb) ) { $error = true; } else if ( preg_match('/P\.O\./si', $suburb) ) { $error = true; } else if ( preg_match('/P\.O/si', $suburb) ) { $error = true; } else if ( preg_match('/PO\./si', $suburb) ) { $error = true; } if ($error) { $this->enabled = false; } } // eof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb'] if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_UPS_ZONE > 0) ) {
Linda McGrath
If you have to think ... you haven't been zenned ...
Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!
Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
Officially PayPal-Certified! Just click here
Try our Zen Cart Recommended Services - Hosting, Payment and more ...
Signup for our Announcements Forums to stay up to date on important changes and updates!
Thank you, I tried it in flat.php as a test because UPS isn't actually installed yet, and kept getting this log error:
This is that section of code in flat.php, with line 69 highlighted in red:PHP Parse error: syntax error, unexpected 'if' (T_IF), expecting function (T_FUNCTION) in /***/public_html/includes/modules/shipping/flat.php on line 69
Code:// disable only when entire cart is free shipping if (zen_get_shipping_enabled($this->code)) { $this->enabled = ((MODULE_SHIPPING_FLAT_STATUS == 'True') ? true : false); } // bof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb'] if (!IS_ADMIN_FLAG) { global $order; $street_address = $order->delivery['street_address']; // BEGIN PO Box Ban street address if ( preg_match('/PO BOX/si', $street_address) ) { $error = true; } else if ( preg_match('/BOX/si', $street_address) ) { $error = true; } else if ( preg_match('/POBOX/si', $street_address) ) { $error = true; } else if ( preg_match('/P\.O\./si', $street_address) ) { $error = true; } else if ( preg_match('/P\.O/si', $street_address) ) { $error = true; } else if ( preg_match('/PO\./si', $street_address) ) { $error = true; } $suburb = $order->delivery['suburb']; // BEGIN PO Box Ban suburb if ( preg_match('/PO BOX/si', $suburb) ) { $error = true; } else if ( preg_match('/BOX/si', $suburb) ) { $error = true; } else if ( preg_match('/POBOX/si', $suburb) ) { $error = true; } else if ( preg_match('/P\.O\./si', $suburb) ) { $error = true; } else if ( preg_match('/P\.O/si', $suburb) ) { $error = true; } else if ( preg_match('/PO\./si', $suburb) ) { $error = true; } if ($error) { $this->enabled = false; } } // eof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb'] if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_FLAT_ZONE > 0) ) {
Last edited by Danielle; 6 Aug 2014 at 06:08 PM.
Danielle
Check the code that I posted as your code looks like you missed a chunk ...
Linda McGrath
If you have to think ... you haven't been zenned ...
Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!
Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
Officially PayPal-Certified! Just click here
Try our Zen Cart Recommended Services - Hosting, Payment and more ...
Signup for our Announcements Forums to stay up to date on important changes and updates!
I see what looks so odd, you have all the code on 1 line for:
Try putting the code like I have it as it looks like you have turned the start of the code into a comment ...Code:// bof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb'] if (!IS_ADMIN_FLAG) { global $order; $street_address = $order->delivery['street_address'];
Linda McGrath
If you have to think ... you haven't been zenned ...
Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!
Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
Officially PayPal-Certified! Just click here
Try our Zen Cart Recommended Services - Hosting, Payment and more ...
Signup for our Announcements Forums to stay up to date on important changes and updates!
Just something to think about, but banning PO Boxes MAY NO LONGER be a good idea.
First, there are an increasing number of places in the US where a customer may not have a street address - and with the advent of USPS allowing use of the PO Street Address with a "UNIT" number - to receive UPS and FedEx and other non-govt common carrier deliveries - it might be worth rethinking if it is desirable to block PO Boxes - either you or the consumer can "translate" the address: i.e,
My "PO BOX 1232" Sykesville MD 21784
address could be
1363 Progress Way Unit 1232
Sykesville MD 21784
and deliveries would be accepted by the USPS
This link has been useful for purposes of finding street addresses when needed - preferable (to me) than placing one more obstacle in front the consumer completely/placing/buying -
as I said, just something to consider
Thanks for this, its solved a few queries in my shop.
Bookmarks