From d8729628141eedd3a557384f68180784edf89501 Mon Sep 17 00:00:00 2001
From: Reinhold Kainhofer <reinhold@kainhofer.com>
Date: Tue, 22 Jan 2013 14:01:42 +0100
Subject: [PATCH] Version 1.1.0pre: Implement
 (max|min)(Length|Width|Height|Volume) and volume variables

---
 Makefile                                      |   2 +-
 .../en-GB.plg_vmshipment_rules_shipping.ini   |   4 +-
 ...hipment_rules_shipping_advanced_v1.1.0.zip | Bin 0 -> 15406 bytes
 .../plg_vmshipment_rules_shipping_v1.1.0.zip  | Bin 0 -> 12356 bytes
 rules_shipping.php                            |  97 +++++++++++++-----
 rules_shipping.xml                            |   2 +-
 rules_shipping_advanced.xml                   |   2 +-
 7 files changed, 75 insertions(+), 32 deletions(-)
 create mode 100644 releases/plg_vmshipment_rules_shipping_advanced_v1.1.0.zip
 create mode 100644 releases/plg_vmshipment_rules_shipping_v1.1.0.zip

diff --git a/Makefile b/Makefile
index 56fe3db..cbbb226 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 BASE=rules_shipping
 BASE_ADV=rules_shipping_advanced
 PLUGINTYPE=vmshipment
-VERSION=1.0.0
+VERSION=1.1.0
 
 PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html
 PLUGINFILES_ADV=$(BASE_ADV).php $(BASE).php $(BASE_ADV).script.php $(BASE_ADV).xml index.html
diff --git a/language/en-GB/en-GB.plg_vmshipment_rules_shipping.ini b/language/en-GB/en-GB.plg_vmshipment_rules_shipping.ini
index 3b1af16..6547cb7 100644
--- a/language/en-GB/en-GB.plg_vmshipment_rules_shipping.ini
+++ b/language/en-GB/en-GB.plg_vmshipment_rules_shipping.ini
@@ -14,7 +14,7 @@ VMSHIPMENT_RULES_HELP="<div style='background: #DDDDDD; padding:5px; margin:3px;
 <ul><li>Each line contains one rule consisting of several <b>conditions and assignments in arbitrary order and separated by semicolons</b>. </li>
 <li>The <b>first matching rule is used</b> to calculate the shipping costs.</li>
 <li>All rule parts with <b>comparison operators (&lt;, &lt;=, =&lt;, ==, !=, &lt;&gt;, &gt;=, =&gt;, &gt;)</b> are conditions.</li>
-<li> Supported <b>variables (case-insensitive)</b>: <b><tt>Amount</tt></b>, <b><tt>Weight</tt></b>, <b><tt>ZIP</tt></b>, <b><tt>Products</tt></b> (number of different products order), <b><tt>Articles</tt></b> (each product counted with its quantity).</li>
+<li> Supported <b>variables (case-insensitive)</b>: <b><tt>Amount</tt></b>, <b><tt>Weight</tt></b>, <b><tt>ZIP</tt></b>, <b><tt>Products</tt></b> (number of different products), <b><tt>Articles</tt></b> (counted with quantity), <b><tt>Volume</tt></b> (total volume of the order) and <b><tt>MinVolume</tt>, <tt>MinLength</tt>, <tt>MinWidth</tt>, <tt>MinHeight</tt></b> as well as the same variables with <tt>Max</tt> instead of <tt>Min</tt>.</li>
 <li>A condition can consist of multiple chained comparisons.</li>
 <li>All rule parts of the form <b><tt>[VARIABLE]=VALUE</tt> are assignments</b>, with <tt>[VARIABLE]</tt> being one of <b><tt>Name</tt></b> (optional name of the rule, displayed in the cart and invoice), <b><tt>Shipping</tt></b> (shipping cost if the rule matches). The <tt>Shipping=</tt> can be left out. I.e. a rule part consisting only of a numerical value is understood as shipping cost.</li>
 </ul>
@@ -24,7 +24,7 @@ VMSHIPMENT_RULES_HELP_ADV="<div style='background: #DDDDDD; padding:5px; margin:
 <ul><li>Each line contains one rule consisting of several <b>conditions and assignments in arbitrary order and separated by semicolons</b>. </li>
 <li>The <b>first matching rule is used</b> to calculate the shipping costs.</li>
 <li>All rule parts with <b>comparison operators (&lt;, &lt;=, =&lt;, ==, !=, &lt;&gt;, &gt;=, =&gt;, &gt;)</b> are conditions.</li>
-<li> Supported <b>variables (case-insensitive)</b>: <b><tt>Amount</tt></b>, <b><tt>Weight</tt></b>, <b><tt>ZIP</tt></b>, <b><tt>Products</tt></b> (number of different products order), <b><tt>Articles</tt></b> (each product counted with its quantity).</li>
+<li> Supported <b>variables (case-insensitive)</b>: <b><tt>Amount</tt></b>, <b><tt>Weight</tt></b>, <b><tt>ZIP</tt></b>, <b><tt>Products</tt></b> (number of different products), <b><tt>Articles</tt></b> (counted with quantity), <b><tt>Volume</tt></b> (total volume of the order) and <b><tt>MinVolume</tt>, <tt>MinLength</tt>, <tt>MinWidth</tt>, <tt>MinHeight</tt></b> as well as the same variables with <tt>Max</tt> instead of <tt>Min</tt>.</li>
 <li>A condition can consist of multiple chained comparisons.</li>
 <li>All rule parts of the form <b><tt>[VARIABLE]=VALUE</tt> are assignments</b>, with <tt>[VARIABLE]</tt> being one of <b><tt>Name</tt></b> (optional name of the rule, displayed in the cart and invoice), <b><tt>Shipping</tt></b> (shipping cost if the rule matches). The <tt>Shipping=</tt> can be left out. I.e. a rule part consisting only of a numerical value is understood as shipping cost.</li>
 <li>In the advanced version, all expressions (conditions and shipping costs) may contain <b>arbitrary basic arithmetic expressions (+, -, *, /, %, ^ and parentheses)</b> of the above variables.</li>
diff --git a/releases/plg_vmshipment_rules_shipping_advanced_v1.1.0.zip b/releases/plg_vmshipment_rules_shipping_advanced_v1.1.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..71c2698fe8ca2c5d4845c37e5e472481a0c1a01b
GIT binary patch
literal 15406
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

literal 0
HcmV?d00001

diff --git a/releases/plg_vmshipment_rules_shipping_v1.1.0.zip b/releases/plg_vmshipment_rules_shipping_v1.1.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..97ee94ce54995548e32170d87491efefb4ec0be4
GIT binary patch
literal 12356
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

literal 0
HcmV?d00001

diff --git a/rules_shipping.php b/rules_shipping.php
index 360c569..e11f970 100644
--- a/rules_shipping.php
+++ b/rules_shipping.php
@@ -218,14 +218,8 @@ class plgVmShipmentRules_Shipping extends vmPSPlugin {
 	 */
 	function getCosts (VirtueMartCart $cart, $method, $cart_prices) {
 		if (empty($method->rules)) $this->parseMethodRules($method);
+		$cartvals = $this->getCartValues ($cart, $cart_prices);
 		
-		$address = (($cart->ST == 0) ? $cart->BT : $cart->ST);
-		$cartvals = array('weight'   => $this->getOrderWeight ($cart, $method->weight_unit), 
-				  'zip'      => $address['zip'], 
-				  'articles' => $this->getOrderArticles ($cart), 
-				  'products' => $this->getOrderProducts ($cart),
-				  'amount'   => $cart_prices['salesPrice'],
-				  'country'  => $address['virtuemart_country_id']);
 		foreach ($method->rules as $r) {
 			if ($r->matches($cartvals)) {
 				$method->tax_id = $r->tax_id;
@@ -276,6 +270,35 @@ class plgVmShipmentRules_Shipping extends vmPSPlugin {
 		return $articles;
 	}
 
+	protected function getOrderDimensions (VirtueMartCart $cart) {
+		/* Cache the value in a static variable and calculate it only once! */
+		static $calculated = 0;
+		static $dimensions=array(
+			'volume' => 0,
+			'maxvolume' => 0, 'minvolume' => 9999999999,
+			'maxlength' => 0, 'minlength' => 9999999999,
+			'maxwidth'  => 0, 'minwidth' => 9999999999,
+			'maxheight' => 0, 'minheight' => 9999999999,
+			);
+		if ($calculated==0) {
+			$calculated=1;
+			foreach ($cart->products as $product) {
+				$volume = $product->product_length * $product->product_width * $product->product_height;
+				$dimensions['volume'] += $volume * $product->quantity;
+				$dimensions['maxvolume'] = max ($dimensions['maxvolume'], $volume);
+				$dimensions['minvolume'] = min ($dimensions['minvolume'], $volume);
+				$dimensions['maxlength'] = max ($dimensions['maxlength'], $product->product_length);
+				$dimensions['minlength'] = min ($dimensions['minlength'], $product->product_length);
+				$dimensions['maxwidth'] = max ($dimensions['maxwidth'], $product->product_width);
+				$dimensions['minwidth'] = min ($dimensions['minwidth'], $product->product_width);
+				$dimensions['maxheight'] = max ($dimensions['maxheight'], $product->product_height);
+				$dimensions['minheight'] = min ($dimensions['minheight'], $product->product_height);
+				$articles += $product->quantity;
+			}
+		}
+		return $dimensions;
+	}
+
 	protected function getOrderProducts (VirtueMartCart $cart) {
 		/* Cache the value in a static variable and calculate it only once! */
 		static $products = 0;
@@ -284,18 +307,10 @@ class plgVmShipmentRules_Shipping extends vmPSPlugin {
 		}
 		return $products;
 	}
-
-
-	/**
-	 * @param \VirtueMartCart $cart
-	 * @param int             $method
-	 * @param array           $cart_prices
-	 * @return bool
-	 */
-	protected function checkConditions ($cart, $method, $cart_prices) {
-		if (empty($method->rules)) $this->parseMethodRules($method);
-
+	
+	protected function getCartValues (VirtueMartCart $cart, $cart_prices) {
 		$orderWeight = $this->getOrderWeight ($cart, $method->weight_unit);
+		$dimensions = $this->getOrderDimensions ($cart);
 		$address = (($cart->ST == 0) ? $cart->BT : $cart->ST);
 		
 		$products = 0;
@@ -304,13 +319,36 @@ class plgVmShipmentRules_Shipping extends vmPSPlugin {
 			$products += 1;
 			$articles += $product->quantity;
 		}
-		
 		$cartvals = array('weight'=>$orderWeight, 
 				  'zip'=>$address['zip'], 
 				  'articles'=>$articles, 
 				  'products'=>$products,
 				  'amount'=>$cart_prices['salesPrice'],
-				  'country'=>$address['virtuemart_country_id']);
+				  'country'=>$address['virtuemart_country_id'],
+				  'volume' => $dimensions['volume'],
+				  'maxvolume' => $dimensions['maxvolume'], 
+				  'minvolume' => $dimensions['minvolume'],
+				  'maxlength' => $dimensions['maxlength'], 
+				  'minlength' => $dimensions['minlength'],
+				  'maxwidth'  => $dimensions['maxwidth'], 
+				  'minwidth' => $dimensions['minwidth'],
+				  'maxheight' => $dimensions['maxheight'], 
+				  'minheight' => $dimensions['minheight']
+			);
+		return $cartvals;
+	}
+
+
+	/**
+	 * @param \VirtueMartCart $cart
+	 * @param int             $method
+	 * @param array           $cart_prices
+	 * @return bool
+	 */
+	protected function checkConditions ($cart, $method, $cart_prices) {
+		if (empty($method->rules)) $this->parseMethodRules($method);
+
+		$cartvals = $this->getCartValues ($cart, $cart_prices);
 		foreach ($method->rules as $r) {
 			if ($r->matches($cartvals)) {
 				$method->matched_rule = $r;
@@ -438,8 +476,9 @@ class ShippingRule {
 	var $rulestring = '';
 	var $countries = array();
 	var $tax_id = 0;
-	var $conditions=array();
-	var $shipping=0;
+	var $conditions = array();
+	var $shipping = 0;
+	var $shippingWithTax = 0;
 	var $name = '';
 	
 	function __construct ($rule, $countries, $tax_id) {
@@ -453,6 +492,14 @@ class ShippingRule {
 		$this->parseRule($rule);
 	}
 	
+	function handleAssignment ($variable, $value, $rulepart) {
+		switch ($variable) {
+			case 'shipping': $this->shipping = $this->parseShippingTerm($value); break;
+			case 'shippingwithtax': $this->shippingWithTax = $this->parseShippingTerm($value); break;
+			case 'name': $this->name = $value; break;
+			default: JFactory::getApplication()->enqueueMessage(JText::sprintf('VMSHIPMENT_RULES_UNKNOWN_VARIABLE', $variable, $rulepart), 'error');
+		}
+	}
 	function parseRule($rule) {
 		$ruleparts=explode(';', $rule);
 		$operators = array('<', '<=', '=', '>', '>=', '=>', '=<', '<>', '!=', '==');
@@ -464,11 +511,7 @@ class ShippingRule {
 			if (count($atoms)==1) {
 				$this->shipping = $this->parseShippingTerm($atoms[0]);
 			} elseif ($atoms[1]=='=') {
-				switch (strtolower($atoms[0])) {
-					case 'shipping': $this->shipping = $this->parseShippingTerm($atoms[2]); break;
-					case 'name': $this->name = $atoms[2]; break;
-					default: JFactory::getApplication()->enqueueMessage(JText::sprintf('VMSHIPMENT_RULES_UNKNOWN_VARIABLE', $atoms[0], $p), 'error');
-				}
+				$this->handleAssignment (strtolower($atoms[0]), $atoms[2], $p);
 			} else {
 				// Conditions, need at least three atoms!
 				while (count($atoms)>1) {
diff --git a/rules_shipping.xml b/rules_shipping.xml
index 35e1434..a1805d4 100644
--- a/rules_shipping.xml
+++ b/rules_shipping.xml
@@ -6,7 +6,7 @@
     <authorUrl>http://www.kainhofer.com</authorUrl>
     <copyright>Copyright (C) 2013, Reinhold Kainhofer</copyright>
     <license>GPL v3+</license>
-    <version>1.0.0</version>
+    <version>1.1.0</version>
     <description>VMSHIPMENT_RULES_DESC</description>
     <files>
 	<filename plugin="rules_shipping">rules_shipping.php</filename>
diff --git a/rules_shipping_advanced.xml b/rules_shipping_advanced.xml
index 3718b56..71fe475 100644
--- a/rules_shipping_advanced.xml
+++ b/rules_shipping_advanced.xml
@@ -6,7 +6,7 @@
     <authorUrl>http://www.kainhofer.com</authorUrl>
     <copyright>Copyright (C) 2013, Reinhold Kainhofer</copyright>
     <license>GPL v3+</license>
-    <version>1.0.0</version>
+    <version>1.1.0</version>
     <description>VMSHIPMENT_RULES_ADV_DESC</description>
     <files>
 	<filename plugin="rules_shipping_advanced">rules_shipping_advanced.php</filename>
-- 
GitLab