Но в результате если работать с оформлением заказа, переключать доставки и оплату, то цена не меняется, причем json возвращает правильные данные:
но пользователь видит старые, связано это с тем что html генерируется (зачем то!?) до выполнения хука и получается скрипту абсолютно все равно, что мы там понасчитали, он отобразит стандартный html и нет никакой возможности вызвать перегенерацию шаблонов
Просим исправить или объяснить как правильно использовать данные хуки
Хуки `checkout_after_<step>` выполняются после рендера HTML соответствующего шага. Менять там переменные, конечно, уже поздно.
Есть хук `checkout_render_confirm`. Он вызывается перед тем, как отрендерить шаблон шага `confirm`. В хук передаётся `$params['vars']` - это как раз переменные для шаблона.
Но вообще это так себе идея. Ну покажете вы визуально другую стоимость. Но на создаваемый заказ-то это никак не повлияет. Во все способы доставки и оплаты (которые до шага confirm) другие числа уйдут. По-хорошему надо где-то сильно раньше последнего шага цены подменять.
Расскажите поподробнее, что за функционал вам нужно реализовать. Я постараюсь предложить удачное место, чтобы вклиниться.
Функционал "финальная скидка", то есть скидка должна добавляться уже после всего расчета. И самое интересное, что если вызвать waOrder.form.reload() (синтаксис по пдословно не помню) то покажутся правильные числа, с чем это связано загадка, сейчас так и реализовали из минусов - двойные запросы при изменении данных
Но на создаваемый заказ-то это никак не повлияет.
Для этого можно использовать хук order_action.create
Если сделать это в хуке checkout_before_confirm, то должно быть хорошо. Оно по идее даже в итоговый заказ попадёт.
Но вообще вы делаете что-то странное. Меня смущает, что в плагины доставки и оплаты уйдут странные числа - предполагаю неправильный расчёт стоимости доставки, например. Ещё меня смущает, что скидка не привязана к item'ам. Будут проблемы с выписыванием чеков. Но хозяин барин, конечно ¯\_(ツ)_/¯
Не получится, так как в checkout_before_confirm - не передаются данные о стоимости заказа, они появляется только в хуке checkout_after_confirm
Ещё меня смущает, что скидка не привязана к item'ам.
Так в том то и дело что нужно чтобы скидка была общей (распространялась и на стоимость доставки в том числе) текущий механизм скидок действует только на товары в заказе. На самом деле никакой сложности нет, в хуке order_action.create - приходят все данные и там мы просто увеличиваем discount как нам нужно и соотвественно во всех письмах в плагины оплаты передаются правильные (нужные нам) данные - загвоздка оставалась только в отображение данной скидки на этапе оформления заказа
Ну и это не наша прихоть, это задача от одного из работающих магазинов довольно крупного причем
Код шага confirm берёт все свои числа из того, что доступно в хуке before_confirm. Ничего нового там особо не появляется. В качестве примера посмотрите
6 комментариев
Хуки `checkout_after_<step>` выполняются после рендера HTML соответствующего шага. Менять там переменные, конечно, уже поздно.
Есть хук `checkout_render_confirm`. Он вызывается перед тем, как отрендерить шаблон шага `confirm`. В хук передаётся `$params['vars']` - это как раз переменные для шаблона.
Но вообще это так себе идея. Ну покажете вы визуально другую стоимость. Но на создаваемый заказ-то это никак не повлияет. Во все способы доставки и оплаты (которые до шага confirm) другие числа уйдут. По-хорошему надо где-то сильно раньше последнего шага цены подменять.
Расскажите поподробнее, что за функционал вам нужно реализовать. Я постараюсь предложить удачное место, чтобы вклиниться.
Функционал "финальная скидка", то есть скидка должна добавляться уже после всего расчета. И самое интересное, что если вызвать waOrder.form.reload() (синтаксис по пдословно не помню) то покажутся правильные числа, с чем это связано загадка, сейчас так и реализовали из минусов - двойные запросы при изменении данных
Для этого можно использовать хук order_action.create
Попробуйте в $params['data']['order'] вписать вашу финальную скидку. Это shopOrder. Что-то вроде
Если сделать это в хуке checkout_before_confirm, то должно быть хорошо. Оно по идее даже в итоговый заказ попадёт.
Но вообще вы делаете что-то странное. Меня смущает, что в плагины доставки и оплаты уйдут странные числа - предполагаю неправильный расчёт стоимости доставки, например. Ещё меня смущает, что скидка не привязана к item'ам. Будут проблемы с выписыванием чеков. Но хозяин барин, конечно ¯\_(ツ)_/¯
Не получится, так как в checkout_before_confirm - не передаются данные о стоимости заказа, они появляется только в хуке checkout_after_confirm
Так в том то и дело что нужно чтобы скидка была общей (распространялась и на стоимость доставки в том числе) текущий механизм скидок действует только на товары в заказе. На самом деле никакой сложности нет, в хуке order_action.create - приходят все данные и там мы просто увеличиваем discount как нам нужно и соотвественно во всех письмах в плагины оплаты передаются правильные (нужные нам) данные - загвоздка оставалась только в отображение данной скидки на этапе оформления заказа
Ну и это не наша прихоть, это задача от одного из работающих магазинов довольно крупного причем
Код шага confirm берёт все свои числа из того, что доступно в хуке before_confirm. Ничего нового там особо не появляется. В качестве примера посмотрите
там прям сверху видно, откуда все эти суммы берутся.
Хорошо просмотрим еще раз, может что упустили, но все таки было бы неплохо добавить возможность перегенерировать шаблоны