logo

Сайты / Разработка / 
Opencart 2.x с QuickCheckout - импорт заказов в Битрикс24

01 декабрь, 2017 440 0
На мой Opencart 2.1.0.1 установлено несколько модулей, меняющих как форму заказа, так и страничку о успешном заказе. В интернете несколько мануалов по установке модуля экспорта заказов в Битрикс24, но они не учитывают сторонние модули, работают только на дефолтном магазине, и заказ в битрикс экспортируется при нажатии кнопки "отправить заказ", а при установленом модуле QuickCheckout форма заказа обновляется через ajax и заказ в битрикс либо вообще не экспортируется, либо экспортируется каждый раз при обновлении формы. Нас это не устраивает, будем дорабатывать.

Методом тыка, нашёл идеальное место для вставки кода экспорта заказов, несмотря на все установленные модули, одно остаётся неизменным - письмо-уведомление о новом заказе - туда и будем встраивать доработанную функцию.

Лениво было возиться с исправлением модуля, поэтому правил напрямую файлы OpenCart'а. За отправку письма-уведомления отвечает файл .../catalog/model/checkout/order.php - открываем, ищем строки
// If order status is 0 then becomes greater than 0 send main html emailif (!$order_info['order_status_id'] && $order_status_id) {...}[/code]

Вставляем код экспорта Битрикс24 в функцию отправки уведомления в самый конец, перед закрывающим }, чтобы все данные из массивов для письма спарсировались при экспорте в битрикс. Советую создать отдельного пользователя в своём Битрикс24, ограничить права по полной, оставив только возможность создания лидов и, может, писать в живую ленту.
$bitrix24login = "xxx@xxx"; // Укажите логин аккаунта для добавления лида
$bitrix24password = "xxx"; // Укажите пароль аккаунта для добавления лида
$bitrix24domen = "xxx.bitrix24.ru"; // Укажите домен вашего битрикса

$bitrix24products = "";
foreach ($data['products'] as $product) {
$bitrix24option = empty($product['option']) ? "" : "<br/><br/><b>Опции:</b>";
$bitrix24products .= 
"<b>Товар:</b> (".$product['sku'].") ".$product['name']." (<a target='_blank' href='https://".$_SERVER['HTTP_HOST']."/index.php?route=product/product&product_id=".$product['product_id']."'>Ссылка</a>)".
"<br/><b>Магазин:</b> ".$product['storage'].
"<br/><b>Цена:</b> ".$product['price']." руб.".
$bitrix24option
;

foreach ($product['option'] as $option) {
if ($option['type'] == 'checkbox') {
$bitrix24products .= "<br/>-- Выбрано: ".$option['name'];
} else {
$bitrix24products .= "<br/>-- ".$option['name'].": ".$option['value'];
}
}

if ($product != end($data['products'])) {
$bitrix24products .= "<br/><br/>------------------------------------------------<br/><br/>";
} else {
$bitrix24products .= "<br/>";
}
}

$validationEmail = filter_var($data['email'], FILTER_VALIDATE_EMAIL);
if ($validationEmail) {
$bitrix24email = $data['email'];
} else {
$bitrix24email = "";
}

if (!empty($data['shipping_address_1'])) {
$bitrix24address = array();
if (!empty($data['shipping_postcode'])) { $bitrix24address[] = $data['shipping_postcode']; }
if (!empty($data['shipping_city'])) { $bitrix24address[] = $data['shipping_city']; }
if (!empty($data['shipping_address_1'])) { $bitrix24address[] = $data['shipping_address_1']; }
$bitrix24address = implode(', ', $bitrix24address);
} else {
$bitrix24address = "";
}

$bitrix24data = "";
if (!empty($data['comment'])) {
$bitrix24data .= "<br>------------------Комментарий-------------------<br>";
$bitrix24data .= $data['comment'];
}

$shipping_summ = 0;
if (isset($data['totals'])) {
foreach($data['totals'] as $val) {
if ($val['code'] == 'shipping') {
$shipping_summ = $val['value'];
break;
}
}
}
$bitrix24data .= "<br><br>---------------------Доставка-----------------------<br><br>";
$bitrix24data .= $data['shipping_method'].' ('.$shipping_summ.' руб.)';

$bitrix24data .= "<br><br>----------------------Оплата------------------------<br><br>";
$bitrix24data .= $data['payment_method'];
$bitrix24data .= "<br><br>";

$bitrix24GetData = array(
'LOGIN' => $bitrix24login,
'PASSWORD' => $bitrix24password,
'TITLE' => "Заказ №".$order_id,
'NAME' => $data['firstname'],
'LAST_NAME' => $data['lastname'],
'PHONE_OTHER' => $data['telephone'],
'OPPORTUNITY' => $data['total'],
'SOURCE_ID' => 'WEB',
'SOURCE_DESCRIPTION' => $data['store_url'],
'COMMENTS' => $bitrix24products.$bitrix24data
);
if (!empty($bitrix24email)) { $bitrix24GetData['EMAIL_OTHER'] = $bitrix24email; }
if (!empty($bitrix24address)) { $bitrix24GetData['ADDRESS'] = $bitrix24address; }

$bitrix24GetData = http_build_query($bitrix24GetData);
file_get_contents("https://".$bitrix24domen."/crm/configs/import/lead.php?".$bitrix24GetData);
Настраиваем вывод информации в битрикс под себя, оставляя только нужные поля.
Не забываем обновить кэш модификаторов после изменений.

Вуаля, заказы добавляются в CRM Битрикс24 как лиды от пользователя, чей логин мы указали. Далее, для автоматизации производства по заказам, можем настроить роботов, обрабатывающих новых лидов от пользователя ххх@ххх.

Заходим в CRM - Ещё - Настройки - Автоматизация

Пролистываем чуть ниже, видим едва заметную опцию "Настроить роботов" - открываем и настраиваем как нам угодно. Например, по условию, если в заказе, что мы получили есть слово "Свободный", то отправлять сообщение в живую ленту на нужных сотрудников, при эттом автор сообщения будет "Робот Надежда" :)

В итоге мы получаем Лид в CRM и собщение в живой ленте:  

На этом настройка экспорта завершена. 
Теги:
opencart bitrix24
Прокомментировать
Введите код с картинки:*
Кликните на изображение чтобы обновить код, если он неразборчив
все шаблоны для dle на сайте newtemplates.ru скачать