2017-01-11 1 views
0

다음은 Checkout 페이지에서 Pincode 기반의 현금 지급 방법을 제한하는 확장 프로그램에 대한 observer.php 파일입니다.Zipcode를 기준으로 한 현금 인도 Magento 1.9

이 확장 기능은 Magento에 내장 된 현금 지급 방법으로 완벽하게 작동합니다.

내 웹 사이트 고객이 주문을 완료하기 위해 결제 페이지로 이동하면 처음에는 대금 상환 지불 방법이 표시되지 않습니다. 고객이 우편 번호를 입력하고 해당 우편 번호가 대금 상환에 사용할 수있는 경우에만 대금 상환 지불 방법이 나타납니다. 해당 우편 번호가 적격하지 않으면 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; 
} 
관련 문제