Семена – правки
В данной статье внесены все возможные изменения за последнее время на боевом сайте.
Компонент 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 | Наименование события | Описание |
|---|---|---|
| OnSaleComponentOrderJsData | IdentifyBasketType | Обработчик события OnSaleComponentOrderJsData, который срабатывает при формировании данных заказа для фронтенда. Проходит по свойствам товаров в корзине и ищет свойство BASKET_TYPE. Если находит — записывает его значение в JS_DATA.TOTAL.BASKET_TYPE. Дополнительно по этому типу получает минимальную сумму заказа через Basket::getData и сохраняет её в JS_DATA.TOTAL.BASKET_MIN_PRICE. Используется для определения типа корзины и применения соответствующих ограничений (например, минимальной суммы заказа). |