cutomer_address 테이블의 사용자 정의 필드 값을 sales_flat_order_address 테이블로 업데이트하십시오.

magento.stackexchange https://magento.stackexchange.com//questions/31706

  •  11-12-2019
  •  | 
  •  

문제

백엔드의 고객 주소에 대한 사용자 정의 필드 (new_address_code)가 있습니다.옵저버는 MyAddress 또는 Checkout Page에서 새 주소가 추가 될 때 자동 생성 값을 필드에 할당하는 데 사용됩니다.

<customer_address_save_after>
      <observers>
         <myautoincrement>
            <class>samp/observer</class>
            <method>saveadrsmethod</method>
         </myautoincrement>
      </observers>
</customer_address_save_after>
.

옵서버 클래스

$customerAddress = $observer->getCustomerAddress();
$id= (string)$customerAddress->getId();
$ObcustomerAddress = $observer->getCustomerAddress();
if ($customerAddress->getId()) {
            $customerAddress->setData('new_address_code','aftertesting-'.$customerAddress->getData('firstname').'=myid'.$id);
             $customerAddress->getResource()->saveAttribute($ObcustomerAddress, 'new_address_code');
   }
.

문제가있는 문제는 체크 아웃하는 동안 새 주소가 추가 될 때 자동 생성 사용자 정의 필드 값이 sales_flat_quote_address 테이블에 저장되지 않습니다.그래서, 나는 다음과 같이 관찰자를 쓰는 것을 시도했다

<sales_order_place_before>
    <observers>
       <myautoincrement>
          <class>samp/observer</class>
          <method>beforeorder</method>
       </myautoincrement>
    </observers>
</sales_order_place_before>
.

및 옵서버 클래스에서

public function beforeorder($observer)
{
    $order = $observer->getEvent()->getOrder();
    $customerAddress = $observer->getCustomerAddress();
    if ($customerAddress->getId()) {
        $address=Mage::getModel('sales/order_address')->setData('new_address_code',$customerAddress->getData('new_address_code'));
        $order->setBillingAddress($address);
        $order->setShippingAddress($address);
    }
}
.

그러나 sales_flat_order_address 테이블에 저장되지 않습니다.아무도 그 이유가 무엇인지 말해 줄 수 있었습니까?

도움이 되었습니까?

해결책

이 줄은 $ 주소가 새 빈 객체 (new_address_code 값 제외)가 될 것입니다. 따라서 $ order-> setBillingAddress ()는 비어 있습니다

$address=Mage::getModel('sales/order_address')->setData('new_address_code',$customerAddress->getData('new_address_code'));

$order->setBillingAddress($address);
$order->setShippingAddress($address);
.

프로그래밍 방식으로 Magento에서 주문을 생성합니다

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