v.2.2.1
This commit is contained in:
parent
9e720c1df0
commit
c28717f385
14 changed files with 161 additions and 96 deletions
|
@ -343,6 +343,11 @@ class RCrmActions
|
|||
'params' => $params
|
||||
), 'apiErrors');
|
||||
}
|
||||
|
||||
if (function_exists('retailCrmApiResult')) {
|
||||
retailCrmApiResult($methodApi, false, $result->getStatusCode());
|
||||
}
|
||||
|
||||
if ($result->getStatusCode() == 460) {
|
||||
return true;
|
||||
}
|
||||
|
@ -361,6 +366,10 @@ class RCrmActions
|
|||
'errors' => $e->getCode(),
|
||||
'params' => $params
|
||||
), 'apiErrors');
|
||||
|
||||
if (function_exists('retailCrmApiResult')) {
|
||||
retailCrmApiResult($methodApi, false, 'CurlException');
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (InvalidArgumentException $e) {
|
||||
|
@ -375,10 +384,18 @@ class RCrmActions
|
|||
'errors' => $e->getCode(),
|
||||
'params' => $params
|
||||
), 'apiErrors');
|
||||
|
||||
if (function_exists('retailCrmApiResult')) {
|
||||
retailCrmApiResult($methodApi, false, 'ArgumentException');
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (function_exists('retailCrmApiResult')) {
|
||||
retailCrmApiResult($methodApi, true, $result->getStatusCode());
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ class RetailCrmEvent
|
|||
return true;
|
||||
}
|
||||
|
||||
//проверка на существование getParameter("ENTITY")
|
||||
//exists getParameter("ENTITY")
|
||||
if (method_exists($event, 'getId')) {
|
||||
$obOrder = $event;
|
||||
} elseif (method_exists($event, 'getParameter')) {
|
||||
|
@ -150,14 +150,14 @@ class RetailCrmEvent
|
|||
'optionsCustomFields' => $optionsCustomFields
|
||||
));
|
||||
|
||||
//многосайтовость
|
||||
//many sites?
|
||||
if(!empty($optionsSitesList) && array_key_exists($arOrder['LID'], $optionsSitesList)) {
|
||||
$site = $optionsSitesList[$arOrder['LID']];
|
||||
} else {
|
||||
$site = null;
|
||||
}
|
||||
|
||||
//проверка на новый заказ
|
||||
//new order?
|
||||
$orderCrm = RCrmActions::apiMethod($api, 'ordersGet', __METHOD__, $arOrder['ID'], $site);
|
||||
if (isset($orderCrm['order'])) {
|
||||
$methodApi = 'ordersEdit';
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
define("NO_KEEP_STATISTIC", true);
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
|
||||
$GLOBALS['APPLICATION']->RestartBuffer();
|
||||
$moduleId = 'intaro.retailcrm';
|
||||
$historyTime = 'history_time';
|
||||
$idOrderCRM = (int)$_REQUEST['idOrderCRM'];
|
||||
|
||||
if (CModule::IncludeModule($moduleId) && $idOrderCRM && $idOrderCRM > 0) {
|
||||
$timeBd = COption::GetOptionString($moduleId, $historyTime, 0);
|
||||
$nowDate = date('Y-m-d H:i:s');
|
||||
if (!empty($timeBd)) {
|
||||
$timeBdObj = new \DateTime($timeBd);
|
||||
$newTimeBdObj = $timeBdObj->modify('+5 min');
|
||||
$nowDateObj = new \DateTime($nowDate);
|
||||
//If there is a record, but it is older than 5 minutes, overwrite
|
||||
if ($newTimeBdObj < $nowDateObj) {
|
||||
COption::SetOptionString($moduleId, $historyTime, $nowDate);
|
||||
//call history
|
||||
RCrmActions::orderAgent();
|
||||
|
||||
COption::RemoveOption($moduleId, $historyTime);
|
||||
}
|
||||
} else {
|
||||
COption::SetOptionString($moduleId, $historyTime, $nowDate);
|
||||
//call history
|
||||
RCrmActions::orderAgent();
|
||||
|
||||
COption::RemoveOption($moduleId, $historyTime);
|
||||
}
|
||||
}
|
|
@ -208,14 +208,14 @@ class RetailCrmHistory
|
|||
|
||||
$GLOBALS['RETAIL_CRM_HISTORY'] = false;
|
||||
|
||||
//запоминаем номер последнего изменения
|
||||
//last id
|
||||
$end = array_pop($customerH);
|
||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_CUSTOMER_HISTORY, $end['id']);
|
||||
|
||||
if ($customerHistory['pagination']['totalPageCount'] == 1) {
|
||||
return true;
|
||||
}
|
||||
//новый фильтр для истории
|
||||
//new filter
|
||||
$historyFilter['sinceId'] = $end['id'];
|
||||
}
|
||||
}
|
||||
|
@ -288,7 +288,7 @@ class RetailCrmHistory
|
|||
|
||||
$GLOBALS['RETAIL_CRM_HISTORY'] = true;
|
||||
|
||||
//обработка заказа
|
||||
//orders with changes
|
||||
foreach ($orders as $order) {
|
||||
if (function_exists('retailCrmBeforeOrderSave')) {
|
||||
$newResOrder = retailCrmBeforeOrderSave($order);
|
||||
|
@ -883,7 +883,7 @@ class RetailCrmHistory
|
|||
$crmService = $orderCrm['delivery']['service']['code'];
|
||||
}
|
||||
|
||||
//подбираем код битриксового сервиса
|
||||
//select bitrix service code
|
||||
$arDeliveryServiceAll = \Bitrix\Sale\Delivery\Services\Manager::getActiveList();
|
||||
foreach ($arDeliveryServiceAll as $arDeliveryService) {
|
||||
$arDeliveryCode[$arDeliveryService['CODE']] = $arDeliveryService['ID'];
|
||||
|
@ -892,7 +892,7 @@ class RetailCrmHistory
|
|||
$dCode = $arDeliveryService['CODE'] . ':' . $crmService;
|
||||
}
|
||||
}
|
||||
//будем менять доставку на этот id
|
||||
//We will change delivery to this id
|
||||
if ($crmService && $arDeliveryCode[$dCode]) {
|
||||
$nowDelivery = $arDeliveryCode[$dCode];
|
||||
} elseif (!empty($optionsDelivTypes[$crmCode])) {
|
||||
|
@ -903,9 +903,9 @@ class RetailCrmHistory
|
|||
return false;
|
||||
}
|
||||
|
||||
//найти текущую доставку в заказе
|
||||
//Find the current delivery in the order
|
||||
$cnt = Bitrix\Sale\Internals\ShipmentTable::getCount(array('ORDER_ID' => $orderCrm['externalId']));
|
||||
if ($cnt > 0) {//обновляем
|
||||
if ($cnt > 0) {//update
|
||||
$obDeliverys = \Bitrix\Sale\Internals\ShipmentTable::getList(array('filter' => array('ORDER_ID' => $orderCrm['externalId']),
|
||||
'order' => array('ID')));
|
||||
while ($arDelivery = $obDeliverys->fetch()) {
|
||||
|
@ -914,7 +914,29 @@ class RetailCrmHistory
|
|||
\Bitrix\Sale\Internals\ShipmentTable::update($arDelivery['ID'], array('DELIVERY_ID' => $nowDelivery, 'DELIVERY_NAME' => $arDeliveryID[$nowDelivery]['NAME']));
|
||||
}
|
||||
}
|
||||
} else {//создаем
|
||||
if ($cnt = 1 && $arDelivery['DELIVERY_ID'] == 0) {
|
||||
$shipment = Bitrix\Sale\Internals\ShipmentTable::add(array(
|
||||
'ORDER_ID' => $orderCrm['externalId'],
|
||||
'STATUS_ID' => 'DN',
|
||||
'PRICE_DELIVERY' => 0,
|
||||
'BASE_PRICE_DELIVERY' => 0,
|
||||
'CUSTOM_PRICE_DELIVERY' => 'N',
|
||||
'ALLOW_DELIVERY' => 'N',
|
||||
'DEDUCTED' => 'N',
|
||||
'RESERVED' => 'N',
|
||||
'DELIVERY_ID' => $nowDelivery,
|
||||
'DELIVERY_NAME' => $arDeliveryID[$nowDelivery]['NAME'],
|
||||
'CANCELED' => 'N',
|
||||
'MARKED' => 'N',
|
||||
'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
|
||||
'SYSTEM' => 'N',
|
||||
'ACCOUNT_NUMBER' => $accountNumber . '/2',
|
||||
'EXTERNAL_DELIVERY' => 'N',
|
||||
'UPDATED_1C' => 'N',
|
||||
'DATE_INSERT'=> new \Bitrix\Main\Type\DateTime()
|
||||
));
|
||||
}
|
||||
} else {//create
|
||||
\Bitrix\Sale\OrderTable::update($orderCrm['externalId'], array('DELIVERY_ID' => $nowDelivery));
|
||||
$shipmentSystem = \Bitrix\Sale\Internals\ShipmentTable::add(array(
|
||||
'ORDER_ID' => $orderCrm['externalId'],
|
||||
|
@ -955,7 +977,7 @@ class RetailCrmHistory
|
|||
));
|
||||
}
|
||||
} else {
|
||||
//ищем у заказа на сайте доставки и удаляем/заменяем на без доставки
|
||||
//search for the order on the delivery site and delete / replace with no delivery
|
||||
$noOrderId = \Bitrix\Sale\Delivery\Services\EmptyDeliveryService::getEmptyDeliveryServiceId();
|
||||
\Bitrix\Sale\OrderTable::update($orderCrm['externalId'], array('DELIVERY_ID' => $noOrderId));
|
||||
$obDeliverys = Bitrix\Sale\Internals\ShipmentTable::getList(array('filter' => array('ORDER_ID' => $orderCrm['externalId']),
|
||||
|
@ -1044,13 +1066,13 @@ class RetailCrmHistory
|
|||
$found = false;
|
||||
foreach ($arShipmentItems as $elShipmentItem) {
|
||||
if (!in_array($elShipmentItem['BASKET_ID'], $bItems)) {
|
||||
//удаляем элемент
|
||||
//delete the element
|
||||
\Bitrix\Sale\Internals\ShipmentItemTable::delete($elShipmentItem['ID']);
|
||||
}
|
||||
if ($elShipmentItem['BASKET_ID'] == $basketItem['ID']) {
|
||||
//нашли
|
||||
//found
|
||||
$found = true;
|
||||
//проверяем кол-во, если нужно, обновляем
|
||||
//update quantity
|
||||
if ($elShipmentItem['QUANTITY'] != $basketItem['QUANTITY']) {
|
||||
\Bitrix\Sale\Internals\ShipmentItemTable::update($elShipmentItem['ID'], array('QUANTITY' => $basketItem['QUANTITY']));
|
||||
}
|
||||
|
@ -1058,7 +1080,7 @@ class RetailCrmHistory
|
|||
}
|
||||
}
|
||||
if (!$found) {
|
||||
//добавляем
|
||||
//create
|
||||
\Bitrix\Sale\Internals\ShipmentItemTable::add(array(
|
||||
'ORDER_DELIVERY_ID' => $key,
|
||||
'BASKET_ID' => $basketItem['ID'],
|
||||
|
@ -1095,7 +1117,7 @@ class RetailCrmHistory
|
|||
'filter' => array('ORDER_ID' => $order['externalId']),
|
||||
'order' => array('ID')
|
||||
))->fetch();
|
||||
if ($payment) {//если уже существует, update
|
||||
if ($payment) {//update payment
|
||||
\Bitrix\Sale\Internals\PaymentTable::update($payment['ID'], array('PAY_SYSTEM_ID' => $optionsPayment[$order['paymentType']], 'PAY_SYSTEM_NAME' => $arPaymentsName[$optionsPayment[$order['paymentType']]], 'SUM' => $order['summ']));
|
||||
} else {
|
||||
\Bitrix\Sale\Internals\PaymentTable::add(array(
|
||||
|
@ -1112,11 +1134,10 @@ class RetailCrmHistory
|
|||
'UPDATED_1C' => 'N'
|
||||
));
|
||||
}
|
||||
//запись в историю
|
||||
} else {//ошибка, нет такой активной платежной системы
|
||||
} else {
|
||||
RCrmActions::eventLog('RetailCrmHistory::paySystemUpdate', 'RCrmActions::PaymentList()', 'Error paySystem not found in order id=' . $order['externalId']);
|
||||
}
|
||||
} else {//ошибка, возможно платежная система не сопоставлена
|
||||
} else {
|
||||
RCrmActions::eventLog('RetailCrmHistory::paySystemUpdate', 'RCrmActions::PaymentList()', 'Error paySystem not found in option in order id=' . $order['externalId']);;
|
||||
}
|
||||
} else {
|
||||
|
@ -1129,7 +1150,6 @@ class RetailCrmHistory
|
|||
if ($payment['ID']) {
|
||||
\Bitrix\Sale\Internals\PaymentTable::delete($payment['ID']);
|
||||
}
|
||||
//запись в историю
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -207,7 +207,7 @@ class RetailCrmHistory
|
|||
|
||||
$GLOBALS['RETAIL_CRM_HISTORY'] = false;
|
||||
|
||||
//number of last edit
|
||||
//last id
|
||||
$end = array_pop($customerH);
|
||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_CUSTOMER_HISTORY, $end['id']);
|
||||
|
||||
|
@ -243,7 +243,7 @@ class RetailCrmHistory
|
|||
|
||||
$api_host = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_HOST_OPTION, 0);
|
||||
$api_key = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_KEY_OPTION, 0);
|
||||
//проверить $optionsOrderTypes = unserialize
|
||||
|
||||
$optionsOrderTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_TYPES_ARR, 0));
|
||||
$optionsDelivTypes = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_DELIVERY_TYPES_ARR, 0)));
|
||||
$optionsPayStatuses = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_STATUSES, 0))); // --statuses
|
||||
|
@ -919,7 +919,7 @@ class RetailCrmHistory
|
|||
$crmService = $orderCrm['delivery']['service']['code'];
|
||||
}
|
||||
|
||||
//подбираем код битриксового сервиса
|
||||
//select bitrix service code
|
||||
$arDeliveryServiceAll = \Bitrix\Sale\Delivery\Services\Manager::getActiveList();
|
||||
foreach ($arDeliveryServiceAll as $arDeliveryService) {
|
||||
$arDeliveryCode[$arDeliveryService['CODE']] = $arDeliveryService['ID'];
|
||||
|
@ -928,7 +928,7 @@ class RetailCrmHistory
|
|||
$dCode = $arDeliveryService['CODE'] . ':' . $crmService;
|
||||
}
|
||||
}
|
||||
//будем менять доставку на этот id
|
||||
//We will change delivery to this id
|
||||
if ($crmService && $arDeliveryCode[$dCode]) {
|
||||
$nowDelivery = $arDeliveryCode[$dCode];
|
||||
} elseif (!empty($optionsDelivTypes[$crmCode])) {
|
||||
|
@ -939,9 +939,9 @@ class RetailCrmHistory
|
|||
return false;
|
||||
}
|
||||
|
||||
//найти текущую доставку в заказе
|
||||
//Find the current delivery in the order
|
||||
$cnt = Bitrix\Sale\Internals\ShipmentTable::getCount(array('ORDER_ID' => $orderCrm['externalId']));
|
||||
if ($cnt > 0) {//обновляем
|
||||
if ($cnt > 0) {//update
|
||||
$obDeliverys = \Bitrix\Sale\Internals\ShipmentTable::getList(array('filter' => array('ORDER_ID' => $orderCrm['externalId']),
|
||||
'order' => array('ID')));
|
||||
while ($arDelivery = $obDeliverys->fetch()) {
|
||||
|
@ -950,7 +950,29 @@ class RetailCrmHistory
|
|||
\Bitrix\Sale\Internals\ShipmentTable::update($arDelivery['ID'], array('DELIVERY_ID' => $nowDelivery, 'DELIVERY_NAME' => $arDeliveryID[$nowDelivery]['NAME']));
|
||||
}
|
||||
}
|
||||
} else {//создаем
|
||||
if ($cnt = 1 && $arDelivery['DELIVERY_ID'] == 0) {
|
||||
$shipment = Bitrix\Sale\Internals\ShipmentTable::add(array(
|
||||
'ORDER_ID' => $orderCrm['externalId'],
|
||||
'STATUS_ID' => 'DN',
|
||||
'PRICE_DELIVERY' => 0,
|
||||
'BASE_PRICE_DELIVERY' => 0,
|
||||
'CUSTOM_PRICE_DELIVERY' => 'N',
|
||||
'ALLOW_DELIVERY' => 'N',
|
||||
'DEDUCTED' => 'N',
|
||||
'RESERVED' => 'N',
|
||||
'DELIVERY_ID' => $nowDelivery,
|
||||
'DELIVERY_NAME' => $arDeliveryID[$nowDelivery]['NAME'],
|
||||
'CANCELED' => 'N',
|
||||
'MARKED' => 'N',
|
||||
'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
|
||||
'SYSTEM' => 'N',
|
||||
'ACCOUNT_NUMBER' => $accountNumber . '/2',
|
||||
'EXTERNAL_DELIVERY' => 'N',
|
||||
'UPDATED_1C' => 'N',
|
||||
'DATE_INSERT'=> new \Bitrix\Main\Type\DateTime()
|
||||
));
|
||||
}
|
||||
} else {//create
|
||||
\Bitrix\Sale\OrderTable::update($orderCrm['externalId'], array('DELIVERY_ID' => $nowDelivery));
|
||||
$shipmentSystem = \Bitrix\Sale\Internals\ShipmentTable::add(array(
|
||||
'ORDER_ID' => $orderCrm['externalId'],
|
||||
|
@ -991,7 +1013,7 @@ class RetailCrmHistory
|
|||
));
|
||||
}
|
||||
} else {
|
||||
//ищем у заказа на сайте доставки и удаляем/заменяем на без доставки
|
||||
//search for the order on the delivery site and delete / replace with no delivery
|
||||
$noOrderId = \Bitrix\Sale\Delivery\Services\EmptyDeliveryService::getEmptyDeliveryServiceId();
|
||||
\Bitrix\Sale\OrderTable::update($orderCrm['externalId'], array('DELIVERY_ID' => $noOrderId));
|
||||
$obDeliverys = Bitrix\Sale\Internals\ShipmentTable::getList(array('filter' => array('ORDER_ID' => $orderCrm['externalId']),
|
||||
|
@ -1080,13 +1102,13 @@ class RetailCrmHistory
|
|||
$found = false;
|
||||
foreach ($arShipmentItems as $elShipmentItem) {
|
||||
if (!in_array($elShipmentItem['BASKET_ID'], $bItems)) {
|
||||
//удаляем элемент
|
||||
//delete the element
|
||||
\Bitrix\Sale\Internals\ShipmentItemTable::delete($elShipmentItem['ID']);
|
||||
}
|
||||
if ($elShipmentItem['BASKET_ID'] == $basketItem['ID']) {
|
||||
//нашли
|
||||
//found
|
||||
$found = true;
|
||||
//проверяем кол-во, если нужно, обновляем
|
||||
//update quantity
|
||||
if ($elShipmentItem['QUANTITY'] != $basketItem['QUANTITY']) {
|
||||
\Bitrix\Sale\Internals\ShipmentItemTable::update($elShipmentItem['ID'], array('QUANTITY' => $basketItem['QUANTITY']));
|
||||
}
|
||||
|
@ -1094,7 +1116,7 @@ class RetailCrmHistory
|
|||
}
|
||||
}
|
||||
if (!$found) {
|
||||
//добавляем
|
||||
//create
|
||||
\Bitrix\Sale\Internals\ShipmentItemTable::add(array(
|
||||
'ORDER_DELIVERY_ID' => $key,
|
||||
'BASKET_ID' => $basketItem['ID'],
|
||||
|
@ -1122,13 +1144,13 @@ class RetailCrmHistory
|
|||
$paymentsList[$data['ID']] = $paymentData;
|
||||
}
|
||||
|
||||
//проходим по данным из crm
|
||||
//data from crm
|
||||
$paySumm = 0;
|
||||
foreach ($paymentsCrm['payments'] as $paymentCrm) {
|
||||
if (!empty($paymentCrm['externalId'])) {
|
||||
//находим оплату
|
||||
//find the payment
|
||||
$nowPayment = $paymentsList[$paymentCrm['externalId']];
|
||||
//обновляем в ней данные
|
||||
//update data
|
||||
if ($nowPayment instanceof \Bitrix\Sale\Payment) {
|
||||
$nowPayment->setField('SUM', $paymentCrm['amount']);
|
||||
if ($optionsPayTypes[$paymentCrm['type']] != $nowPayment->getField('PAY_SYSTEM_ID')) {
|
||||
|
@ -1159,7 +1181,7 @@ class RetailCrmHistory
|
|||
|
||||
unset($paymentsList[$newPaymentId]);
|
||||
|
||||
RCrmActions::apiMethod($api, 'ordersPaymentEdit', __METHOD__, array('id' => $paymentCrm['id'], 'externalId' => $newPaymentId));
|
||||
//RCrmActions::apiMethod($api, 'ordersPaymentEdit', __METHOD__, array('id' => $paymentCrm['id'], 'externalId' => $newPaymentId));
|
||||
}
|
||||
|
||||
if ($optionsPayment[$paymentCrm['status']] == 'Y') {
|
||||
|
|
|
@ -123,7 +123,7 @@ class RetailCrmInventories
|
|||
'available' => self::switchCount($arStoreProduct['AMOUNT'], $inventoriesType[$stores[$arStoreProduct['STORE_ID']]]),
|
||||
);
|
||||
}
|
||||
//инфу в лог
|
||||
//for log
|
||||
$splitedItems = array_chunk($invUpload, 200);
|
||||
foreach ($splitedItems as $chunk) {
|
||||
$log->write($chunk, 'inventoriesUpload');
|
||||
|
|
|
@ -68,20 +68,20 @@ class RetailCrmOrder
|
|||
}
|
||||
$order['contragent']['contragentType'] = $arParams['optionsContragentType'][$arFields['PERSON_TYPE_ID']];
|
||||
|
||||
//свойства
|
||||
//fields
|
||||
foreach ($arFields['PROPS']['properties'] as $prop) {
|
||||
if ($search = array_search($prop['CODE'], $arParams['optionsLegalDetails'][$arFields['PERSON_TYPE_ID']])) {
|
||||
$order['contragent'][$search] = $prop['VALUE'][0];//юр данные заказа
|
||||
$order['contragent'][$search] = $prop['VALUE'][0];//legal order data
|
||||
} elseif ($search = array_search($prop['CODE'], $arParams['optionsCustomFields'][$arFields['PERSON_TYPE_ID']])) {
|
||||
$order['customFields'][$search] = $prop['VALUE'][0];//кастомные свойства
|
||||
} elseif ($search = array_search($prop['CODE'], $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']])) {//остальное
|
||||
if (in_array($search, array('fio', 'phone', 'email'))) {//фио, телефон, почта
|
||||
$order['customFields'][$search] = $prop['VALUE'][0];//custom properties
|
||||
} elseif ($search = array_search($prop['CODE'], $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']])) {//other
|
||||
if (in_array($search, array('fio', 'phone', 'email'))) {//fio, phone, email
|
||||
if ($search == 'fio') {
|
||||
$order = array_merge($order, RCrmActions::explodeFIO($prop['VALUE'][0]));//добавляем поля фио
|
||||
$order = array_merge($order, RCrmActions::explodeFIO($prop['VALUE'][0]));//add fio fields
|
||||
} else {
|
||||
$order[$search] = $prop['VALUE'][0];//телефон и почта
|
||||
$order[$search] = $prop['VALUE'][0];//phone, email
|
||||
}
|
||||
} else {//остальное - адрес
|
||||
} else {//address
|
||||
if ($prop['TYPE'] == 'LOCATION' && isset($prop['VALUE'][0]) && $prop['VALUE'][0] != '') {
|
||||
$arLoc = \Bitrix\Sale\Location\LocationTable::getByCode($prop['VALUE'][0])->fetch();
|
||||
if ($arLoc) {
|
||||
|
@ -113,7 +113,7 @@ class RetailCrmOrder
|
|||
}
|
||||
}
|
||||
|
||||
//доставки
|
||||
//deliverys
|
||||
if (array_key_exists($arFields['DELIVERYS'][0]['id'], $arParams['optionsDelivTypes'])) {
|
||||
$order['delivery']['code'] = $arParams['optionsDelivTypes'][$arFields['DELIVERYS'][0]['id']];
|
||||
if (isset($arFields['DELIVERYS'][0]['service']) && $arFields['DELIVERYS'][0]['service'] != '') {
|
||||
|
@ -121,7 +121,7 @@ class RetailCrmOrder
|
|||
}
|
||||
}
|
||||
|
||||
//корзина
|
||||
//basket
|
||||
foreach ($arFields['BASKET'] as $product) {
|
||||
$item = array(
|
||||
'quantity' => $product['QUANTITY'],
|
||||
|
@ -142,7 +142,7 @@ class RetailCrmOrder
|
|||
$order['items'][] = $item;
|
||||
}
|
||||
|
||||
//отправка
|
||||
//send
|
||||
if (function_exists('retailCrmBeforeOrderSend')) {
|
||||
$newResOrder = retailCrmBeforeOrderSend($order, $arFields);
|
||||
if (is_array($newResOrder) && !empty($newResOrder)) {
|
||||
|
|
|
@ -64,20 +64,20 @@ class RetailCrmOrder
|
|||
}
|
||||
$order['contragent']['contragentType'] = $arParams['optionsContragentType'][$arFields['PERSON_TYPE_ID']];
|
||||
|
||||
//свойства
|
||||
//fields
|
||||
foreach ($arFields['PROPS']['properties'] as $prop) {
|
||||
if ($search = array_search($prop['CODE'], $arParams['optionsLegalDetails'][$arFields['PERSON_TYPE_ID']])) {
|
||||
$order['contragent'][$search] = $prop['VALUE'][0];//юр данные заказа
|
||||
$order['contragent'][$search] = $prop['VALUE'][0];//legal order data
|
||||
} elseif ($search = array_search($prop['CODE'], $arParams['optionsCustomFields'][$arFields['PERSON_TYPE_ID']])) {
|
||||
$order['customFields'][$search] = $prop['VALUE'][0];//кастомные свойства
|
||||
} elseif ($search = array_search($prop['CODE'], $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']])) {//остальное
|
||||
if (in_array($search, array('fio', 'phone', 'email'))) {//фио, телефон, почта
|
||||
$order['customFields'][$search] = $prop['VALUE'][0];//custom properties
|
||||
} elseif ($search = array_search($prop['CODE'], $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']])) {//other
|
||||
if (in_array($search, array('fio', 'phone', 'email'))) {//fio, phone, email
|
||||
if ($search == 'fio') {
|
||||
$order = array_merge($order, RCrmActions::explodeFIO($prop['VALUE'][0]));//добавляем поля фио
|
||||
$order = array_merge($order, RCrmActions::explodeFIO($prop['VALUE'][0]));//add fio fields
|
||||
} else {
|
||||
$order[$search] = $prop['VALUE'][0];//телефон и почта
|
||||
$order[$search] = $prop['VALUE'][0];//phone, email
|
||||
}
|
||||
} else {//остальное - адрес
|
||||
} else {//address
|
||||
if ($prop['TYPE'] == 'LOCATION' && isset($prop['VALUE'][0]) && $prop['VALUE'][0] != '') {
|
||||
$arLoc = \Bitrix\Sale\Location\LocationTable::getByCode($prop['VALUE'][0])->fetch();
|
||||
if ($arLoc) {
|
||||
|
@ -109,7 +109,7 @@ class RetailCrmOrder
|
|||
}
|
||||
}
|
||||
|
||||
//доставки
|
||||
//deliverys
|
||||
if (array_key_exists($arFields['DELIVERYS'][0]['id'], $arParams['optionsDelivTypes'])) {
|
||||
$order['delivery']['code'] = $arParams['optionsDelivTypes'][$arFields['DELIVERYS'][0]['id']];
|
||||
if (isset($arFields['DELIVERYS'][0]['service']) && $arFields['DELIVERYS'][0]['service'] != '') {
|
||||
|
@ -117,7 +117,7 @@ class RetailCrmOrder
|
|||
}
|
||||
}
|
||||
|
||||
//корзина
|
||||
//basket
|
||||
foreach ($arFields['BASKET'] as $product) {
|
||||
$item = array(
|
||||
'quantity' => $product['QUANTITY'],
|
||||
|
@ -138,8 +138,7 @@ class RetailCrmOrder
|
|||
$order['items'][] = $item;
|
||||
}
|
||||
|
||||
//оплаты
|
||||
|
||||
//payments
|
||||
$payments = array();
|
||||
foreach ($arFields['PAYMENTS'] as $payment) {
|
||||
$pm = array(
|
||||
|
@ -160,7 +159,8 @@ class RetailCrmOrder
|
|||
if (count($payments) > 0) {
|
||||
$order['payments'] = $payments;
|
||||
}
|
||||
//отправка
|
||||
|
||||
//send
|
||||
if (function_exists('retailCrmBeforeOrderSend')) {
|
||||
$newResOrder = retailCrmBeforeOrderSend($order, $arFields);
|
||||
if (is_array($newResOrder) && !empty($newResOrder)) {
|
||||
|
|
|
@ -112,7 +112,7 @@ class RetailCrmPrices
|
|||
}
|
||||
}
|
||||
|
||||
//инфу в лог
|
||||
//for log
|
||||
$splitedItems = array_chunk($pricesUpload, 200);
|
||||
foreach ($splitedItems as $chunk) {
|
||||
$log->write($chunk, 'storePricesUpload');
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
- API V5
|
||||
- Возможность выбора версии API
|
||||
- Добавлена возможность выгрузки остатков в разрезе складов
|
||||
- Добавлена возможность выгрузки типов цен
|
||||
- Добавлена базовая интеграция Demon Collector
|
||||
- Добавлена интеграция с Universal Analytics
|
||||
- Доработана логика работы встроенных функций для модификации данных
|
||||
- Добавлена встроенная функция retailCrmApiResult
|
||||
- Добавлен триггерный вариант истории изменений
|
||||
- Исправлены ошибки
|
|
@ -65,6 +65,7 @@ class intaro_retailcrm extends CModule
|
|||
var $CRM_UA_KEYS = 'ua_keys';
|
||||
|
||||
var $CRM_API_VERSION = 'api_version';
|
||||
var $HISTORY_TIME = 'history_time';
|
||||
|
||||
var $INSTALL_PATH;
|
||||
|
||||
|
@ -632,7 +633,7 @@ class intaro_retailcrm extends CModule
|
|||
$customerH = self::historyLoad($api, 'customersHistory');
|
||||
COption::SetOptionString($this->MODULE_ID, $this->CRM_CUSTOMER_HISTORY, $customerH);
|
||||
|
||||
//если есть старое значение, переделываем его на новый лад, иначе вычисляем
|
||||
//new data
|
||||
if ($historyDate = COption::GetOptionString($this->OLD_MODULE_ID, 'order_history_date', 0)) {
|
||||
try {
|
||||
$history = $api->ordersHistory(array('startDate' => $historyDate));
|
||||
|
@ -1005,6 +1006,7 @@ class intaro_retailcrm extends CModule
|
|||
COption::RemoveOption($this->MODULE_ID, $this->CRM_UA_KEYS);
|
||||
|
||||
COption::RemoveOption($this->MODULE_ID, $this->CRM_API_VERSION);
|
||||
COption::RemoveOption($this->MODULE_ID, $this->HISTORY_TIME);
|
||||
|
||||
UnRegisterModuleDependences("sale", "OnOrderUpdate", $this->MODULE_ID, "RetailCrmEvent", "onUpdateOrder");
|
||||
UnRegisterModuleDependences("sale", "OnBeforeOrderAdd", $this->MODULE_ID, "RetailCrmEvent", "onBeforeOrderAdd");
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?
|
||||
$arModuleVersion = array(
|
||||
"VERSION" => "2.2.0",
|
||||
"VERSION_DATE" => "2017-08-21 12:00:00"
|
||||
"VERSION" => "2.2.1",
|
||||
"VERSION_DATE" => "2017-09-01 12:00:00"
|
||||
);
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ $MESS ['INTAROCRM_INFO'] = '
|
|||
через некоторое время по этим заказам будет подготовлены аналитические отчеты в Панели KPI.
|
||||
</p>
|
||||
<p>
|
||||
Новые заказы будут отправляться агентом <span style="font-family: Courier New;">ICrmOrderActions::uploadOrdersAgent();</span>
|
||||
Новые заказы будут отправляться агентом <span style="font-family: Courier New;">RCrmActions::uploadOrdersAgent();</span>
|
||||
в retailCRM каждые 10 минут (интервал можно изменить в разделе <a href="/bitrix/admin/agent_list.php">Агенты</a>).
|
||||
</p>
|
||||
<p>
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
if (!CModule::IncludeModule("main")) return;
|
||||
|
||||
$mid = 'intaro.retailcrm';
|
||||
if (CModule::IncludeModule($mid)) {
|
||||
$CRM_INVENTORIES_UPLOAD = 'inventories_upload';
|
||||
$CRM_PRICES_UPLOAD = 'prices_upload';
|
||||
$CRM_COLLECTOR = 'collector';
|
||||
$CRM_UA = 'ua';
|
||||
$CRM_API_VERSION = 'api_version';
|
||||
|
||||
COption::SetOptionString($mid, $CRM_INVENTORIES_UPLOAD, 'N');
|
||||
COption::SetOptionString($mid, $CRM_PRICES_UPLOAD, 'N');
|
||||
COption::SetOptionString($mid, $CRM_COLLECTOR, 'N');
|
||||
COption::SetOptionString($mid, $CRM_UA, 'N');
|
||||
COption::SetOptionString($mid, $CRM_API_VERSION, 'v4');
|
||||
|
||||
COption::RemoveOption($mid, 'catalog_base_iblocks');
|
||||
}
|
||||
unlink($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intaro.retailcrm/classes/general/ApiClient.php');
|
||||
unlink($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intaro.retailcrm/classes/general/order/RetailCrmOrder.php');
|
||||
unlink($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intaro.retailcrm/classes/general/history/RetailCrmHistory.php');
|
Loading…
Add table
Reference in a new issue