我有一個網上商店出售葡萄酒和瓶子出售。然而,我只能在任何SKU組合中以6,6,12,18,24等等的倍數出貨。Magento購物車的最低數量
我試過配置 - >庫存 - >「購物車中允許的最小數量」它適用於單個產品,但不適用於結帳時的總數量。
有沒有辦法(通過分機,代碼或管理員)在檢出期間配置規則,使總數量與不同SKU無關,必須是6的倍數?
我有一個網上商店出售葡萄酒和瓶子出售。然而,我只能在任何SKU組合中以6,6,12,18,24等等的倍數出貨。Magento購物車的最低數量
我試過配置 - >庫存 - >「購物車中允許的最小數量」它適用於單個產品,但不適用於結帳時的總數量。
有沒有辦法(通過分機,代碼或管理員)在檢出期間配置規則,使總數量與不同SKU無關,必須是6的倍數?
afaik不,但它應該很容易做到。
寫一個偵聽controller_action_predispatch_checkout_onepage_index
請檢查是否量的觀察者是6的倍數,如果不添加一個錯誤並重定向到購物車
你可以想想在controller_action_predispatch_checkout_cart_index
檢查它也顯示在一個警告購物車頁面,也許灰色的按鈕。
您可以創建一個自定義模塊或您的onepage結帳的登錄頁面上做
if(Mage::helper('checkout/cart')->getCart()->getItemsCount() % 6 != 0){
Mage::getSingleton('customer/session')->addError('Item in your cart must be multiple of 6');
$url = Mage::getUrl('checkout/cart')
Mage::app()->getFrontController()->getResponse()->setRedirect($url, 301);
}
而其他的答案了,也許最好的方法是檢查在報價保存,所以如果客戶調整量在他們的車會輪到他們,他們會看到並理解變化。顧客在購買他們不知道他們購買的東西時發出的憤怒電話並不好玩。
就是說,我們可以掛入sales_quote_save_before
事件來做我們的檢查並相應地調整數量。
Observer.php
<?php
class Yrcrz_WineQty_Model_Observer
{
public function sales_quote_save_before(Varien_Event_Observer $observer)
{
$quote = $observer->getQuote();
$items = $quote->getAllItems();
$message = false;
foreach ($items as $item) {
$qty = $item->getQty();
if ($qty % 6 != 0) {
if ($qty <= 3) {
$newQty = 6;
} else {
$newQty = round($qty/6) * 6;
$item->setQty($newQty);
if (!$message) {
$message = Mage::helper('core')->__('Product quantities have been adjusted for case sizes');
Mage::getSingleton('core/session')->addNotice($message);
}
}
}
}
}
}
我們首先得到所有我們的項目,看看是否量在6增量,並隨後進行相應的調整量。我們甚至可以輸出通知,以便客戶瞭解這種微妙的變化。
config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Yrcrz_WineQty>
<version>0.0.1</version>
</Yrcrz_WineQty>
</modules>
<global>
<events>
<sales_quote_save_before>
<observers>
<Yrcrz_WineQty_Observer>
<type>singleton</type>
<class>Yrcrz_WineQty_Model_Observer</class>
<method>sales_quote_save_before</method>
</Yrcrz_WineQty_Observer>
</observers>
</sales_quote_save_before>
</events>
</global>
</config>