2017-01-11 5 views
0

以下は、チェックアウトページのピンコードに基づく現金配達支払方法を制限する拡張機能のためのobserver.phpファイルです。郵便番号に基づく現金配達Magento 1.9

この拡張機能は、Magentoの内蔵の現金支払方法で完璧に機能します。

私のウェブサイトの顧客が注文を完了するためにチェックアウトページに行くと、現金支払いの支払い方法は最初は表示されません。顧客が郵便番号を入力し、その特定の郵便番号が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; 
} 
を追加