diff --git a/releases/plg_vmshipment_rules_shipping_advanced_v2.4.7.zip b/releases/plg_vmshipment_rules_shipping_advanced_v2.4.7.zip index ad1d19a82fcffcff3aa48ffd33dd2eda88ffe168..1fdea656fc9cb0d90ee907aa0fe1c9b9031cd22c 100644 Binary files a/releases/plg_vmshipment_rules_shipping_advanced_v2.4.7.zip and b/releases/plg_vmshipment_rules_shipping_advanced_v2.4.7.zip differ diff --git a/releases/plg_vmshipment_rules_shipping_v2.4.7.zip b/releases/plg_vmshipment_rules_shipping_v2.4.7.zip index 9e401187ba2f73255ef73ef27374677333e6f72f..e31f1ff5616257c26e58dd990f7f65eae72d7fd8 100644 Binary files a/releases/plg_vmshipment_rules_shipping_v2.4.7.zip and b/releases/plg_vmshipment_rules_shipping_v2.4.7.zip differ diff --git a/rules_shipping_advanced.php b/rules_shipping_advanced.php index 293296ba687d40338e6f7bda5be420a2916bf886..a3da1649a3f989b4f5bc04d64177e39a14ba9b24 100644 --- a/rules_shipping_advanced.php +++ b/rules_shipping_advanced.php @@ -42,7 +42,9 @@ class plgVmShipmentRules_Shipping_Advanced extends plgVmShipmentRules_Shipping_B */ protected function addCustomCartValues (VirtueMartCart $cart, $cart_prices, &$values) { $values['coupon'] = $cart->couponCode; - $zip=strtoupper($values['zip']); + if ($values['zip']) { + $zip=strtoupper($values['zip']); + } // Postal code Check for UK postal codes: Use regexp to determine if ZIP structure matches and also to extract the parts. // Also handle UK overseas areas/islands that use four-letter outward codes rather than "A{1,2}0{1,2}A{0,1} 0AA" diff --git a/rules_shipping_base.php b/rules_shipping_base.php index 61148b3618fd2cbeba1bb2fd89ac22f8c8dc9c13..d8a264d9c1d410c5b1c62369d1192d3d885e508f 100644 --- a/rules_shipping_base.php +++ b/rules_shipping_base.php @@ -755,9 +755,16 @@ class ShippingRule { case "-": $res = ($args[0] - $args[1]); break; case "*": $res = ($args[0] * $args[1]); break; case "/": $res = ($args[0] / $args[1]); break; - case "%": $res = ($args[0] % $args[1]); break; + case "%": $res = (fmod($args[0], $args[1])); break; case "^": $res = ($args[0] ^ $args[1]); break; + # TODO: Document these functions: + case "round": $res = round($args[0]); break; + case "ceil": $res = ceil($args[0]); break; + case "floor": $res = floor($args[0]); break; + case "max": $res = max($args); break; + case "min": $res = min($args); break; + default: $res = false; }