cutomer_address 테이블의 사용자 정의 필드 값을 sales_flat_order_address 테이블로 업데이트하십시오.
-
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.stackexchange