Cкидка на сумму заказа не пересчитывается в админке

CS-Cart 4.9.3, UniTheme

Если в админ-панели изменить состав (и сумму) заказа, к которому, при его создании, была применена скидка, то эта скидка не пересчитывается по новой сумме заказа. Она остается без изменения. Скидка оформлена для зоны Корзина.

На витрине (страница checkout) скидка пересчитывается, если удалить товар…

В config.local.php параметр установлен:
‘do_not_apply_promotions_on_order_update’ => false

При do_not_apply_promotions_on_order_update = true (было по умолчанию), все то же самое. То есть изменение этого параметра ничего не дает.

Воспроизведение типично. Заказ оформляется на витрине. Затем изменяется в админ-панели.

Сейчас сделал то же самое на демо дистрибутиве - версия 4.13.3.
То же самое - скидка не пересчитывается!
Параметр и там установлен ‘do_not_apply_promotions_on_order_update’ => false

Ау!
Почему нет ответа? Разработчики эту ветку смотрят?

Лучше в Хелпдеск запараллелить.

Спасибо.
Сделаю.

Если мне память не изменяет, то подобные вопросы уже возникали пару раз, и техподдержка эти темы не комментировала. По моим ощущениям, это всё таки не баг, а попросту отсутствие функционала пересчёта, хотя, может быть и ошибаюсь. В любом случае напишите в техподдержку, а когда получите ответ по существу, то отпишите в этой теме, поделитесь инфой с сообществом, чтоб мы все тоже знали, что это на самом деле – баг или дырка от бублика.

1 лайк

Я читал эти топики, прежде чем написать этот. Про do_not_apply_promotions_on_order_update я оттуда и взял.
Ответили они в хелпдеск.
Нет у них такой функции - перерасчет скидок, при изменении заказа.
О так уот.
Так что расслабиться и попробовать получить удовольствие )

Та ладна…
do_not_apply_promotions_on_order_update
а это тогда зачем они рассказали?

Чекбокс со скидки в заказе снимали перед сохранением? Только что попробовал сам. Чистая установка.
Создаём заказ с белой футблкой. Сохраняем. скидок нет.
Добавляем акцию на футболку. Пересохраняем заказ. Скидок нет.
Меняем твик в конфиг-файле. Пересохранияем заказ. Скидка появилась.

Спасибо. Это работает.

Я ведь пробовал там убирать этот чекбокс, но до того как do_not_apply_promotions_on_order_update изменил.
А после изменения не попробовал.

Но это странная логика - есть строка “Скидка на заказ” с чекбоксом. Что первое приходит в голову? Этот чекбокс управляет включением или отключением скидки на заказ.
Чекбокс включен - скидка применяется. Чекбокс выключен - скидка НЕ применяется.
По факту же получается что этот чекбокс на применение скидки к заказу вообще не имеет отношения. Что он включен, что выключен - скидка все равно применяется.

Но оказывается, что этот чекбокс связан с почти недокументированной опцией еще и в скрытых настройках системы.

Жесть.
Как догадаться, что “Скидка на заказ” это перерасчет скидки, ЕСЛИ выключена скрытая опция do_not_apply_promotions_on_order_update?

Я не точно написал. Они ответили что do_not_apply_promotions_on_order_update давно не поддерживается.

1 лайк

Не совсем так. Твик в конфиг файле указывает пересчитывать ли промо-акции при редактировании. Это самостоятельная опция.

Чекбокс скидки указывает что заказу задана вполне конкретная скидка. Сохраняя заказ с чекбоксом менеджер как бы указывает что скидка должна быть именно такая и не зависимо от настроки в файле менять скидку не нужно.

Наверное, решением было бы разделить скидки. Одна автоматическая, которая пересчитывается или не пересчитывается по настройке. Вторая ручная, которую выставляет менеджер лично и которая никаким образом не меняется програмно. Тогда таких непоняток с чекбоксами бы не было

Да, это было бы лучшее решение.
Но они хотя бы текст другой сделали там. Чтобы из текста ясно было что этот чекбокс делает.

Чекбокс при редактировании заказа работает следующим образом:

  • если чекбокс установлен, то при пересчете используются значения, введеные вручную;
  • если чекбокс пуст, то при пересчете используются значения, взятые из системы.

По крайней мере, так работает с ценами товаров и стоимостью доставки. Как работает со скидками - не проверял.