Skip to content

Commit dfb6fe8

Browse files
authored
Do not save customer addresses when there are no changes (#1579)
1 parent 110e3d0 commit dfb6fe8

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

app/code/core/Mage/Customer/Model/Customer.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,9 +421,11 @@ public function getAddressesCollection()
421421
if ($this->_addressesCollection === null) {
422422
$this->_addressesCollection = $this->getAddressCollection()
423423
->setCustomerFilter($this)
424-
->addAttributeToSelect('*');
424+
->addAttributeToSelect('*')
425+
->setOrder('entity_id', 'desc');
425426
foreach ($this->_addressesCollection as $address) {
426427
$address->setCustomer($this);
428+
$address->setDataChanges(false);
427429
}
428430
}
429431

app/code/core/Mage/Customer/Model/Resource/Customer.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ protected function _afterSave(Varien_Object $customer)
134134
*/
135135
protected function _saveAddresses(Mage_Customer_Model_Customer $customer)
136136
{
137-
$defaultBillingId = $customer->getData('default_billing');
138-
$defaultShippingId = $customer->getData('default_shipping');
137+
$defaultBillingId = $customer->getData('default_billing');
138+
$defaultShippingId = $customer->getData('default_shipping');
139139
foreach ($customer->getAddresses() as $address) {
140140
if ($address->getData('_deleted')) {
141141
if ($address->getId() == $defaultBillingId) {
@@ -146,10 +146,19 @@ protected function _saveAddresses(Mage_Customer_Model_Customer $customer)
146146
}
147147
$address->delete();
148148
} else {
149-
$address->setParentId($customer->getId())
150-
->setStoreId($customer->getStoreId())
151-
->setIsCustomerSaveTransaction(true)
152-
->save();
149+
if ($address->getParentId() != $customer->getId()) {
150+
$address->setParentId($customer->getId());
151+
}
152+
153+
if ($address->hasDataChanges()) {
154+
$address->setStoreId($customer->getStoreId())
155+
->setIsCustomerSaveTransaction(true)
156+
->save();
157+
} else {
158+
$address->setStoreId($customer->getStoreId())
159+
->setIsCustomerSaveTransaction(true);
160+
}
161+
153162
if (($address->getIsPrimaryBilling() || $address->getIsDefaultBilling())
154163
&& $address->getId() != $defaultBillingId
155164
) {

0 commit comments

Comments
 (0)