문제

CE 1.9.2.2를 멀티 웹 사이트로 구성하고 있습니다.

특정 pincoodes를 제한하는 운송 모듈에서 오류를 해결하려고합니다.

모듈은 Frontend Side에서 잘 작동하지만 불행히도 관리 패널에서 주문을 생성하거나 주문에 주석을 추가하려고하면 실패합니다.

디버깅의 비트 후에 옵저버가 우편 번호를 배송 주소에서 가져 오지 못했다는 것을 알았습니다.

config.xml

<events>
  <sales_order_save_before>
    <observers>
      <sales_order_save_before_handler>
        <type>model</type>
        <class>shippingrestriction/observer</class>
        <method>Shippingzip</method>
        <args></args>
      </sales_order_save_before_handler>
    </observers>
  </sales_order_save_before>
</events>
.

observer.php

public function Shippingzip(Varien_Event_Observer $observer)
        {
            $collection = Mage::getModel('shippingrestriction/shippingzip')->getCollection();

            $data = array();
            foreach ($collection as $value)
            {
                $data[] = $value->zipcode;
            }
            $address = Mage::getSingleton('checkout/session')->getQuote()
                                  ->getShippingAddress();   

            if (in_array($address->getData('postcode'),$data))
            {
                throw new Mage_Core_Exception(
                Mage::helper('catalog')->__('Shipping is not available for your location.')
                );die;
            }
            else
            {
            }

        }
.

디버깅은 아래의 함수가 관리 패널에서 빈 값을 반환하고 관리 패널에서 옵저버 파일의 우편 번호 비교 코드가 실패한다는 것을 알았습니다.

$address =  Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress();
$address->getData('postcode');
.

도움이 되었습니까?

해결책

대신 관찰자의

$address = Mage::getSingleton('checkout/session')->getQuote()
                                  ->getShippingAddress(); 
.

put

$address = $observer->getEvent()->getOrder()
                                  ->getShippingAddress();
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top