This commit is contained in:
Sergey 2018-10-24 16:15:28 +03:00 committed by Akolzin Dmitry
parent b92579e515
commit 54d4091f63
5 changed files with 99 additions and 74 deletions

View File

@ -13,11 +13,13 @@
## v2.2.6 ## v2.2.6
* Добавлена активация модуля в маркетплейсе retailCRM * Добавлена активация модуля в маркетплейсе retailCRM
## v2.2.5 ## v.2.2.5
* Добавлена передача страны при создании заказа для пользователя и заказа * Добавлена передача страны при создании заказа для заказа и покупателя
* Добавлен метод сохранения сущностей с обработкой исключений * Добавлен метод для загрузки сущностей с перехватом исключений
* Для версии 1.7 добавлена передача адреса при заполнении его на стороне сайта.
* Получение адреса и телефона вынесено в отдельные методы.
## v2.2.4 ## v.2.2.4
* Добавлена установка дефолтной валюты для оплаты при получении истории * Добавлена установка дефолтной валюты для оплаты при получении истории
* Добавлено получение суммы оплаты из заказа в CMS, если она не передается по истории * Добавлено получение суммы оплаты из заказа в CMS, если она не передается по истории

View File

@ -1 +1 @@
2.2.9 2.2.9

View File

@ -53,6 +53,7 @@ class RetailcrmHistory
if (self::loadInCMS($customer, 'update') === false) { if (self::loadInCMS($customer, 'update') === false) {
continue; continue;
} }
} else { } else {
$customer = new Customer(); $customer = new Customer();

View File

@ -3,7 +3,11 @@
* @author Retail Driver LCC * @author Retail Driver LCC
* @copyright RetailCRM * @copyright RetailCRM
* @license GPL * @license GPL
<<<<<<< 4dfc7b8d1acbf9bdc33ac6484f0d7f4171e774d6
* @version 2.2.9 * @version 2.2.9
=======
* @version 2.2.5
>>>>>>> v2.2.5
* @link https://retailcrm.ru * @link https://retailcrm.ru
* *
*/ */
@ -76,7 +80,8 @@ class RetailCRM extends Module
$this->registerHook('actionPaymentConfirmation') && $this->registerHook('actionPaymentConfirmation') &&
$this->registerHook('actionCustomerAccountAdd') && $this->registerHook('actionCustomerAccountAdd') &&
$this->registerHook('actionOrderEdited') && $this->registerHook('actionOrderEdited') &&
($this->use_new_hooks ? $this->registerHook('actionCustomerAccountUpdate') : true) ($this->use_new_hooks ? $this->registerHook('actionCustomerAccountUpdate') : true) &&
($this->use_new_hooks ? $this->registerHook('actionValidateCustomerAddressForm') : true)
); );
} }
@ -418,11 +423,26 @@ class RetailCRM extends Module
$customerSend = array_merge($customerSend, $address['customer']); $customerSend = array_merge($customerSend, $address['customer']);
} }
if (isset($params['cart'])){
$address = $this->addressParse($params['cart']);
}
$customerSend = array_merge($customerSend, $address['customer']);
$this->api->customersEdit($customerSend); $this->api->customersEdit($customerSend);
return $customerSend; return $customerSend;
} }
// this hook added in 1.7
public function hookActionValidateCustomerAddressForm($params)
{
$customer = new Customer($params['cart']->id_customer);
$customerAddress = array('customer' => $customer, 'cart' => $params['cart']);
return $this->hookActionCustomerAccountUpdate($customerAddress);
}
public function hookNewOrder($params) public function hookNewOrder($params)
{ {
return $this->hookActionOrderStatusPostUpdate($params); return $this->hookActionOrderStatusPostUpdate($params);
@ -490,6 +510,68 @@ class RetailCRM extends Module
return $order; return $order;
} }
private function addressParse($address)
{
$addressCollection = $address->getAddressCollection();
$address = array_shift($addressCollection);
if ($address instanceof Address) {
$postcode = $address->postcode;
$city = $address->city;
$addres_line = sprintf("%s %s", $address->address1, $address->address2);
$countryIso = CountryCore::getIsoById($address->id_country);
}
if (!empty($postcode)) {
$customer['address']['index'] = $postcode;
$order['delivery']['address']['index'] = $postcode;
}
if (!empty($city)) {
$customer['address']['city'] = $city;
$order['delivery']['address']['city'] = $city;
}
if (!empty($addres_line)) {
$customer['address']['text'] = $addres_line;
$order['delivery']['address']['text'] = $addres_line;
}
if (!empty($countryIso)) {
$order['countryIso'] = $countryIso;
$customer['address']['countryIso'] = $countryIso;
}
$phones = $this->getPhone($address);
$order = array_merge($order, $phones['order']);
$customer = array_merge($customer, $phones['customer']);
$addressArray = array('order' => $order, 'customer' => $customer);
return $addressArray;
}
private function getPhone($address)
{
if (!empty($address->phone_mobile)){
$order['phone'] = $address->phone_mobile;
$customer['phones'][] = array('number'=> $address->phone_mobile);
}
if (!empty($address->phone)){
$order['additionalPhone'] = $address->phone;
$customer['phones'][] = array('number'=> $address->phone);
}
if (!isset($order['phone']) && !empty($order['additionalPhone'])){
$order['phone'] = $order['additionalPhone'];
unset($order['additionalPhone']);
}
$phonesArray = array('customer' => $customer, 'order' => $order);
return $phonesArray;
}
public function hookActionOrderStatusPostUpdate($params) public function hookActionOrderStatusPostUpdate($params)
{ {
$delivery = json_decode(Configuration::get('RETAILCRM_API_DELIVERY'), true); $delivery = json_decode(Configuration::get('RETAILCRM_API_DELIVERY'), true);
@ -521,9 +603,11 @@ class RetailCRM extends Module
} }
$cart = $params['cart']; $cart = $params['cart'];
$addressCollection = $cart->getAddressCollection(); $addressCollection = $cart->getAddressCollection();
$address = array_shift($addressCollection); $address = array_shift($addressCollection);
$address = $this->addressParse($address); $address = $this->addressParse($address);
$customer = array_merge($customer, $address['customer']); $customer = array_merge($customer, $address['customer']);
$order = array_merge($order, $address['order']); $order = array_merge($order, $address['order']);
$comment = $params['order']->getFirstMessage(); $comment = $params['order']->getFirstMessage();
@ -754,74 +838,6 @@ class RetailCRM extends Module
return $output; return $output;
} }
private function addressParse($address)
{
if ($address instanceof Address) {
$postcode = $address->postcode;
$city = $address->city;
$addres_line = sprintf("%s %s", $address->address1, $address->address2);
$countryIso = CountryCore::getIsoById($address->id_country);
}
if (!empty($postcode)) {
$customer['address']['index'] = $postcode;
$order['delivery']['address']['index'] = $postcode;
}
if (!empty($city)) {
$customer['address']['city'] = $city;
$order['delivery']['address']['city'] = $city;
}
if (!empty($addres_line)) {
$customer['address']['text'] = $addres_line;
$order['delivery']['address']['text'] = $addres_line;
}
if (!empty($countryIso)) {
$order['countryIso'] = $countryIso;
$customer['address']['countryIso'] = $countryIso;
}
$phones = $this->getPhone($address);
if ($phones !== false) {
$order = array_merge($order, $phones['order']);
$customer = array_merge($customer, $phones['customer']);
}
$addressArray = array('order' => $order, 'customer' => $customer);
return $addressArray;
}
private function getPhone($address)
{
if (!empty($address->phone_mobile)){
$order['phone'] = $address->phone_mobile;
$customer['phones'][] = array('number'=> $address->phone_mobile);
}
if (!empty($address->phone)){
$order['additionalPhone'] = $address->phone;
$customer['phones'][] = array('number'=> $address->phone);
}
if (!isset($order['phone']) && !empty($order['additionalPhone'])){
$order['phone'] = $order['additionalPhone'];
unset($order['additionalPhone']);
}
if (!empty($customer) && !empty($order)) {
$phonesArray = array('customer' => $customer, 'order' => $order);
return $phonesArray;
} else {
return false;
}
}
/** /**
* Activate/deactivate module in marketplace retailCRM * Activate/deactivate module in marketplace retailCRM
* *

View File

@ -48,6 +48,7 @@ class RetailCRMTest extends RetailcrmTestCase
public function testHookActionCustomerAccountUpdate() public function testHookActionCustomerAccountUpdate()
{ {
$customer = new Customer(1); $customer = new Customer(1);
$params = array('customer' => $customer); $params = array('customer' => $customer);
$customer = $this->retailcrmModule->hookActionCustomerAccountUpdate($params); $customer = $this->retailcrmModule->hookActionCustomerAccountUpdate($params);
@ -125,6 +126,11 @@ class RetailCRMTest extends RetailcrmTestCase
$this->assertArrayHasKey('lastName', $result); $this->assertArrayHasKey('lastName', $result);
$this->assertArrayHasKey('email', $result); $this->assertArrayHasKey('email', $result);
$this->assertArrayHasKey('delivery', $result); $this->assertArrayHasKey('delivery', $result);
$this->assertArrayHasKey('address', $result['delivery']);
$this->assertArrayHasKey('city', $result['delivery']['address']);
$this->assertArrayHasKey('text', $result['delivery']['address']);
$this->assertArrayHasKey('index', $result['delivery']['address']);
$this->assertArrayHasKey('countryIso', $result);
$this->assertArrayHasKey('items', $result); $this->assertArrayHasKey('items', $result);
$this->assertArrayHasKey('customer', $result); $this->assertArrayHasKey('customer', $result);
$this->assertArrayHasKey('externalId', $result['customer']); $this->assertArrayHasKey('externalId', $result['customer']);