Помощь Комбинация по умолчанию с наличием и самой низкой ценой.

Сергей_К

Хранитель порядка
Регистрация
14 Июл 2016
Сообщения
250
Решения
1
Реакции
725
Всем привет. Ну с темы думаю понятна проблема.
Есть магаз с одеждой на PS 1.6. Один товар имеет много размеров и чем больше размер, тем он дороже. Какой есть модуль, чтоб автоматизировать выбор комбинации с наличием с минимальной ценой?
Сейчас заливаются остатки через Store Manager. С помощью модуля от @savvato выключаются товары, где наличие нулевое. Нулевые товары в каталоге не отображаются. Но вот если в товаре меньший размер закончился, а был приход большего размера, то комбинация по умолчанию с меньшей ценой отображается в категории, клиент заходит в карточку товара, а там размер больше и цена больше. Получается, что такое несоответствие.
Есть модуль gmtidy, которые может проверить комбинации по умолчанию и поставить з минимальной ценой по умолчанию, но он не учитывает наличие.
У кого какие есть решения? Руками перебирать сил нет. (((

В сети редко, из-за соседа долбоеба проблемы со светом, так что пишите, я увижу. Всем спасибо, кто решит помочь.
 
Всем привет. Ну с темы думаю понятна проблема.
Есть магаз с одеждой на PS 1.6. Один товар имеет много размеров и чем больше размер, тем он дороже. Какой есть модуль, чтоб автоматизировать выбор комбинации с наличием с минимальной ценой?
Сейчас заливаются остатки через Store Manager. С помощью модуля от @savvato выключаются товары, где наличие нулевое. Нулевые товары в каталоге не отображаются. Но вот если в товаре меньший размер закончился, а был приход большего размера, то комбинация по умолчанию с меньшей ценой отображается в категории, клиент заходит в карточку товара, а там размер больше и цена больше. Получается, что такое несоответствие.
Есть модуль gmtidy, которые может проверить комбинации по умолчанию и поставить з минимальной ценой по умолчанию, но он не учитывает наличие.
У кого какие есть решения? Руками перебирать сил нет. (((

В сети редко, из-за соседа долбоеба проблемы со светом, так что пишите, я увижу. Всем спасибо, кто решит помочь.
оно?
 
Есть ещё такой вот, бесплатный. Может получится адаптировать, под свои нужды.
Срабатывает по событию оформление заказа.
Для просмотра ссылки Войди или Зарегистрируйся
 
Всем привет. Ну с темы думаю понятна проблема.
Есть магаз с одеждой на PS 1.6. Один товар имеет много размеров и чем больше размер, тем он дороже. Какой есть модуль, чтоб автоматизировать выбор комбинации с наличием с минимальной ценой?
Сейчас заливаются остатки через Store Manager. С помощью модуля от @savvato выключаются товары, где наличие нулевое. Нулевые товары в каталоге не отображаются. Но вот если в товаре меньший размер закончился, а был приход большего размера, то комбинация по умолчанию с меньшей ценой отображается в категории, клиент заходит в карточку товара, а там размер больше и цена больше. Получается, что такое несоответствие.
Есть модуль gmtidy, которые может проверить комбинации по умолчанию и поставить з минимальной ценой по умолчанию, но он не учитывает наличие.
У кого какие есть решения? Руками перебирать сил нет. (((

В сети редко, из-за соседа долбоеба проблемы со светом, так что пишите, я увижу. Всем спасибо, кто решит помочь.
Для себя выписывал запрос к БД по товарам, у которых дефолтная комбинация отсутствует на остатках и обновление напрямую на комбинацию, у которой наибольший остаток. Работает исправно больше года. Скорее всего Запрос можно безболезненно переписать с учетом минимальной цены.

Если интересует, то могу скинуть запрос. Его можно добавить в php а там и на крон повесить. Если не отвечу в треде, то в личку пиши.
 
CREATE TEMPORARY TABLE t1
SELECT p.id_product, p.reference, saa.quantity qty_attr, sa.quantity qty, pa.default_on, pa.id_product_attribute
FROM ps_product p
LEFT JOIN ps_product_attribute_shop pa ON (pa.id_product = p.id_product AND pa.id_shop = 1)
LEFT JOIN ps_product_attribute_combination pac ON (pac.id_product_attribute = pa.id_product_attribute)
LEFT JOIN ps_attribute a ON (a.id_attribute = pac.id_attribute)
LEFT JOIN ps_stock_available saa ON (saa.id_product = p.id_product AND saa.id_product_attribute = pa.id_product_attribute)
LEFT JOIN ps_stock_available sa ON (sa.id_product = p.id_product AND sa.id_product_attribute = 0)
WHERE p.active = 1;

CREATE TEMPORARY TABLE t2
select q.id_product_attribute, q2.id_product_attribute_new
from
(select *
from t1
WHERE ifnull(t1.qty_attr, 0) <= 0 and t1.qty > 0 and t1.default_on = 1) q
inner join
(select t1.id_product, min(t1.id_product_attribute) id_product_attribute_new
from
(select id_product, max(qty_attr) qty_attr
from t1
group by id_product
having max(qty_attr) > 0) q1
inner join t1
on t1.id_product = q1.id_product and t1.qty_attr = q1.qty_attr
group by t1.id_product) q2
on q.id_product = q2.id_product;

update ps_product_attribute set default_on = 0 where id_product_attribute in (select id_product_attribute from t2);
update ps_product_attribute set default_on = 1 where id_product_attribute in (select id_product_attribute_new from t2);
update ps_product_attribute_shop set default_on = 0 where id_shop = 1 and id_product_attribute in (select id_product_attribute from t2);
update ps_product_attribute_shop set default_on = 1 where id_shop = 1 and id_product_attribute in (select id_product_attribute_new from t2);

DROP TEMPORARY TABLE t1;
DROP TEMPORARY TABLE t2;
 
Назад
Сверху