fio parse; small fixes;
This commit is contained in:
parent
a4eeec4031
commit
d293f532de
@ -120,9 +120,10 @@ class ICrmOrderActions
|
|||||||
|
|
||||||
if($api->getStatusCode() != 460) // some orders were sent
|
if($api->getStatusCode() != 460) // some orders were sent
|
||||||
return false; // in pack mode return errors
|
return false; // in pack mode return errors
|
||||||
}
|
|
||||||
|
|
||||||
|
if($lastOrderId)
|
||||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_LAST_ID, $lastOrderId);
|
COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_LAST_ID, $lastOrderId);
|
||||||
|
}
|
||||||
|
|
||||||
return true; // end of pack
|
return true; // end of pack
|
||||||
}
|
}
|
||||||
@ -194,6 +195,9 @@ class ICrmOrderActions
|
|||||||
$rsUser = CUser::GetByID($arFields['USER_ID']);
|
$rsUser = CUser::GetByID($arFields['USER_ID']);
|
||||||
$arUser = $rsUser->Fetch();
|
$arUser = $rsUser->Fetch();
|
||||||
|
|
||||||
|
$createdAt = new \DateTime($arUser['DATE_REGISTER']);
|
||||||
|
$createdAt = $createdAt->format('Y-m-d H:i:s');
|
||||||
|
|
||||||
// push customer (for crm)
|
// push customer (for crm)
|
||||||
$firstName = self::toJSON($arUser['NAME']);
|
$firstName = self::toJSON($arUser['NAME']);
|
||||||
$lastName = self::toJSON($arUser['LAST_NAME']);
|
$lastName = self::toJSON($arUser['LAST_NAME']);
|
||||||
@ -211,16 +215,13 @@ class ICrmOrderActions
|
|||||||
);
|
);
|
||||||
$phones[] = $phoneWork;
|
$phones[] = $phoneWork;
|
||||||
|
|
||||||
$createdAt = new \DateTime($arUser['DATE_REGISTER']);
|
|
||||||
$createdAt = $createdAt->format('Y-m-d H:i:s');
|
|
||||||
|
|
||||||
$result = self::clearArr(array(
|
$result = self::clearArr(array(
|
||||||
'externalId' => $arFields['USER_ID'],
|
'externalId' => $arFields['USER_ID'],
|
||||||
'lastName' => $lastName,
|
'lastName' => $lastName,
|
||||||
'firstName' => $firstName,
|
'firstName' => $firstName,
|
||||||
'patronymic' => $patronymic,
|
'patronymic' => $patronymic,
|
||||||
'phones' => $phones,
|
'phones' => $phones,
|
||||||
'createdAt' => $createdAt,
|
'createdAt' => $createdAt
|
||||||
));
|
));
|
||||||
|
|
||||||
$customer = $api->customerEdit($result);
|
$customer = $api->customerEdit($result);
|
||||||
@ -255,7 +256,7 @@ class ICrmOrderActions
|
|||||||
break;
|
break;
|
||||||
case 'ADDRESS': $resOrderDeliveryAddress['text'] = self::toJSON($ar['VALUE']);
|
case 'ADDRESS': $resOrderDeliveryAddress['text'] = self::toJSON($ar['VALUE']);
|
||||||
break;
|
break;
|
||||||
case 'FIO': $resOrder['contactName'] = self::toJSON($ar['VALUE']);
|
case 'FIO': $resOrder['contactName'] = explode(" ", self::toJSON($ar['VALUE']));
|
||||||
break;
|
break;
|
||||||
case 'PHONE': $resOrder['phone'] = $ar['VALUE'];
|
case 'PHONE': $resOrder['phone'] = $ar['VALUE'];
|
||||||
break;
|
break;
|
||||||
@ -291,8 +292,13 @@ class ICrmOrderActions
|
|||||||
if($arFields['CANCELED'] == 'Y')
|
if($arFields['CANCELED'] == 'Y')
|
||||||
$arFields['STATUS_ID'] = $arFields['CANCELED'];
|
$arFields['STATUS_ID'] = $arFields['CANCELED'];
|
||||||
|
|
||||||
|
$createdAt = new \DateTime($arFields['DATE_INSERT']);
|
||||||
|
$createdAt = $createdAt->format('Y-m-d H:i:s');
|
||||||
|
|
||||||
$resOrder = self::clearArr(array(
|
$resOrder = self::clearArr(array(
|
||||||
'contactName' => $resOrder['contactName'],
|
'firstName' => $resOrder['contactName'][0],
|
||||||
|
'lastName' => $resOrder['contactName'][1],
|
||||||
|
'patronymic' => $resOrder['contactName'][2],
|
||||||
'phone' => $resOrder['phone'],
|
'phone' => $resOrder['phone'],
|
||||||
'email' => $resOrder['email'],
|
'email' => $resOrder['email'],
|
||||||
'deliveryCost' => $arFields['PRICE_DELIVERY'],
|
'deliveryCost' => $arFields['PRICE_DELIVERY'],
|
||||||
@ -306,7 +312,7 @@ class ICrmOrderActions
|
|||||||
'deliveryType' => $arParams['optionsDelivTypes'][$resultDeliveryTypeId],
|
'deliveryType' => $arParams['optionsDelivTypes'][$resultDeliveryTypeId],
|
||||||
'status' => $arParams['optionsPayStatuses'][$arFields['STATUS_ID']],
|
'status' => $arParams['optionsPayStatuses'][$arFields['STATUS_ID']],
|
||||||
'statusComment' => $arFields['REASON_CANCELED'],
|
'statusComment' => $arFields['REASON_CANCELED'],
|
||||||
'createdAt' => $arFields['DATE_INSERT'],
|
'createdAt' => $createdAt,
|
||||||
'deliveryAddress' => $resOrderDeliveryAddress,
|
'deliveryAddress' => $resOrderDeliveryAddress,
|
||||||
'items' => $items
|
'items' => $items
|
||||||
));
|
));
|
||||||
|
@ -6,7 +6,8 @@ class RestApi
|
|||||||
protected $apiUrl;
|
protected $apiUrl;
|
||||||
protected $apiKey;
|
protected $apiKey;
|
||||||
protected $apiVersion = '1';
|
protected $apiVersion = '1';
|
||||||
protected $lastError;
|
|
||||||
|
protected $response;
|
||||||
protected $statusCode;
|
protected $statusCode;
|
||||||
protected $parameters;
|
protected $parameters;
|
||||||
|
|
||||||
@ -30,16 +31,23 @@ class RestApi
|
|||||||
/* Получение кода статуса и сообщения об ошибке */
|
/* Получение кода статуса и сообщения об ошибке */
|
||||||
public function getLastError()
|
public function getLastError()
|
||||||
{
|
{
|
||||||
if (!is_null($this->lastError))
|
if (isset($this->response['errorMsg']) && isset($this->response['errors']))
|
||||||
return $this->statusCode . ' ' . $this->lastError;
|
{
|
||||||
|
$result = $this->statusCode . ' ' . $this->response['errorMsg'];
|
||||||
|
foreach ($this->response['errors'] as $error)
|
||||||
|
$result .= ' ' . $error;
|
||||||
|
}
|
||||||
|
elseif (isset($this->response['errorMsg']))
|
||||||
|
$result = $this->statusCode . ' ' . $this->response['errorMsg'];
|
||||||
else
|
else
|
||||||
return null;
|
$result = null;
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Псообщения об ошибке */
|
/* Псообщения об ошибке */
|
||||||
public function getLastErrorMessage()
|
public function getLastErrorMessage()
|
||||||
{
|
{
|
||||||
return $this->lastError;
|
return $this->response['errorMsg'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -94,7 +102,7 @@ class RestApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Загрузка нескольких заказов
|
* Пакетная загрузка заказов
|
||||||
*
|
*
|
||||||
* @param array $orders - массив заказов
|
* @param array $orders - массив заказов
|
||||||
* @return array
|
* @return array
|
||||||
@ -106,6 +114,8 @@ class RestApi
|
|||||||
|
|
||||||
$url = $this->apiUrl.'orders/upload';
|
$url = $this->apiUrl.'orders/upload';
|
||||||
$result = $this->curlRequest($url, 'POST');
|
$result = $this->curlRequest($url, 'POST');
|
||||||
|
if (is_null($result) && isset($result['uploadedOrders']))
|
||||||
|
return $result['uploadedOrders'];
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,9 +164,7 @@ class RestApi
|
|||||||
public function orderHistory($startDate = null, $endDate = null, $limit = 100, $offset = 0)
|
public function orderHistory($startDate = null, $endDate = null, $limit = 100, $offset = 0)
|
||||||
{
|
{
|
||||||
$url = $this->apiUrl.'orders/history';
|
$url = $this->apiUrl.'orders/history';
|
||||||
if($startDate)
|
|
||||||
$this->parameters['startDate'] = $startDate;
|
$this->parameters['startDate'] = $startDate;
|
||||||
if($endDate)
|
|
||||||
$this->parameters['endDate'] = $endDate;
|
$this->parameters['endDate'] = $endDate;
|
||||||
$this->parameters['limit'] = $limit;
|
$this->parameters['limit'] = $limit;
|
||||||
$this->parameters['offset'] = $offset;
|
$this->parameters['offset'] = $offset;
|
||||||
@ -215,6 +223,26 @@ class RestApi
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Пакетная загрузка клиентов
|
||||||
|
*
|
||||||
|
* @param array $customers - массив клиентов
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function customerUpload($customers)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($customers);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$this->parameters['customers'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'customers/upload';
|
||||||
|
$result = $this->curlRequest($url, 'POST');
|
||||||
|
if (is_null($result) && isset($result['uploaded']))
|
||||||
|
return $result['uploaded'];
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Удаление клиента
|
* Удаление клиента
|
||||||
*
|
*
|
||||||
@ -415,8 +443,17 @@ class RestApi
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Обновление статистики
|
||||||
|
*
|
||||||
|
* @return array - статус вып обновления
|
||||||
|
*/
|
||||||
|
public function statisticUpdate()
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'statistic/update';
|
||||||
|
$result = $this->curlRequest($url);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
protected function curlRequest($url, $method = 'GET', $format = 'json')
|
protected function curlRequest($url, $method = 'GET', $format = 'json')
|
||||||
{
|
{
|
||||||
@ -444,22 +481,21 @@ class RestApi
|
|||||||
|
|
||||||
if (curl_errno($ch))
|
if (curl_errno($ch))
|
||||||
{
|
{
|
||||||
$this->lastError = 'Curl error: ' . curl_error($ch);
|
$this->response = array('errorMsg' => 'Curl error: ' . curl_error($ch));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
curl_close($ch);
|
curl_close($ch);
|
||||||
|
|
||||||
$result = (array)json_decode($response, true);
|
$result = (array)json_decode($response, true);
|
||||||
|
$this->response = $result;
|
||||||
if ($result['success'] == false)
|
if ($result['success'] == false)
|
||||||
{
|
|
||||||
$this->lastError = $result['errorMsg'];
|
|
||||||
return null;
|
return null;
|
||||||
}
|
|
||||||
|
|
||||||
$this->lastError = null;
|
|
||||||
unset($result['success']);
|
unset($result['success']);
|
||||||
if (count($result) == 0)
|
if (count($result) == 0)
|
||||||
return true;
|
return true;
|
||||||
return reset($result);
|
return reset($result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
?>
|
@ -150,8 +150,8 @@ if ($STEP==1)
|
|||||||
</td>
|
</td>
|
||||||
<td width="100%" valign="top">
|
<td width="100%" valign="top">
|
||||||
<input type="hidden" name="lang" value="<?echo LANGUAGE_ID ?>">
|
<input type="hidden" name="lang" value="<?echo LANGUAGE_ID ?>">
|
||||||
<input type="hidden" name="ACT_FILE" value="<?echo htmlspecialcharsbx($_REQUEST["ACT_FILE"]) ?>">
|
<input type="hidden" name="ACT_FILE" value="<?echo htmlspecialchars($_REQUEST["ACT_FILE"]) ?>">
|
||||||
<input type="hidden" name="ACTION" value="<?echo htmlspecialcharsbx($ACTION) ?>">
|
<input type="hidden" name="ACTION" value="<?echo htmlspecialchars($ACTION) ?>">
|
||||||
<input type="hidden" name="STEP" value="<?echo intval($STEP) + 1 ?>">
|
<input type="hidden" name="STEP" value="<?echo intval($STEP) + 1 ?>">
|
||||||
<input type="hidden" name="SETUP_FIELDS_LIST" value="YANDEX_EXPORT,SETUP_SERVER_NAME,SETUP_FILE_NAME">
|
<input type="hidden" name="SETUP_FIELDS_LIST" value="YANDEX_EXPORT,SETUP_SERVER_NAME,SETUP_FILE_NAME">
|
||||||
<input type="submit" value="<?echo ($ACTION=="EXPORT")?GetMessage("CET_EXPORT"):GetMessage("CET_SAVE")?>">
|
<input type="submit" value="<?echo ($ACTION=="EXPORT")?GetMessage("CET_EXPORT"):GetMessage("CET_SAVE")?>">
|
||||||
|
@ -59,6 +59,7 @@ class intaro_intarocrm extends CModule
|
|||||||
global $APPLICATION, $step, $arResult;
|
global $APPLICATION, $step, $arResult;
|
||||||
|
|
||||||
include($this->INSTALL_PATH . '/../classes/general/RestApi.php');
|
include($this->INSTALL_PATH . '/../classes/general/RestApi.php');
|
||||||
|
include($this->INSTALL_PATH . '/../classes/general/ICrmOrderActions.php');
|
||||||
|
|
||||||
$step = intval($_REQUEST['step']);
|
$step = intval($_REQUEST['step']);
|
||||||
|
|
||||||
@ -235,8 +236,6 @@ class intaro_intarocrm extends CModule
|
|||||||
|
|
||||||
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
|
||||||
&& isset($_POST['ajax']) && ($_POST['ajax'] == 1)) {
|
&& isset($_POST['ajax']) && ($_POST['ajax'] == 1)) {
|
||||||
include($this->INSTALL_PATH . '/../classes/general/ICrmOrderActions.php');
|
|
||||||
|
|
||||||
ICrmOrderActions::uploadOrders(true); // each 50
|
ICrmOrderActions::uploadOrders(true); // each 50
|
||||||
|
|
||||||
$lastUpOrderId = COption::GetOptionString($this->MODULE_ID, $this->CRM_ORDER_LAST_ID, 0);
|
$lastUpOrderId = COption::GetOptionString($this->MODULE_ID, $this->CRM_ORDER_LAST_ID, 0);
|
||||||
@ -250,8 +249,14 @@ class intaro_intarocrm extends CModule
|
|||||||
|
|
||||||
$percent = 100 - round(($countLeft * 100 / $countAll), 1);
|
$percent = 100 - round(($countLeft * 100 / $countAll), 1);
|
||||||
|
|
||||||
if(!$countLeft)
|
if(!$countLeft) {
|
||||||
|
$api_host = COption::GetOptionString($mid, $this->CRM_API_HOST_OPTION, 0);
|
||||||
|
$api_key = COption::GetOptionString($mid, $this->CRM_API_KEY_OPTION, 0);
|
||||||
|
$this->INTARO_CRM_API = new \IntaroCrm\RestApi($api_host, $api_key);
|
||||||
|
$this->INTARO_CRM_API->statisticUpdate();
|
||||||
$finish = 1;
|
$finish = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$APPLICATION->RestartBuffer();
|
$APPLICATION->RestartBuffer();
|
||||||
header('Content-Type: application/x-javascript; charset='.LANG_CHARSET);
|
header('Content-Type: application/x-javascript; charset='.LANG_CHARSET);
|
||||||
|
@ -85,9 +85,11 @@ IncludeModuleLangFile(__FILE__);
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(finish == 1) {
|
if(finish == 1) {
|
||||||
$('#status').text('<?php echo GetMessage('MESS_3'); ?>');
|
$('#status').text('<?php echo GetMessage("MESS_3"); ?>');
|
||||||
BX.closeWait();
|
BX.closeWait();
|
||||||
$('input[name="inst"]').css('opacity', '1').removeAttr('disabled');
|
$('input[name="inst"]').css('opacity', '1').removeAttr('disabled');
|
||||||
|
$('input[name="stop"]').css('opacity', '0.5').attr('disabled', 'disabled');
|
||||||
|
$('input[name="stop"]').attr('value', '<?php echo GetMessage("START_1"); ?>');
|
||||||
return true; // exit from function, end recursion
|
return true; // exit from function, end recursion
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,11 +117,14 @@ IncludeModuleLangFile(__FILE__);
|
|||||||
|
|
||||||
},
|
},
|
||||||
error: function () {
|
error: function () {
|
||||||
|
BX.closeWait();
|
||||||
$('input[name="inst"]').css('opacity', '1').removeAttr('disabled');
|
$('input[name="inst"]').css('opacity', '1').removeAttr('disabled');
|
||||||
$('input[name="stop"]').attr('name', 'start');
|
$('input[name="stop"]').attr('name', 'start');
|
||||||
$('input[name="stop"]').attr('value', '<?php echo GetMessage("START_3"); ?>');
|
$('input[name="stop"]').attr('value', '<?php echo GetMessage("START_3"); ?>');
|
||||||
$('#status').text('<?php echo GetMessage('MESS_4'); ?>');
|
$('#status').text('<?php echo GetMessage('MESS_4'); ?>');
|
||||||
globStop = true;
|
globStop = true;
|
||||||
|
|
||||||
|
alert('<?php echo GetMessage('MESS_5'); ?>');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?
|
<?
|
||||||
$arModuleVersion = array(
|
$arModuleVersion = array(
|
||||||
'VERSION' => '0.3.6',
|
'VERSION' => '0.3.6',
|
||||||
'VERSION_DATE' => '2013-07-25 18:14:00',
|
'VERSION_DATE' => '2013-07-29 12:29:00',
|
||||||
);
|
);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
$MESS ['STEP_NAME'] = 'Шаг 3';
|
$MESS ['STEP_NAME'] = 'Шаг 3';
|
||||||
$MESS ['MESS_1'] = 'Нажмите кнопку для экспорта оформленных ранее заказов в IntaroCRM.';
|
$MESS ['MESS_1'] = 'На данном шаге вы можете выгрузить ранее оформленные заказы в IntaroCRM. Для запуска выгрузки нажмите кнопку «Начать выгрузку».';
|
||||||
$MESS ['MESS_2'] = 'Экспорт...';
|
$MESS ['MESS_2'] = 'Экспорт...';
|
||||||
$MESS ['MESS_3'] = 'Экспорт заказов успешно завершён.';
|
$MESS ['MESS_3'] = 'Экспорт заказов успешно завершён.';
|
||||||
$MESS ['MESS_4'] = 'Экспорт заказов приостановлен.';
|
$MESS ['MESS_4'] = 'Экспорт заказов приостановлен.';
|
||||||
|
Loading…
Reference in New Issue
Block a user