0

希望有人可以帮助我制定 Magento 规则 - 这条规则是否可能

我有许多不同尺寸的产品,它们都属于同一类别。

无论尺寸大小,每件产品的价格为 3.98 英镑 - 如果买家购买 3 件相同类别的产品,无论产品或尺寸如何,他们都会以 9.99 英镑的价格购买。如果他们购买 4 件产品,他们以 9.99 的价格获得其中的 3 个,但为第 4 个支付全价......每组 3 个是 9.99 英镑

我创建了一条规则,如果客户购买 3 / 6 / 9 件相同产品和相同尺寸的商品,它似乎很有效……但是,如果它们混合搭配,它就不起作用(尽管它们是同一类别)

规则是:

如果所有这些条件都为真:如果购物车中符合所有这些条件的项目的子选择的总数量等于或大于 3:类别为 4

我还将折扣数量步骤设置为 3

*更新*

感谢您的回复-我已尝试实施您的建议,并且到目前为止我从哪里获得了添加产品的类别 ID。我不确定如何设置以前产品的价格,因此它将是自动折扣价

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
$itemPrice = "3.33";

foreach ($cartItems as $items) {
    $product = $items->getProduct();
    $prodCats = $product->getCategoryIds();
    if (in_array('4', $prodCats)) {
        $itemQty = $items->getQty();
    }

    $totalItems += $itemQty;
}

所以我想做的是为任何 category_id 为 4 的产品应用 3 的倍数的折扣......价格将是 3.33 而不是正常的 3.99

4

1 回答 1

0

为此,您需要事件 - 观察者方法,这将为您提供所需的灵活性。您可以构建一个观察者来捕获添加到购物车事件sales_quote_add_item并将您的逻辑放在那里。

观察者函数中的以下代码将为您指明正确的方向:

// 获取购物车中的产品:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
    $itemSku = $item->getSku();
    $itemQty = $item->getQty();
}

//添加的产品:

$item = $observer->getEvent()->getQuoteItem();
$itemQty = $item->getQty();
$itemSku = $item->getSku();

// 更改添加产品的价格:

$item->setOriginalCustomPrice($newPrice);

祝你好运!

于 2014-07-18T11:25:57.053 回答