Beispiel #1
0
 public function _saveAddresses(Mage_Customer_Model_Customer $customer)
 {
     $defaultBillingId = $customer->getData('default_billing');
     $defaultShippingId = $customer->getData('default_shipping');
     $defaultPickupId = $customer->getData('default_pickup');
     foreach ($customer->getAddresses() as $address) {
         if ($address->getData('_deleted')) {
             if ($address->getId() == $defaultBillingId) {
                 $customer->setData('default_billing', null);
             }
             if ($address->getId() == $defaultShippingId) {
                 $customer->setData('default_shipping', null);
             }
             if ($address->getId() == $defaultPickupId) {
                 $customer->setData('default_pickup', null);
             }
             $address->delete();
         } else {
             $address->setParentId($customer->getId())->setStoreId($customer->getStoreId())->setIsCustomerSaveTransaction(true)->save();
             if (($address->getIsPrimaryBilling() || $address->getIsDefaultBilling()) && $address->getId() != $defaultBillingId) {
                 $customer->setData('default_billing', $address->getId());
             }
             if (($address->getIsPrimaryShipping() || $address->getIsDefaultShipping()) && $address->getId() != $defaultShippingId) {
                 $customer->setData('default_shipping', $address->getId());
             }
             if (($address->getIsPrimaryPickup() || $address->getIsDefaultPickup()) && $address->getId() != $defaultPickupId) {
                 $customer->setData('default_pickup', $address->getId());
             }
         }
     }
     if ($customer->dataHasChangedFor('default_billing')) {
         $this->saveAttribute($customer, 'default_billing');
     }
     if ($customer->dataHasChangedFor('default_shipping')) {
         $this->saveAttribute($customer, 'default_shipping');
     }
     if ($customer->dataHasChangedFor('default_pickup')) {
         $this->saveAttribute($customer, 'default_pickup');
     }
     return $this;
 }
Beispiel #2
0
 /**
  * Save/delete customer address
  *
  * @param Mage_Customer_Model_Customer $customer
  * @return Mage_Customer_Model_Entity_Customer
  */
 protected function _saveAddresses(Mage_Customer_Model_Customer $customer)
 {
     foreach ($customer->getAddresses() as $address) {
         if ($address->getData('_deleted')) {
             if ($address->getId() == $customer->getData('default_billing')) {
                 $customer->setData('default_billing', null);
             }
             if ($address->getId() == $customer->getData('default_shipping')) {
                 $customer->setData('default_shipping', null);
             }
             $address->delete();
         } else {
             $address->setParentId($customer->getId())->setStoreId($customer->getStoreId())->save();
             if ($address->getIsPrimaryBilling() && $address->getId() != $customer->getData('default_billing')) {
                 $customer->setData('default_billing', $address->getId());
             }
             if ($address->getIsPrimaryShipping() && $address->getId() != $customer->getData('default_shipping')) {
                 $customer->setData('default_shipping', $address->getId());
             }
         }
         if ($customer->dataHasChangedFor('default_billing')) {
             $this->saveAttribute($customer, 'default_billing');
         }
         if ($customer->dataHasChangedFor('default_shipping')) {
             $this->saveAttribute($customer, 'default_shipping');
         }
     }
     return $this;
 }
Beispiel #3
0
 /**
  * Save/delete customer address
  *
  * @param Mage_Customer_Model_Customer $customer
  * @return Mage_Customer_Model_Resource_Customer
  */
 protected function _saveAddresses(Mage_Customer_Model_Customer $customer)
 {
     $defaultBillingId = $customer->getData('default_billing');
     $defaultShippingId = $customer->getData('default_shipping');
     /** @var Mage_Customer_Model_Address $address */
     foreach ($customer->getAddresses() as $address) {
         if ($address->getData('_deleted')) {
             if ($address->getId() == $defaultBillingId) {
                 $customer->setData('default_billing', null);
             }
             if ($address->getId() == $defaultShippingId) {
                 $customer->setData('default_shipping', null);
             }
             $removedAddressId = $address->getId();
             $address->delete();
             // Remove deleted address from customer address collection
             $customer->getAddressesCollection()->removeItemByKey($removedAddressId);
         } else {
             $address->setParentId($customer->getId())->setStoreId($customer->getStoreId())->setIsCustomerSaveTransaction(true)->save();
             if (($address->getIsPrimaryBilling() || $address->getIsDefaultBilling()) && $address->getId() != $defaultBillingId) {
                 $customer->setData('default_billing', $address->getId());
             }
             if (($address->getIsPrimaryShipping() || $address->getIsDefaultShipping()) && $address->getId() != $defaultShippingId) {
                 $customer->setData('default_shipping', $address->getId());
             }
         }
     }
     if ($customer->dataHasChangedFor('default_billing')) {
         $this->saveAttribute($customer, 'default_billing');
     }
     if ($customer->dataHasChangedFor('default_shipping')) {
         $this->saveAttribute($customer, 'default_shipping');
     }
     return $this;
 }