Очередность выполнения плагинов

Здравствуйте.
Никак не могу сообразить.
Есть 2 плагина на одно событие msOnCreateOrder: msBonus2 (уменьшает стоимость заказа на сумму списанных бонусов) и msTelegram (отправляет заказ в бот телеграма).
Так вот, в телеграм заказ попадает по первоначальной стоимости (т.е. без учета бонусов).
Насколько я понял, это происходит по причине того, что сначала заказ отправляется в телеграм, а потом уже из него вычитаются бонусы. Пробовал менять приорететы события в плагинах — почему-то не помогает.
Пробовал изменить событие в msTelegram с msOnCreateOrder на msOnSaveOrder — так работает, но мне так не нужно (потому что много сообщений получается).
Вопрос: Как сделать так, что бы сначала вычитались бонусы, а уж потом заказ с корректной стоимостью отправлялся в телеграм?
Игорь
14 октября 2023, 18:59
modx.pro
342
0

Комментарии: 8

Артур Шевченко
14 октября 2023, 19:54
0
Приоритет должен был помочь. Вы после изменения приоритета кеш почистили?
    Игорь
    14 октября 2023, 19:59
    0
    да, чистил… и в админке, и через файлы
      Игорь
      14 октября 2023, 21:15
      0
      у плагина msBonus на событие msOnCreateOrder стоит приоритет 9999999, у плагина msTelegram был 0 — я поставил 99999999 (на одну 9 больше)… ))
        Игорь
        14 октября 2023, 21:49
        0
        не помогло
          Артур Шевченко
          14 октября 2023, 22:16
          0
          Я бы через логи проверил порядок, вдруг он всё же верный. Тогда надо смотреть откуда берут данные плагин msTelegram
            Игорь
            15 октября 2023, 11:24
            0
            msTelrgram:
            $message = "
            Новый заказ #{$msOrder->num}
            на сумму {$msOrder->cost} р.
            Оплата: {$msOrder->Payment->name}
            Доставка: {$msOrder->Delivery->name}
            ...
            "
              Игорь
              15 октября 2023, 11:50
              0
              Такое ощущение, что эти бонусы «долго списываются» и msTelegram раньше начинает свою работу, даже если по порядку он включается позже… Такое может быть?
              Может быть моно настроить какую-нибудь задержку по времени выполнения?
      Игорь
      15 октября 2023, 13:59
      0
      Вывел в логи срабатывание плагинов:
      [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).
      т.е. отправку телеграм нужно вешать на какое-то другое событие? Но ведь тогда будут лишние сообщения приходить при каждом сохранении заказа? А нужно только о новых заказах писать в телеграм?
      Что-то я совсем запутался — на почту ведь нормальное письмо приходит, со всеми бонусами (и на странице «Заказ получен» тоже всё хорошо)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8