Консалтинг

Решение задачи для Николая

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

ТехзаданиеПлатформа: OpenCart 1.5.1.3 и OpenCart 1.5.5.1.2
Что необходимо: Модуль для импорта категорий, товаров и их свойств с функциями обновлений.
Поддерживаемые форматы прайсов: CSV и XML

Добрый вечер.
Пишу в продолжение темы: https://velibekov.ru/blog/portfolio-proekt-dzhaga-dzhaga/#comment-129
По сайтам сейчас ситуация такая что один переделывается, а второй только создаётся (версии: OpenCart  1.5.1.3 и 1.5.5.1.2), поэтому ссылок пока нет.
Пример прайсов XML-файлов из магазинов на OpenCart  (к этим магазинам я никакого отношения не имею): http://likanta.ru/index.php?route=feed/yandex_market http://kupi-kupi.net/index.php?route=feed/yandex_market
и не на OpenCart  http://www.morecolor.ru/market/yandex.php
В приложении описание что конкретно ищу и для каких задач.
Если знаете готовые решения для таких задач, буду рад помощи. И вообще любой консультации.
Спасибо.

Что необходимо:
• Поля для прайсов на импорт: загрузка файла с компьютера и поле для вставки url файла xml
• Возможность выбирать какие категории импортировать, а какие нет
• Возможность выбирать какие товары импортировать, а какие нет
• Указывать какое поле в прайсе соответствует полю в магазине
• Выбирать какие именно свойства (поля) необходимо обновлять (например, обновлять только поля наличие: да/нет), игнорируя изменения в остальных полях
• При каждом обновлении помечать изменения по сравнению с предыдущим обновлением по выбранным свойствам (например, изменилась оптовая цена пометить спад или рост, изменилось состояние наличия)
• Отмечать пропавшие (удалённые) свойства (либо же полное исчезновения товара) и выставлять статус наличия товара: «нет в наличии»
• Сопоставление (привязка) имеющихся в базе магазина товаров с товарами из прайсов поставщика (если какой-либо товар уже есть на сайте, то указывать с каким товаром у поставщика его сопоставить и отслеживать. Например: на сайт добавлен товар А с полным набором свойств (его описание, ценой, фотографиями и т.д.), необходимо его сопоставить с товаров Б у поставщика (названия могу и описание могут как совпадать, так и не совпадать) и отслеживать определённые свойства. У поставщика товар Б в наличии и в магазине товар А в наличии, если у товара Б это свойство меняется, то соответственно в магазине меняется это свойства у товара А)
• При больших прайсах загружать их поэтапно, чтобы не загружать сайт при больших файлах (желательно как-то отображать процесс загрузки, чтобы определять его работу, прогресс и не повисло ли всё)
• Выбирать время обновления прайсов (раз в час, раз в сутки в определённое время) по XML ссылке и указывать путь для CSV файла (хранение на сайте)
• Отображать всевозможные ошибки
• Сообщать о успешном завершении обновлений (возможно с отправкой на почту)

Как должно работать на примере:
Интернет магазин (ИМ) имеет уже свои категории, свои товары. При появлении новых поставщиков (с новыми товарами, либо же с аналогичными) они предоставляют свои прайсы (CSV или XML), эти прайсы добавляются в ИМ и уже выбирается какая группа товаров (или же отдельный товар) будет добавлена на сайт и какие поля необходимо будет отслеживать. Каждому новому товару необходима возможность выбирать категорию в ИМ (если он загружается отдельно), а каждой категории необходима возможность привязывать её к уже существующей в ИМ. Если же товар уже и так есть в ИМ, то необходима сопоставление (склейка, привязка) его к определённой позиции из прайса поставщика с отслеживание определённых полей.
Пример: ИМ очков имеет ассортимент из следующих категорий:

• Солнцезащитные очки
o Мужские: М1,М2,М3,М4
o Женские: Ж1,Ж2,Ж3,Ж4

• Медицинские очки

o Мужские
 Очки на + : ММ1+,ММ2+,ММ3+
 Очки на — : ММ1-,ММ2-,ММ3-

o Женские
 Очки на +: ЖМ1+,ЖМ2+,ЖМ3+
 Очки на –: ЖМ1-,ЖМ2-,ЖМ3-

o Детские очки
 Очки на +: ДМ1+,ДМ2+,ДМ3+
 Очки на –: ДМ1-,ДМ2-,ДМ3-
• Комплектующие и уход

Подключается новый поставщик. Из его ассортимента будет добавлена новая категория: детские солнцезащитные очки, в которую войдут следующие модели: Д1,Д2,Д3. Так же у поставщика имеются модели очков из категории мужских медицинских ММ4+ и ММ4-, они будет добавлены в соответственно категории: Медицинские очки – Мужские – Очки на + и Медицинские очки – Мужские – Очки на -. У поставщика так же имеются очки модели ЖМ1+ и ДМ2-, они должны быть сопоставлены (склеены) с соответствующими из ассортимента ИМ. Ещё у поставщика есть очки марки Ж5, но они полностью совпадают с товаром Ж4 в ИМ и должны быть склеены с ними.
На выходе получаем следующее:

• Солнцезащитные очки
o Мужские: М1,М2,М3,М4
o Женские: Ж1,Ж2,Ж3,Ж4
o Детские: Д1,Д2,Д3
• Медицинские очки

o Мужские
 Очки на + : ММ1+,ММ2+,ММ3+,ММ4+
 Очки на — : ММ1-,ММ2-,ММ3-,ММ4-

o Женские
 Очки на +: ЖМ1+,ЖМ2+,ЖМ3+
 Очки на –: ЖМ1-,ЖМ2-,ЖМ3-

o Детские очки
 Очки на +: ДМ1+,ДМ2+,ДМ3+
 Очки на –: ДМ1-,ДМ2-,ДМ3-
• Комплектующие и уход

После всех этих процедур, настраиваем обновление прайсов по расписанию: ежедневно в 02:00 по МСК. Обновление настраивается таким образом, чтобы:
• отражалось изменение оптовой цены у позиций представленных поставщиком
• проверялся статус в наличии/не в наличии по товарам: Д1, Д2, Д3, ММ4+, ММ4-, ЖМ1+, ДМ2- и Ж5 и в случаи изменения так же менялись и на сайте эти свойства у позиций: Д1, Д2, Д3, ММ4+, ММ4-, ЖМ1+, ДМ2- и Ж4
• Если какой-то из товаров пропадал из прайса он отмечался цветом, статус в ИМ для этого товара «нет в наличии».
• Ничего не менять в других позициях!

Почитал я это дело. Подумал. Почитал вновь. Подумал. После третьего прочтения что-то начало проявляться). Затем начал изучать по фрагментам.

«По сайтам сейчас ситуация такая что один переделывается, а второй только создаётся (версии: OpenCart  1.5.1.3 и 1.5.5.1.2), поэтому ссылок пока нет.»
= на дворе первое Ноября, так что лучше ставить версию 1.5.6.х, в данной версии имеется поддержка MySQLi, что дает дополнительные удобства и преимущества при разработке, чем MySQL. http://ru.m.wikipedia.org/wiki/MySQLi

Дальше: «Сопоставление (привязка) имеющихся в базе магазина товаров с товарами из прайсов поставщика (если какой-либо товар уже есть на сайте, то указывать с каким товаром у поставщика его сопоставить и отслеживать. Например: на сайт добавлен товар А с полным набором свойств (его описание, ценой, фотографиями и т.д.), необходимо его сопоставить с товаров Б у поставщика (названия могу и описание могут как совпадать, так и не совпадать) и отслеживать определённые свойства. У поставщика товар Б в наличии и в магазине товар А в наличии, если у товара Б это свойство меняется, то соответственно в магазине меняется это свойства у товара А)»
= и вот здесь уже серьезный затык. Ведь бывает так, что у двух разных поставщиков один и тот же товар может различаться в наименовании, при чем как незначительно, так и сильно, следовательно, для сравнения товаров и понимания, одинаковые ли это товары, придется создавать дополнительно механизмы сопоставления на основе регулярных выражений, а также иных параметрах. А еще, система должна показать, какие товары она сопоставила, а в каких сомневается, чтобы вы потом сопоставили их вручную.

И потом, я все скомкал, выбросил и стал с нуля решать задачу.
1. Вытаскиваем данные из YML
http://likanta.ru/index.php?route=feed/yandex_market
Все делается просто: заказываем программисту конвертер YML – XLS
Программист может вам создать php приложение, которое будет подсасываться к YML, выкачивать его, конвертировать в XLS и отдавать вам экселевский файл. Приложение будет работать на вашем хостинге.
Дополнительно можно доработать его так, что оно будет в определенное время выкачивать с сайта, конвертировать и отправлять вам готовый файл на емейл, либо в админке вашего сайта делается кнопочка, при клике на которую вам через несколько секунд будет предложено указать, куда сохранить XLS файл. Либо и то и другое. Срок разработки 2-5 дней на первый сайт и примерно по 1-2 дня на все дополнительные сайты.

2. Покупаем лицензию Etrade Pricelist Importer.
Если у вас уже есть товары на сайте, то настраиваем подключение и выкачиваем в вашу программу весь имеющийся у вас каталог товаров.

3. Добавляем скачанный вами из YML и сконвертированный в XLS прайс-лист.
При настройке прайс-листа обязательно заполните колонку «Артикул производителя», в ней должен быть id товара в магазине, из YML которого вы выкачали прайс. Она в будущем нам понадобится.

По сути, все, больше мне дописывать нечего. Все остальные функции дописаны в документации к Etrade Pricelist Importer http://elbuz.com/ETradeDocs/PLI/index.html

Далее, вы будете иметь на сайте много наименований товаров.
Именно что наименований (ну, вместе со статусом наличия и ценой). Но при этом, у товаров не будет ни фоток, ни описаний.
Для этой задачи пинаем парсер.
Дело в том, что каждая карточка товара на вашем сайте будет иметь дополнительные поля, в которых будет информация:
— название поставщика;
— id товара поставщика.
Пишем к сайту парсер, под каждого поставщика свой.
При этом, запускаете в админке кнопку «Парсер Likanta», после чего парсер:
— понимает сразу, что его задача вытянуть инфу из YML поставщика Likanta;
— делает выборку по всем товарам, у которых в бд прописан поставщик Likanta;
— по прописанному нами id поставщика, находит товар в YML, откуда переходит на страницу карточки товара и выкачивает всю инфу.
Остальные парсеры иных поставщиков будут работать по той же схеме.

Вопросы?

Подписаться
Уведомление о
guest

11 комментариев
старее
новее большинство голосов
Межтекстовые Отзывы
Посмотреть все комментарии
Динатоль

Да вот как раз хотел что-то одно, один модуль для всего этого…

Динатоль

Простота выполнения. Загрузил данные в один модуль и всё, ничего никуда конвертировать и импортировать не надо.

Попробую на Фрилансе у программистов поспрашивать, почситаю что выгодней и удобней будет.
Спасибо за столь подробный ответ.

Динатоль

Обязательно.

Динатоль

Писал файлик быстро, на коленке, может подскажите что непонятно было (раз только с тетьего раза понятно стало что я имел ввиду)? А-то чувствую программисты не будут так вчитываться, а потом сам виноват буду что упустил что-то или неточно написал.

Динатоль

Интересно у вас в портфолио:
2011-2012 / ООО «Объединенные Системы»
Соучредитель / Директор по развитию
http://www.cosystem.ru
На сайте системы уж довольно интересно объединённые.

Можете не публиковать комментарий.

Динатоль

Судя по всему компании уже нет. Просто ссылка на сайт с проституками как то не красит портфолио.
Это как наблюдение, изучал ваш сайт и нашёл такую ссылку.

11
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x