From f94f0f14a4b94708ac175e2d3867c75f5f2f7a59 Mon Sep 17 00:00:00 2001 From: gRoussac Date: Tue, 10 Sep 2013 18:48:28 +0200 Subject: [PATCH] [-] FO : Fix bug #PSCFV-8917 taxes calculation when changing delivery address --- classes/Cart.php | 17 ++++++++++++----- classes/tax/TaxRulesTaxManager.php | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/classes/Cart.php b/classes/Cart.php index e57509cc3..828bda26c 100644 --- a/classes/Cart.php +++ b/classes/Cart.php @@ -3415,6 +3415,7 @@ class CartCore extends ObjectModel */ public function setNoMultishipping() { + $emptyCache = $result = false; if (Configuration::get('PS_ALLOW_MULTISHIPPING')) { // Upgrading quantities @@ -3433,7 +3434,9 @@ class CartCore extends ObjectModel AND `id_shop` = '.(int)$this->id_shop.' AND id_product = '.$product['id_product'].' AND id_product_attribute = '.$product['id_product_attribute']; - Db::getInstance()->execute($sql); + $result = Db::getInstance()->execute($sql); + if ($result) + $emptyCache = true; } // Merging multiple lines @@ -3451,15 +3454,16 @@ class CartCore extends ObjectModel } // Update delivery address for each product line - Db::getInstance()->execute(' - UPDATE `'._DB_PREFIX_.'cart_product` + $sql = 'UPDATE `'._DB_PREFIX_.'cart_product` SET `id_address_delivery` = ( SELECT `id_address_delivery` FROM `'._DB_PREFIX_.'cart` WHERE `id_cart` = '.(int)$this->id.' AND `id_shop` = '.(int)$this->id_shop.' ) WHERE `id_cart` = '.(int)$this->id.' - '.(Configuration::get('PS_ALLOW_MULTISHIPPING') ? ' AND `id_shop` = '.(int)$this->id_shop : '')); - + '.(Configuration::get('PS_ALLOW_MULTISHIPPING') ? ' AND `id_shop` = '.(int)$this->id_shop : ''); + + $emptyCache = Db::getInstance()->execute($sql); + if (Customization::isFeatureActive()) Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'customization` @@ -3468,6 +3472,9 @@ class CartCore extends ObjectModel WHERE `id_cart` = '.(int)$this->id.' ) WHERE `id_cart` = '.(int)$this->id); + + if ($emptyCache) + $this->_products = null; } /** diff --git a/classes/tax/TaxRulesTaxManager.php b/classes/tax/TaxRulesTaxManager.php index dcb78419e..99cbea94d 100644 --- a/classes/tax/TaxRulesTaxManager.php +++ b/classes/tax/TaxRulesTaxManager.php @@ -80,7 +80,7 @@ class TaxRulesTaxManagerCore implements TaxManagerInterface if (!empty($this->address->postcode)) $postcode = $this->address->postcode; - if (!isset(self::$cache_tax_calculator[$postcode.'-'.$this->type])) + if (!isset(self::$cache_tax_calculator[(int)$this->address->id_country.'-'.$postcode.'-'.$this->type])) { $rows = Db::getInstance()->executeS(' SELECT *