Настройка 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; }