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

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

  • Устанавливаем из Маркетплейса решение epages.pickpoint http://marketplace.1c-bitrix.ru/solutions/epages.pickpoint/
  • В файлике bitrix/modules/epages.pickpoint/cities.csv включаем нужный город отправки - находим нужный город и в конце строки false заменяем на true, например
    550;Красноярск;Krasnoyarsk;Красноярский край;true
  • Переходим Рабочий стол → Настройки → Настройки продукта → Настройки модулей → PickPoint и заполняем поля (все данные есть в Договоре)
    • Настройки:
      • ИКН магазина
      • Логин для входа в личный кабинет
      • Пароль для входа в личный кабинет
      • Стандартное описание вложения
      • включаем галочку «Тестовый режим»
      • Допустимые типы услуг (обычно только STD, STDCOD)
      • Допустимые виды приема (обычно CUR, WIN)
      • Ставим галочку «Дописывать информацию о выбранном постамате в поле «Комментарий к заказу»
      • При необходимости заполняем «От какой цены бесплатная доставка, руб.»
      • Там же при необходимости добавляем/изменяем параметры в разделе «Физическое лицо»
    • Тарифные зоны:
      • Город отправки - выбираем город отправки (который правили в файлике cities.csv)
      • Адрес клиентского возврата
      • Телефон клиентского возврата
      • Устанавливаем цены для Тарифных зон (данные берем так же из Договора), если есть - устанавливаем «Использовать региональный коэффициент»
    • Подключаем службу доставки: переходим в Рабочий стол → Магазин → Настройки → Службы доставки и добавляем новую Автоматизированную службу доставки:
      • Общие настройки:
        • Название
        • Активность - ставим галочку
        • Описание
        • Логотип
      • Настройки обработчика:
        • Служба доставки: выбираем PickPoint [pickpoint]
        • Наценка и ее тип - по желанию
    • Подключаем платежную систему: переходим в Рабочий стол → Магазин → Настройки → Платежные системы и добавляем новую:
      • Обработчик: PickPoint (epages.pickpoint)
      • Заголовок и название: что-нибудь вроде «Оплата в постамате Pick Point»
      • Активность - включена галочка
      • Описание - по желанию
      • Добавляем логотип
      • Тип оплаты: безналичный
      • Разрешить автопересчет оплаты - включена галочка

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

  • Класс bx_result_price, вывод в файле bitrix/modules/epages.pickpoint/block.php
  • Файл стилей CSS bitrix/templates/YOU_TEMPLATE/custom.css

Я сделал так:

В файле 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;
    }
  • software/bitrix/bitrix-pickpoint.txt
  • Последнее изменение: 2017/05/09 18:34
  • 127.0.0.1