Объединяем каталоги нескольких магазинов

Достаточно часто в моей практике встречаются ситуации, когда у клиента есть несколько интернет-магазинов с частично пересекающейся номенклатурой. При этом иерархия товаров, их названия и цены на каждом сайте свои.  Для того, чтобы вести в retailCRM аналитику по товарам, а также чтобы у менеджеров не было путаницы в каком каталоге брать товар, и чтобы он был одинаковый, пришлось разработать специальную объединялку каталогов. Более того, если товары дублируются, то это усложняет механизм обновление остатков, и, например, система «МойСклад» без объяснения каталога работать не сможет.

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

Интерфейс “объединялки”
Интерфейс “объединялки”
 

При обработке следующего каталога, сначала идет проверка первого (причем иерархия не важна), и если категории совпадают, то они объединяются, а если категория новая, то основной каталог дополняется.  Например, если первый магазин занимается всей электроникой, в т.ч. телефонами, а второй магазин содержит только телефоны, категории корректно объединятся.

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

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

Система работает полностью автоматически, достаточно один раз вставить ссылки на каталоги и ценовые колонки. Добавился новый магазин — просто добавляется к уже имеющимся.