Ознакомьтесь с обновлениями продуктов, которые мы анонсировали! Смотрите, что нового.

/

Семена – правки

В данной статье внесены все возможные изменения за последнее время на боевом сайте.

Компонент sale.order.ajax

Путь: /local/templates/semena/components/bitrix/sale.order.ajax/custom-ahv/template.js

SaleOrderStoreList

НаименованиеОписание
isZeroCoordsФункция-проверка на нулевые координаты (широта, долгота).
getDefaultCoordsВыставляет дефолтные координаты – Москва. Связан с проверкой на нулевые координаты
initИнициализирует карту Yandex Maps после готовности API (ymaps.ready). Определяет стартовые координаты (из delivery.COORDS или дефолтные), создаёт карту и запускает построение кластеров магазинов.
interceptОбрабатывает клики внутри карты/балуна.Закрывает список магазинов при клике вне элемента Обрабатывает выбор магазина (store_list__selector) Обновляет выбранный магазин в родительском компоненте и пересоздаёт обработчики взаимодействия
createPlacemarkСоздаёт метку для конкретного магазина на карте. Формирует содержимое: название, адрес, график работы, телефон, описание и кнопку выбора магазина.
createClustererСоздаёт кластер объектов карты.
updateОбновляет состояние карты при изменении данных доставки.Проверяет валидность карты Центрирует карту Очищает старые объекты Пересоздаёт кластеры магазинов

SaleOrderAjax

НаименованиеОписание
validateПроверяет обязательные поля формы перед оформлением заказа. Формирует список ошибок, если какие-то поля из VALIDATION не заполнены. Для пункта BUYER_STORE дополнительно учитывает тип доставки. При ошибках добавляет их в ERROR_LIST и прокручивает страницу вверх.
sendОтправляет AJAX-запрос на сервер через BX.ajax. Собирает данные формы, добавляет системные параметры Bitrix и переданные payload-данные. Вызывает callback с ответом сервера.
applyOrderDataОбновляет данные заказа после ответа сервера. Проверяет корзину на запрещённые товары, сохраняет их и включает флаг hasForbiddenItems для определенного типа корзины. Формирует слепок корзины для последующего сравнения. Также обновляет списки доставки, оплаты, итоговую сумму и свойства заказа. При необходимости автоматически переключает доступный способ доставки.
updateПроверяет, можно ли оформить заказ: заполнены ли обязательные поля, выбрана ли доставка и оплата. После этого делает запрос на сервер для обновления данных заказа и применяет полученный результат через applyOrderData.
saveФинальная проверка перед оформлением заказа. Проверяет согласие пользователя, минимальную сумму и валидность формы. Затем обновляет данные заказа и сравнивает текущую корзину с сохранённым состоянием. Если всё корректно – запускает финальное сохранение через executeFinalSave.
executeFinalSaveОтправляет финальный запрос на оформление заказа. Если сервер возвращает ошибки (связанные со стоимостью корзины – ниже порогового значения) – выводит их пользователю. Если заказ успешно создан – перенаправляет пользователя на страницу результата.
selectedPaySystemВозвращает выбранную платежную систему из списка, у которой стоит флаг CHECKED.
selectedDeliveryВозвращает выбранный способ доставки из списка, у которого стоит флаг CHECKED.
visiblePaySystemsФильтрует список платежных систем. Скрывает определённые варианты оплаты в зависимости от выбранной доставки и прав администратора.
filteredDeliveryListВозвращает список доставок, исключая запрещённую доставку, если в корзине есть запрещённые товары.Связан с выводом под определенный тип корзины.

Путь: /local/templates/semena/components/bitrix/sale.order.ajax/custom-ahv/template.php

Название поляОписание
COUPON_LISTСписок применённых или доступных купонов. Используется для отображения скидок и их применения к заказу. Может быть пустым, если купонов нет.
PERSON_TYPE_LISTСписок типов плательщика (например, физлицо или юрлицо). Определяет, какие поля формы и правила оформления будут доступны пользователю.
DELIVERY_LISTОбъект со всеми доступными способами доставки. Каждый элемент содержит данные о доставке (ID, название, стоимость, выбран ли сейчас и т.д.). Используется для отображения и выбора доставки.
DELIVERY_LIST_SORTМассив с порядком отображения доставок. Хранит ID доставок в нужной последовательности, чтобы не зависеть от порядка в DELIVERY_LIST.
PAY_SYSTEM_LISTСписок доступных способов оплаты. Каждый элемент содержит информацию об оплате (ID, название, выбран ли и др.). Используется для выбора пользователем способа оплаты.
CURRENT_BUDGET_FORMATEDОтформатированный баланс пользователя (например, бонусный счёт или внутренний кошелёк). Используется, если доступна оплата с внутреннего счёта.
PROPERTY_LISTСписок свойств заказа (поля формы). Это имя, телефон, адрес и другие данные, которые пользователь должен заполнить. Используется для генерации формы оформления заказа.
TOTALОбъект с итоговой информацией по заказу. Содержит сумму заказа, скидки, количество товаров, минимальную сумму и другие финансовые параметры. Используется для отображения итогов и проверок перед оформлением.
VALIDATIONОбъект правил валидации. Ключ — это поле формы, значение — текст ошибки. Используется в методе validate для проверки заполненности обязательных полей.
ERROR_LISTСписок текущих ошибок при оформлении заказа. Заполняется при валидации или ответах сервера и отображается пользователю.
SHOW_DELIVERY_PRICEФлаг, показывать ли стоимость доставки. Меняется в зависимости от выбранного способа оплаты.
IS_AUTHORIZEDФлаг авторизации пользователя. Показывает, залогинен ли пользователь, влияет на доступные действия и данные.
IS_ADMINФлаг администратора. Даёт дополнительные права, например доступ к определённым способам оплаты или доставки.
FORBIDDEN_SECTION_IDSСписок ID разделов (категорий), товары из которых запрещены для определённых условий. Используется для проверки корзины и ограничения доставки.
userCanBuyФлаг, можно ли оформить заказ. Становится true, если заполнены обязательные поля и выбраны доставка и оплата.
basketSnapshotСтрока-снимок текущей корзины (ID товаров и количество). Используется для проверки, не изменилась ли корзина перед оформлением заказа.
hasForbiddenItemsФлаг наличия запрещённых товаров в корзине. Влияет на доступные способы доставки.
forbiddenItemsNamesСписок названий запрещённых товаров. Используется для уведомления пользователя о проблемных позициях.

В файле init.php для оформления заказа:

Для случаев, когда требуется добавить значение или свойство в данные для фронтенда, то необходимо указать будет их в событии, срабатывающем каждый раз для SaleOrderAjax

EventManagerНаименование событияОписание
OnSaleComponentOrderJsDataIdentifyBasketTypeОбработчик события OnSaleComponentOrderJsData, который срабатывает при формировании данных заказа для фронтенда. Проходит по свойствам товаров в корзине и ищет свойство BASKET_TYPE. Если находит — записывает его значение в JS_DATA.TOTAL.BASKET_TYPE. Дополнительно по этому типу получает минимальную сумму заказа через Basket::getData и сохраняет её в JS_DATA.TOTAL.BASKET_MIN_PRICE. Используется для определения типа корзины и применения соответствующих ограничений (например, минимальной суммы заказа).

Семена – Контакты