Magento Not Saving Billing City Programmatically – Fix

billingprogrammatically

I have an external application and I have to update the billing and shipping details of an existing order. The problem is that the billing city doesn't get saved with the rest of the data. I'm using Magento 1.8.
The code was inspired by this thread: Change shipping and billing address from order programmatically

$order = Mage::getModel('sales/order')->load($orderId); 
$shippingAddress = Mage::getModel('sales/order_address')->load($order->getShippingAddress()->getId()); 
$billingAddress = Mage::getModel('sales/order_address')->load($order->getBillingAddress()->getId());

$shippingAddress = Mage::getModel('sales/order_address')
->setFirstname("value")
->setLastname("value")
->setCompany("value")
->setStreet("value"))
->setCity("value")
->setRegion("value")
->setPostcode("value")
->setTelephone("value")->save();

$billingAddress = Mage::getModel('sales/order_address')
->setFirstname("value")
->setLastname("value")
->setCompany("value")
->setStreet("value"))
->setCity("value")
->setRegion("value")
->setPostcode("value")
->setTelephone("value")->save();

Best Answer

Deni,you have already loaded shipping Address and Billing address from order So you don't need create new Mage::getModel('sales/order_address') object You just need to edit address object

$shippingAddress = Mage::getModel('sales/order_address')->load($order->getShippingAddress()->getId()); 
$billingAddress = Mage::getModel('sales/order_address')->load($order->getBillingAddress()->getId());

/* here i have edit exiting order shipping objects */
$shippingAddress ->
->setFirstname("value")
->setLastname("value")
->setCompany("value")
->setStreet("value"))
->setCity("value")
->setRegion("value")
->setPostcode("value")
->setTelephone("value")->save();

$billingAddres
->setFirstname("value")
->setLastname("value")
->setCompany("value")
->setStreet("value"))
->setCity("value")
->setRegion("value")
->setPostcode("value")
->setTelephone("value")->save();

You need to add ->setRegionId() for get region if you region id of this country

Related Topic