/** * @param $address * @param $customer * @return int * @throws ShopgateLibraryException */ public function createAddress(ShopgateAddress $address, $customer) { /** @var AddressCore | Address $addressModel */ $addressItem = new Address(); $addressItem->id_customer = $customer->id; $addressItem->lastname = $address->getLastName(); $addressItem->firstname = $address->getFirstName(); if ($address->getCompany()) { $addressItem->company = $address->getCompany(); } $addressItem->address1 = $address->getStreet1(); if ($address->getStreet2()) { $addressItem->address2 = $address->getStreet2(); } $addressItem->city = $address->getCity(); $addressItem->postcode = $address->getZipcode(); if (!Validate::isLanguageIsoCode($address->getCountry())) { $customer->delete(); throw new ShopgateLibraryException(ShopgateLibraryException::REGISTER_FAILED_TO_ADD_USER, 'invalid country code: ' . $address->getCountry(), true); } $addressItem->id_country = Country::getByIso($address->getCountry()); /** * prepare states */ $stateParts = explode('-', $address->getState()); if (count($stateParts) == 2) { $address->setState($stateParts[1]); } if ($address->getState() && !Validate::isStateIsoCode($address->getState())) { $customer->delete(); throw new ShopgateLibraryException(ShopgateLibraryException::REGISTER_FAILED_TO_ADD_USER, 'invalid state code: ' . $address->getState(), true); } else { $addressItem->id_state = State::getIdByIso($address->getState()); } $addressItem->alias = $address->getIsDeliveryAddress() ? $this->getModule()->l('Default delivery address') : $this->getModule()->l('Default'); $addressItem->alias = $address->getIsInvoiceAddress() ? $this->getModule()->l('Default invoice address') : $this->getModule()->l('Default'); $addressItem->phone = $address->getPhone(); $addressItem->phone_mobile = $address->getMobile(); $shopgateCustomFieldsHelper = new ShopgateCustomFieldsHelper(); $shopgateCustomFieldsHelper->saveCustomFields($addressItem, $address->getCustomFields()); $validateMessage = $addressItem->validateFields(false, true); if ($validateMessage !== true) { $customer->delete(); throw new ShopgateLibraryException(ShopgateLibraryException::REGISTER_FAILED_TO_ADD_USER, $validateMessage, true); } $addressItem->save(); return $addressItem->id; }
protected function getPSAddress(Customer $customer, ShopgateAddress $shopgateAddress) { // Get country $id_country = Country::getByIso($shopgateAddress->getCountry()); if (!$id_country) { throw new ShopgateLibraryException(ShopgateLibraryException::PLUGIN_UNKNOWN_COUNTRY_CODE, 'Invalid country code:' . $id_country, true); } // Get state $id_state = 0; if ($shopgateAddress->getState()) { $id_state = (int) Db::getInstance()->getValue('SELECT `id_state` FROM `' . _DB_PREFIX_ . 'state` WHERE `id_country` = ' . $id_country . ' AND `iso_code` = \'' . pSQL(Tools::substr($shopgateAddress->getState(), 3, 2)) . '\''); } // Create alias $alias = Tools::substr('Shopgate_' . $customer->id . '_' . sha1($customer->id . '-' . $shopgateAddress->getFirstName() . '-' . $shopgateAddress->getLastName() . '-' . $shopgateAddress->getCompany() . '-' . $shopgateAddress->getStreet1() . '-' . $shopgateAddress->getStreet2() . '-' . $shopgateAddress->getZipcode() . '-' . $shopgateAddress->getCity()), 0, 32); // Try getting address id by alias $id_address = Db::getInstance()->getValue('SELECT `id_address` FROM `' . _DB_PREFIX_ . 'address` WHERE `alias` = \'' . pSQL($alias) . '\' AND `id_customer`=' . $customer->id); // Get or create address $address = new Address($id_address ? $id_address : null); if (!$address->id) { $address->id_customer = $customer->id; $address->id_country = $id_country; $address->id_state = $id_state; $address->country = Country::getNameById($this->id_lang, $address->id_country); $address->alias = $alias; $address->company = $shopgateAddress->getCompany(); $address->lastname = $shopgateAddress->getLastName(); $address->firstname = $shopgateAddress->getFirstName(); $address->address1 = $shopgateAddress->getStreet1(); $address->address2 = $shopgateAddress->getStreet2(); $address->postcode = $shopgateAddress->getZipcode(); $address->city = $shopgateAddress->getCity(); $address->phone = $shopgateAddress->getPhone(); $address->phone_mobile = $shopgateAddress->getMobile(); if (!$address->add()) { throw new ShopgateLibraryException(ShopgateLibraryException::PLUGIN_DATABASE_ERROR, 'Unable to create address', true); } } return $address; }
/** * @param ShopgateAddress $address * @return AddressCore */ protected function _createAddress(ShopgateAddress $address) { /** @var AddressCore $resultAddress */ $resultAddress = new Address(); $resultAddress->id_country = $this->_getCountryIdByIsoCode($address->getCountry()); $resultAddress->alias = self::DEFAULT_ADDRESS_ALIAS; $resultAddress->firstname = $address->getFirstName(); $resultAddress->lastname = $address->getLastName(); $resultAddress->address1 = $address->getStreet1(); $resultAddress->postcode = $address->getZipcode(); $resultAddress->city = $address->getCity(); $resultAddress->country = $address->getCountry(); $resultAddress->phone = $address->getPhone() ? $address->getPhone() : 1; $resultAddress->phone_mobile = $address->getMobile() ? $address->getMobile() : 1; /** * check is state iso code available */ if ($address->getState() != '') { $resultAddress->id_state = $this->getStateIdByIsoCode($address->getState()); } $resultAddress->company = $address->getCompany(); return $resultAddress; }