• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Подсчет товара в резерве

Archibald

Новичок
Добрый день,
есть стандартный Woo со схемой движения заказа:
1. Удержание, куда валятся все заказы
2. Ожидание оплаты
3. Обработка
4. Выполнено


На этапе 1 происходит резервирование товара и соответственно для товара, у которого включено управление запасами, уменьшается этот запас. Т.к. складские запасы тратятся не только на интернет-магазин, очень часто требуется узнать, сколько товара зарезервировано, но еще не оплачено. Если заказов 1-5, то можно пройтись по ним и вручную подсчитать, но если их число переваливает за 50, то такой подсчет уже занимает недопустимое время

Поэтому у есть желание сделать в бэк-энде на карточке товара информер о кол-ве этого товара в резерве (т.е. в заказах со статусом Обработка, Ожидание оплаты и Удержание).

Логика запроса: пробежать по всем заказам с указанными статусами и count'ом вывести куда-нибудь на экран значение. Возможно лучше сначала записать это значение в произвольное поле, напр., reserved, а затем вывести его аналогично total_sales.

Вопросы:
  • Если кол-во выполненных заказов будет большим, то не будет ли чрезмерной нагрузка на MySQL сервер пройтись по всем записям, фильтруя сначала заказы с требуемым статусом, а затем подсчитывая кол-во искомого товара?
  • Если нагрузка или задержки при выводе страницы товара из-за авто-подсчета будут велики, то будет-ли уместней делать подсчет зарезервированного товара по требованию через кнопку, аналогично кнопкам Обновить/Добавить у произвольных полей?
  • Где посмотреть примеры обращения к базе заказов?
 

Archibald

Новичок
Отвечаю сам себе :)
Для нужной цели переделал отчет product_sales из Jet Pack, заменив в function get_products_sales()
$orders_statuses = array('wc-pending', 'wc-processing', 'wc-on-hold');
...
$args_orders = array(
...
'post_status' => $orders_statuses, //'wc-completed',
...


В принципе, можно улучшить этот отчет добавив к $orders_statuses еще и 'wc-completed' и сортируя и суммируя по отдельности в основном цикле вывода сводной таблицы проданные товары и товары в резерве, выводя последние в скобочках после проданных.
 
  • Like
Реакции: D&B
Сверху Снизу