Prestashop Multistore - цены в местном магазине перезаписываются ценой из магазина по умолчанию

У нас есть серьезная проблема в нашем недавно разработанном магазине.

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

Пример продукта:

Denmark: 99 DKK
France: 9 EUR
UK: 9 GBP

При работе в режиме "Все магазины" и изменении настроек на вкладке "Информация" на товаре цены во всех магазинах устанавливаются на значение из магазина по умолчанию. После сохранения на вкладке "Информация" цены следующие:

Denmark: 99 DKK
France: 99 EUR
UK: 99 GBP

Мы нашли несколько других с той же проблемой

http://forge.prestashop.com/browse/PSCSX-8372

http://forge.prestashop.com/browse/PSCSX-4644

И даже пулл-реквест от Prestashop Core-разработчика

https://github.com/PrestaShop/PrestaShop/pull/4601

Позже он закрыл сбор, так как в нем были обнаружены другие ошибки, и процитировал: «... все труднее что-то исправить, не сломав что-то. Честно говоря, этот патч звучит рискованно».

Похоже, что это «известная ошибка», но команда разработчиков Prestashop не собиралась ее исправлять.

Я искренне надеюсь, что кто-то смог решить эту проблему.

Заранее спасибо!

Обновление: я сделал чистый магазин и записал видео о том, как показать ошибку: https://youtu.be/LTITadt6D-k


person larsd    schedule 29.11.2016    source источник
comment
Рекомендация: проверьте хук, связанный с обновлением продукта, и убедитесь, что у вас не было модуля, который возится с ценами. Удачи   -  person PixelWeb    schedule 30.11.2016
comment
Спасибо за рекомендацию. Я установил чистый Prestashop и смог увидеть ошибку и здесь :-( Я только что обновил свой вопрос со ссылкой на видео   -  person larsd    schedule 01.12.2016


Ответы (1)


Друг, очень трудно найти и исправить эту проблему. Я постараюсь объяснить себя как можно лучше:

  1. Когда вы находитесь в контексте всех магазинов, Prestashop обрабатывает процесс редактирования, так как вы одновременно редактируете все магазины.
  2. price и whosale_price — поля, связанные с магазином. Таким образом, если вы находитесь в контексте Все магазины, вы также редактируете эти значения для всех магазинов.
  3. Вы можете избежать этого с помощью следующего кода. Но учтите, что с этим кодом, если вы хотите обновить цены во всех магазинах одновременно, у вас не получится это сделать. Вам придется обновлять цены только в контексте одного/конкретного магазина.

    if (Shop::getContext() != Shop::CONTEXT_SHOP)
    {
        unset($fields['price']);
        unset($fields['wholesale_price']);
    }
    

Этот код должен быть вставлен в функцию getFieldsShop() внутри класса Product, расположенного в \classes\Product.php непосредственно перед return $fields;.

Этот код сообщает классу Product, что когда вы находитесь в контексте магазина, отличном от контекста одного/конкретного магазина, вы не будете обновлять поля цен в мультимагазинах.

Удачи.

person PixelWeb    schedule 01.12.2016
comment
Спасибо, ПиксельВеб! Это идеальное решение для нас! В итоге мы добавили этот файл переопределения Products.php и добавили поле налоговой группы в список неустановленных значений. Еще раз спасибо - я должен вам чашку кофе и холодное пиво! :-) - person larsd; 02.12.2016
comment
Это отличное решение, но при сохранении товара в разрезе всех магазинов цены комбинаций все равно сохраняются. Как их тоже исключить? - person Smokovsky; 29.03.2021