protected function _saveAddresses(Mage_Customer_Model_Customer $customer) { foreach ($customer->getAddresses() as $address) { if ($address->getData('_deleted')) { $address->delete(); } else { $address->setParentId($customer->getId())->setStoreId($customer->getStoreId())->save(); } } return $this; }
/** * @param array $addressesData * @dataProvider createWithAddressesDataProvider */ public function testCreateWithAddresses($addressesData) { $customerData = array('firstname' => 'ServiceTest', 'lastname' => 'CreateWithAddress', 'email' => 'test' . mt_rand(1000, 9999) . '@mail.com'); $this->_createdCustomer = $this->_model->create($customerData, $addressesData); $this->assertCount(count($addressesData), $this->_createdCustomer->getAddresses()); /** @var Mage_Customer_Model_Customer $loadedCustomer */ $loadedCustomer = $this->_customerFactory->create()->load($this->_createdCustomer->getId()); $createdData = array(); /** @var Mage_Customer_Model_Address $address */ foreach ($loadedCustomer->getAddresses() as $address) { $addressData = current($addressesData); $createdData[] = $address->toArray(array_keys($addressData)); next($addressesData); } $this->assertEquals($this->_getSortedByKey($createdData, 'firstname'), $this->_getSortedByKey($addressesData, 'firstname')); }
/** * Retrieve customer addresses list * * @param Mage_Customer_Model_Customer $customer * * @return array */ protected function getAddressItems($customer) { $result = array(); foreach ($customer->getAddresses() as $address) { $data = $address->toArray(); $row = array(); foreach ($this->_mapAddressAttributes as $attributeAlias => $attributeCode) { $row[$attributeAlias] = isset($data[$attributeCode]) ? $data[$attributeCode] : null; } foreach ($this->getAllowedAttributes($address) as $attributeCode => $attribute) { if (isset($data[$attributeCode])) { $row[$attributeCode] = $data[$attributeCode]; } } $row['is_default_billing'] = $customer->getDefaultBilling() == $address->getId(); $row['is_default_shipping'] = $customer->getDefaultShipping() == $address->getId(); $result[] = $row; } return $result; }
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; }
/** * 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; }
/** * 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; }
/** * @param Mage_Customer_Model_Customer $customer * @param string $id * @return string|null */ protected function _getAddressWithEntityId(Mage_Customer_Model_Customer $customer, $id) { if (isset($id)) { $addresses = $customer->getAddresses(); if (!empty($addresses)) { foreach ($addresses as $address) { $entityId = $address->getEntityId(); if ($entityId == $id) { return $address; } } } } return null; }
/** * @param ShopgateCustomer $shopgateCustomer * @param Mage_Customer_Model_Customer $magentoCustomer * @return ShopgateCustomer */ protected function _getCustomerSetAddresses(&$shopgateCustomer, $magentoCustomer) { $aAddresses = array(); foreach ($magentoCustomer->getAddresses() as $magentoCustomerAddress) { /** @var Mage_Customer_Model_Address $magentoCustomerAddress */ $shopgateAddress = new ShopgateAddress(); $shopgateAddress->setId($magentoCustomerAddress->getId()); $shopgateAddress->setIsDeliveryAddress(1); $shopgateAddress->setIsInvoiceAddress(1); $shopgateAddress->setFirstName($magentoCustomerAddress->getFirstname()); $shopgateAddress->setLastName($magentoCustomerAddress->getLastname()); $shopgateAddress->setGender($this->_getCustomerHelper()->getShopgateCustomerGender($magentoCustomerAddress)); $shopgateAddress->setCompany($magentoCustomerAddress->getCompany()); $shopgateAddress->setMail($magentoCustomerAddress->getMail()); $shopgateAddress->setPhone($magentoCustomerAddress->getTelephone()); $shopgateAddress->setStreet1($magentoCustomerAddress->getStreet1()); $shopgateAddress->setStreet2($magentoCustomerAddress->getStreet2()); $shopgateAddress->setCity($magentoCustomerAddress->getCity()); $shopgateAddress->setZipcode($magentoCustomerAddress->getPostcode()); $shopgateAddress->setCountry($magentoCustomerAddress->getCountry()); $shopgateAddress->setState($this->_getHelper()->getIsoStateByMagentoRegion($magentoCustomerAddress)); $aAddresses[] = $shopgateAddress; } $shopgateCustomer->setAddresses($aAddresses); return $shopgateCustomer; }