Получение статусов заказов с сайта

Чтобы обмениваться статусами надо их включить и настроить. Сначала в модуле установим коды статусов, они могут быть буквенно-числовыми. Дальше переходим в 1С и там настраиваем синхронизацию.

Приведу пример только 1С УНФ 3.0, где есть возможность загружать с сайта статусы заказа в специальную таблицу, чтобы сопоставить статусы. Для этого нужно включить «обмениваться статусами» и нажмите кнопку «Загрузить статусы заказов с сайта». Далее Вам нужно будет проставить статусы из 1С напротив статуса с сайта. Код статуса будет использован для синхронизации, если он будет не заполнен, статус не будет меняться.

Если у Вас другая конфигурация 1С, напишите мне через обратную связь на сайте и я посмотрю. Если на этой неделе время останется, то проверю еще на Управление торговлей 11.

Получение служб доставки с сайта

Опять же приведу пример с 1С УНФ 3.0, включите галочку использовать доставку, и нажмите кнопку «Загрузить службы доставки с сайта». Если в 1С включена галочка «Выгружать заказы», а в модуле стоит галочка «Загружать заказы» то статус заказа будет обновлен при обмене. Если включена загрузка заказов на сайт, то при изменении службы доставки и суммы, также изменится на сайте.

Модуль выгружает только те службы, которые включены в opencart. Если нужно отключить одну или несколько служб доставки, то просто в разделе «расширения» отключите ненужные. Если потом зайти в модуль обмена, то список уже обновится.

ВНИМАНИЕ! Выгружается только доставка в заказе где установлен Код. Дублирование кодов недопустимо, модуль по списку выберет первый по совпадению.

Получение способов оплат с сайта

Если есть в Вашей 1С загружать оплаты, тогда можете активировать её. Но прежде чем вы получите оплату с сайта её нужно настроить в модуле. Если посмотрите в таблицу обмена оплатами в 1С, то увидите колонки «Тип оплаты» и «Код вида оплаты», эти поля отсутствуют в Opencart, поэтому модуль Exchange1C перегружает включенные оплаты себе в таблицу и в ней нужно будет выставить эти поля, иначе эти оплаты не будут выгружены в 1С.

Хочу обратить внимание что заказ бывает бесплатный, поэтому допускается в поле тип оплаты пустое значение.

Модуль выгружает только те службы, которые включены в opencart.

ВНИМАНИЕ! Оплаты синхронизируются по коду, его нужно обязательно заполнять. Дублирование недопустимо, модуль выберет первого по совпадению кода.

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

Загрузка заказов на сайт

Для правильной загрузки заказов было много сделано по обмену, но еще не всё. Будут продолжены работы с 19 по 23 мая и сразу выложу новую версию. Хотя возможно выйдет раньше. И так поехали, заказы загружаются для того чтобы обновлялись товары, доставки и оплаты.

При изменении товаров в 1С также будут обновлены товары на сайте, если такого товара не будет на сайте, то он будет загружен при обмене каталога. Если все же товара такого нет, то модуль все же пропишет наименование цену и сумму в заказ, но покупатель в личном кабинете не сможет перейти по ссылке, т.е. не будет ссылки на товар, она появится позже когда товар загрузится на сайт.

При изменении доставки или суммы доставки в 1С после обмена на сайте тоже они изменятся. Для разных конфигураций 1С или других учетных систем нужны разные данные. Если изменить трек-номер в 1С то он выгрузится на сайт

Выгрузка заказов с сайта

Модуль научился выгружать заказы в УНФ с доставкой и правильным заполнением получателя или контактного лица у контрагента, если плательщиком является организация, а получает физическое лицо.

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

  • Дата отгрузки
  • Ожидаемая дата (с время по время)
  • Трек-номер
  • Комментарий доставки
  • Комментарий заказа
  • Комментарий менеджера (появится в свойствах заказа)
  • Способ доставки
  • Адрес доставки
  • Получатель (ФИО, телефон, email)
  • Наименование услуги доставки (будет создана в 1С если в базе не будет)

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

Доработка кода

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

Функция обработки предложений теперь читает не все предложения подряд, а сначала без характеристик, а затем с характеристиками, это позволило быстрее анализировать цены опции и мы сразу знаем была ли установлена цена в УС на товар без характеристик или нет и если была, то её ставим основной, а цены опций рассчитываются в + и — от основной. Если основная цена не была установлена, то в основную цену запишется цена самой минимальной опции, а остальные будут + разница.

Доработана функция чтения товаров из XML, раньше функция перебирала все товары если нужно было прочитать часть данных, теперь с использованием ключей к массиву товаров. Также использовано чтение тегов XML через children() что позволило оптимизировать код.

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

Доработана функция log() для удобства вывода информации. По всему коду пересмотрены сообщения вывода в лог. При отладке максимального уровня можно будет увидеть не только данные, но и расход памяти, время сессии практически после каждой функции.

Проверена загрузка больших данных с раздельным чтением между сессиями. Модуль на нашем тестовом сервере успевал прочитать 7700 товаров с классификатором и 5832 предложения за 5 секунд. А импорт успевает сделать только 462 товаров и 1800 предложений за 5 секунд. Над скоростью еще будет оптимизация, замеры производились при максимальном уровне отладки без картинок. Если будут картинки то будет затрачены небольшое количество времени на их перенос из временной папки в папку с картинками. Напоминаю что при импорте сначала все картинки попадают в папку загрузки, а при импорте нужные переносятся в каталог image.

Но надо заметить, что я использую функции CMS для импорта товаров и по моему мнению они работают медленнее, но уже в других версиях я проверю это.

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

После проверки лога и корректировки кода, я еще раз сделал полный обмен, но еще больше товаров, а с сайта не стал удалять загруженные. В общем все отлично, но только в коде стояло у меня ограничение не более 20 циклов в одном шаге STEP, увеличил до 50 и сделал константой в контроллере.

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

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

Но все же решил проверить как сработает ручной импорт, ведь он загружает данные не с XML, а с базы данных таблиц загруженные с XML, кстати можно использовать обмен с 1С только чтение XML, а импорт делать вручную. Но при этом картинки не будут загружены только! Можно подумать как обойти это. Ведь если картинки уже будут в каталоге image тогда после ручного импорта у товаров появятся картинки. Кстати, если картинка не была найдена на диске, то в товар она не добавляется! Напоминаю что каталог загрузки каталога по умолчанию находится в /storage/exchange1c/1c_catalog/ сюда можно залить картинки включая папки точно также как они были выгружены с 1С или распакованы с архива, архив заливать не нужно!

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

Также решил проверить обмен отдельными файлами и обнаружил ошибки, которые оперативно исправил.

Протестирована загрузка товарных категорий, но свойства товарных категорий не импортируются. В следующих версиях будет проанализирована возможность использовать свойства товарных категорий в фильтрах CMS.

Ранее писал что выход обновления будет 10.06.2025, но перенес на 13.06.2025 , т.к. нужно еще протестировать обновление модуля.

Добавлены пункты в меню административной панели

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

Tags:

Ответов пока нет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

CAPTCHA ImageChange Image

Обратиться за помощьюscreen tag