Перейти к содержанию
Официальный форум поддержки Simpla

Фильтр отсутствующие товары в админке


Рекомендуемые сообщения

Заметил момент, при попытки отфильтровать товары у которых количество товаров 0, мне выдает, только те, у которых 1 либо все варианты с кол-вом товара 0, но те у которых один вариант кол-во "безлим" а второй вариант 0, то фильтр его не находит.

Пытался поправить запрос в api/Products.php в функции get_products() 

но честно, запутался 

if(isset($filter['in_stock'])) $in_stock_filter = $this->db->placehold('AND (SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = ?', intval($filter['in_stock']));

Подскажите как поправить запрос

Изменено пользователем technokid
Ссылка на сообщение
Поделиться на другие сайты

Интересно, как это?

Вы придумали запрос, он у вас не работает - и это БАГ Симплы?

 

Ничего я не придумал. Это стандартный запрос симплы. вот тут сами посмотрите https://github.com/pikusov/Simpla/blob/master/api/Products.php#L72, еще как вариант можете войти в демо версию админки симплы и сами увидите этот баг

Ссылка на сообщение
Поделиться на другие сайты

То, что Вы описали - никакой не баг, работает правильно, именно так, как задумано.

Схема проста - есть товар, у него несколько вариантов, у вариантов есть количество (stock).

 

Количество для товара - формально не определено. Когда говорят про кол-во товара, обычно имеют в виду суммарное количество его вариантов. Поэтому товар с количеством =0 - это товар, у которого ВСЕ варианты имеют кол-во 0.

 

Если Вам хочется трактовать это иначе,  например, если для Вас товар с количеством 0 - это тот, у которого в одном варианте 0, а в других - произвольное число, то программируйте  указанный фрагмент по-своему.

Изменено пользователем Kors
Ссылка на сообщение
Поделиться на другие сайты

То, что Вы описали - никакой не баг, работает правильно, именно так, как задумано.

Схема проста - есть товар, у него несколько вариантов, у вариантов есть количество (stock).

 

Количество для товара - формально не определено. Когда говорят про кол-во товара, обычно имеют в виду суммарное количество его вариантов. Поэтому товар с количеством =0 - это товар, у которого ВСЕ варианты имеют кол-во 0.

 

Если Вам хочется трактовать это иначе,  например, если для Вас товар с количеством 0 - это тот, у которого в одном варианте 0, а в других - произвольное число, то программируйте  указанный фрагмент по-своему.

Я с Вами не совсем согласен.

Я могу сказать как кол-во товара в общем, так и количество вариантов по товару.  Если мне дают возможность показать товары которые отсутствуют, то почему я не могу видеть вариант товара который закончился. Когда у меня магазин в 15 тысяч позиций или больше, как я должен отловить ту позицию, которая закончилась?

Ссылка на сообщение
Поделиться на другие сайты

Когда у меня магазин в 15 тысяч позиций или больше, как я должен отловить ту позицию, которая закончилась?

Отловить можно, сделав экспорт.

Если это не подходит то, похоже, Вам надо что-то свое специфичное. Тогда это отдельной доработкой.

Если готовы оплачивать, обращайтесь...

Ссылка на сообщение
Поделиться на другие сайты

 

Отловить можно, сделав экспорт.

 

Скажу честно, при 15 тысячах товара, экспорт работает очень медленно.

На счет отдельной доработки, я не вижу тут что-то глобальное дорабатывать. Ведь на самом деле, тут просто нужно изменить запрос.

Вот так он выглядит если нажать "Отсутствующие" 

SELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.partner, p.featured, p.meta_title, p.meta_keywords, p.meta_description, b.name as brand, b.url as brand_url FROM __products p LEFT JOIN __brands b ON p.brand_id = b.id WHERE 1 AND (SELECT count(*)>0 FROM s_variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = 0 ORDER BY p.position DESC LIMIT 0, 20

Я не понимаю что означает вот этот кусок 

WHERE 1 AND (SELECT count(*)>0 FROM s_variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = 0

вернее SELECT count(*)>0 

 

Тут вопрос более в помощи с запросом, а не доработкой 

Ссылка на сообщение
Поделиться на другие сайты

На счет отдельной доработки, я не вижу тут что-то глобальное дорабатывать. Ведь на самом деле, тут просто нужно изменить запрос.

 

Изменить его можно тысячами способов. Вам все равно каким?

 

 

Я не понимаю что означает вот этот кусок

WHERE 1 AND (SELECT count(*)>0 FROM s_variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = 0
вернее SELECT count(*)>0

 

Вы вот даже не можете:

1. точно сформулировать свой вопрос,

2. точно сказать, какой кусок непонятен,

3. прочитать учебник по SQL, чтобы там получить ответ,

4. чуть-чуть поэкспериментировать с запросом в PhpMyAdmin, чтобы посмотреть на результат и попытаться понять смысл (который довольно прост и прозрачен).

 

Только можете утверждать, что тут, мол, все легко.

Сам я не знаю, но знаю, что им это легко.

А спецы, такие нехорошие, наперебой не кидаются отвечать...

 

Тут вопрос более в помощи с запросом, а не доработкой

 

Если б Вы еще могли ТОЛКОМ задать этот вопрос...

Ссылка на сообщение
Поделиться на другие сайты

Если изменить запрос в указанном Вами месте так, как Вы желаете, то

1. В админке будет работать по Вашему желанию,

2. Но на сайте, скорее всего, исчезнет в показе львиная доля товаров,

3. И будете Вы потом писать негатив на того, кто Вам пытался помочь.

 

По-хорошему, чтобы достичь Ваших (туманно объясненных целей), надо проводить более сложные изменения в НЕСКОЛЬКИХ местах. Потому никто и не спешит изменить для Вас в запросе пару-тройку лексем...

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...