Magento 2 - Есть ли способ установить правило цены бесплатной корзины доставки для определенных артикулов продукта?

Я помню, что в Magento 1.9 был способ настроить правило корзины покупок на основе SKU продукта. Однако по какой-то причине мне удалось найти эту опцию в Magento 2.

Я что-то упустил или Magento 2 изменил то, как они работают?


person frostshoxx    schedule 07.02.2017    source источник


Ответы (2)


В magento 2 вы можете изменить цену корзины покупок отсюда.

Marketing -> Cart Price Rules

Вы можете установить на основе SKU продукта.

  1. Вам нужно выбрать "Product attribute combination" в разделе условия. Как экранная сортировка. введите здесь описание изображения

  2. Теперь Далее он показывает различные атрибуты продукта, из которых вам нужно выбрать SKU. Как экранная сортировка. введите здесь описание изображения

person Dhiren Vasoya    schedule 10.02.2017

Еще одно изящное решение в Magento 2, которое, по моему мнению, обеспечивает большую гибкость, — это бесплатное расширенное расширение доставки (от owebia). Весь синтаксис вводится в админке. Не пытаюсь рекламировать здесь, но это просто решает вопрос, и это бесплатное и довольно простое решение.

Чтобы ответить на вопрос: Вот решение для создания правила бесплатной доставки для ОДНОГО КОНКРЕТНОГО SKU:

addMethod('id_001', [
    'title'      => "Free Shipping for Product SKU 998877 ONLY",
    'enabled'    => array_sum(
                        array_map(
                            function ($item) {
                                return substr($item->product->sku, 0, 6) == '998877';
                            },
                            $request->all_items
                        )
                    ) > 0
                    &&
                    array_sum(
                        array_map(
                            function ($item) {
                                return substr($item->product->sku, 0, 6) != '998877';
                            },
                            $request->all_items
                        )
                    ) <= 0,
    'price'      => 0,
]);

Это также работает для большего количества SKU или различных категорий продуктов.

Вы могли бы в принципе придумать другие правила, такие как бесплатная доставка для всех товаров, однако для заказов, содержащих определенный крупногабаритный товар, промежуточная сумма должна превышать 300 долларов США.

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

Бесплатная доставка для всех заказов на сумму свыше 100 долларов США, если эти заказы не содержат крупногабаритный товар 998877.

addMethod('id_001', [
    'title'      => "Free Shipping on Orders which DO NOT contain product SKU 998877",
    'enabled'    => $quote->subtotal >= 100.00
                    &&
                    array_sum(
                        array_map(
                            function ($item) {
                                return substr($item->product->sku, 0, 6) == '998877';
                            },
                            $request->all_items
                        )
                    ) <= 0,
    'price'      => 0,
]);
person storepeinture    schedule 01.07.2017