commit
8ee4e81104
@ -1,3 +1,12 @@
|
|||||||
|
## 2016-10-31 v.2.1.0
|
||||||
|
* Добавлена передача адреса из карточки клиента в retailCRM
|
||||||
|
* Добавлено больше информации в журнале битрикса и дополнительное логирование
|
||||||
|
* Небольшие исправления
|
||||||
|
|
||||||
|
## 2016-10-25 v.2.0.9
|
||||||
|
* Исправлена ошибка с неверной кодировкой ФИО
|
||||||
|
* Исправлена ошибка с отсутствием местоположения
|
||||||
|
|
||||||
## 2016-10-20 v.2.0.8
|
## 2016-10-20 v.2.0.8
|
||||||
* Исправлена ошибка с отсутствием LID
|
* Исправлена ошибка с отсутствием LID
|
||||||
* Изменены методы для совместимости с ранними версиями sale 16 версии
|
* Изменены методы для совместимости с ранними версиями sale 16 версии
|
||||||
|
@ -236,6 +236,12 @@ class RCrmActions
|
|||||||
case 'customersEdit':
|
case 'customersEdit':
|
||||||
try {
|
try {
|
||||||
$result = $api->$methodApi($params, 'externalId', $site);
|
$result = $api->$methodApi($params, 'externalId', $site);
|
||||||
|
if (isset($result['errorMsg'])) {
|
||||||
|
self::eventLog(__CLASS__.'::'.$method, 'RetailCrm\ApiClient::'.$methodApi, $result['errorMsg']);
|
||||||
|
|
||||||
|
$log = new Logger();
|
||||||
|
$log->write(array($methodApi, $result['errorMsg'], $result['errors'], $params), 'apiErrors');
|
||||||
|
}
|
||||||
} catch (\RetailCrm\Exception\CurlException $e) {
|
} catch (\RetailCrm\Exception\CurlException $e) {
|
||||||
self::eventLog(
|
self::eventLog(
|
||||||
__CLASS__.'::'.$method, 'RetailCrm\ApiClient::'.$methodApi.'::CurlException',
|
__CLASS__.'::'.$method, 'RetailCrm\ApiClient::'.$methodApi.'::CurlException',
|
||||||
@ -256,6 +262,13 @@ class RCrmActions
|
|||||||
default:
|
default:
|
||||||
try {
|
try {
|
||||||
$result = $api->$methodApi($params, $site);
|
$result = $api->$methodApi($params, $site);
|
||||||
|
if (isset($result['errorMsg'])) {
|
||||||
|
if ($methodApi != 'customersUpload') {
|
||||||
|
self::eventLog(__CLASS__.'::'.$method, 'RetailCrm\ApiClient::'.$methodApi, $result['errorMsg']);
|
||||||
|
}
|
||||||
|
$log = new Logger();
|
||||||
|
$log->write(array($methodApi, $result['errorMsg'], $result['errors'], $params), 'apiErrors');
|
||||||
|
}
|
||||||
} catch (\RetailCrm\Exception\CurlException $e) {
|
} catch (\RetailCrm\Exception\CurlException $e) {
|
||||||
self::eventLog(
|
self::eventLog(
|
||||||
__CLASS__.'::'.$method, 'RetailCrm\ApiClient::'.$methodApi.'::CurlException',
|
__CLASS__.'::'.$method, 'RetailCrm\ApiClient::'.$methodApi.'::CurlException',
|
||||||
|
@ -64,7 +64,7 @@ class RestNormalizer
|
|||||||
if (is_null($file) || is_file($file) === false
|
if (is_null($file) || is_file($file) === false
|
||||||
|| json_decode(file_get_contents($file)) === null
|
|| json_decode(file_get_contents($file)) === null
|
||||||
|| $this->parseConfig($file) === false) {
|
|| $this->parseConfig($file) === false) {
|
||||||
ICrmOrderActions::eventLog('RestNormalizer', 'intaro.retailcrm', 'Incorrect file normalize.');
|
RCrmActions::eventLog('RestNormalizer', 'intaro.retailcrm', 'Incorrect file normalize.');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ class RestNormalizer
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!is_array($data) || count($data) < 1) {
|
if (!is_array($data) || count($data) < 1) {
|
||||||
ICrmOrderActions::eventLog('RestNormalizer', 'intaro.retailcrm', 'Incorrect data array.');
|
RCrmActions::eventLog('RestNormalizer', 'intaro.retailcrm', 'Incorrect data array.');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ class RestNormalizer
|
|||||||
if ($skip === false) {
|
if ($skip === false) {
|
||||||
foreach ($this->validation as $code => $valid) {
|
foreach ($this->validation as $code => $valid) {
|
||||||
if (isset($valid['required']) && $valid['required'] === true && isset($formatted[ $code ]) === false) {
|
if (isset($valid['required']) && $valid['required'] === true && isset($formatted[ $code ]) === false) {
|
||||||
ICrmOrderActions::eventLog('RestNormalizer', 'intaro.retailcrm', "NOT VALID: $code");
|
RCrmActions::eventLog('RestNormalizer', 'intaro.retailcrm', "NOT VALID: $code");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,6 +202,12 @@ class RetailCrmHistory
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (array_key_exists('index', $customer['address'])) {
|
||||||
|
$arUser["PERSONAL_ZIP"] = $customer['address']['index'] ? RCrmActions::fromJSON($customer['address']['index']) : '';
|
||||||
|
}
|
||||||
|
if (array_key_exists('city', $customer['address'])) {
|
||||||
|
$arUser["PERSONAL_CITY"] = $customer['address']['city'] ? RCrmActions::fromJSON($customer['address']['city']) : '';
|
||||||
|
}
|
||||||
|
|
||||||
$u = $newUser->Update($customer['externalId'], $arUser);
|
$u = $newUser->Update($customer['externalId'], $arUser);
|
||||||
if (!$u) {
|
if (!$u) {
|
||||||
@ -539,10 +545,23 @@ class RetailCrmHistory
|
|||||||
foreach ($optionsOrderProps[$personType] as $key => $orderProp) {
|
foreach ($optionsOrderProps[$personType] as $key => $orderProp) {
|
||||||
if (array_key_exists($key, $order)) {
|
if (array_key_exists($key, $order)) {
|
||||||
$somePropValue = $propertyCollection->getItemByOrderPropertyId($propsKey[$orderProp]['ID']);
|
$somePropValue = $propertyCollection->getItemByOrderPropertyId($propsKey[$orderProp]['ID']);
|
||||||
self::setProp($somePropValue, RCrmActions::fromJSON($order[$key]));
|
if ($key == 'fio') {
|
||||||
|
self::setProp($somePropValue, $order[$key]);
|
||||||
|
} else {
|
||||||
|
self::setProp($somePropValue, RCrmActions::fromJSON($order[$key]));
|
||||||
|
}
|
||||||
} elseif (array_key_exists($key, $order['delivery']['address'])) {
|
} elseif (array_key_exists($key, $order['delivery']['address'])) {
|
||||||
if ($propsKey[$key]['TYPE'] == 'LOCATION') {
|
if ($propsKey[$orderProp]['TYPE'] == 'LOCATION') {
|
||||||
$parameters['filter']['NAME'] = RCrmActions::fromJSON($order['delivery']['address'][$key]);
|
$parameters = array();
|
||||||
|
$loc = explode('.', $order['delivery']['address'][$key]);
|
||||||
|
if (count($loc) == 1) {
|
||||||
|
$parameters['filter']['NAME'] = RCrmActions::fromJSON(trim($loc[0]));
|
||||||
|
} elseif (count($loc) == 2) {
|
||||||
|
$parameters['filter']['NAME'] = RCrmActions::fromJSON(trim($loc[1]));
|
||||||
|
} else{
|
||||||
|
RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'RetailCrmHistory::setProp', 'Error location ' . $order['delivery']['address'][$key] . ' not found add in order id=' . $order['externalId']);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$parameters['filter']['LANGUAGE_ID'] = 'ru';
|
$parameters['filter']['LANGUAGE_ID'] = 'ru';
|
||||||
$location = \Bitrix\Sale\Location\LocationTable::getListFast($parameters)->fetch();
|
$location = \Bitrix\Sale\Location\LocationTable::getListFast($parameters)->fetch();
|
||||||
$somePropValue = $propertyCollection->getItemByOrderPropertyId($propsKey[$orderProp]['ID']);
|
$somePropValue = $propertyCollection->getItemByOrderPropertyId($propsKey[$orderProp]['ID']);
|
||||||
|
@ -297,7 +297,7 @@ class RetailCrmOrder
|
|||||||
'PERSON_TYPE_ID' => $obOrder->getPersonTypeId(),
|
'PERSON_TYPE_ID' => $obOrder->getPersonTypeId(),
|
||||||
'CURRENCY' => $obOrder->getCurrency(),
|
'CURRENCY' => $obOrder->getCurrency(),
|
||||||
'PAYMENTS' => $obOrder->getPaymentSystemId(),
|
'PAYMENTS' => $obOrder->getPaymentSystemId(),
|
||||||
'PAYED' => $obOrder->isPaid(),
|
'PAYED' => $obOrder->isPaid() ? 'Y' : 'N',
|
||||||
'DELIVERYS' => array(),
|
'DELIVERYS' => array(),
|
||||||
'PRICE_DELIVERY' => $obOrder->getDeliveryPrice(),
|
'PRICE_DELIVERY' => $obOrder->getDeliveryPrice(),
|
||||||
'PROPS' => $obOrder->getPropertyCollection()->getArray(),
|
'PROPS' => $obOrder->getPropertyCollection()->getArray(),
|
||||||
|
@ -8,7 +8,7 @@ class RetailCrmUser
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (empty($arFields)) {
|
if (empty($arFields)) {
|
||||||
RCrmActions::eventLog('ICrmOrderActions::orderCreate', 'empty($arFields)', 'incorrect customer');
|
RCrmActions::eventLog('RetailCrmUser::customerSend', 'empty($arFields)', 'incorrect customer');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,6 +17,8 @@ class RetailCrmUser
|
|||||||
'firstName' => $arFields['NAME'],
|
'firstName' => $arFields['NAME'],
|
||||||
'lastName' => $arFields['LAST_NAME'],
|
'lastName' => $arFields['LAST_NAME'],
|
||||||
'patronymic' => $arFields['SECOND_NAME'],
|
'patronymic' => $arFields['SECOND_NAME'],
|
||||||
|
'email' => $arFields['EMAIL'],
|
||||||
|
'address' => array('city' => $arFields['PERSONAL_CITY'], 'text' => $arFields['PERSONAL_STREET'], 'index' => $arFields['PERSONAL_ZIP']),
|
||||||
'createdAt' => new \DateTime($arFields['DATE_REGISTER']),
|
'createdAt' => new \DateTime($arFields['DATE_REGISTER']),
|
||||||
'contragentType' => $contragentType
|
'contragentType' => $contragentType
|
||||||
);
|
);
|
||||||
@ -54,7 +56,7 @@ class RetailCrmUser
|
|||||||
|
|
||||||
public static function customerEdit($arFields, $api, $optionsSitesList = array()){
|
public static function customerEdit($arFields, $api, $optionsSitesList = array()){
|
||||||
if (empty($arFields)) {
|
if (empty($arFields)) {
|
||||||
RCrmActions::eventLog('RetailCrmUser::orderEdit', 'empty($arFields)', 'incorrect customer');
|
RCrmActions::eventLog('RetailCrmUser::customerEdit', 'empty($arFields)', 'incorrect customer');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +65,8 @@ class RetailCrmUser
|
|||||||
'firstName' => $arFields['NAME'],
|
'firstName' => $arFields['NAME'],
|
||||||
'lastName' => $arFields['LAST_NAME'],
|
'lastName' => $arFields['LAST_NAME'],
|
||||||
'patronymic' => $arFields['SECOND_NAME'],
|
'patronymic' => $arFields['SECOND_NAME'],
|
||||||
'email' => $arFields['EMAIL']
|
'email' => $arFields['EMAIL'],
|
||||||
|
'address' => array('city' => $arFields['PERSONAL_CITY'], 'text' => $arFields['PERSONAL_STREET'], 'index' => $arFields['PERSONAL_ZIP']),
|
||||||
);
|
);
|
||||||
if (isset($arFields['PERSONAL_PHONE'])) {
|
if (isset($arFields['PERSONAL_PHONE'])) {
|
||||||
$customer['phones'][]['number'] = $arFields['PERSONAL_PHONE'];
|
$customer['phones'][]['number'] = $arFields['PERSONAL_PHONE'];
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
- Исправлена ошибка с отсутствием LID
|
- Добавлена передача адреса из карточки клиента в retailCRM
|
||||||
- Изменены методы для совместимости с ранними версиями sale 16 версии
|
- Добавлено больше информации в журнале битрикса и дополнительное логирование
|
||||||
|
- Небольшие исправления
|
@ -613,6 +613,13 @@ class intaro_retailcrm extends CModule
|
|||||||
$e->getCode() . ': ' . $e->getMessage()
|
$e->getCode() . ': ' . $e->getMessage()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
$delivTypes = array();
|
||||||
|
foreach ($arResult['deliveryTypesList'] as $delivType) {
|
||||||
|
if ($delivType['active'] === true) {
|
||||||
|
$delivTypes[$delivType['code']] = $delivType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$arResult['deliveryTypesList'] = $delivTypes;
|
||||||
|
|
||||||
//bitrix personTypes
|
//bitrix personTypes
|
||||||
$arResult['bitrixOrderTypesList'] = RCrmActions::OrderTypesList($arResult['arSites']);
|
$arResult['bitrixOrderTypesList'] = RCrmActions::OrderTypesList($arResult['arSites']);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?
|
<?
|
||||||
$arModuleVersion = array(
|
$arModuleVersion = array(
|
||||||
"VERSION" => "2.0.8",
|
"VERSION" => "2.1.0",
|
||||||
"VERSION_DATE" => "2016-10-20 19:00:00"
|
"VERSION_DATE" => "2016-10-31 17:00:00"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ $MESS ['CANCELED'] = 'Является флагом «Отменен»';
|
|||||||
$MESS ['INFO_1'] = 'Задайте соответствие между справочниками 1C-Битрикс и справочниками retailCRM.';
|
$MESS ['INFO_1'] = 'Задайте соответствие между справочниками 1C-Битрикс и справочниками retailCRM.';
|
||||||
$MESS ['INFO_2'] = 'В случае, если вы не нашли подходящих значений в справочниках retailCRM, вы можете внести их в разделе';
|
$MESS ['INFO_2'] = 'В случае, если вы не нашли подходящих значений в справочниках retailCRM, вы можете внести их в разделе';
|
||||||
$MESS ['URL_1'] = 'Администрирование';
|
$MESS ['URL_1'] = 'Администрирование';
|
||||||
$MESS ['INFO_3'] = 'После этого подгрузите новые значения, нажав кнопку «Обновить справочники»';
|
$MESS ['INFO_3'] = 'После этого подгрузите новые значения обновив страницу';//, нажав кнопку «Обновить справочники»';
|
||||||
$MESS ['UPDATE_CATS'] = 'Обновить справочники';
|
$MESS ['UPDATE_CATS'] = 'Обновить справочники';
|
||||||
$MESS ['MESS_5'] = 'Произошла ошибка сервера, обратитесь в Интаро Софт.';
|
$MESS ['MESS_5'] = 'Произошла ошибка сервера, обратитесь в Интаро Софт.';
|
||||||
$MESS ['DELIV_TYPES_EXPORT'] = 'Выгрузить список доставок из 1С-Битрикс';
|
$MESS ['DELIV_TYPES_EXPORT'] = 'Выгрузить список доставок из 1С-Битрикс';
|
||||||
|
@ -249,15 +249,15 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) {
|
|||||||
$orderDischarge = (int) htmlspecialchars(trim($_POST['order-discharge']));
|
$orderDischarge = (int) htmlspecialchars(trim($_POST['order-discharge']));
|
||||||
if (($orderDischarge != $previousDischarge) && ($orderDischarge == 0)) {
|
if (($orderDischarge != $previousDischarge) && ($orderDischarge == 0)) {
|
||||||
// remove depenedencies
|
// remove depenedencies
|
||||||
UnRegisterModuleDependences("sale", "OnOrderNewSendEmail", $mid, "ICrmOrderEvent", "onSendOrderMail");
|
UnRegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $mid, "RetailCrmEvent", "orderSave");
|
||||||
UnRegisterModuleDependences("sale", "OnOrderUpdate", $mid, "ICrmOrderEvent", "onUpdateOrder");
|
UnRegisterModuleDependences("sale", "OnOrderUpdate", $mid, "RetailCrmEvent", "onUpdateOrder");
|
||||||
UnRegisterModuleDependences("sale", "OnBeforeOrderAdd", $mid, "ICrmOrderEvent", "onBeforeOrderAdd");
|
UnRegisterModuleDependences("sale", "OnSaleOrderEntityDelete", $mid, "RetailCrmEvent", "orderDelete");
|
||||||
|
|
||||||
} elseif (($orderDischarge != $previousDischarge) && ($orderDischarge == 1)) {
|
} elseif (($orderDischarge != $previousDischarge) && ($orderDischarge == 1)) {
|
||||||
// event dependencies
|
// event dependencies
|
||||||
RegisterModuleDependences("sale", "OnOrderNewSendEmail", $mid, "ICrmOrderEvent", "onSendOrderMail");
|
RegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $mid, "RetailCrmEvent", "orderSave");
|
||||||
RegisterModuleDependences("sale", "OnOrderUpdate", $mid, "ICrmOrderEvent", "onUpdateOrder");
|
RegisterModuleDependences("sale", "OnOrderUpdate", $mid, "RetailCrmEvent", "onUpdateOrder");
|
||||||
RegisterModuleDependences("sale", "OnBeforeOrderAdd", $mid, "ICrmOrderEvent", "onBeforeOrderAdd");
|
RegisterModuleDependences("sale", "OnSaleOrderEntityDelete", $mid, "RetailCrmEvent", "orderDelete");
|
||||||
}
|
}
|
||||||
|
|
||||||
$orderPropsArr = array();
|
$orderPropsArr = array();
|
||||||
@ -343,6 +343,13 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) {
|
|||||||
$badKey = true;
|
$badKey = true;
|
||||||
echo CAdminMessage::ShowMessage(GetMessage('ERR_403'));
|
echo CAdminMessage::ShowMessage(GetMessage('ERR_403'));
|
||||||
}
|
}
|
||||||
|
$delivTypes = array();
|
||||||
|
foreach ($arResult['deliveryTypesList'] as $delivType) {
|
||||||
|
if ($delivType['active'] === true) {
|
||||||
|
$delivTypes[$delivType['code']] = $delivType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$arResult['deliveryTypesList'] = $delivTypes;
|
||||||
|
|
||||||
//bitrix orderTypesList -- personTypes
|
//bitrix orderTypesList -- personTypes
|
||||||
$arResult['bitrixOrderTypesList'] = RCrmActions::OrderTypesList($arResult['arSites']);
|
$arResult['bitrixOrderTypesList'] = RCrmActions::OrderTypesList($arResult['arSites']);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user