Синхронизация остатков магазина с прайсами поставщиков:
Поставщики ежедневно предоставляют нам остатки с ценами в файле excel. Всего около 10 прайсов (могу предоставить), которые пересекаются по позициям примерно в 70%.
Задача: каждый день синхронизировать остатки в систему опенкарт в автоматическом режиме в определённое время. Другими словами, нужен парсер, который будет в следующей последовательности (или более удобной, если такая имеется) выполнять алгоритм:
1. Сканировать 10+ прайсов (файлы эксель и ссылки на файлы эксель на сайтах)
2. Формировать массив товаров общий из всех прайсов по 1 каждого разного товара.
Важно замечание 1: в разных прайсах товары отличаются по названию, но по сути – это одно и то же. Например: Agent Provocateur Petale Noir edp 30ml ж, AGENT PROVOCATEUR PETALE NOIR edp 30 ml spray (L) NEW и т.п. То есть, названия на 90% идентичны, но их может быть 10 вариантов и они могут отличаться на какие-то буквы/цифры/символы/и т.п. Парсер должен выбрать из имеющихся в наличии идентичных товаров самый дешёвый (все цены в прайсах указаны в одном номинале) и отдать его во вновь созданный массив товаров с ценой и признаком прайса, с которого этот товар взят.
Важное замечание 2: товары. Которые отличаются объёмом (мл, ml) должны переходить в массив как отдельные.
3. Этот массив должен быть сверен с файлом заливки (дам пример) на сайт и в случае совпадения (приблизительно те же 90% как и в п.2) в файл заливки должна передаваться: информация о прайсе, с которого взят товар (название файла прайса) и цена по следующей формуле (должна быть предусмотрена возможность ее корректировки по необходимости):
Цена в файле заливки округлена до целого числа = 8,2 * 1,35 * цена товара в массиве (если цена в массиве < 20)
Цена в файле заливки округлена до целого числа = 8,2 * 1,3 * цена товара в массиве (если цена в массиве >20 < 50)
Цена в файле заливки округлена до целого числа = 8,2 * 1,25 * цена товара в массиве (если цена в массиве >50<100)
Цена в файле заливки округлена до целого числа = 8,2 * 1,2 * цена товара в массиве (если цена в массиве >100)
Итого 2 переменные, в остальном файл заливки ничем не дополняется
4. Поле файла заливки «Есть/нет в наличии» должно заполняться в зависимости от того, найдено ли совпадение с массивом. Все, что отсутствует в массиве, но есть в файле заливки, должно переходить автоматически в статус «нет в наличии».
5. Все товары массива, по которым не найдены соответствия с файлом заливки, выводятся в отдельный вновь созданный файл с полями: название товара, цена из прайса, признак прайса (название файла прайса).
6. По тем товарам, которых нет, исходя из п.4, кнопка «купить» в карточке товара должна меняться на кнопку «предзаказ». И при ее активации (с предупредительным сообщением-подтверждением: «Вы хотите оставить нам сообщение о предварительном заказе данного товара, чтобы когда он появился в наличии, мы с Вами связались»?) должно отправляться сообщение на
[email protected] (пока не активна) со ссылкой на товар предзаказа, а пользователя должно редиректить на специальную страницу с текстом: «Спасибо за Ваше обращение, как только данный товар появиться в наличии, наши менеджеры свяжутся с Вами». Данный пункт используется только для товаров, для которых нет ни одного варианта с объёмом в наличии. Из следующего задания понятно будет, почему так.
Разбивка карточки товара по объёмам и вывод разных цен в карточку и на предпросмотр в зависимости от выбора объёма из выпадающего списка.
Здесь идет пересечение с Важным замечанием 2 из п.2 первого задания . А именно: Каждый объём товара для файла заливки является отдельным товаром, а для покупателя в карточке товара – вариантом выбора из выпадающего списка. Как здесь: http://makeup.com.ua/product/917/
В случае отсутствия такого товара в прайсе (п.4 первого задания), объём должен быть исключен из выпадающего списка (не предлагаться для выбора пользователю, без предзаказа – как в п.6 первого задания). Но, если завтра он появиться у поставщика, то точно также он должен добавиться к выбору.
Таким образом, каждый объём по сути будет являться отдельным товаром в учете и одновременно быть частью общей карточки данного товара, которая имеет одно название, описание, но разные цены и объёмы.
По умолчанию должен быть показан минимально доступный объём и его цена.
Важно1 ЧПУ страницы не должен меняться в зависимости от изменения объёма!
Важно2 В предпросмотре карточки эта функция также должна быть реализована, как здесь http://makeup.com.ua/categorys/3/