Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Модуль Модуль обмена для opencart v2.3 по стандарту CommerceML [Поддержка]


 Поделиться

Рекомендованные сообщения

Модуль обмена для opencart v2.3 по стандарту CommerceML


Модуль обмена для opencart v2.3 по стандарту CommerceML


Модуль пока находится в стадии тестирования.

 

GitHub: https://github.com/Tesla-Chita/Exchange1cV2

Необходимо доработать обмен заказами

Внимание разработчикам и программистам, нужна помощь в развитии модуля.

Пишите мне на Viber +7-914-430-6000, отвечать буду по возможности быстро в период с 10:00 до 23:00 GMT+9

 

Изменения с прошлой версии 1.6

  1. Добавлены сессии, при каждом удачном подключении создается сессия и хранится она пока не завершится обмен или не произойдет ошибка, сессия хранит данные о прошлом подключении
  2. Переработана загрузка данных, раньше остатки и цены загружались сразу в таблицы CMS, а теперь сначала они загружаются во временные таблицы а после загрузки всех файлов каталога происходит обновление остатков и цен
  3. Переработана таблица цен, цены в неё можно добавить только после загрузки настроек, модуль в режиме загрузки настроек загружает только часть данных из классификатора.
  4. Загрузка файлов теперь происходит в каталог определенный в настройках как DIR_UPLOAD + задается дополнительная директория установленная в настройках модуля
  5. Удален SEO
  6. Переработаны настройки, добавлена возможность сброса настроек
  7. Экспорт и удаление модуля можно сделать только из "админки"
  8. Изменен фильтр экспорта заказов

 

Установка

  • Настройках "Система->Настройки->МойМагазин->FTP" нужно все настроить и включить FTP
  • Установить модуль через "Установка дополнений", при этом модуль автоматически установится и включится.
  • Если будет ошибка что модуль не установлен, в меню расширений выключите модуль и заново включите.
  • После включения модуль создает таблицы 1c_xxxxxx которые необходимы для работы модуля
  • Зайти в сервисное меню и сбросить настройки и обновить страничку модуля
  • Перевести модуль в режим загрузки настроек и произвести обмен, после удачного обмена обновите страничку модуля, появятся еще режимы
  • Перевести режим работы модуля в "Загрузка данных", настроить раздел "Предложения" и произвести обмен

 

При проблеме авторизации

Если сайт работает на apache добавляем в файл .htaccess в корне сайта ниже строчек RewriteEngine On

 

RewriteCond %{HTTP:Authorization} ^Basic.*
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

или

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

 

Для работы по HTTPS функцию для 1С нужно чуток доработать, вот кусок кода:

Если НЕ ПараметрыПодключения.ЗащищенноеСоединение Тогда
	ssl = Неопределено;
Иначе
      
	ssl = Новый ЗащищенноеСоединениеOpenSSL(
               Новый СертификатКлиентаWindows(),
               Новый СертификатыУдостоверяющихЦентровWindows());   

КонецЕсли;

Соединение = Новый HTTPСоединение(ПараметрыПодключения.Сервер, ПараметрыПодключения.Порт, ПараметрыПодключения.Пользователь, ПараметрыПодключения.Пароль, ПараметрыПодключения.Прокси, ,ssl);


Основные возможности:

  1. Загрузка товаров на сайт
  2. Двусторонний обмен заказами и статусами
  3. Ручная загрузка как отдельных файлов так и архива
  4. Ручная выгрузка и загрузка заказов
  5. Поддержка формата 1С Битрикс XML 2.09 и 2.10
  6. Загрузка харакеристик товаров в опции (режим характеристика в одну опцию как в 1С).
  7. Поддержка порционной загрузки как файлов так и архивов, с возможностью ручного указания размера архива для 1С
  8. Расширенный фильтр IP адресов, можно указать подсеть, например "192.168.1.", тогда будет обмен работать со всеми компьютерами с адресами 192.168.1.ххх

Товары:

  • Первоначальная синхронизация по Ид, Артикулу, Наименованию или Штрихкоду
  • Загрузка наименования из элемента <Наименование> или из реквизита <ПолноеНаименование> или можно указать свое название элемента.
  • Загрузка неограниченное количество картинок к товару
  • Загрузка картинок для характеристик из 1С, версия XML 2.08 из УНФ и других конфигураций которые передают картинки для характеристик
  • Загрузка свойств в атрибуты
  • Загрузка производителей из элемента "Изготовитель" или "Производитель", а также из свойства "Производитель" или "Изготовитель" или из реквизита "Производитель"
  • Определить свойства в определенную группу, для этого в названии свойства в конце допишите название группы в скобках, например так: "Разрешение (Экран)", "Поверхность (Экран)", будет создана группа свойства "Экран" и в нем будут свойства "Разрешение" и "Поверхность".
  • Запрет на создание новых товаров.
  • Запрет на изменение описания
  • Запрет на изменение категорий товара (можно построить свою структуру на сайте)
  • Запрет на изменение производителя товара
  • Запрет на изменение картинок товара
  • Загрузка из свойств "Вес", "Ширина", "Высота", "Длина", "Модель", "Артикул" имеет приоритет
  • Отключить товары которых нет в выгрузке (только при полной выгрузке)
  • Отключить товар если остаток или цена равна нулю
  • При выгрузке из торговой системы элемента с названием <Код>21413</Код> и при включенной опции синхронизация по кодам, модуль будет искать товар с ID указанному в элементе <Код>, если не найдет создаст с таким ID новый товар (так как полноценной переделки никто не делает, связи модуль все равно создает и корректно отрабатывает по указанным Ид)
  • Отключать статус у новых товаров.
  • Если не предполагается использовать налоги на сайте, отключите эту опцию в настройках чтобы не было ошибок при обмене либо настройте налоги в Вашей CMS.

Категории:

  • Заполнение родительских категорий
  • Запрет загрузки групп из учетной системы
  • Можно отключать статус у новых категорий
  • Запрет на создание новых, но обновить существующие
  • Загрузка картинок для категории из элемента <Картинка> (требуется доработка торговой системы).
  • Загрузка сортировки для категории из элемента <Сортировка> (требуется доработка торговой системы).
  • Загрузка свойств категорий (групп) "Картинка" и "Сортировка"
  • Если указать в админке для категории картинку и сортировку, то при обмене они не изменятся, меняются только то, что выгружает 1С.

Цены:

  • Автозагрузка типов цен из XML (если не знаете как называется цена, оставьте включенной). При первом обмене цены в товар не будут загружены, необходимо зайти заново в модуль и настроить куда должны загружаться типы цен, записать настройки и выполнить повторно обмен).
  • Загрузка цен по характеристикам, цена на характеристику считается от базовой. То есть надо установить цену в учетной системе на товар без характеристик, а цена с характеристикой будет записана в значение опции на сайте как разница между базовой и характеристикой.
  • Конвертация валюты при загрузке по курсу валюты в opencart
  • Загружать цены в акции или в скидки (с указанием от какого количества начинает действовать для всех товаров). Для характеристик (опций) скидки не действуют.

Остатки:

  • Отключение товара если остаток общий равен нулю
  • Обнуление остатков товаров в категориях которые загружаются (будет в дальнейшем удалена опция и заменена на другую, пока рассматривается вариант)

Заказы:

  • Двусторонний обмен заказами в торговую систему и из торговой системы (при изменении заказа в 1С заказ будет обновлен на сайте, и наоборот при изменении заказа на сайте будет обновлен в 1С, при условии что заказ в состоянии "Не подтвержден")
  • Двусторонний обмен статусами заказов (при изменении статуса в 1С будет присвое статус на сайте, соответствия статусов настраивается в обмене на стороне 1С)
  • Отправка уведомления по email при смене статуса заказа
  • Выгрузка покупателя как физическое или юридическое лицо в торговую систему, если заполнены поля "Организация".

Прочее:

  • Ведение лога в 3-х режимах для отладки ошибок.
  • Опция очистки лога при каждом ручном обмене, удобно при отладке.
  • Файл для английского языка в стадии переделки как только будет сделан русский.
  • Подробнейшее описание каждой опции в настройках.
  • В разделе ручной обработки выводит информацию о настройках PHP для загрузки файлов.
  • В разделе ручной обработки можно загружать любые файлы стандарта Commerce ML, а также zip архивы с XML и картинками.
  • Экспорт файла заказов в XML для ручной загрузки в торговую систему

 

Форматы CommerceML (которые были протестированы)

  • УНФ 1.6 версия CML 2.08

 

 

 

 

image.png


  • Добавил
  • Добавлено
    03.05.2016
  • Категория
  • Системные требования
    PHP 5.6-7.2
  • Метод активации
    Без активации
  • Ioncube Loader
    Нет
  • ocStore
    2.3
  • OpenCart.Pro, ocShop
    Opencart.pro 2.3
  • Обращение к серверу разработчика
    Нет

 

  • +1 3
Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 5,1k
  • Создано
  • Последний ответ

Лучшие авторы в этой теме

Кстати подумал я тут а что если при установке модуля или в модуле вручную определить версию CMS, то в коде будет проще адаптировать, чтобы во время обмена не производить сложные проверки, их лучше выполнить один раз. Не так ли?

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Кстати подумал я тут а что если при установке модуля или в модуле вручную определить версию CMS, то в коде будет проще адаптировать, чтобы во время обмена не производить сложные проверки, их лучше выполнить один раз. Не так ли?

адаптацию можно вынести в отдельный vqmod (ocmod)

Ссылка на комментарий
Поделиться на других сайтах


константа же

define('VERSION', '2.0.3.1');

Это я знаю а какая CMS по ней не только точным сравнением версии разве что.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

адаптацию можно вынести в отдельный vqmod (ocmod)

Тоже хороший вариант. 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

opencart.pro v.2_1_0_2_1 сборка конфы основана на УТ 10 или 11, в ручном режиме залились названия товаров/категории, остатки/опции нет, для автообмена какой адрес должен быть указан в 1с ?

Ссылка на комментарий
Поделиться на других сайтах

Вопрос по опциям когда будет реализован функционал, получается количество опций будим суммироваться и устанавливаться общая сумма на сам товар? А как будет с ценой? Допустим есть номенклатура Футболка1  у нее ест опции S,M,L на эти опции установлен остаток например по 3 штуки и цена 0. То при выгрузке, опции выгрузятся, но как быть с основной ценой товара. При таком заполнении, мы товару общую цену не можем поставить, а только опциям (цену и остаток.) Если с остатком понятно, что можно суммировать и ставить общее количество в товар, то что будет с ценой? http://prntscr.com/b01vxg

Изменено пользователем ingenerks
Ссылка на комментарий
Поделиться на других сайтах

Вопрос по опциям когда будет реализован функционал, получается количество опций будим суммироваться и устанавливаться общая сумма на сам товар? А как будет с ценой? Допустим есть номенклатура Футболка1  у нее ест опции S,M,L на эти опции установлен остаток например по 3 штуки и цена 0. То при выгрузке, опции выгрузятся, но как быть с основной ценой товара. При таком заполнении, мы товару общую цену не можем поставить, а только опциям (цену и остаток.) Если с остатком понятно, что можно суммировать и ставить общее количество в товар, то что будет с ценой? http://prntscr.com/b01vxg

вот к стати да, важный момент по общему кол-ву товара исходя из опций, а так же с ценой, которая может быть едина на все опции и зависеть от опций

Ссылка на комментарий
Поделиться на других сайтах

вот к стати да, важный момент по общему кол-ву товара исходя из опций, а так же с ценой, которая может быть едина на все опции и зависеть от опций

Сам над этим пол дня думаю. Допустим в количество мы сможем загнать общую сумму всех опций, а вот с ценой )))) Либо тогда каждой опции в 1c ставить цену например первой 20 второй 30 третей 40. Получается на товар в опенкарт можно загнать самую минимальную 20 затем эти 20 вычесть из каждой опции и поставить уже в опенкарте на первую 0 на вторую 10 и на третью 20. И при + к цене на сайте все будет корректно отображаться ))))

Изменено пользователем ingenerks
Ссылка на комментарий
Поделиться на других сайтах

Хорошо бы сделать возможно отключать выгрузку категорий. У меня вот проблема с ними, по сути они мне не нужны. Я хочу сделать чтоб по умолчанию товар выгружался в одну заданную категорию, а потом раскидывать в нужные мне. Вчера целый день изучал код, так и не понял как это сделать, в прошлых версиях попроще было.

Ссылка на комментарий
Поделиться на других сайтах


Хорошо бы сделать возможно отключать выгрузку категорий. У меня вот проблема с ними, по сути они мне не нужны. Я хочу сделать чтоб по умолчанию товар выгружался в одну заданную категорию, а потом раскидывать в нужные мне. Вчера целый день изучал код, так и не понял как это сделать, в прошлых версиях попроще было.

так там вроде чекбоксы есть на выгрузузку фото/категорий/названий, как я понял с категориями выгружает принудительно если только товара нету в базе, но так вообще резонно сделать выгрузку в категорию по умолчанию

Ссылка на комментарий
Поделиться на других сайтах

Можно ли данный модуль использовать для интеграции с сервисом Мой склад?

по схеме Commerce ML?

Как раз хотел спросить, тестировали с МС.

Щас некогда, на выходных проверю сам.

Ссылка на комментарий
Поделиться на других сайтах

Потестировал модуль (качал с гитхаба последний вариант на 09.05.2016 13:00).

1. SEO поля - ни одно не генерируется (стоит везде {name}), пробовал и "заполнять если пусто", и "перезаписывать"

2. С опциями (характеристиками) - не прикрепляет к товару опции, если цена неравно 0. Если цена 0, то добавляет опцию.

3. Про связанные опции понял, что нереализовано пока (там полно работы).

4. Штрихкод грузит к товару, но в XML пишется ШтрихКод, поэтому надо и в коде искать ШтрихКод.

5. Неверно работают каталоги с мультимагазинами

Пример:

Магазин 1 содержит 1 категорию: Категория 1.

Магазин 2 содержит 2 категории: Категория 1 и Категория 2

При создании Категории 1 галочка отображать в магазине стоит только на Магазине 1 (а должна быть и в Магазине 2).

При создании Категории 2 галочка отображать в магазине стоит только на Магазине 2 (всё ок).

Товар 1 лежит в Категории 1.

Товар 2 лежит в Категории 2.

В итоге у обоих товаров проставлены только галки отображать в магазине 2 (ни один не показывается в Магазине 1).

 

Пока всё, еще тестирую
ocStore 2.1.0.2.1

Изменено пользователем olegfusion
Ссылка на комментарий
Поделиться на других сайтах


У меня следующий глюк:

 

В базе 1С два типа цен - Розничная и Мелкооптовая.

В настройках модуля обмена указываю основную цену: Розничная, все работает нормально, цены выгружаются.

Следом добавляю цену Мелкооптовая, указываю группу покупателей Default (она единственная) и количество 100.

После этого все цены на сайте становятся мелкооптовыми. Насколько я помню в beta6 было все нормально, на сайте отображалась основная цена, а в карточке товара было написано: 100шт или более - мелкооптовая цена.

 

У кого есть возможность проверьте у себя.

Ссылка на комментарий
Поделиться на других сайтах


Почему модуль при нажатии "Очистить таблицы" и таблицу url_alias очищает? Так и должно быть?
В описании к этой функции написано - Очищает товары, категории, опции, характеристики, производителей, остатки и цены во всех магазинах!
Про то что будут очищаться и url ни слово не написано, из за этого полетели все основные url на сайте.
 

Изменено пользователем slowwak3r
Ссылка на комментарий
Поделиться на других сайтах


Потестировал модуль (качал с гитхаба последний вариант на 09.05.2016 13:00).

1. SEO поля - ни одно не генерируется (стоит везде {name}), пробовал и "заполнять если пусто", и "перезаписывать"

2. С опциями (характеристиками) - не прикрепляет к товару опции, если цена неравно 0. Если цена 0, то добавляет опцию.

3. Про связанные опции понял, что нереализовано пока (там полно работы).

4. Штрихкод грузит к товару, но в XML пишется ШтрихКод, поэтому надо и в коде искать ШтрихКод.

5. Неверно работают каталоги с мультимагазинами

Пример:

Магазин 1 содержит 1 категорию: Категория 1.

Магазин 2 содержит 2 категории: Категория 1 и Категория 2

При создании Категории 1 галочка отображать в магазине стоит только на Магазине 1 (а должна быть и в Магазине 2).

При создании Категории 2 галочка отображать в магазине стоит только на Магазине 2 (всё ок).

Товар 1 лежит в Категории 1.

Товар 2 лежит в Категории 2.

В итоге у обоих товаров проставлены только галки отображать в магазине 2 (ни один не показывается в Магазине 1).

 

Пока всё, еще тестирую

ocStore 2.1.0.2.1

По поводу SEO  у меня тоже сначала не работало. Дело было в том что запрос

SELECT p.product_id, p.sku, p.price, pd.name, pd.description, pm.name as manufacturer, pd.tag, pd.meta_title, pd.meta_description, pd.meta_keyword, pa.keyword as seo_url

FROM `" . DB_PREFIX . "product` p

LEFT JOIN `" . DB_PREFIX . "product_description` pd ON (p.product_id = pd.product_id) LEFT JOIN `" . DB_PREFIX . "manufacturer` pm ON (p.manufacturer_id = pm.manufacturer_id)

LEFT JOIN `" . DB_PREFIX . "url_alias` pa ON (CONCAT('product_id=', p.product_id) = pa.query)

WHERE pd.language_id = " . $this->LANG_ID . ($overwrite ? "" : " AND pa.query IS NULL") . "

AND p.date_modified BETWEEN STR_TO_DATE('" . $date_start . "', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('" . $date_end . "', '%Y-%m-%d %H:%i:%s')

ORDER BY pd.name ASC";

который находится в функции генерации SEO получался пустым из-за того что не выполнялось условие p.date_modified BETWEEN STR_TO_DATE('" . $date_start . "', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('" . $date_end . "', '%Y-%m-%d %H:%i:%s'). В поле date_modified и переменной date_end время получалось разное. Прописав в php.ini свой часовой пояс у меня все заработало. Попробуйте, может у вас тоже заработает.     

Ссылка на комментарий
Поделиться на других сайтах


Добрый день! Скажите пожалуйста можно ли этим модулем жестко связать категории на сайте с категориями в 1с?

 

т.к. в 1с дерево каталогов построено не так как на сайте, а менять ни в 1с ни на сайте не хочется.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Прошу, если не трудно, ответить на вопрос - при выгрузке заказов из магазина в 1С, как формируется запись о контрагенте? Он всегда создаётся новым? Или есть всё же некоторый механизм, который не позволяет плодить дубли? Вопрос, наверное, больше к 1С, я просто не знаю, какие реквизиты передаются для справочника контрагентов по стандарту CommerceML, обеспечивающие уникальность контрагента. Вроде же нет для него такого понятия, как "артикул"...

Ссылка на комментарий
Поделиться на других сайтах


В настройках обмена заказами в 1С можно выбрать как идентифицировать контрагента - по Наименованию или по ИНН, правда мне например не подходит ни один ни другой способ, точнее мне они подходят, но только вместе, а выбрать можно лишь из двух. Мне физических лиц надо по Наименованию, а юридических по ИНН, но я не знаю можно ли так сделать, ибо в настройках 1С - нельзя.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


Я понял. Примерно что-то подобное и ожидал... Дело в том, что у меня в базе клиентов есть полные тёзки, при этом совершенно разные люди. Отличаю их по адресу. ИНН, разумеется, никто в заказах физиков не указывает. :)

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


Может кому будет интересно.

 

Исходная информация - пытаюсь подружить связку ocStore 2.1.0.2.1 + 1С УНФ 1.5.

Для обмена данными, сейчас использую модуль уважаемого Kirillove.

Что касается самого модуля - работает. Из выявленных пока проблем, которые пока просто отметил не разбираясь - при обменен данными не сработала настройка "Не показывает товар на сайте если остаток равен или меньше нуля". Т.е. товары с нулевыми остатками доступны для выбора в корзину.

Вторым замеченным нюансом является передача поля адреса в Контрагента. Комбинация полей Страна, Регион, Город, Индекс и Адрес передаются в поле "Юридический адрес" справочника Контрагентов. Это просто для справки. Выглядит довольно криво, буду пытаться решить это на уровне ocStore путём формирования адресной строки нужного мне формата, а для модуля, в качестве пожелания, конечно, будет лучше, если адрес передавался бы в поле "Адрес доставки" справочника контрагентов.

Переданный в УНФ список товарных позиций с ценами позициям не содержат тип данных цен. Можно оставить как есть, можно выбрать тип цен непосредственно в заказе, если нужно, а можно - всё таки передавать тип цены в УНФ, благо, в настройках модуля же указано соответствие цен сайта типам цен 1С.

Но больше, конечно, напрягают другие вопросы. В наибольшей степени - в 1С не передаются данные о методе доставки. Честно говоря, пока слабо себе представляю, как это может быть сделано в существующих формах и полях формы заказа УНФ. Сейчас, информация о типе доставки в УНФ присутствует у меня в виде номенклатурных позиций с типом "Услуга" и стоимость этой позиции непосредственно определяет менеджер, обрабатывающий заказ в УНФ. Красивым решением, была ба трансформация в модуле обмена типа доставки в соответствующий элемент справочника номенклатуры. Настройка бы была примерно в том же виде, что и тип цен для обмена данными по товару. Т.е. таблица соответствия - тип доставки, товарная позиция 1С. Но это уже кастомизация модуля. В качестве костыля сошла бы просто передача типа доставки в поле "Комментарий" к заказу. Причём, костыль этот может быть реализован как в модуле обмена данными, так и в модуле ввода заказа. Идеологически правильнее, разумеется, чтобы это было в модуле обмена данными.

Такие вот первичные наблюдения.

Изменено пользователем IronMann
  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


  • dinox изменил заголовок на Модуль обмена для opencart v2.3 с учетной системой по стандарту CommerceML [Поддержка]

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.