Настройка PickPoint для Битрикс

Довольно кривое решение, много плохих отзывов. Требуется приложение рук чтобы все это заработало.

В принципе все готово, осталось доточить по вкусу оформление:

Я сделал так:

В файле bitrix/modules/epages.pickpoint/block.php заменил

<div class="bx_result_price"><a onclick

на

<div class="bx_result_price"><a class="pickpoint" onclick

В файл стилей bitrix/templates/YOU_TEMPLATE/custom.css добавил

.bx_result_price {
    font-weight: bold;
    font-size: 16px;
    color: #9e3d5d;
}
a.pickpoint {
    border-bottom: 1px dotted #ca7693;
}
a.pickpoint:hover {
    color: #ca7693;
}

Комментарий к заказу

В версии решения 2.1.3 есть неприятный момент: при включенной галочке «Дописывать информацию о выбранном постамате в поле «Комментарий к заказу» этот самый комментарий пользователя затирается. А если галочку отключить - так не удобно и непонятно куда же этот заказ отправлять. Допиливаем в файле bitrix/modules/epages.pickpoint/general/pickpoint.php в районе 180 строки

Было:

private static function processOrderAdd($orderId, $deliveryId)
    {
        if (in_array($orderId, static::$processedOrders)) {
            return;
        }
 
        $MODULE_ID = static::$moduleId;
 
        $deliveryCode = self::getProfileCodeById($deliveryId);
 
        if ('pickpoint:postamat' == $deliveryCode) {
            $arToAdd = array(
                'ORDER_ID' => $orderId,
                'POSTAMAT_ID' => $_SESSION['PICKPOINT']['PP_ID'],
                'ADDRESS' => $_SESSION['PICKPOINT']['PP_ADDRESS'],
                'SMS_PHONE' => $_SESSION['PICKPOINT']['PP_SMS_PHONE'],
            );
            self::AddOrderPostamat($arToAdd);
            if (COption::GetOptionString($MODULE_ID, 'pp_add_info', '')) {
                $sDescription = "{$_SESSION['PICKPOINT']['PP_ID']}\n"
                    ."{$_SESSION['PICKPOINT']['PP_ADDRESS']}\n"
                    ."{$_SESSION['PICKPOINT']['PP_SMS_PHONE']}";
                $saleOrder = new CSaleOrder();
                $saleOrder->Update($orderId, array('USER_DESCRIPTION' => $sDescription));
            }
        }
 
        unset($_SESSION['PICKPOINT']);
        static::$processedOrders[] = $orderId;
    }

стало:

private static function processOrderAdd($orderId, $deliveryId)
    {
        if (in_array($orderId, static::$processedOrders)) {
            return;
        }
 
        $MODULE_ID = static::$moduleId;
 
        $deliveryCode = self::getProfileCodeById($deliveryId);
 
        if ('pickpoint:postamat' == $deliveryCode) {
            $arToAdd = array(
                'ORDER_ID' => $orderId,
                'POSTAMAT_ID' => $_SESSION['PICKPOINT']['PP_ID'],
                'ADDRESS' => $_SESSION['PICKPOINT']['PP_ADDRESS'],
                'SMS_PHONE' => $_SESSION['PICKPOINT']['PP_SMS_PHONE'],
            );
            self::AddOrderPostamat($arToAdd);
            if (COption::GetOptionString($MODULE_ID, 'pp_add_info', '')) {
                $order_pickpoint = Bitrix\Sale\Order::load($orderId);
                $sDescription = $order_pickpoint->getField('USER_DESCRIPTION') ." Постамат PickPoint: " .
 "{$_SESSION['PICKPOINT']['PP_ID']}\n"
                    ."{$_SESSION['PICKPOINT']['PP_ADDRESS']}\n"
                    ."{$_SESSION['PICKPOINT']['PP_SMS_PHONE']}";
                $saleOrder = new CSaleOrder();
                $saleOrder->Update($orderId, array('USER_DESCRIPTION' => $sDescription));
            }
        }
 
        unset($_SESSION['PICKPOINT']);
        static::$processedOrders[] = $orderId;
    }