Иногда бывает необходимо поменять цены на все товары, на группы или категории товаров, чтобы запустить акцию.
Вроде все просто, фильтруем, выбираем нужные, нажимаем изменить, умножаем цены на 1-скидка, ставим "Использовать старое значение цены"... И все вроде бы классно, нам удалось сделать скидку на тысячу товаров! НО в атрибутах старая цена не поменялась !
Когда товаров немного это не проблема, взяли поправили ручками(если помните старые цены) и все готово, а вот когда их несколько тысяч...
Решение(актуально для JS 4.17.0):
в файле /administrator/components/com_jshopping/models/products.php в районе 943 строки находим следующий код:
if ($post['product_old_price']!=""){
$price = saveAsPrice($post['product_old_price']);
if ($post['mod_old_price']=='%')
$_adv_query[] = " `old_price`=`old_price` * '".$price."' / 100 ";
elseif($post['mod_old_price']=='=')
$_adv_query[] = " `old_price`= '".$price."' ";
else
$_adv_query[] = " `old_price`=`old_price` ".$post['mod_old_price']." '".$price."' ";
}
меняем его на
if ($post['product_old_price']!=""){
if ($post['use_old_val_price']!=1){
$price = saveAsPrice($post['product_old_price']);
if ($post['mod_old_price']=='%')
$_adv_query[] = " `old_price`=`old_price` * '".$price."' / 100 ";
elseif($post['mod_old_price']=='=')
$_adv_query[] = " `old_price`= '".$price."' ";
else
$_adv_query[] = " `old_price`=`old_price` ".$post['mod_old_price']." '".$price."' ";
}
}
Далее в этом же файле находим в районе 1015 строки:
if ($post['use_old_val_price']==1){
$product->set('product_old_price', $oldprice);
}
заменяем на
if ($post['use_old_val_price']==1){
$db = JFactory::getDBO();
$product->set('product_old_price', $oldprice);
$query = "update `#__jshopping_products_attr` SET `old_price`=`price` where product_id='".$db->escape($id)."'";
$db->setQuery($query);
$db->query();
}
Немного грязно, но работать будет - проверено

А теперь вопрос к знатокам:
Я не исключаю, что я туповат

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