Ошибка при удалении скидки

idema

Постоялец
Регистрация
15 Ноя 2013
Сообщения
63
Реакции
24
Всем привет. Иногда нужно удалить скидку и пересчитать заново, так переодически при удалении скидки возникает ошибка
Для просмотра ссылки Войди или Зарегистрируйся
Обновляю страницу, пишет - Не возможно отредактировать это Правило Корзины Заказа
И скидка все равно остается, приходится лезть в базу данных и там вручную удалять.
Из за чего ошибка появилась я не знаю, просто в один день стала выскакивать и всё. И у части заказов выскакивает, у части нет.
Подскажите пожалуйста как ее исправить.
 
Всем привет. Иногда нужно удалить скидку и пересчитать заново, так переодически при удалении скидки возникает ошибка
Для просмотра ссылки Войди или Зарегистрируйся
Обновляю страницу, пишет - Не возможно отредактировать это Правило Корзины Заказа
И скидка все равно остается, приходится лезть в базу данных и там вручную удалять.
Из за чего ошибка появилась я не знаю, просто в один день стала выскакивать и всё. И у части заказов выскакивает, у части нет.
Подскажите пожалуйста как ее исправить.
Скидка процентная или фиксированная сумма?
 
Процентная, при чем она автоматически была рассчитана для покупателя, т.е. применилось ценовое правило корзины
 
Процентная, при чем она автоматически была рассчитана для покупателя, т.е. применилось ценовое правило корзины
Это баг престы. При определенных ситуациях в случае процентной скидки поле total_discount при перерасчете получает после запятой кучу цифр (обычно девяток) .999999999999999 , т.е. цифр больше чем 9шт, а преста не делает округление этой суммы. Затем при сохранении заказа идет проверка на isPrice, а там правило, что максимум 9 цифр после запятой

public static function isPrice($price)
{
return preg_match('/^[0-9]{1,10}(\.[0-9]{1,9})?$/', $price);
}

Для избежания этой ситуации надо

а) исправить в /classes/Validate.php (или сделать оверрайд) функцию isPrice() и прописать больше цифр после запятой (что является идеологически неверно)

или

б) в /controllers/admin/AdminOrdersController.php (или сделать оверрайд) найти функцию postProcess() в ней найти строку $order_cart_rule->delete(); с комментарием // Delete Order Cart Rule and update Order и строкой ниже перед вызовом $order->update(); вставить новую строчку $order->total_discounts = Tools::ps_round($order->total_discounts, 2);
 
Назад
Сверху