Очередность выполнения плагинов
Здравствуйте.
Никак не могу сообразить.
Есть 2 плагина на одно событие msOnCreateOrder: msBonus2 (уменьшает стоимость заказа на сумму списанных бонусов) и msTelegram (отправляет заказ в бот телеграма).
Так вот, в телеграм заказ попадает по первоначальной стоимости (т.е. без учета бонусов).
Насколько я понял, это происходит по причине того, что сначала заказ отправляется в телеграм, а потом уже из него вычитаются бонусы. Пробовал менять приорететы события в плагинах — почему-то не помогает.
Пробовал изменить событие в msTelegram с msOnCreateOrder на msOnSaveOrder — так работает, но мне так не нужно (потому что много сообщений получается).
Вопрос: Как сделать так, что бы сначала вычитались бонусы, а уж потом заказ с корректной стоимостью отправлялся в телеграм?
Никак не могу сообразить.
Есть 2 плагина на одно событие msOnCreateOrder: msBonus2 (уменьшает стоимость заказа на сумму списанных бонусов) и msTelegram (отправляет заказ в бот телеграма).
Так вот, в телеграм заказ попадает по первоначальной стоимости (т.е. без учета бонусов).
Насколько я понял, это происходит по причине того, что сначала заказ отправляется в телеграм, а потом уже из него вычитаются бонусы. Пробовал менять приорететы события в плагинах — почему-то не помогает.
Пробовал изменить событие в msTelegram с msOnCreateOrder на msOnSaveOrder — так работает, но мне так не нужно (потому что много сообщений получается).
Вопрос: Как сделать так, что бы сначала вычитались бонусы, а уж потом заказ с корректной стоимостью отправлялся в телеграм?
Комментарии: 8
Приоритет должен был помочь. Вы после изменения приоритета кеш почистили?
да, чистил… и в админке, и через файлы
у плагина msBonus на событие msOnCreateOrder стоит приоритет 9999999, у плагина msTelegram был 0 — я поставил 99999999 (на одну 9 больше)… ))
не помогло
Я бы через логи проверил порядок, вдруг он всё же верный. Тогда надо смотреть откуда берут данные плагин msTelegram
msTelrgram:
$message = "
Новый заказ #{$msOrder->num}
на сумму {$msOrder->cost} р.
Оплата: {$msOrder->Payment->name}
Доставка: {$msOrder->Delivery->name}
...
"
Такое ощущение, что эти бонусы «долго списываются» и msTelegram раньше начинает свою работу, даже если по порядку он включается позже… Такое может быть?
Может быть моно настроить какую-нибудь задержку по времени выполнения?
Может быть моно настроить какую-нибудь задержку по времени выполнения?
Вывел в логи срабатывание плагинов:
т.е. отправку телеграм нужно вешать на какое-то другое событие? Но ведь тогда будут лишние сообщения приходить при каждом сохранении заказа? А нужно только о новых заказах писать в телеграм?
Что-то я совсем запутался — на почту ведь нормальное письмо приходит, со всеми бонусами (и на странице «Заказ получен» тоже всё хорошо)
[2023-10-15 13:50:33] Сработал msBonus: OnMODXInit
[2023-10-15 13:50:33] Сработал msBonus: msOnBeforeSaveOrder
[2023-10-15 13:50:33] Сработал msBonus: msOnSaveOrder
[2023-10-15 13:50:33] Сработал msBonus: msOnCreateOrder
[2023-10-15 13:50:33] Сработал msTelegram
[2023-10-15 13:50:34] Сработал msBonus: msOnEmptyCart
[2023-10-15 13:50:34] Сработал msBonus: msOnBeforeChangeOrderStatus
[2023-10-15 13:50:34] Сработал msBonus: msOnBeforeSaveOrder
[2023-10-15 13:50:34] Сработал msBonus: msOnSaveOrder
[2023-10-15 13:50:34] Сработал msBonus: msOnBeforeSaveOrder
[2023-10-15 13:50:34] Сработал msBonus: msOnSaveOrder
[2023-10-15 13:50:34] Сработал msBonus: msOnSaveOrder
[2023-10-15 13:50:35] Сработал msBonus: OnMODXInit
[2023-10-15 13:50:43] Сработал msBonus: OnMODXInit
В событии msOnCreateOrder порядок верный сейчас (сначала msBonus, потом msTelegram).т.е. отправку телеграм нужно вешать на какое-то другое событие? Но ведь тогда будут лишние сообщения приходить при каждом сохранении заказа? А нужно только о новых заказах писать в телеграм?
Что-то я совсем запутался — на почту ведь нормальное письмо приходит, со всеми бонусами (и на странице «Заказ получен» тоже всё хорошо)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.