ms_cdek2 и несколько складов отправки

Есть интернет-магазин и два склада в разных городах. Доставка производится сдэком. Используется Modx+ms2+ms_cdek2. С какого склада поедет товар — зависит от города, куда будет доставка. Можно как-то для ms2_cdek менять город отправки на фронтэнде? В корзине покупатель выбирает свой город и в зависимости от этого выбирается, с какого склада поедет товар, и рассчитывается стоимость доставки исходя из этого. Так возможно сделать?

UPD. В /core/components/ms_cdek2/model/ms2/mscdekhandler.class.php в строке 54 из системных настроек берётся sender_index:
$from_location = $ms_CDEK2->getLocation(['postal_code' => $ms_CDEK2->config['sender_index']]);
Если заменить это к примеру на
$from_location = $ms_CDEK2->getLocation(['postal_code' => '450000']);
то расчет идет верно от города с индексом 450000.
Теперь вопрос: как передать это значение с фронта?
snowdog178
21 октября 2022, 18:47
modx.pro
153
0

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

Артур Шевченко
21 октября 2022, 20:21
0
Поскольку пункт отправления берётся из системных настроек, надо менять системную настройку. Я б попробовал менять на событие msOnAddToOrder.
    snowdog178
    21 октября 2022, 20:28
    0
    Так она тогда поменяется для всех пользователей, делающих заказ в этот момент.
      Артур Шевченко
      21 октября 2022, 20:34
      0
      Логично. Тогда надо переписывать основной класс, который отвечает за расчёт доставки. Ну как переписывать переопределить метод getSenderCity() в core/components/ms_cdek2/model/ms_cdek2.class.php Правда после этого обновлять компонент будет нельзя.
        snowdog178
        21 октября 2022, 20:36
        0
        А разве запрос в сдэк делается не джаваскриптом на фронте? Может, в эту сторону копать?
          Артур Шевченко
          21 октября 2022, 20:37
          0
          Нет, JS отправляет запрос на сервер, а запрос в СДЭК уже там делается. Честное пионерское.
            snowdog178
            21 октября 2022, 20:46
            0
            В коде страницы есть такое:
            ms_CDEK2.init({
                    "action_url": "/assets/components/ms_cdek2/action.php",
                    "deliveries": [4],
                    "points": [5],
                    "status_id": "#ms_cdek2_status",
                    "map_id": "#ms_cdek2_map",
                    "autocomplete": 1,
                    "widjet": {
                        defaultCity: "Москва",
                        cityFrom: "Москва",
                        link: "ms_cdek2_map",
                        hidedelt: true,
                        path: "https://www.cdek.ru/website/edostavka/template/scripts/",
                        servicepath: "/assets/components/ms_cdek2/widjet/service.php",
                        templatepath: "/assets/components/ms_cdek2/widjet/template.php",
                    }
                });
            Значение cityFrom меняется в зависимости от системной настройки индекса. Все еще нельзя на фронте его менять?
              Артур Шевченко
              21 октября 2022, 21:00
              0
              Можно, только это никак не повлияет на расчёт стоимости.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    7