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

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

Тема в разделе "Вопросы, советы и доработки.", создана пользователем Archibald, 30 мар 2016.

  1. Archibald

    Archibald

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


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

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

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

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

    Archibald

    Сообщения:
    18
    Симпатии:
    3
    Баллы:
    3
    Отвечаю сам себе :)
    Для нужной цели переделал отчет 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' и сортируя и суммируя по отдельности в основном цикле вывода сводной таблицы проданные товары и товары в резерве, выводя последние в скобочках после проданных.
     
    • Нравится Нравится x 1