diff --git a/classes/PaymentModule.php b/classes/PaymentModule.php index ec6e840a2..d3163b89b 100644 --- a/classes/PaymentModule.php +++ b/classes/PaymentModule.php @@ -324,9 +324,14 @@ abstract class PaymentModuleCore extends Module } $order->addCartRule($cartRule->id, $cartRule->name, $value); + if ($id_order_state != Configuration::get('PS_OS_ERROR') AND $id_order_state != Configuration::get('PS_OS_CANCELED')) - $cartRule->quantity = $cartRule->quantity - 1; - $cartRule->update(); + { + // Create a new instance of Cart Rule without id_lang, in order to update it quantity + $cart_rule_to_update = new CartRule($cartRule->id); + $cart_rule_to_update->quantity = $cart_rule_to_update->quantity - 1; + $cart_rule_to_update->update(); + } $cartRulesList .= ' diff --git a/classes/order/Order.php b/classes/order/Order.php index 04bc62997..d6ce6fc77 100644 --- a/classes/order/Order.php +++ b/classes/order/Order.php @@ -975,6 +975,11 @@ class OrderCore extends ObjectModel /** * @deprecated 1.5.0.1 + * @see Order::addCartRule() + * @param $id_cart_rule + * @param $name + * @param $value + * @return bool */ public function addDiscount($id_cart_rule, $name, $value) { @@ -982,6 +987,13 @@ class OrderCore extends ObjectModel return Order::addCartRule($id_cart_rule, $name, $value); } + /** + * @since 1.5.0.1 + * @param $id_cart_rule + * @param $name + * @param $value + * @return bool + */ public function addCartRule($id_cart_rule, $name, $value) { return Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_cart_rule', array('id_order' => (int)$this->id, 'id_cart_rule' => (int)$id_cart_rule, 'name' => pSQL($name), 'value' => (float)$value), 'INSERT');