Правило цены корзины покупок Magento не работает с пакетным продуктом

Я пытаюсь применить правило цены корзины покупок к продукту в комплекте, но безуспешно. Что я хочу сделать, так это создать код купона, который применяет скидку 10% на пакетный продукт с артикулом «ABC».

Итак, я установил для атрибута SKU значение «Использовать для условий правила промо» -> «Да» и создаю правило вроде:

If ALL  of these conditions are TRUE :
If an item is FOUND  in the cart with ANY  of these conditions true: 
SKU is ABC

но безуспешно...

Итак, я прочитал что-то о пакетных продуктах и ​​ценовых правилах, применяемых только к простым продуктам (так ли это?), поэтому я изменил свое правило, чтобы оно применялось к продуктам в моем пакетном продукте:

If ALL  of these conditions are TRUE :
If an item is FOUND  in the cart with ANY  of these conditions true: 
SKU is one of ABC,ABC-1,ABC-2

Не повезло...

Поэтому я пытаюсь оставить весь SKU и создаю новый атрибут: give_discount, и также устанавливаю для него значение «Использовать для условий правила акции» -> «Да». Да, я в таком отчаянии на данный момент. Я создаю атрибут, добавляю его в свой пакет, а также в его дочерние продукты:

If ALL  of these conditions are TRUE :
If an item is FOUND  in the cart with ANY  of these conditions true: 
Give discount  is  Yes 

Тем не менее... нет... удачи...

Кто-нибудь знает, что здесь происходит? Я просто не могу уложить это в голове! Нельзя ли таким образом предоставить скидку на комплектные товары? Когда я убираю условия, скидка предоставляется (как и ожидалось), но как только я применяю фильтр, я получаю представление о том, что код купона недействителен...

Изменить:

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


person Giel Berkers    schedule 17.10.2013    source источник
comment
работает ли правило ценообразования корзины покупок для других типов продуктов?   -  person Rajiv Ranjan    schedule 17.10.2013
comment
Имея ту же проблему. Если я меняю артикул в правиле на простой товар, добавляю этот простой в корзину - правило работает.   -  person Ben Truby    schedule 20.12.2013


Ответы (2)


Попробуйте это:

Условия:

If ALL  of these conditions are TRUE :
    If an item is FOUND  in the cart with ALL  of these conditions true: 
        SKU  is  ABC  

    If an item is FOUND  in the cart with ALL  of these conditions true: 
        SKU  is  ABC-1

    If an item is FOUND  in the cart with ALL  of these conditions true: 
        SKU  is  ABC-2  

Действия:

Update prices using the following information
    Apply: Fixed Amount discount
    Discount amount : 10%
    Maximum Qty Discount is Applied to: 1
    Discount Qty Step (Buy X): 0
    Apply to Shipping Amount: No
    Free shipping: No
    Stop further rules processing: No

Apply the rule only to cart items matching the following conditions (leave blank for all items)
    If ALL  of these conditions are TRUE :
        SKU  is  ABC  
        SKU  is  ABC-1
        SKU  is  ABC-2 
person MB34    schedule 22.07.2014
comment
Вы также можете сократить условие SKU до SKU contains ABC. - person MB34; 22.07.2014

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

У меня есть исправление для этого:

Создайте новый модуль в папке app/code/MyCompany/MyModule/

И следующие файлы в этом каталоге:

и т.д./module.xml

    <?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="MyCompany_MyModule" setup_version="1.0.0">
        <sequence>
            <module name="Magento_Quote"/>
        </sequence>
    </module>
</config>

и т.д./ди.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">

    <preference for="Magento\Quote\Model\Quote\Item" type="MyCompany\MyModule\Model\Quote\Item"/>

</config>

композитор.json

{
  "name": "my-company/my-module",
  "description": "N/A",
  "require": {
    "php": "~7.0.0"
  },
  "type": "magento2-module",
  "version": "1.0.0",
  "license": "proprietary",
  "autoload": {
    "files": [
      "registration.php"
    ],
    "psr-4": {
      "MyCompany\\MyModule\\": ""
    }
  }
}

регистрация.json

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'MyCompany_MyModule',
    __DIR__
);

Модель/Цитата/Товар.php

<?php
namespace MyCompany\MyModule\Model\Quote;

class Item extends \Magento\Quote\Model\Quote\Item
{

    /**
     * @return \Magento\Quote\Model\Quote\Address
     */
    public function getAddress()
    {
        /** start @override code */
        if ($this->getQuote()->isVirtual()) {
            /** end @override code */
            $address = $this->getQuote()->getBillingAddress();
        } else {
            $address = $this->getQuote()->getShippingAddress();
        }

        return $address;
    }
}
person Nikolas Sumrak    schedule 23.05.2019