Сергей Эсауленко

При оформление заказа проверять наличие профиля покупателя у других пользователей Битрикс

Оглавление:

    Давольно часто приходится в момент оформления заказа формировать данные по своему. В данной ситуации делается некая проверка по имеющим профилям покупателей. Данный механизм проверяет, есть ли данный ИНН в других учетных записях пользователей. Если есть, то не даст возможность оформить заказа клиенту. Данный метод подходит для оптовых клиентов.

    // События на сохранение заказа
    $eventManager->addEventHandler('sale', 'OnSaleOrderBeforeSaved', 'OnSaleOrderBeforeSavedCustom');
    function OnSaleOrderBeforeSavedCustom(\Bitrix\Main\Event $event)
    {
        $order = $event->getParameter("ENTITY");
    
            //Собираем свойства заказа
            $orderProps = [];
            /** @var Bitrix\Crm\Order\PropertyValue $orderProp */
            foreach ($order->getPropertyCollection() as $propId => $orderProp) {
                if (!empty($orderProp->getField("CODE"))) {
                    $orderProps[$orderProp->getField('CODE')] = trim($orderProp->getValue());
                }
            }
            //Метод возвращает результат выборки записей из профилей покупателя
            //Далее по полученным полям находим информацию по ИНН
            $arUserProps = CSaleOrderUserPropsValue::GetList(
                array("ID" => "ASC"),
                Array(
                    "CODE" => 'INN',
                    "VALUE" => $orderProps['INN']
                )
            )->Fetch();
            //если значение у свойства профиля существует
            //то информируем об этого пользователя
            if ($arUserProps)
            {
                $event->addResult(new \Bitrix\Main\EventResult(
                    \Bitrix\Main\EventResult::ERROR,
                    new \Bitrix\Sale\ResultError('Такой ИНН уже используется в другой учетной записи пользователя.<br> Если это ошибка, обратитесь за помощью к нам')
                ));
            }
    }
    06.07.2021
    1C-Битрикс или Wordpress: какую CMS выбрать для лучшей работы сайта?