2017-01-11 33 views
0

以下是一个扩展的observer.php文件,该文件限制基于结帐页上的Pincode的货到付款付款方式。基于邮政编码Magento 1.9的货到付款

此扩展与Magento内置的货到付款付款方式完美配合。

我的问题是,当我的网站上的客户转到结帐页面完成订单时,货到付款方式最初不可见。只有客户输入他的邮政编码,并且如果该特定邮政编码可用于COD,则会显示COD支付方法。如果该邮政编码不符合条件,COD选项将继续不可见。

我希望COD选项在邮政编码未输入时以及客户输入邮政编码之后最初可见,并且如果该邮政编码不可用,则应显示一条消息,指出COD不可用。

我知道这个特殊的代码需要修改一下才能实现。请尽可能帮助我。

Observer.php

class Mfp_Cod_Model_Observer { 

    public function getCashOnDelvery(Varien_Event_Observer $observer) 
    { 
     $event   = $observer->getEvent(); 
     $method   = $event->getMethodInstance(); 
     $result   = $event->getResult(); 
     $isModuleEnable = Mage::getStoreConfig('cod/cod/enable'); 

     if ($isModuleEnable) { 
      if ($method->getCode() == 'msp_cashondelivery') { 
       $quote = Mage::getSingleton('checkout/cart')->getQuote(); 
       $add = $quote->getShippingAddress(); 
       $postcode = $add->getData('postcode'); 

       $comparisonMode = Mage::getStoreConfig('cod/cod/mode'); 
       $zipCodes = Mage::getStoreConfig('cod/cod/zipcode'); 
       $isExist = false; 

       if (trim($zipCodes) == '') { 
        $result->isAvailable = true; 
       } else { 
        if(strpos($zipCodes, $postcode) !== false) { 
         $isExist = true; 
        } 

        if ($isExist != true) { 
         $zipCodesArray = explode(',', nl2br($zipCodes)); 
         if (count($elementLineArray) > 1) { 
          foreach ($zipCodesArray as $codzipLine) { 
           $elementLineArray = explode('-', $codzipLine); 
           if (count($elementLineArray) == 2 && ($postcode >= $elementLineArray[0] && $postcode <= $elementLineArray[1])) { 
            $isExist = true; 
            break; 
           } else if($postcode == $codzipLine) { 
            $isExist = true; 
            break; 
           } 
          } 
         } 
        } 
        $returnValue = ''; 
        $returnValue = ($isExist)?true:false; 

        $result->isAvailable = $returnValue; 
       } 
      } 
     } 
    } 
} 

回答

0

你可以简单地检查是否邮政编码未添加这样的:

$postcode = $add->getData('postcode'); 

添加

if(!isset($postcode) || empty($postcode)) { 
    return true; 
}