[-] FO : #PSCFV-3268 - Fix bug with cache and cart rule discount calculation
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@16661 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
+6
-5
@@ -1259,9 +1259,10 @@ class CartCore extends ObjectModel
|
||||
*
|
||||
* @param boolean $withTaxes With or without taxes
|
||||
* @param integer $type Total type
|
||||
* @param boolean $use_cache Allow using cache of the method CartRule::getContextualValue
|
||||
* @return float Order total
|
||||
*/
|
||||
public function getOrderTotal($with_taxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null)
|
||||
public function getOrderTotal($with_taxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null, $use_cache = true)
|
||||
{
|
||||
if (!$this->id)
|
||||
return 0;
|
||||
@@ -1448,7 +1449,7 @@ class CartCore extends ObjectModel
|
||||
{
|
||||
// If the cart rule offers free shipping, add the shipping cost
|
||||
if ($with_shipping && $cart_rule['obj']->free_shipping)
|
||||
$order_total_discount += Tools::ps_round($cart_rule['obj']->getContextualValue($with_taxes, $virtual_context, CartRule::FILTER_ACTION_SHIPPING, ($param_product ? $package : null)), 2);
|
||||
$order_total_discount += Tools::ps_round($cart_rule['obj']->getContextualValue($with_taxes, $virtual_context, CartRule::FILTER_ACTION_SHIPPING, ($param_product ? $package : null), $use_cache), 2);
|
||||
|
||||
// If the cart rule is a free gift, then add the free gift value only if the gift is in this package
|
||||
if ((int)$cart_rule['obj']->gift_product)
|
||||
@@ -1462,13 +1463,13 @@ class CartCore extends ObjectModel
|
||||
$in_order = true;
|
||||
|
||||
if ($in_order)
|
||||
$order_total_discount += $cart_rule['obj']->getContextualValue($with_taxes, null, CartRule::FILTER_ACTION_GIFT, $package);
|
||||
$order_total_discount += $cart_rule['obj']->getContextualValue($with_taxes, null, CartRule::FILTER_ACTION_GIFT, $package, $use_cache);
|
||||
}
|
||||
|
||||
// If the cart rule offers a reduction, the amount is prorated (with the products in the package)
|
||||
if ($cart_rule['obj']->reduction_percent > 0 || $cart_rule['obj']->reduction_amount > 0)
|
||||
{
|
||||
$order_total_discount += Tools::ps_round($cart_rule['obj']->getContextualValue($with_taxes, $virtual_context, CartRule::FILTER_ACTION_REDUCTION, $package), 2);
|
||||
$order_total_discount += Tools::ps_round($cart_rule['obj']->getContextualValue($with_taxes, $virtual_context, CartRule::FILTER_ACTION_REDUCTION, $package, $use_cache), 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2542,7 +2543,7 @@ class CartCore extends ObjectModel
|
||||
$free_fees_price = 0;
|
||||
if (isset($configuration['PS_SHIPPING_FREE_PRICE']))
|
||||
$free_fees_price = Tools::convertPrice((float)$configuration['PS_SHIPPING_FREE_PRICE'], Currency::getCurrencyInstance((int)$this->id_currency));
|
||||
$orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);
|
||||
$orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING, null, null, false);
|
||||
if ($orderTotalwithDiscounts >= (float)($free_fees_price) && (float)($free_fees_price) > 0)
|
||||
return $shipping_cost;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user