Общие товары на мультивендоре не доступны к сравнению, при ряде условий

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


То при выводе ссылки всё отрабатывает корректно. Но если хоть один (или все) продавцы заданы, тогда появляется ошибка. Цепочка следующая.

  • При добавлении товара товар заносится в сессию. Всё ок
  • Далее, при обновлении страницы вызывается функция fn_get_comparison_products. К слову, в функции
  • В рамках вышеуказанной функции товары проганяются через fn_get_products чтобы удалить все недоступные товары из списка. Тут же указан параметр pid с айдишниками товаров http://i.abt.team/inj/20200221-095218-xphAIwkb9o.png
  • В рамках fn_get_products, при выбранных продавцах добавляется условие по company_id
    http://i.abt.team/inj/20200221-095752-jdnzE2JTy8.png
  • В хуке get_products в рамках модуля master_products при просмотре каталога условие по компании заменяется с companies.company_id IN (?n) на (companies.company_id IN (?n) OR products.company_id = 0).

И это отрабатывает при загрузке категории, общие товары с company_id = 0 отображаются. Но из-за параметра pid при попытке получить товары из списка сравнений эта подмена не срабатывает, товары общие товары не попадают в выбору и удаляются из списка сравнения.

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

1 лайк

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

Прошу после решение приложить в теме фикс, надо будет поправить, обновляться при этом затруднительно.