Esempio n. 1
0
 protected function tearDown()
 {
     $previousStoreId = Mage::app()->getStore();
     Mage::app()->setCurrentStore(Mage::app()->getStore(Mage_Core_Model_App::ADMIN_STORE_ID));
     if ($this->_createdCustomer && $this->_createdCustomer->getId() > 0) {
         $this->_createdCustomer->getAddressesCollection()->delete();
         $this->_createdCustomer->delete();
     }
     Mage::app()->setCurrentStore($previousStoreId);
     $this->_model = null;
 }
Esempio n. 2
0
 /**
  * Save customer addresses.
  *
  * @param Mage_Customer_Model_Customer $customer
  * @param array $addressesData
  * @throws Mage_Core_Exception
  */
 protected function _prepareCustomerAddressesForSave($customer, array $addressesData)
 {
     $hasChanges = $customer->hasDataChanges();
     $actualAddressesIds = array();
     foreach ($addressesData as $addressData) {
         $addressId = null;
         if (array_key_exists('entity_id', $addressData)) {
             $addressId = $addressData['entity_id'];
             unset($addressData['entity_id']);
         }
         if (null !== $addressId) {
             $address = $customer->getAddressItemById($addressId);
             if (!$address || !$address->getId()) {
                 throw new Mage_Core_Exception($this->_translateHelper->__('The address with the specified ID not found.'));
             }
         } else {
             $address = $this->_addressFactory->create();
             $address->setCustomerId($customer->getId());
             // Add customer address into addresses collection
             $customer->addAddress($address);
         }
         $address->addData($addressData);
         $hasChanges = $hasChanges || $address->hasDataChanges();
         // Set post_index for detect default billing and shipping addresses
         $address->setPostIndex($addressId);
         $actualAddressesIds[] = $address->getId();
     }
     /** @var Mage_Customer_Model_Address $address */
     foreach ($customer->getAddressesCollection() as $address) {
         if (!in_array($address->getId(), $actualAddressesIds)) {
             $address->setData('_deleted', true);
             $hasChanges = true;
         }
     }
     $customer->setDataChanges($hasChanges);
 }
Esempio n. 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;
 }
Esempio n. 4
0
 /**
  * @param Mage_Customer_Model_Customer $customer
  * @param array $randomData
  */
 protected function _anonymizeCustomerAddresses($customer, $randomData)
 {
     $customerAddresses = $customer->getAddressesCollection()->addAttributeToSelect(array('prefix', 'firstname', 'lastname', 'suffix'));
     foreach ($customerAddresses as $customerAddress) {
         /** @var $customerAddress Mage_Customer_Model_Address */
         if ($customerAddress->getFirstname() == $customer->getOrigData('firstname') && $customerAddress->getLastname() == $customer->getOrigData('lastname')) {
             $newRandomData = $randomData;
         } else {
             $newRandomData = $this->_getRandomData();
         }
         $this->_anonymizeCustomerAddress($customerAddress, $newRandomData);
     }
 }