Created
June 13, 2013 14:40
-
-
Save ashfame/5774215 to your computer and use it in GitHub Desktop.
Programmatically set default billing/shipping address of customers if they are not set in magento
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
require_once ("app/Mage.php"); | |
umask(0); | |
Mage::app("default"); | |
$collection = Mage::getModel('customer/customer')->getCollection()->addAttributeToSelect('*'); | |
foreach ($collection as $customer) { | |
$customerObj = Mage::getModel('customer/customer')->load( $customer->getId() ); | |
if ( ! $customerObj->getDefaultBillingAddress() ) { | |
foreach ($customerObj->getAddresses() as $address) { | |
$address->setIsDefaultBilling(true); | |
continue; // we only want to set first address of the customer as default billing address | |
} | |
} | |
if ( ! $customerObj->getDefaultShippingAddress() ) { | |
foreach ($customerObj->getAddresses() as $address) { | |
$address->setIsDefaultShipping(true); | |
continue; // we only want to set first address of the customer as default shipping address | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The problem with this implementation is that it can get any address, be it shipping or billing so long as it is first on the list and assign it as the default shipping address. The correct way is to browse through all the addresses and select the first shipping address put the if within your foreach that will check if the address is a billing address then afterwards break out of the foreach🙏