他の回答は機能しますが、おそらく最良の方法は、見積もりの保存時に確認することです。これにより、顧客がカート内の数量を調整すると丸められ、変更を確認して理解できるようになります。知らずに買ってしまったお客さんから怒られる電話は面白くありません。
そうは言っても、イベントにフックし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>