diff --git a/retailcrm/lib/RetailcrmCustomerAddressBuilder.php b/retailcrm/lib/RetailcrmCustomerAddressBuilder.php index c49a15d..d2433da 100644 --- a/retailcrm/lib/RetailcrmCustomerAddressBuilder.php +++ b/retailcrm/lib/RetailcrmCustomerAddressBuilder.php @@ -191,11 +191,11 @@ class RetailcrmCustomerAddressBuilder extends RetailcrmAbstractBuilder implement $this->buildAddressLine(); - if (isset($this->dataCrm['notes'])) { + if (array_key_exists('notes', $this->dataCrm)) { $this->setAddressField('other', $this->dataCrm['notes'], ''); } - if (isset($this->dataCrm['countryIso'])) { + if (array_key_exists('countryIso', $this->dataCrm)) { $countryIso = null; if (Validate::isLanguageIsoCode($this->dataCrm['countryIso'])) { $countryIso = Country::getByIso($this->dataCrm['countryIso']); @@ -204,13 +204,13 @@ class RetailcrmCustomerAddressBuilder extends RetailcrmAbstractBuilder implement $this->setAddressField('id_country', $countryIso, Configuration::get('PS_COUNTRY_DEFAULT')); } - if (isset($this->dataCrm['city'])) { + if (array_key_exists('city', $this->dataCrm)) { $this->setAddressField('city', $this->dataCrm['city'], '--'); } - if (isset($this->dataCrm['index'])) { + if (array_key_exists('index', $this->dataCrm)) { $this->setAddressField('postcode', $this->dataCrm['index'], ''); } - if (isset($this->dataCrm['region'])) { + if (array_key_exists('region', $this->dataCrm)) { $this->setAddressField('id_state', (int) State::getIdByName($this->dataCrm['region'])); } @@ -242,10 +242,12 @@ class RetailcrmCustomerAddressBuilder extends RetailcrmAbstractBuilder implement { if (isset($this->dataCrm['text'])) { $text = $this->dataCrm['text']; + if (isset($this->dataCrm['notes'])) { $text = str_replace($this->dataCrm['notes'], '', $text); } + $text = rtrim($text, ', '); $addressLine = explode(RetailcrmAddressBuilder::ADDRESS_LINE_DIVIDER, $text, 2); $this->setAddressField('address1', $addressLine[0], '--'); diff --git a/retailcrm/lib/RetailcrmTools.php b/retailcrm/lib/RetailcrmTools.php index b82cbb2..55da876 100644 --- a/retailcrm/lib/RetailcrmTools.php +++ b/retailcrm/lib/RetailcrmTools.php @@ -772,15 +772,14 @@ class RetailcrmTools /** * Returns true if mapped fields in address are equal. Returns false otherwise. * - * @param \Address $first - * @param \Address $second + * @param \Address $address1 + * @param \Address $address2 * * @return bool */ - protected static function isAddressesEqualByFields($first, $second) + protected static function isAddressesEqualByFields($address1, $address2) { - $checkMapping = [ - 'alias', + $fieldsToCompare = [ 'id_country', 'lastname', 'firstname', @@ -795,16 +794,26 @@ class RetailcrmTools 'vat_number', ]; - foreach ($checkMapping as $field) { - if ($first->$field != $second->$field) { + try { + // getting fields in the same format (normalized) + $address1Fields = $address1->getFields(); + $address2Fields = $address2->getFields(); + } catch (PrestaShopException $e) { + RetailcrmLogger::writeDebug(__METHOD__, $e->getMessage()); + + return false; + } + + foreach ($fieldsToCompare as $field) { + if ($address1Fields[$field] !== $address2Fields[$field]) { RetailcrmLogger::writeDebug(__METHOD__, json_encode([ 'first' => [ - 'id' => $first->id, - $field => $first->$field, + 'id' => $address1->id, + $field => $address1Fields[$field], ], 'second' => [ - 'id' => $second->id, - $field => $second->$field, + 'id' => $address2->id, + $field => $address2Fields[$field], ], ])); diff --git a/retailcrm/retailcrm.php b/retailcrm/retailcrm.php index d1c2f63..fcf3922 100644 --- a/retailcrm/retailcrm.php +++ b/retailcrm/retailcrm.php @@ -661,7 +661,7 @@ class RetailCRM extends Module $zipname = _PS_DOWNLOAD_DIR_ . '/retailcrm_logs_' . date('Y-m-d H-i-s') . '.zip'; $zipFile = new ZipArchive(); - $zipFile->open($zipname, ZIPARCHIVE::CREATE); + $zipFile->open($zipname, ZipArchive::CREATE); foreach (RetailcrmLogger::getLogFilesInfo() as $logFile) { $zipFile->addFile($logFile['path'], $logFile['name']);