[Magento]如何根据城市启用/禁用COD而不是国家/地区?

时间:2015-09-04 07:21:40

标签: magento

我想根据特定城市(卖方城市)而不是特定国家启用/禁用COD选项。怎么实现呢? 我已经搜索了这个并找到了一些主题,但这些对我来说并不是很清楚,因为这是我的第一个magento网站。 任何人都可以指导我到底怎么做?我知道为此我可能需要建立一个模块,所以如果是这样的话请指导我。

2 个答案:

答案 0 :(得分:2)

您可以Magento Event/Observer

执行此操作

首先,使用payment_method_is_active禁用依赖于您可以禁用的当前报价发送地址/帐单邮寄地址城市。

此代码:

模块config.xml代码:

<global>
    <events>
    <payment_method_is_active>
        <observers>
            <paymentfilter_payment_method_is_active>
            <type>singleton</type>
            <class>yourmodel/observer</class>
            <method>filterpaymentmethod</method>
            </paymentfilter_payment_method_is_active>
        </observers>
    </payment_method_is_active>
    </events>
</global>

在Observer上,您可以使用以下代码

获取当前报价shipping /billing address

<强> $ observer-&GT; getEvent() - &GT;为getQuote() - &GT; getShippingAddress()/ $ observer-&GT; getEvent() - &GT;为getQuote() - &GT; getBillingAddress()

观察员代码是:

<?php
class YOURNANESPACE_YOURMODULE_Model_Observer {

    public function filterpaymentmethod(Varien_Event_Observer $observer) {
    /* call get payment method */
    $method = $observer->getEvent()->getMethodInstance();

    /*   get  Quote  */
    $quote = $observer->getEvent()->getQuote();
/*  check quote exit or not */
if($quote): 
$Billing=$observer->getEvent()->getQuote()->getBillingAddress();
$Shipping =$observer->getEvent()->getQuote()->getShippingAddress()
$observer->getEvent()->getQuote()->getBillingAddress();

        /* Disable Your payment method by city */

        if($method->getCode()=='YOUR_PAYMENT_METHOD_CODE' ){
        $result->isAvailable = false
        //  dis payment method depends on  city
        if($Shipping->getCity=='YOUR_CITY'): 
            $result->isAvailable = true;
        else: 
            $result->isAvailable = false;
     endif;

        }
endif;

    }
}

这是另一个这类作品的样本:

答案 1 :(得分:0)

此扩展程序将按照您的要求运行。

http://www.magentocommerce.com/magento-connect/advance-cash-on-delivery.html

您需要提及适用的zipcodes