示例#1
0
 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;
 }
示例#2
0
 /**
  * @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;
 }
示例#4
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;
 }
示例#5
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;
 }
示例#6
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;
 }
示例#7
0
 /**
  * @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;
 }
示例#8
0
 /**
  * @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;
 }