3

私はワインを販売し、ボトルで販売するオンライン ショップを持っています。ただし、SKU の組み合わせで 6、12、18、24 などの 6 の倍数でしか発送できません。

Config->Inventory->「Minimum Qty Allowed in Shopping Cart」を試してみましたが、個々の製品では機能しますが、チェックアウト時の合計数量では機能しません。

さまざまな SKU に関係なく合計数量が 6 の倍数になるように、チェックアウト中にルールを構成する方法 (拡張機能、コード、または管理者を介して) はありますか?

4

3 に答える 3

0

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

そうは言っても、イベントにフックし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>
于 2013-01-15T01:01:12.717 に答える
0

そうではありませんが、簡単に実行できるはずです。

controller_action_predispatch_checkout_onepage_index数量が 6 の倍数かどうかを確認するオブザーバーを作成し、そうでない場合はエラーを追加してカートにリダイレクトします

controller_action_predispatch_checkout_cart_indexチェックインしてカートページに警告を表示し、ボタンを灰色にすることも考えられます.

于 2013-01-14T20:44:26.187 に答える
0

カスタムモジュールを作成するか、ワンページチェックアウトのログインページで行うことができます

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);
}
于 2013-01-14T20:51:48.590 に答える