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');