/
bitrix-dev
/
Starter-kit
Обзор
Документация
Войти
/
bitrix-dev
/
Starter-kit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
local/php_interface/init/Handlers/OrderMakeHandler.php
97 строк
4 KB
Alexey Karizhenskiy
Первая сборка (из ранее используемого)
19 янв 2026, 21:00
19 янв 2026, 21:00
d843e36
Код
Авторство
О чём код?
<?php class OrderMakeHandler { /** * Добавляет дополнительные данные в компонент оформления заказа * @param array $result Массив результатов * @return array Модифицированный массив результатов * @throws \Exception */ public static function OnSaleComponentOrderJsData(array $result): array { $request = \Bitrix\Main\Context::getCurrent()->getRequest(); /* // Получить дополнительные данные для товаров if ($result['JS_DATA']['GRID']['ROWS']) { foreach ($result['JS_DATA']['GRID']['ROWS'] as &$item) { } unset($item); } // Получить цену заказа без скидки $result['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE_OLD'] = 0; $result['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE_OLD_FORMATED'] = ''; if ($result['JS_DATA']['TOTAL']['DISCOUNT_PRICE'] > 0) { $result['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE_OLD'] = $result['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE'] + $result['JS_DATA']['TOTAL']['DISCOUNT_PRICE']; $result['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE_OLD_FORMATED'] = \CCurrencyLang::CurrencyFormat($result['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE_OLD'], 'RUB'); } */ // Получение минимальной суммы заказа и установка $result['JS_DATA']['MIN_ORDER_SUM'] = 0; if (class_exists('SiteOption')) { $minOrderSum = intval(\SiteOption::get('MIN_ORDER_SUM')); $result['JS_DATA']['MIN_ORDER_SUM'] = max($minOrderSum, 0); } return $result; } /** * Обработчик события после создания заказа * @param \Bitrix\Main\Event $event */ public static function OnSaleOrderSaved(\Bitrix\Main\Event $event): void { /** @var \Bitrix\Sale\Order $order */ $order = $event->getParameter("ENTITY"); if (!$event->getParameter("IS_NEW")) { return; } $request = \Bitrix\Main\Context::getCurrent()->getRequest(); $profileID = $request->getPost('order')['PROFILE_ID'] ?? false; $propertyCollection = $order->getPropertyCollection(); // Если значение свойства "FULL_NAME" пустое, то заполнить его значением свойства "NAME" + "LAST_NAME" $propertyFullName = $propertyCollection->getItemByOrderPropertyCode('FULL_NAME'); $propertyName = $propertyCollection->getItemByOrderPropertyCode('NAME'); $propertyLastName = $propertyCollection->getItemByOrderPropertyCode('LAST_NAME'); if ($propertyFullName && empty($propertyFullName->getValue()) && $propertyName && $propertyLastName) { $fullName = trim($propertyName->getValue() . ' ' . $propertyLastName->getValue()); if (!empty($fullName)) { $propertyFullName->setValue($fullName); } } // Сохраняем заказ $order->save(); } /** * Обработчик события после оформления заказа в один шаг * @param array $arResult * @param array $arUserResult * @param array $arParams */ public static function OnSaleComponentOrderOneStepComplete($orderID, $orderFields, $arParams): void { if (!$orderID) { return; } $event = new \Bitrix\Main\Event('sale', 'OnSaleOrderSaved', [ 'ENTITY' => \Bitrix\Sale\Order::load($orderID), 'VALUES' => [], 'IS_NEW' => true ]); self::OnSaleOrderSaved($event); } }