Складской учет для OpenCart и ocStore
При помощи СКИФ вы можете вести складской и финансовый учет, интегрированный с вашим интернет-магазином на OpenCart. СКИФ устанавливается на вашем сайте, поэтому вы имеете полный контроль над базой данных и возможность дорабатывать систему для своих потребностей.
Что Вам даст интеграция
Будете знать, когда и сколько закуплено, когда, кому и по какой цене продано
Куда были потрачены деньги (на какие статьи затрат)
Автоматизация обновления цен
Назначение ответственных сотрудников и контроль их работы
Склад, товары и остатки
• Сводный учет интернет и оффлайн магазинов, неограниченное количество складов и точек продаж
• Оборачиваемость складских запасов, достаточность товаров на складе
• Актуальные данные об остатках товаров, инвентаризации
• Учет комплектующих и материалов для производства
Финансы и расходы
• Наличие денег в кассах и на счетах
• Данные о дебиторской и кредиторской задолженности
• Отчеты по доходности и ликвидности
Цены
• Удобное обновление продажных цен при изменении закупочных
• Обновление цен из прайсов поставщиков (импорт из Excel)
• Контроль над наценками
• Печать и рассылка прайс-листов
• Печать ценников, в том числе со штрихкодами
Управление персоналом
• Назначение менеджеров клиентам и сделкам
• Расчет заработной платы
• Управление задачами и поручениями
• Мониторинг работы сотрудников
• Настройка прав доступа сотрудников
• Контроль за исправлениями в документах
И многое другое
• Обширная отчетность по всем аспектам работы фирмы
• CRM-инструменты (рассылки, задачи, сверки взаиморасчетов и др.)
• Работа с облачными кассами и фискальными регистраторами по 54ФЗ
И главное - возможность доработок!
Система учета размещается на вашем сайте, поэтому Вы имеете полный контроль над базой данных и возможность вносить собственные доработки.
» Другие возможности СКИФ
• Сводный учет интернет и оффлайн магазинов, неограниченное количество складов и точек продаж
• Оборачиваемость складских запасов, достаточность товаров на складе
• Актуальные данные об остатках товаров, инвентаризации
• Учет комплектующих и материалов для производства
Финансы и расходы
• Наличие денег в кассах и на счетах
• Данные о дебиторской и кредиторской задолженности
• Отчеты по доходности и ликвидности
Цены
• Удобное обновление продажных цен при изменении закупочных
• Обновление цен из прайсов поставщиков (импорт из Excel)
• Контроль над наценками
• Печать и рассылка прайс-листов
• Печать ценников, в том числе со штрихкодами
Управление персоналом
• Назначение менеджеров клиентам и сделкам
• Расчет заработной платы
• Управление задачами и поручениями
• Мониторинг работы сотрудников
• Настройка прав доступа сотрудников
• Контроль за исправлениями в документах
И многое другое
• Обширная отчетность по всем аспектам работы фирмы
• CRM-инструменты (рассылки, задачи, сверки взаиморасчетов и др.)
• Работа с облачными кассами и фискальными регистраторами по 54ФЗ
И главное - возможность доработок!
Система учета размещается на вашем сайте, поэтому Вы имеете полный контроль над базой данных и возможность вносить собственные доработки.
» Другие возможности СКИФ
Выберите вариант комплектации
1 Модуль синхронизации: | 6900 |
2 Версия СКИФ: |
0 |
Купить за 6900 | |
Гарантия! MoneyBack 7 дней. Если модуль Вам не подойдет, мы вернем деньги. |
Что интегрируется
из СКИФ в OpenCart передаются производители, категории, товары, цены, остатки и изменения в заказах
из OpenCart в СКИФ передаются интернет-заказы, оплаты и данные о покупателях.
Как установить
Установка и настройка выполняются нашими специалистами бесплатно. Вы также можете выполнить установку самостоятельно по инструкции ниже. ИНСТРУКЦИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ УСТАНОВКИ
1 Скачайте СКИФ
Запросите дистрибутив СКИФ для установки на своем сайте. В ответ сразу придет ссылка на скачивание.
2 Установите СКИФ
Установите СКИФ по инструкции как отдельный сайт или на сайт с OpenCart:
- на отдельный домен или поддомен (если вы планируете создавать на движке СКИФ отдельный интернет-магазин)
- в подпапку сайта с установленным OpenCart (если вы хотите иметь возможность загружать изображения в OpenCart напрямую из СКИФ).
Важно! Таблицы СКИФ должны быть размещены в той же базе данных, что и OpenCart. Они имеют собственный префикс, поэтому никак не могут нарушить работу OpenCart.
3 Приобретите модуль синхронизации
Купите модуль в нашем каталоге плагинов. Сразу после оплаты на Ваш email придет архив с файлами модуля.
4 Скопируйте файлы модуля на сайт
Распакуйте полученный архив в папку /scif/includes/ с сохранением структуры директорий (путь указан от корня установки дистрибутива СКИФ. Если вы установили СКИФ в подпапку основного сайта, например, /wn/, соответственно, распаковать нужно в /wn/scif/includes/)
5 Задайте настройки синхронизации
Скопируйте из блока ниже код с настройками, добавьте его в конец файла wn_settings.php в корне установки СКИФ (это можно сделать через меню "Сервис-Редактор кода") и укажите нужные вам параметры синхронизации. НАСТРОЙКИ СИНХРОНИЗАЦИИ
6 Проверьте настройки
Перейдите на страницу /scif/?act=sync_opencart (или через меню Сервис-OpenCart) чтобы проверить настройки. Если в OpenCart ранее были внесены товары, вы сможете выполнить импорт справочников и остатков.
7 Выполните импорт (если необходимо)
Если в вашем интернет-магазине есть внесенные ранее товары и производители, вы можете импортировать их в СКИФ. Для этого на странице /scif/?act=sync_opencart нажмите ссылку "Импорт справочников из OpenCart". После импорта данных, если в настройках вами была задана синхронизация изображений, вам будет предложено скопировать все картинки.
ИМПОРТ СПРАВОЧНИКОВ ИЗ OPENCART
8 Автоматизируйте синхронизацию (по желанию)
Проверьте работу синхронизации, нажав кнопку "Выполнить синхронизацию" внизу страницы. Если всё в порядке (не выводится никаких ошибок, товары и остатки из СКИФ перенеслись в OpenCart, а заказы из OpenCart в СКИФ), вы можете задать выполнение синхронизации в автоматическом режиме по расписанию через планировщик CRON. Для выполнение через планировщик добавьте вызов скрипта /cron/sync.php с нужным вам расписанием в CRON на своем хостинге.
Проверить, что синхронизация по планировщику выполняется корректно, можно на странице /scif/?act=sync_opencart. Внизу после кнопки "Выполнить синхронизацию" будет выводиться время последней успешной синхронизации.
9 Оптимизация быстродействия OpenCart (рекомендуется)
Мы рекомендуем добавить в базу OpenCart несколько индексов для улучшения его производительности. Эти индексы не связаны с модулем синхронизации, вы можете найти аналогичную рекомендацию в поисковых системах по запросу об оптимизации быстродействия OpenCart.
ИНДЕКСЫ ДЛЯ ПОВЫШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ
Это всё! Теперь Ваш складской учет и интернет-магазин автоматически синхронизируются!
Остались вопросы или нужна доработка синхронизации под Ваши потребности? Напишите нам biz@webnice.biz
Запросите дистрибутив СКИФ для установки на своем сайте. В ответ сразу придет ссылка на скачивание.
2 Установите СКИФ
Установите СКИФ по инструкции как отдельный сайт или на сайт с OpenCart:
- на отдельный домен или поддомен (если вы планируете создавать на движке СКИФ отдельный интернет-магазин)
- в подпапку сайта с установленным OpenCart (если вы хотите иметь возможность загружать изображения в OpenCart напрямую из СКИФ).
Важно! Таблицы СКИФ должны быть размещены в той же базе данных, что и OpenCart. Они имеют собственный префикс, поэтому никак не могут нарушить работу OpenCart.
3 Приобретите модуль синхронизации
Купите модуль в нашем каталоге плагинов. Сразу после оплаты на Ваш email придет архив с файлами модуля.
4 Скопируйте файлы модуля на сайт
Распакуйте полученный архив в папку /scif/includes/ с сохранением структуры директорий (путь указан от корня установки дистрибутива СКИФ. Если вы установили СКИФ в подпапку основного сайта, например, /wn/, соответственно, распаковать нужно в /wn/scif/includes/)
5 Задайте настройки синхронизации
Скопируйте из блока ниже код с настройками, добавьте его в конец файла wn_settings.php в корне установки СКИФ (это можно сделать через меню "Сервис-Редактор кода") и укажите нужные вам параметры синхронизации. НАСТРОЙКИ СИНХРОНИЗАЦИИ
Код настроек
Импорт заказов
$sync_opencart=array( // сборка и версия OpenCart. Возможные значения: // ocstore1 - для сборки ocStore 1.5 https://ocstore.com/downloads // ocstore2 - для сборки ocStore 2.3.0.2.3 https://ocstore.com/downloads // ocstore3 - для сборки ocStore 3.0.2.0 https://ocstore.com/downloads // opencart2 - для opencart версии 2.3.0.2 http://opencart-russia.ru/ // opencart3 - для opencart версии 3.0.2.0 http://opencart-russia.ru/ // узнать версию можно в файле index.php в корне установки OpenCart 'version'=>'укажите', // если вы используете opencart и установлен модуль SeoPro, установите 1 (в ocStore модуль включен в комплект). // (если не уверены, проверьте наличие поля main_category в таблицу product_to_category) 'seopro'=>0, // префикс базы данных интернет-магазина 'shop_prefix'=>'oc_', // код языка магазина 'language_id'=>1, // Записывать заказ в таблицу заказов wn_orders: Меню "Торговля-Заявки с сайта" // без данных о товарах, эта таблица может использоваться для контроля обработки заказов из разных источников // Укажите код типа заказа из массива $scif_order_fields['type'] в файле настроек wn_settings.php в корне папки установки СКИФ. // Рекомендуется добавить отдельный, например 2-Интернет-магазин // Если не задан, заказ не будет копироваться в эту таблицу //'scif_order_type'=>0, // код группы в справочнике контрагентов в СКИФ, в которой будут добавляться заказчики интернет-магазина 'scif_contr_group'=>1, // если заказ без авторизации, искать в базе клиента по номеру телефона и относить заказ на него // true - по телефону, email - по телефону и email //'match_noaut_client'=>true, // код группы в справочнике статей движения в СКИФ для импорта статусов заказов из OpenCart. Если 0, то статусы импортироваться и обновляться не будут 'scif_finitem_group'=>6, // код склада в СКИФ для обновления остатков в OpenCart. Если не задан или установлен в 0, остатки в OpenCart не обновляются 'scif_store'=>0, // код типа цен в СКИФ для синхронизации с магазином. По умолчанию 2-Продажные 'scif_price'=>2, // раскомментируйте, если нужно отключить обновление цен в OpenCart из СКИФ //'noupdate_prices'=>true, // с каким полем синхронизировать поле СКИФ Артикул (vendorcode): sku или model // если установлено model, нужно задать для поля Артикул в СКИФ обязательность и длину 64 символа // $sprs[5]['fields']['vendorcode']['required']=true; $sprs[5]['fields']['vendorcode']['maxlength']=64; 'vendorcode'=>'sku', // что сохраняем в поле vendorcode опции: значение родительского товара (по умолчанию), пустое "" или NULL //'vendorcode_option'=>'""', // раскомментируйте, если нужно отключить синхронизацию описаний и тега Title (например, для случаев, когда данные на сайте заполняет SEO-шник) //'noupdate_seo'=>true, // дополнительное условие выборки для обновления производителей в OpenCart. Используйте 'AND 0' чтобы не обновлять производителей //'where_spr_values'=>'', // дополнительное условие выборки для обновления категорий товаров в Опенкарт. // Например, для исключения групп с кодами 1,2 используйте 'AND s.id NOT IN (1,2)' // Чтобы вообще не обновлять категории, используйте 'AND 0' //'where_spr_noms_gr'=>'', // дополнительное условие выборки для обновления товаров в Опенкарт. // Например, для исключения товаров из групп с кодами 1,2 используйте 'AND s.parent NOT IN (1,2)' // Чтобы вообще не обновлять товары, используйте 'AND 0' //'where_spr_noms'=>'', // дополнительное условие выборки заказов для импорта в СКИФ. Рекомендуется задать дату начала синхронизации, // чтобы не импортировались старые заказы при их изменении (при необходимости, их можно импортировать вручную из меню Сервис-Opencart, Импортировать заказ // Другие условия: загрузка только 10 последних заказов (для отладки): 'OR 1 ORDER BY o.order_id DESC LIMIT 10'; // или не загружать "незавершенные заказы" - 'AND o.order_status_id>0' 'where_order'=>'AND o.date_added>="2024-05-01 00:00:00"', // Коды из таблицы OpenCart order_total и соответствующие им коды услуг из номенклатуры СКИФ, которые нужно вносить в состав заказа в документ СКИФ (доставка, ваучеры, купоны и т.д.). // Cумма позиций, коды по которым в этом массиве не определены, будет вноситься в поле "Накладные расходы" // например, array('shipping'=>1054,'coupon'=>1055,'voucher'=>1055) // Если будут использоваться отрицательные суммы, включите в меню Сервис-Настройки опцию "разрешить минусовые цены" 'order_total_codes'=>array(), // данные для создания документа в СКИФ (пользователь, организация, контрагент, склад, ответственный), // если они отличаются от массива $wn_catalog_invoice, указанного в файле настроек wn_settings.php в корне сайта // array('user_insert'=>1,'org'=>1,'contr'=>1,'store'=>1,'manager'=>1,'type'=>11) // Пользователь user_insert - ID пользователя СКИФ, от имени которого будут добавляться записи. Для лучшего контроля рекомендуется завести в СКИФ отдельного пользователя 'invoice'=>$wn_catalog_invoice, // Перечислите через запятую коды статусов заказа из OpenCart, при которых заказ в СКИФ нужно преобразовать в Продажу // (будут уменьшены остатки товара на складе и увеличена задолженность покупателя) 'statuses_confirmed'=>array(), // например, array(1,3,4) // Перечислите через запятую коды статусов заказа из OpenCart, при которых в СКИФ нужно внести оплату 'statuses_paid'=>array(), // например, array(5,6,7) // Перечислите через запятую коды статусов заказа из OpenCart, при которых заказ считается отмененным // (если в СКИФ была создана Продажа, она будет преобразована в Заказ покупателя, а остатки возвращены на склад) 'statuses_rejected'=>array(), // например, array(8) 'rejected_del_pay'=>false, // true - разрешить удалять оплаты при отмене заказа (не рекомендуется, если вы ведете финансовый/кассовый учет по датам) // скопируйте в переменную https_server константу HTTPS_SERVER из config.php в корне установки OpenCart 'https_server'=>'', // использование API для изменение статуса заказа OpenCart из карточки документа в СКИФ // Внимание, для работы API на ocStore 3.0.2 необходимо обновить часть файлов из дистрибутива Opencart 3.0.4 'api'=>array('username'=>'Default','key'=>''), // синхронизировать опции товаров: 0-нет, 1-да. Опции создаются в СКИФ как ОТДЕЛЬНЫЕ товары с названием "Товар // Опция Значение опции" 'use_options'=>0, // синхронизации изображений: 0-не синхронизировать, 1-хранить и в СКИФ и в OpenCart, 2-хранить в OpenCart по symlink, 3-хранить только в СКИФ (подробнее https://www.webnice.biz/opencart/) 'sync_image'=>0, // скопируйте в переменную dir_image константу DIR_IMAGE из config.php в корне установки OpenCart 'dir_image'=>'' // имеет вид '/var/www/..../image/' или /home/.../public_html/image/ ); // Модуль синхронизации будет доступен по адресу /scif/?act=sync_opencart и в меню Сервис $scif_actions[600]=array('name'=>'OpenCart','desc'=>'Синхронизация с OpenCart','file'=>'sync_opencart','menu'=>7); $scif_actions[601]=array('name'=>'Опция','desc'=>'Добавление опции товаров','file'=>'opencart_option'); $scif_actions[602]=array('name'=>'История OpenCart','desc'=>'История изменения статусов заказа OpenCart','file'=>'opencart_history'); $scif_actions[603]=array('name'=>'Изображения OpenCart','desc'=>'Изображения товаров в OpenCart','file'=>'opencart_images'); $scif_actions[604]=array('name'=>'Возвраты OpenCart','desc'=>'Импорт возвратов из OpenCart','file'=>'opencart_refund','menu'=>3, 'days'=>30,'statuses'=>array(3=>array('name'=>'Готов'))); $scif_actions[605]=array('name'=>'Характеристики','desc'=>'Характеристики товаров OpenCart','file'=>'opencart_attributes','menu'=>2); $scif_reps[600]=array('name'=>'Оплаты OpenCart','desc'=>'Оплаты за период с указанием номера заказа в Опенкарт','submenu'=>3); $scif_reps[602]=array('name'=>'История заказов','desc'=>'История заказов Опенкарт по номеру телефона','submenu'=>1); // Функция обработки заказов в СКИФ в зависимости от статуса заказа в OpenCart. Настройте как Вам требуется. // (при каких статусах мы преобразуем заказ в Продажу (списываем остатки), вносим оплату, расформировываем и т.д.) function my_proccess_orders() { global $row, $sync_opencart; if (!$row['scif_id']) { // еще нет заказа в СКИФ, создаем его doc_create(); if (!$row['scif_id']) { return false; } // ошибка создания заказа } else { // проверим, не изменился ли состав заказа. // мы можете отключить обновление состава заказа в направлении из Опенкарт в СКИФ // например, если вы добавляете в СКИФ в заказ товары, отсутствующие в Опенкарт // if (!$row['scif_finitem']) { // обновляем состав только для заказов без статусов (незавершенные заказы) doc_change(); } // Для заданного в параметре 'statuses_confirmed' перечня статусов преобразуем Заказ покупателя в Продажу // (списываем остатки со склада и увеличиваем задолженность покупателя) if (isset($sync_opencart['statuses_confirmed']) AND in_array($row['order_status_id'],$sync_opencart['statuses_confirmed'])) { doc_change_type(2); } // Для заданного в параметре 'statuses_paid' перечня статусов внесем оплату if (isset($sync_opencart['statuses_paid']) AND in_array($row['order_status_id'],$sync_opencart['statuses_paid'])) { // Оплату можно внести только на Продажу, поэтому, сначала проверим, что заказ уже преобразован в Продажу doc_change_type(2); // Внесем оплату doc_payment(); // В функции также можно указать счет/кассу зачисления и статью движения: doc_payment($account=1, $finitem=0) // Например, в зависимости от способа оплаты в OpenCart, внесем оплату на расчетный счет (код 2) или в кассу (код 1) // doc_payment(($row['payment_code']=='bank_transfer'?2:1)); } // Для заданного в параметре 'statuses_rejected' перечня статусов преобразуем Продажу в Заказ покупателя // (остатки будут возвращены на склад, а задолженность покупателя по данному заказу аннулирована) if (isset($sync_opencart['statuses_rejected']) AND in_array($row['order_status_id'],$sync_opencart['statuses_rejected'])) { doc_change_type(11); } // обновим статус (статью движения) заказа в СКИФ doc_update_status(); } // Пользовательская обработка полей OpenCart, отсутствующих в СКИФ // (в карточке товара в СКИФ мы будем видеть код соответствующего ему товара в базе OpenCart и возможность менять поля OpenCart, а также добавлять опции товара) // Файл sync_spritem.php имеет открытый код, вы можете дополнять и видоизменять его под свои потребности. $sprs[5]['userfields']['opencart']=array('name'=>'OpenCart:','type'=>'virtual','my_edit_field'=>'opencart','my_process_field'=>'opencart'); // Поле в документе для возможности менять статус в OpenCart $docs_cat['store']['userfields']['opencart']=array('name'=>'OpenCart:','type'=>'virtual','my_edit_field'=>'opencart','my_process_field'=>'opencart'); function my_edit_field($key,$val,$cur_val='') { global $db, $act, $t, $repl, $row, $row_old, $sync_opencart, $v, $sync_params; $return=''; switch ($val['my_edit_field']) { case 'opencart': $sync_func='my_edit_field'; if ($act=='spritem') { require WN_PATH_INCLUDES.'sync_opencart/sync_spritem.php'; } elseif ($act=='docitem') { require WN_PATH_INCLUDES.'sync_opencart/sync_docitem.php'; } break; } return $return; } function my_process_field($key,$val,$cur_val='') { global $db, $act, $t, $sync_opencart; $return=''; switch ($val['my_process_field']) { case 'opencart': $sync_func='my_proccess_field'; if ($act=='spritem') { require WN_PATH_INCLUDES.'sync_opencart/sync_spritem.php'; } elseif ($act=='docitem') { require WN_PATH_INCLUDES.'sync_opencart/sync_docitem.php'; } break; } return $return; } // Добавляем колонку c кодом заказа OpenCart в журнал документов $scif_actions[3]['my_doclist']=array('head'=>1,'filters'=>1,'sql'=>1,'row'=>1,'foot'=>1); function my_doclist($type) { global $cells, $sqls, $row; switch ($type) { case 'head': $cells[0].='<th data-sorter="digit">OpenCart</th>'; break; case 'filters': $cells[0].='<td><input id="f_shop_id" size="5" maxlength="8" name="f_shop_id" type="text" value="'.(!empty($_REQUEST['f_shop_id'])?intval($_REQUEST['f_shop_id']):'').'" onchange="items(0)"></td>'; break; case 'sql': if (!empty($_REQUEST['f_shop_id'])) { $sqls['where'].=($sqls['where']?' AND ':'').'d.shop_id="'.intval($_REQUEST['f_shop_id']).'"'; } break; case 'row': $cells[0].='<td>'.($row['shop_id']?$row['shop_id']:' ').'</td>'; break; case 'foot': $cells[0].='<td> </td>'; break; } } function scif_meta() { global $act, $meta; // мы добавили еще одну колонку в начало таблицы и потому нужно сдвинуть номер колонки для подсветки Долга с 9 на 10 if ($act=='doclist') { $meta.='<style type="text/css">tr.debt td:nth-child(9) { color:inherit } tr.debt td:nth-child(10) { color:red }</style>'; } } function scif_after_act() { global $db, $act, $v, $row, $is_change_det, $sync_opencart; // обновление состава заказа OpenCart if ($act=='docitem' AND $v AND !empty($_POST['shop_id']) AND !empty($sync_opencart['api']['key']) AND $is_change_det) { // AND !empty($_POST['opencart_change_det']) if (!defined('INCLUDE_FOLDER')) { define('INCLUDE_FOLDER',WN_PATH_INCLUDES.'sync_opencart/'); } require_once INCLUDE_FOLDER.'sync_functions.php'; opencart_change_det($v,$_POST['shop_id']); } // была изменена табличная часть }
Вы можете настроить как сохранять и обрабатывать в СКИФ заказы из OpenCart.
По умолчанию, в СКИФ создается документ "Заказ покупателя". Этот документ является "счетом на оплату", при его создании остатки на складе не уменьшаются и задолженность клиента не увеличивается. Используйте этот вариант, если требуется, чтобы поступившие из интернета-магазина заказы сначала проверил/обработал ваш менеджер. Для формирования из заказа документа отгрузки, просто измените в нём "Вид документа" с "Заказ покупателя" на "Продажа". После этого товары спишутся со склада, а сумма долга покупателя увеличится на сумму документа. Вы также можете задать создание сразу документа "Продажа", для этого замените в файле настроек wn_settings.php в корне установки СКИФ значение "type" в массиве $wn_catalog_invoice с 11 на 2.
Есть несколько вариантов обработки заказов без авторизации:
1. По умолчанию, модуль создает в справочнике контрагентов нового клиента для каждого заказа.
2. Можно задать, чтобы модуль искал среди ранее созданных клиентов по номеру телефона и относил новый заказ на найденного клиента. Для этого установите параметр match_noaut_client=true в настройках модуля (включение данной опции может предотвратить заведение множества записей в справочнике клиентов, но нужно иметь в виду, что Opencart не проверяет номера телефонов и, таким образом, клиент может намеренно или по ошибке указать чужой номер телефона и его заказ будет отнесен на клиента с указанным номером).
3. Можно все заказы, сделанные в Opencart без авторизации, сохранять в СКИФ на одного заданного клиента. Для этого установите в поле shop_id этого клиента в СКИФ значение 0.
Рекомендуется настроить пользовательскую обработку заказов в функции my_proccess_orders(), код которой приведен выше. Для этого задайте в массиве настроек коды статусов заказов из OpenCart, при которых документ нужно преобразовать в "Продажу" (параметр "statuses_confirmed"), внести оплату (параметр "statuses_paid") или расформировать (параметр "statuses_rejected").
В поле "Примечание" по умолчанию копируются номер заказа, комментарий покупатетеля и способ доставки. При желании, вы можете изменить функцию формирования примечания sync_doc_note(), как описано в блоке "Расширение функционала" ниже.
Если в массиве настроек $sync_opencart задать параметр scif_order_type, все заказы из OpenCart, кроме создания документа "Продажа/Заказ покупателя", будут дополнительно сохраняться в журнал "Торговля-Заявки с сайта" (без данных о товарах). Этот журнал может использоваться для контроля обработки заказов из разных источников.
Учет доставки, скидок, купонов и т.п.
По умолчанию, в СКИФ создается документ "Заказ покупателя". Этот документ является "счетом на оплату", при его создании остатки на складе не уменьшаются и задолженность клиента не увеличивается. Используйте этот вариант, если требуется, чтобы поступившие из интернета-магазина заказы сначала проверил/обработал ваш менеджер. Для формирования из заказа документа отгрузки, просто измените в нём "Вид документа" с "Заказ покупателя" на "Продажа". После этого товары спишутся со склада, а сумма долга покупателя увеличится на сумму документа. Вы также можете задать создание сразу документа "Продажа", для этого замените в файле настроек wn_settings.php в корне установки СКИФ значение "type" в массиве $wn_catalog_invoice с 11 на 2.
Есть несколько вариантов обработки заказов без авторизации:
1. По умолчанию, модуль создает в справочнике контрагентов нового клиента для каждого заказа.
2. Можно задать, чтобы модуль искал среди ранее созданных клиентов по номеру телефона и относил новый заказ на найденного клиента. Для этого установите параметр match_noaut_client=true в настройках модуля (включение данной опции может предотвратить заведение множества записей в справочнике клиентов, но нужно иметь в виду, что Opencart не проверяет номера телефонов и, таким образом, клиент может намеренно или по ошибке указать чужой номер телефона и его заказ будет отнесен на клиента с указанным номером).
3. Можно все заказы, сделанные в Opencart без авторизации, сохранять в СКИФ на одного заданного клиента. Для этого установите в поле shop_id этого клиента в СКИФ значение 0.
Рекомендуется настроить пользовательскую обработку заказов в функции my_proccess_orders(), код которой приведен выше. Для этого задайте в массиве настроек коды статусов заказов из OpenCart, при которых документ нужно преобразовать в "Продажу" (параметр "statuses_confirmed"), внести оплату (параметр "statuses_paid") или расформировать (параметр "statuses_rejected").
В поле "Примечание" по умолчанию копируются номер заказа, комментарий покупатетеля и способ доставки. При желании, вы можете изменить функцию формирования примечания sync_doc_note(), как описано в блоке "Расширение функционала" ниже.
Если в массиве настроек $sync_opencart задать параметр scif_order_type, все заказы из OpenCart, кроме создания документа "Продажа/Заказ покупателя", будут дополнительно сохраняться в журнал "Торговля-Заявки с сайта" (без данных о товарах). Этот журнал может использоваться для контроля обработки заказов из разных источников.
В параметре "order_total_codes" можно определить массив кодов из таблицы OpenCart order_total
и соответствующие им коды из номенклатуры СКИФ, которые нужно вносить в состав заказа (табличную часть) в документ СКИФ.
Для этого создайте в номенклатуре СКИФ нужные вам позиции-услуги "Доставка", "Ваучер", "Сертификат", "Скидка" и т.д.
и внесите их коды в массив, например:
Если массив не задан или в таблице order_total OpenCart есть коды, которые в этом массиве не определены, сумма по этим позициям будет вноситься в поле "Накладные расходы". Это поле, в отличие от внесения строк в табличную часть, не изменяет суммы документа и не фигурирует в отчетах по оборотам. Этот вариант может пригодиться, например, когда доставка осуществляется сторонней организацией, деньги клиент платит ей напрямую и вы не хотите учитывать её стоимость в своих отчетах.
Активация API для обновления статусов и состава заказов из СКИФ
'order_total_codes'=>array('shipping'=>1054,'coupon'=>1055)(можно для нескольких кодов определять одну и ту же услугу из СКИФ. Например, "Купон/Ваучер"
'order_total_codes'=>array('shipping'=>1054,'coupon'=>1055,'voucher'=>1055)Если будут использоваться отрицательные суммы, включите в меню Сервис-Настройки в СКИФ опцию "разрешить минусовые цены".
Если массив не задан или в таблице order_total OpenCart есть коды, которые в этом массиве не определены, сумма по этим позициям будет вноситься в поле "Накладные расходы". Это поле, в отличие от внесения строк в табличную часть, не изменяет суммы документа и не фигурирует в отчетах по оборотам. Этот вариант может пригодиться, например, когда доставка осуществляется сторонней организацией, деньги клиент платит ей напрямую и вы не хотите учитывать её стоимость в своих отчетах.
Чтобы иметь возможность менять статус и состав заказа в OpenCart из СКИФ, необходимо настроить в СКИФ доступ к API OpenCart.
Для этого проделайте следующее:
1. В админке OpenCart зайдите в Система -> Пользователи -> API. Если API еще не создано - создайте (введите имя API, сгенерируйте ключ, включите статус). Если уже создано - в открывшемся окне во вкладке IP адресов добавьте IP-адрес СЕРВЕРА (не своего компьютера!), сохраните. Адрес сервера можно посмотреть в меню СКИФ Сервис -> OpenCart, в блоке "Настройки" пункт "Доступ к API".
2. В админке OpenCart в меню Система -> Настройки, откройте настройки магазина, во вкладке "Опции" в выпадающием списке "Пользовательский API" выберите имя, созданное на предыдущем шаге, и сохраните настройки. Если API в OpenCart уже было создано ранее, посмотрите, какое имя пользователя используется в настройках магазина. В СКИФ нужно будет указать это же имя.
3. В массиве $sync_opencart в параметр api внесите значения username и key.
4. В параметре https_server укажите адрес сайта (должен совпадать с константой HTTPS_SERVER из файла config.php в корне установки OpenCart)
После этого, внизу страницы редактирования документа в СКИФ у вас появится строка "OpenCart", где будет возможность изменить статус заказа, в том числе указать примечание к этому изменению и отметить галочку отправки уведомления пользователю. При изменении статуса заказа, будут запущены все завязанные на него события (так называемые "триггеры"): начисление бонусных баллов, отправка письма клиенту и другие. Т.е. это изменение будет точно таким, как если оно было выполнено в самом OpenCart.
Внимание, если вы используете ocStore 3.0.2, некоторые скрипты в нем содержат ошибки, из-за которых API неработоспособно. Для исправления необходимо переписать 3 файла из дистрибутива Opencart 3.0.4: \catalog\controller\api\login.php, \catalog\controller\startup\session.php, \catalog\model\account\api.php
Обратите также внимание, что в Opencart3 разработчики изменили подход к редактированию заказа и теперь при каждом редактировании состава заказа покупателю отправляется уведомление "Заказ принят". Отключить это можно, только закомментировав в скрипте Opencart catalog/model/checkout/order.php строку 49 $this->addOrderHistory($order_id, 0); Подробнее о проблеме на GitHub
Варианты синхронизации изображений
1. В админке OpenCart зайдите в Система -> Пользователи -> API. Если API еще не создано - создайте (введите имя API, сгенерируйте ключ, включите статус). Если уже создано - в открывшемся окне во вкладке IP адресов добавьте IP-адрес СЕРВЕРА (не своего компьютера!), сохраните. Адрес сервера можно посмотреть в меню СКИФ Сервис -> OpenCart, в блоке "Настройки" пункт "Доступ к API".
2. В админке OpenCart в меню Система -> Настройки, откройте настройки магазина, во вкладке "Опции" в выпадающием списке "Пользовательский API" выберите имя, созданное на предыдущем шаге, и сохраните настройки. Если API в OpenCart уже было создано ранее, посмотрите, какое имя пользователя используется в настройках магазина. В СКИФ нужно будет указать это же имя.
3. В массиве $sync_opencart в параметр api внесите значения username и key.
4. В параметре https_server укажите адрес сайта (должен совпадать с константой HTTPS_SERVER из файла config.php в корне установки OpenCart)
После этого, внизу страницы редактирования документа в СКИФ у вас появится строка "OpenCart", где будет возможность изменить статус заказа, в том числе указать примечание к этому изменению и отметить галочку отправки уведомления пользователю. При изменении статуса заказа, будут запущены все завязанные на него события (так называемые "триггеры"): начисление бонусных баллов, отправка письма клиенту и другие. Т.е. это изменение будет точно таким, как если оно было выполнено в самом OpenCart.
Внимание, если вы используете ocStore 3.0.2, некоторые скрипты в нем содержат ошибки, из-за которых API неработоспособно. Для исправления необходимо переписать 3 файла из дистрибутива Opencart 3.0.4: \catalog\controller\api\login.php, \catalog\controller\startup\session.php, \catalog\model\account\api.php
Обратите также внимание, что в Opencart3 разработчики изменили подход к редактированию заказа и теперь при каждом редактировании состава заказа покупателю отправляется уведомление "Заказ принят". Отключить это можно, только закомментировав в скрипте Opencart catalog/model/checkout/order.php строку 49 $this->addOrderHistory($order_id, 0); Подробнее о проблеме на GitHub
Вариант синхронизации изображений задаётся в переменной sync_image и может иметь следующие значения:
0 (не синхронизировать), 1 (хранить и в СКИФ и в OpenCart), 2 (хранить в OpenCart по symlink), 3 (хранить только в СКИФ).
Подробнее об этих вариантах:
0 - Не синхронизировать.
Изображения не будут синхронизироваться автоматически. Их можно будет загружать вручную как в панели управления OpenCart, так и в карточке товара в СКИФ. Возможно также настроить показ изображений из OpenCart в справочнике номеклатуры СКИФ.
Этот вариант рекомендуется, если вы начинаете вести учет на базе уже имеющегося магазина, основная часть товаров и изображений в котором уже была загружена ранее через OpenCart.
1 - Хранить и в СКИФ и в OpenCart.
Изображения, загруженные в СКИФ, будут копироваться из папки СКИФ в папку OpenCart.
Минус этого способа в том, что изображения на сайте будут храниться в двух копиях, занимая лишнее место на диске.
Плюс в том, что обе копии автономны. Это актуально, если на папке загруженных ранее изображений "завязаны" какие-то сторонние сервисы или плагины.
Этот способ рекомендуется, если вы будете создавать один магазин на OpenCart, второй магазин на движке СКИФ.
Для использования данного способа скопируйте из скрипта config.php в корне установки OpenCart значение константы 'DIR_IMAGE' и вставьте его в параметр dir_image массива $sync_opencart.
2 - Хранить в OpenCart по symlink.
СКИФ будет загружать изображения в стандартную директорию загрузки изображений OpenCart, при этом изображения будут храниться в одной копии и будут доступны и в СКИФ и в OpenCart. Этот вариант рекомендуется, если у вас уже есть загруженная база товаров с изображениями в СКИФ и вы создаете магазин на OpenCart.
Для использования данного способа проделайте следующее:
2.1. Переместите папки /img/scif1/ и /img/scif1_orig/ со всем их содержимым из директории установки СКИФ в папки /image/catalog/scif1/ и /image/catalog/scif1_orig/ в директории установки OpenCart
2.2. Создайте на их месте две ссылки с именами scif1 и scif1_orig, ссылающиеся на соответствующие адреса перемещенных папок. (Ссылки можно создать в файловом менеджере из панели управления хостингом. Для панели ISPManager меню Главное - Менеджер файлов, кнопка Создать, Тип: Ссылка)
3 - Хранить только в СКИФ.
OpenCart будет использовать изображения, загруженные в СКИФ. Изображения будут храниться только в папке СКИФ, что сэкономит место на вашем хостинге, но для данного способа требуется внести некоторые изменения в скрипты OpenCart. Эти изменения разрешают использовать другую папку для изображений вместо стандартной /images/catalog/ и использовать в качестве картинок файлы с расширением img. Для использования данного способа скачайте архив и следуйте инструкции в файле readme.txt из архива.
0 - Не синхронизировать.
Изображения не будут синхронизироваться автоматически. Их можно будет загружать вручную как в панели управления OpenCart, так и в карточке товара в СКИФ. Возможно также настроить показ изображений из OpenCart в справочнике номеклатуры СКИФ.
Этот вариант рекомендуется, если вы начинаете вести учет на базе уже имеющегося магазина, основная часть товаров и изображений в котором уже была загружена ранее через OpenCart.
1 - Хранить и в СКИФ и в OpenCart.
Изображения, загруженные в СКИФ, будут копироваться из папки СКИФ в папку OpenCart.
Минус этого способа в том, что изображения на сайте будут храниться в двух копиях, занимая лишнее место на диске.
Плюс в том, что обе копии автономны. Это актуально, если на папке загруженных ранее изображений "завязаны" какие-то сторонние сервисы или плагины.
Этот способ рекомендуется, если вы будете создавать один магазин на OpenCart, второй магазин на движке СКИФ.
Для использования данного способа скопируйте из скрипта config.php в корне установки OpenCart значение константы 'DIR_IMAGE' и вставьте его в параметр dir_image массива $sync_opencart.
2 - Хранить в OpenCart по symlink.
СКИФ будет загружать изображения в стандартную директорию загрузки изображений OpenCart, при этом изображения будут храниться в одной копии и будут доступны и в СКИФ и в OpenCart. Этот вариант рекомендуется, если у вас уже есть загруженная база товаров с изображениями в СКИФ и вы создаете магазин на OpenCart.
Для использования данного способа проделайте следующее:
2.1. Переместите папки /img/scif1/ и /img/scif1_orig/ со всем их содержимым из директории установки СКИФ в папки /image/catalog/scif1/ и /image/catalog/scif1_orig/ в директории установки OpenCart
2.2. Создайте на их месте две ссылки с именами scif1 и scif1_orig, ссылающиеся на соответствующие адреса перемещенных папок. (Ссылки можно создать в файловом менеджере из панели управления хостингом. Для панели ISPManager меню Главное - Менеджер файлов, кнопка Создать, Тип: Ссылка)
3 - Хранить только в СКИФ.
OpenCart будет использовать изображения, загруженные в СКИФ. Изображения будут храниться только в папке СКИФ, что сэкономит место на вашем хостинге, но для данного способа требуется внести некоторые изменения в скрипты OpenCart. Эти изменения разрешают использовать другую папку для изображений вместо стандартной /images/catalog/ и использовать в качестве картинок файлы с расширением img. Для использования данного способа скачайте архив и следуйте инструкции в файле readme.txt из архива.
6 Проверьте настройки
Перейдите на страницу /scif/?act=sync_opencart (или через меню Сервис-OpenCart) чтобы проверить настройки. Если в OpenCart ранее были внесены товары, вы сможете выполнить импорт справочников и остатков.
7 Выполните импорт (если необходимо)
Если в вашем интернет-магазине есть внесенные ранее товары и производители, вы можете импортировать их в СКИФ. Для этого на странице /scif/?act=sync_opencart нажмите ссылку "Импорт справочников из OpenCart". После импорта данных, если в настройках вами была задана синхронизация изображений, вам будет предложено скопировать все картинки.
ИМПОРТ СПРАВОЧНИКОВ ИЗ OPENCART
1. Обратите внимание, что в СКИФ по умолчанию в справочниках названия групп, элементов и SEO URL (ЧПУ) должны быть уникальными.
В справочнике товаров, кроме того, уникальным должно быть поле "Штрихкод" (barcode).
Для успешного импорта, обеспечьте уникальность этих полей в OpenCart или уберите условие уникальности в СКИФ.
Чтобы убрать условие уникальности, в phpmyadmin измените тип индексов `name` и `parent_name` с UNIQUE на INDEX.
2. В СКИФ по умолчанию в справочнике номенклатуры разрешено только два уровня вложенности. Если структура ваших категорий в OpenCart имеет больше уровней, добавьте в конец файла настроек wn_settings.php в корне установки СКИФ (это можно сделать через меню Сервис-Редактор кода) следующую строку, она разрешит неограниченный уровень вложенности групп для справочника товаров:
$sprs[5]['multilevel']=true;
3. В товарном учете нельзя использовать товары с несколькими опциями. Перед импортом справочника необходимо либо разделить товары, либо переделать опции в "сводные". Например, если у товара "Футболка" есть опции "Цвет" и "Размер", необходимо заменить её на одну "Цвет/Размер" со значениями "Красная L", "Красная M", "Синяя L" и т.д. Каждая опция будет создана в учете как отдельный товар.
2. В СКИФ по умолчанию в справочнике номенклатуры разрешено только два уровня вложенности. Если структура ваших категорий в OpenCart имеет больше уровней, добавьте в конец файла настроек wn_settings.php в корне установки СКИФ (это можно сделать через меню Сервис-Редактор кода) следующую строку, она разрешит неограниченный уровень вложенности групп для справочника товаров:
$sprs[5]['multilevel']=true;
3. В товарном учете нельзя использовать товары с несколькими опциями. Перед импортом справочника необходимо либо разделить товары, либо переделать опции в "сводные". Например, если у товара "Футболка" есть опции "Цвет" и "Размер", необходимо заменить её на одну "Цвет/Размер" со значениями "Красная L", "Красная M", "Синяя L" и т.д. Каждая опция будет создана в учете как отдельный товар.
8 Автоматизируйте синхронизацию (по желанию)
Проверьте работу синхронизации, нажав кнопку "Выполнить синхронизацию" внизу страницы. Если всё в порядке (не выводится никаких ошибок, товары и остатки из СКИФ перенеслись в OpenCart, а заказы из OpenCart в СКИФ), вы можете задать выполнение синхронизации в автоматическом режиме по расписанию через планировщик CRON. Для выполнение через планировщик добавьте вызов скрипта /cron/sync.php с нужным вам расписанием в CRON на своем хостинге.
Проверить, что синхронизация по планировщику выполняется корректно, можно на странице /scif/?act=sync_opencart. Внизу после кнопки "Выполнить синхронизацию" будет выводиться время последней успешной синхронизации.
9 Оптимизация быстродействия OpenCart (рекомендуется)
Мы рекомендуем добавить в базу OpenCart несколько индексов для улучшения его производительности. Эти индексы не связаны с модулем синхронизации, вы можете найти аналогичную рекомендацию в поисковых системах по запросу об оптимизации быстродействия OpenCart.
ИНДЕКСЫ ДЛЯ ПОВЫШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ
Для добавления индексов выполните следующий SQL-запрос (это можно сделать через /admin/phpmyadmin/).
Для OpenCart 3 используйте только первые две строки.
Если префикс таблиц в вашей базе отличается от "oc_", предварительно замените его на нужный.
ALTER TABLE oc_order_history ADD INDEX order_id (order_id); ALTER TABLE oc_order_option ADD INDEX order_product (order_id, order_product_id); ALTER TABLE oc_order_product ADD INDEX order_id (order_id); ALTER TABLE oc_product_option ADD INDEX product_id (product_id); ALTER TABLE oc_product_option ADD INDEX option_id (option_id); ALTER TABLE oc_product_option_value ADD INDEX product_id (product_id); ALTER TABLE oc_product_option_value ADD INDEX option_id (option_id);
Это всё! Теперь Ваш складской учет и интернет-магазин автоматически синхронизируются!
Остались вопросы или нужна доработка синхронизации под Ваши потребности? Напишите нам biz@webnice.biz
Персональные настройки и доработки
Важным преимуществом нахождения базы и скриптов системы учета на вашем собственном сайте является то, что вы можете настраивать и дорабатывать систему под свои индивидуальные потребности. Вы можете делать это самостоятельно или заказывать нам. Ниже мы приводим примеры кода расширения функционала интеграции. РАСШИРЕНИЕ ФУНКЦИОНАЛА
Формирование примечания к заказу.
По умолчанию, в поле "Примечание" копируются номер заказа, комментарий покупатетеля и способ доставки. При желании, вы можете задать собственную функцию, для этого добавьте в файл настроек wn_settings.php в корне установки СКИФ следующий код (это можно сделать через меню "Сервис-Редактор кода"):
Вывод в СКИФ полей из OpenCart и поиск по ним.
Например, сделаем возможность вывода в списке номенклатуры СКИФ поля "Модель" и поиска по нему. Обратите внимание, что в таблице товаров СКИФ этого поля нет. В коде ниже мы приводим пример подключения к таблице товаров СКИФ таблицы товаров OpenCart. Добавьте в файл настроек wn_settings.php в корне установки СКИФ следующий код (это можно сделать через меню "Сервис-Редактор кода"):
Стили оформления в зависимости от данных.
В СКИФ можно задать разное оформление в зависимости от данных. В примере ниже для справочника номенклатуры задается разный цвет в зависимости от "Статуса" товара в OpenCart. А для журнала документов разный фон колонки "Статья движения", в зависимости от статуса заказа в OpenCart.
Работа с листом ожидания OpenCart (плагин WaitList) из СКИФ.
После сохранения документов "Оприходование" или "Покупка" проверим и выведем сообщение, если товары из листа ожидания появились в наличии. Можно выполнить email-рассылку клиентам по листу ожидания прямо из СКИФ со страницы ?act=opencart_waitlist.
Пользовательская функция.
Вы можете задать в файле настроек wn_settings.php пользовательскую функцию my_sync_shop_after(), которая будет выполняться после каждой синхронизации.
Пример 1. Синхронизируем акционные цены на товары.
Cоздайте через меню "Справочники-Типы цен" новый тип цен, заполните цены этого типа равными продажным ценам (это можно сделать через меню "Торговля-Ценообразование"), а затем проставьте акционную цену нужным товарам. В файл настроек внесите следующий код (замените в коде price3, если код вашего типа акционных цен не 3).
(Этот же механизм можно использовать для формирования разных цен для разных групп клиентов, например, для опта)
Пример 2. Формирование своего тега TITLE для новых товаров.
Больше примеров кода смотрите в FAQ.
По умолчанию, в поле "Примечание" копируются номер заказа, комментарий покупатетеля и способ доставки. При желании, вы можете задать собственную функцию, для этого добавьте в файл настроек wn_settings.php в корне установки СКИФ следующий код (это можно сделать через меню "Сервис-Редактор кода"):
function sync_doc_note() { global $row; // в shipping_method могут быть как теги (например, картинки), так и кавычки, потому используем и strip_tags и htmlclean return $row['order_id'].($row['comment']?' '.htmlclean($row['comment']):'').($row['shipping_method']?' '.htmlclean(strip_tags($row['shipping_method'])):''); }
Вывод в СКИФ полей из OpenCart и поиск по ним.
Например, сделаем возможность вывода в списке номенклатуры СКИФ поля "Модель" и поиска по нему. Обратите внимание, что в таблице товаров СКИФ этого поля нет. В коде ниже мы приводим пример подключения к таблице товаров СКИФ таблицы товаров OpenCart. Добавьте в файл настроек wn_settings.php в корне установки СКИФ следующий код (это можно сделать через меню "Сервис-Редактор кода"):
// в справочник номенклатуры добавим вывод полей Модель и Статус и поиск по полю Модель // в справочник статей движения добавим ID статуса из OpenCart $sprs[5]['my_sprlist']=array('head'=>1,'sql'=>1,'row'=>1,'search'=>1); $sprs[10]['my_sprlist']=array('head'=>1,'sql'=>1,'row'=>1); function my_sprlist($type) { global $t, $m, $row, $sqls, $cells, $sync_opencart; switch ($t) { case 5: // номенклатура switch ($type) { case 'head': // в форме подбора в документ добавляем ко второй колонке, в справочнике - к первой if ($m==1) { $cells[2].='<th data-sorter="text">Модель</th><th data-sorter="text">Статус</th>'; } else { $cells[1].='<th data-sorter="text" rowspan="2">Модель</th><th data-sorter="text" rowspan="2">Статус</th>'; } break; case 'sql': $sqls['from'].=' LEFT JOIN '.$sync_opencart['shop_prefix'].'product o ON s.shop_id=o.product_id'; $sqls['select'].=', o.model, o.status'; break; case 'row': $index=($m==1?2:1); $cells[$index].='<td>'.($row['model']?$row['model']:' ').'</td><td class="status-'.($row['status']?'yes">+':'no">-').'</td>'; break; case 'search': // подбор в документ $sqls['from'].=' LEFT JOIN '.$sync_opencart['shop_prefix'].'product o ON s.shop_id=o.product_id'; $sqls['select'].=', o.model'; break; } break; case 10: // статьи движения switch ($type) { case 'head': $cells[2].='После этого в справочнике номенклатуры в СКИФ появятся поля "Модель" и "Статус" из OpenCart, а в списке полей фильтров появятся варианты "Модель" и "Название-Модель" (для сводного поиска как по названию так и по модели).OC '; break; case 'sql': $sqls['select'].=', s.shop_id'; break; case 'row': $cells[2].=''.$row['shop_id'].' '; break; } break; } } // Поиск по полю "Модель" в справочнике номенклатуры (для подбора в документ в my_sprlist должна быть задана обработка search!) $sprs[5]['filter_fields']['model']=array('name'=>'Модель','func'=>true); $sprs[5]['filter_fields']['name_model']=array('name'=>'Название-Модель','func'=>true); function my_filter_fields($t,$field,$filter) { switch ($t) { case 5: // Номенклатура switch ($field) { case 'model': return 'o.model LIKE "%'.$filter.'%"'; break; case 'name_model': return 'CONCAT(s.name," ",o.model) LIKE "%'.$filter.'%"'; break; } } }
Стили оформления в зависимости от данных.
В СКИФ можно задать разное оформление в зависимости от данных. В примере ниже для справочника номенклатуры задается разный цвет в зависимости от "Статуса" товара в OpenCart. А для журнала документов разный фон колонки "Статья движения", в зависимости от статуса заказа в OpenCart.
// собственные стили function scif_meta() { global $act, $t, $meta; // стиль колонок в справочнике номенклатуры if ($act=='sprlist' AND $t==5) { $meta.='<style type="text/css"> td.status-yes { text-align:center; color: green; } td.status-no { text-align:center; color:red; } </style>'; } elseif ($act=='doclist') { $meta.='<style type="text/css"> tr.finitem45 td:nth-child(15) { background-color:#bf0000; color:#ffffff; } tr.finitem47 td:nth-child(15) { background-color:#ffffff; color:#00007f; } </style>'; } }
Работа с листом ожидания OpenCart (плагин WaitList) из СКИФ.
После сохранения документов "Оприходование" или "Покупка" проверим и выведем сообщение, если товары из листа ожидания появились в наличии. Можно выполнить email-рассылку клиентам по листу ожидания прямо из СКИФ со страницы ?act=opencart_waitlist.
$scif_actions[650]=array('name'=>'OpenCart Waitlist','desc'=>'Рассылка уведомлений по листу ожидания OpenCart','file'=>'opencart_waitlist','menu'=>7); function scif_after_act() { global $db, $act, $row_new, $sync_opencart; if ($act=='docitem' AND !empty($_POST['submit']) AND in_array($row_new['type'],array(1,3))) { $waitlist=$db->sql_fetch_row($db->sql_query('SELECT COUNT(DISTINCT w.product_id) FROM `'.$sync_opencart['shop_prefix'].'waitlist` w JOIN `'.SCIF_PREFIX.'spr_noms` n ON w.product_id=n.shop_id WHERE n.store'.$sync_opencart['scif_store'].'>0')); if ($waitlist AND $waitlist[0]) { echo '<div class="panel_top"><span style="color:red">Внимание!</span> Есть <b>'.$waitlist[0].'</b> товара(ов) в наличии из <a href="?act=opencart_waitlist" target="_blank">Листа ожидания</a></div>'; } } }
Пользовательская функция.
Вы можете задать в файле настроек wn_settings.php пользовательскую функцию my_sync_shop_after(), которая будет выполняться после каждой синхронизации.
Пример 1. Синхронизируем акционные цены на товары.
Cоздайте через меню "Справочники-Типы цен" новый тип цен, заполните цены этого типа равными продажным ценам (это можно сделать через меню "Торговля-Ценообразование"), а затем проставьте акционную цену нужным товарам. В файл настроек внесите следующий код (замените в коде price3, если код вашего типа акционных цен не 3).
(Этот же механизм можно использовать для формирования разных цен для разных групп клиентов, например, для опта)
function my_sync_shop_after() { global $db, $sync_opencart; $db->sql_query('LOCK TABLES '.$sync_opencart['shop_prefix'].'product_special WRITE, '.SCIF_PREFIX.'spr_noms WRITE'); $db->sql_query('TRUNCATE TABLE '.$sync_opencart['shop_prefix'].'product_special'); $db->sql_query('INSERT INTO '.$sync_opencart['shop_prefix'].'product_special (product_id, customer_group_id, priority, price, date_start, date_end) SELECT shop_id, 1, 0, price3, "0000-00-00", "0000-00-00" FROM '.SCIF_PREFIX.'spr_noms WHERE price3>0 AND price3<price2 AND shop_id IS NOT NULL AND shop_option_id IS NULL'); $db->sql_query('UNLOCK TABLES'); }
Пример 2. Формирование своего тега TITLE для новых товаров.
function my_sync_shop_after() { global $db, $sync_opencart; $db->sql_query('UPDATE '.$sync_opencart['shop_prefix'].'product_description SET meta_title=CONCAT(name," ваш текст добавляемый к названию") WHERE meta_title=""'); }
Больше примеров кода смотрите в FAQ.
P.S. Дистрибутив СКИФ включает также собственный интернет-магазин, который напрямую интегрирован с системой учета. Если вы только выбираете движок для своего интернет-магазина, просто установите СКИФ и у вас будет складской учет, сайт и интернет-магазин. Подробнее.
Вы также можете при помощи СКИФ организовать работу второго интернет-магазина, отдельного от OpenCart, например, для акцента на других товарных категориях. Данные всех магазинов будут аккумулированы в единой системе учета.
Закажите интеграцию складского учета с OpenCart в каталоге или отправив письмо на адрес biz@webnice.biz