@kentos

Почему не срабатывает сниппет?

Здравствуйте, нашел сниппет на просторах интернета, и не понимаю почему он может не срабатывать?

Main\EventManager::getInstance()->addEventHandler(
        'sale', 'OnSaleOrderSaved', 'PayLink'
);

function PayLink(Main\Event $event) {
    CModule::IncludeModule("sale");
    $order = $event->getParameter("ENTITY");
    $paymentIds = $order->getPaymentSystemId();
    $personTypeId = $order->getPersonTypeId();
    $propertyCollection = $order->getPropertyCollection();

    if ($paymentIds[0] == 10) {
        $orderPropertyId = ($personTypeId == 1) ? 55 : 56;
        $somePropValue = $propertyCollection->getItemByOrderPropertyId($orderPropertyId);
        if (!$somePropValue) {
            CSaleOrderPropsValue::Add(array(
                'ORDER_ID' => $order->getId(),
                'ORDER_PROPS_ID' => $orderPropertyId,
                'NAME' => "Ссылка на оплату",
                'VALUE' => "https://" . $_SERVER["SERVER_NAME"] . "/pay.php?ORDER_ID=" . $order->getId(),
                'CODE' => "PAY_LINK",
            ));
        } else {
            $propValue = $somePropValue->getValue();
            if (empty($propValue)) {
                // $somePropValue->setValue("https://pk-optex.ru/personal/order/payment/?ORDER_ID=".$order->getId());
                $somePropValue->setValue("https://" . $_SERVER["SERVER_NAME"] . "/pay.php?ORDER_ID=" . $order->getId());
                $somePropValue->save();
            }
        }
    }
}
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 1
@RuComMarket
Битрикс FullStack разработчик
во-первых, это событие со статичными свойствами, т.е. не универсальное. ты эти свойства завел? они точно имеют указанные ID?
во-вторых, а где ты пытаешься проверить этот код? ты добавил этот обработчик события хотя бы в init.php?
в-третьих, учись делать дебаг, Битрикс тебе укажет что именно не работает.
а вообще судя по вопросу, рекомендую начать изучение Битрикса с более легких вещей, что бы понять структуру и логику, тогда не будешь называть обработчики сниппетами, и такой функционал сможешь сам написать под свой проект.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы