Поддержка WooCommerce Вариации привязанные к количеству товара

  • Добрый день.

    Прошу помощи в решение вот такой проблемы:

    Имеется товар: Вино (разливное) в количестве 100 литров

    Имеется атрибут объём с вариациями продажи: 0,5 л., 1,0 л. и 1,5 л.

    Необходимо чтобы количество товара уменьшалось в соответствие с проданными вариациями.

    Пример:

    Клиент оформляет заказ и выбирает 5 бутылок 0,5 л. и 2 бутылки 1,0 л. и того суммарно продаётся 4,5 литров, соответственно общее количество оставшегося товара должно быть 95,5 литров

    Буду благодарен за подсказку в решении такой задачи.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Сделайте что бы кол-во начиналось с 0.5 (а не с 1) и шаг 0.5
    Что бы человек покупал именно литры, а не бутылки.

    Доброго времени суток.

    Наверняка есть готовые плагины, я их не знаю. Также по вашей задаче надо смотреть на месте, я опишу свое видение. Решение которое я дам, оно может быть неправильное, поскольку все нужно смотреть на месте…

    В Woo есть хук woocommerce_order_status_completed который должен выполнятся при завершении заказа. В итоге, примерно, будет так

    add_action('woocommerce_order_status_completed', 'air_product_stock_on_order_complete');
    
    function air_product_stock_on_order_complete($order_id) {
    
        $order = wc_get_order($order_id);
    
        $items = $order->get_items();
    
        foreach ($items as $item) {
    
            $product_id = $item->get_variation_id() > 0 ? $item->get_variation_id() : $item->get_product_id();
    
            $product = wc_get_product($product_id);
    
            $quantity_sold = $item->get_quantity();
    
            $current_stock = $product->get_stock_quantity();
    
            $new_stock = $current_stock - $quantity_sold;
    
            $product->set_stock_quantity($new_stock);
            $product->save();
        }
    }

    Повторюсь — я примерный код написал, я потому что не могу воспроизвести именно по вашей задаче, у меня нет такого магазина и таких условностей, создавать — долго.

    И опять же есть небольшая проблемка — это количество. Дело в том что в вуке количество товара это целое число. Поэтому надо копать в отношении того, как количество разрешить для записи на 95,5, 5,1 и т.д. наверняка это не проблема. Также можно использовать кастомное поле для количества, но в этом случае много, что надо сделать

    Автор munia13

    (@munia13)

    Сделайте что бы кол-во начиналось с 0.5 (а не с 1) и шаг 0.5
    Что бы человек покупал именно литры, а не бутылки.

    к сожалению, мне не сильно подходит именно такое решение, также цена тоже зависит от выбранной вариации (хотя это может не влиять), но как вариант частично решающий проблему я его рассмотрю, спасибо за ваше решение.

    Ну можно всегда так же после моего решения округлить до целого, а остатки выпить 😁

Просмотр 5 ответов — с 1 по 5 (всего 5)