ms_cdek2 и несколько складов отправки
Есть интернет-магазин и два склада в разных городах. Доставка производится сдэком. Используется Modx+ms2+ms_cdek2. С какого склада поедет товар — зависит от города, куда будет доставка. Можно как-то для ms2_cdek менять город отправки на фронтэнде? В корзине покупатель выбирает свой город и в зависимости от этого выбирается, с какого склада поедет товар, и рассчитывается стоимость доставки исходя из этого. Так возможно сделать?
UPD. В /core/components/ms_cdek2/model/ms2/mscdekhandler.class.php в строке 54 из системных настроек берётся sender_index:
Теперь вопрос: как передать это значение с фронта?
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.Теперь вопрос: как передать это значение с фронта?
Комментарии: 7
Поскольку пункт отправления берётся из системных настроек, надо менять системную настройку. Я б попробовал менять на событие msOnAddToOrder.
Так она тогда поменяется для всех пользователей, делающих заказ в этот момент.
Логично. Тогда надо переписывать основной класс, который отвечает за расчёт доставки. Ну как переписывать переопределить метод getSenderCity() в core/components/ms_cdek2/model/ms_cdek2.class.php Правда после этого обновлять компонент будет нельзя.
А разве запрос в сдэк делается не джаваскриптом на фронте? Может, в эту сторону копать?
Нет, JS отправляет запрос на сервер, а запрос в СДЭК уже там делается. Честное пионерское.
В коде страницы есть такое:
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 меняется в зависимости от системной настройки индекса. Все еще нельзя на фронте его менять?
Можно, только это никак не повлияет на расчёт стоимости.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.