Добрый день!
Установлен PrestaShop версии 1.4.0.17
Работаем давно, имеются доработки исходного кода. У нас возникла проблема с расчетом скидок на товары, находящиеся в корзине. Мы внесли исправления в модуль controllers/orderController.php
/* Check minimal amount */
$currency = Currency::getCurrency((int)self::$cart->id_currency);
$orderTotal = self::$cart->getOrderTotal();
$existingDiscounts = self::$cart->getDiscounts(true);
if ( ((int)$orderTotal>=10000) )
{
self::$cart->deleteDiscount(1);self::$cart->deleteDiscount(2);self::$cart->deleteDiscount(3);
self::$cart->addDiscount(1);
}
elseif ( ((int)$orderTotal>=7500) and ((int)$orderTotal<10000) )
{
self::$cart->deleteDiscount(1);self::$cart->deleteDiscount(2);self::$cart->deleteDiscount(3);
self::$cart->addDiscount(2);
}
elseif ( ((int)$orderTotal>=5000) and ((int)$orderTotal<7500) )
{
self::$cart->deleteDiscount(1);self::$cart->deleteDiscount(2);self::$cart->deleteDiscount(3);
self::$cart->addDiscount(3);
}
elseif ( ((int)$orderTotal<5000))
{
self::$cart->deleteDiscount(1);self::$cart->deleteDiscount(2);self::$cart->deleteDiscount(3);
}
$orderTotal = self::$cart->getOrderTotal();
На малых объемах товаров программа работает правильно
GET
http://soblazn-tmn/cart.php?add=true&id_product=......e&qty=1&op=down 200 OK 5.48s
JSON
products [Object { id=1725, link="
http://soblazn-tmn/product.php?id_product=1725", quantity=2, ещё...}, Object { id=251, link="
http://soblazn-tmn/product.php?id_product=251", quantity=2, ещё...}, Object { id=1695, link="
http://soblazn-tmn/product.php?id_product=1695", quantity=1, ещё...}]
discounts [Object { id="3", name="ADD5PERCENT :...", description="Скидка 5%", ещё...}]
0 Object { id="3", name="ADD5PERCENT :...", description="Скидка 5%", ещё...}
id "3"
name "ADD5PERCENT :..."
description "Скидка 5%"
nameDescription "ADD5PERCENT :..."
link "
http://soblazn-tmn/order.php?deleteDiscount=3"
price "-308 руб"
shippingCost "0 руб"
wrappingCost "0 руб"
nbTotalProducts "5"
total "5 856 руб"
productTotal "5 856 руб"
hasError false
Если же увеличиваем количество товара в корзине, то скидка не считается
GET
http://soblazn-tmn/cart.php?add=true&id_product=......ue&qty=99&op=up 200 OK 8.54s
JSON
products [Object { id=1725, link="
http://soblazn-tmn/product.php?id_product=1725", quantity=100, ещё...}, Object { id=251, link="
http://soblazn-tmn/product.php?id_product=251", quantity=100, ещё...}, Object { id=1695, link="
http://soblazn-tmn/product.php?id_product=1695", quantity=100, ещё...}]
discounts [Object { id="1", name="AddTenPercent :...", description="Скидка 10%", ещё...}, Object { id="1", name="AddTenPercent :...", description="Скидка 10%", ещё...}]
0 Object { id="1", name="AddTenPercent :...", description="Скидка 10%", ещё...}
id "1"
name "AddTenPercent :..."
description "Скидка 10%"
nameDescription "AddTenPercent :..."
link "
http://soblazn-tmn/order.php?deleteDiscount=1"
price "-"
1 Object { id="1", name="AddTenPercent :...", description="Скидка 10%", ещё...}
id "1"
name "AddTenPercent :..."
description "Скидка 10%"
nameDescription "AddTenPercent :..."
link "
http://soblazn-tmn/order.php?deleteDiscount=1"
price "-"
shippingCost "0 руб"
wrappingCost "0 руб"
К тому же откуда-то появляется вторая скидка
Может кто-нибудь объяснить, что мы не так делаем и как правильно рассчитать скидки на товар в корзине