commit
ae4f284107
@ -1,3 +1,8 @@
|
||||
## 2015-03-19 v.1.1.1
|
||||
* Исправлена ошибка, связанная с версионностью PHP в History.
|
||||
* Добавлена выгрузка закупочной цены вместе с заказом
|
||||
* Добавлены индивидуальные настройки для профилей выгрузки
|
||||
* Исправлены мелкие ошибки
|
||||
## 2015-02-20 v.1.1.0
|
||||
* Модуль переведен на новую версию API
|
||||
* Добавлена поддержка реквизитов юр. лиц
|
||||
@ -16,7 +21,7 @@
|
||||
## 2015-02-12 v.1.0.16
|
||||
* Исправлен агент
|
||||
* Исправлены ошибки с запоминанием пользователя
|
||||
* Исправленна ошибка с выходом пользователя из системы
|
||||
* Исправлена ошибка с выходом пользователя из системы
|
||||
* Исправлена ошибка хождения пользователя под другим логином
|
||||
* Исправлены проблема с fix-external-ids
|
||||
* Добавлена возможность получения скидки из CRM в Битрикс
|
||||
|
@ -5,6 +5,7 @@ IncludeModuleLangFile(__FILE__);
|
||||
|
||||
class ICMLLoader {
|
||||
|
||||
public $profileID;
|
||||
public $iblocks;
|
||||
public $filename;
|
||||
public $serverName;
|
||||
@ -222,8 +223,11 @@ class ICMLLoader {
|
||||
protected function BuildOffers(&$allCategories)
|
||||
{
|
||||
|
||||
$basePriceId = COption::GetOptionString($this->MODULE_ID, $this->CRM_CATALOG_BASE_PRICE, 1);
|
||||
|
||||
$basePriceId = COption::GetOptionString(
|
||||
$this->MODULE_ID,
|
||||
$this->CRM_CATALOG_BASE_PRICE . (is_null($this->profileID) === false ? '_' . $this->profileID : ''),
|
||||
1
|
||||
);
|
||||
|
||||
foreach ($this->iblocks as $key => $id)
|
||||
{
|
||||
|
@ -250,13 +250,20 @@ class ICrmOrderActions
|
||||
$item = array(
|
||||
'quantity' => $p['QUANTITY'],
|
||||
'productId' => $p['PRODUCT_ID'],
|
||||
'xmlId' => $p['PRODUCT_XML_ID'],
|
||||
'productName' => $p['NAME'],
|
||||
'comment' => $p['NOTES'],
|
||||
'discount' => $p['DISCOUNT_PRICE']
|
||||
'createdAt' => new \DateTime($p['DATE_INSERT'])
|
||||
);
|
||||
|
||||
$pp = CCatalogProduct::GetByID($p['PRODUCT_ID']);
|
||||
if (is_null($pp['PURCHASING_PRICE']) == false) {
|
||||
$item['purchasePrice'] = $pp['PURCHASING_PRICE'];
|
||||
}
|
||||
|
||||
$propCancel = CSaleBasket::GetPropsList(array(), array('BASKET_ID' => $p['ID'], 'CODE' => self::CANCEL_PROPERTY_CODE))->Fetch();
|
||||
if ($propCancel && !(int)$propCancel['VALUE']) {
|
||||
if (!$propCancel || ($propCancel && !(int)$propCancel['VALUE'])) {
|
||||
$item['discount'] = (double) $p['DISCOUNT_PRICE'];
|
||||
$item['initialPrice'] = (double) $p['PRICE'] + (double) $p['DISCOUNT_PRICE'];
|
||||
}
|
||||
|
||||
@ -293,7 +300,7 @@ class ICrmOrderActions
|
||||
|
||||
$customer = $normalizer->normalize($customer, 'customers');
|
||||
$order = $normalizer->normalize($order, 'orders');
|
||||
$site = null;
|
||||
|
||||
if (isset($arParams['optionsSitesList']) && is_array($arParams['optionsSitesList']) &&
|
||||
array_key_exists($arFields['LID'], $arParams['optionsSitesList'])) {
|
||||
$site = $arParams['optionsSitesList'][$arFields['LID']];
|
||||
@ -391,7 +398,7 @@ class ICrmOrderActions
|
||||
return false;
|
||||
}
|
||||
|
||||
$orderHistory = isset($orderHistory->orders) ? $orderHistory->orders : array();
|
||||
$orderHistory = isset($orderHistory['orders']) ? $orderHistory['orders'] : array();
|
||||
|
||||
$dateFinish = $api->getGeneratedAt();
|
||||
if (is_null($dateFinish) || $dateFinish == false) {
|
||||
|
@ -1,13 +1,4 @@
|
||||
- Модуль переведен на новую версию API
|
||||
- Добавлена поддержка реквизитов юр. лиц
|
||||
- Добавлена многосайтовость
|
||||
- Добавлена выборочная загрузка заказов из настроек модуля
|
||||
- Оптимизирована загрузка старых заказов
|
||||
- Исправлена ошибка со скидками на заказ и товары
|
||||
- Исправлена ошибка с удалением id товара в заказе
|
||||
- Исправлена ошибка пустого $_SERVER['SERVER_NAME'] при экспорте каталога
|
||||
- Исправлена ошибка с неправильной скидкой у товара при наличии копеек
|
||||
- Исправлена ошибка с пропаданием автоматических служб доставок из настроек модуля
|
||||
- Исправлена неправельная выгрузка сервисов для служб доставок
|
||||
- Исправлено не правельное определение местоположения
|
||||
- Рефакторинг модуля
|
||||
- Исправлена ошибка, связанная с версионностью PHP в History.
|
||||
- Добавлена выгрузка закупочной цены вместе с заказом
|
||||
- Добавлены индивидуальные настройки для профилей выгрузки
|
||||
- Исправлены мелкие ошибки
|
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
ignore_user_abort(true);
|
||||
set_time_limit(0);
|
||||
|
||||
global $APPLICATION;
|
||||
@ -68,8 +69,8 @@ foreach ($iblockProperties as $prop) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$loader = new ICMLLoader();
|
||||
$loader->profileID = $PROFILE_ID;
|
||||
$loader->iblocks = $IBLOCK_EXPORT;
|
||||
$loader->propertiesSKU = $IBLOCK_PROPERTY_SKU;
|
||||
$loader->propertiesUnitSKU = $IBLOCK_PROPERTY_UNIT_SKU;
|
||||
|
@ -17,7 +17,7 @@ __IncludeLang(GetLangFileName($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/intaro.
|
||||
|
||||
$MODULE_ID = 'intaro.intarocrm';
|
||||
$CRM_CATALOG_BASE_PRICE = 'catalog_base_price';
|
||||
$basePriceId = COption::GetOptionString($MODULE_ID, $CRM_CATALOG_BASE_PRICE, 1);
|
||||
$basePriceId = COption::GetOptionString($MODULE_ID, $CRM_CATALOG_BASE_PRICE . '_' . $_REQUEST['PROFILE_ID'], 1);
|
||||
|
||||
$arResult['PRICE_TYPES'] = array();
|
||||
$dbPriceType = CCatalogGroup::GetList(
|
||||
@ -665,7 +665,6 @@ if ($STEP==1)
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
<?//Следующие переменные должны быть обязательно установлены?>
|
||||
<?=bitrix_sessid_post();?>
|
||||
|
||||
@ -693,7 +692,7 @@ if ($STEP==1)
|
||||
}
|
||||
elseif ($STEP==2)
|
||||
{
|
||||
COption::SetOptionString($MODULE_ID, $CRM_CATALOG_BASE_PRICE, htmlspecialchars(trim($_POST['price-types'])));
|
||||
COption::SetOptionString($MODULE_ID, $CRM_CATALOG_BASE_PRICE . '_' . $_REQUEST['PROFILE_ID'], htmlspecialchars(trim($_POST['price-types'])));
|
||||
$FINITE = true;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?
|
||||
$arModuleVersion = array(
|
||||
"VERSION" => "1.1.0",
|
||||
"VERSION_DATE" => "2015-03-03 16:21:38"
|
||||
"VERSION" => "1.1.1",
|
||||
"VERSION_DATE" => "2015-03-19 14:56:00"
|
||||
);
|
||||
|
||||
|
@ -1,87 +1,5 @@
|
||||
<?php
|
||||
if (!CModule::IncludeModule("intaro.intarocrm")) return;
|
||||
|
||||
if (!CModule::IncludeModule("sale")) return;
|
||||
|
||||
class RestApiSite extends \IntaroCrm\RestApi
|
||||
{
|
||||
public function sitesList()
|
||||
{
|
||||
$url = $this->apiUrl.'reference/sites';
|
||||
$result = $this->curlRequest($url);
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
$mid = 'intaro.intarocrm';
|
||||
$CRM_API_HOST_OPTION = 'api_host';
|
||||
$CRM_API_KEY_OPTION = 'api_key';
|
||||
$CRM_CONTRAGENT_TYPE = 'contragent_type';
|
||||
$CRM_SITES_LIST= 'sites_list';
|
||||
|
||||
$api_host = COption::GetOptionString($mid, $CRM_API_HOST_OPTION, 0);
|
||||
$api_key = COption::GetOptionString($mid, $CRM_API_KEY_OPTION, 0);
|
||||
$api = new RestApiSite($api_host, $api_key);
|
||||
|
||||
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intaro.intarocrm/classes/general/agent.php')) {
|
||||
unlink($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intaro.intarocrm/classes/general/agent.php');
|
||||
}
|
||||
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intaro.intarocrm/classes/general/Exception/ApiException.php')) {
|
||||
unlink($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intaro.intarocrm/classes/general/Exception/ApiException.php');
|
||||
}
|
||||
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/retailcrm')) {
|
||||
removeDirectory($_SERVER['DOCUMENT_ROOT'] . '/retailcrm');
|
||||
}
|
||||
|
||||
//sites
|
||||
$rsSites = CSite::GetList($by, $sort, array('ACTIVE' => 'Y'));
|
||||
while ($ar = $rsSites->Fetch()){
|
||||
$arSites[] = $ar;
|
||||
}
|
||||
if(count($arSites)>1){
|
||||
try {
|
||||
$sitesList = $api->sitesList();
|
||||
} catch (\IntaroCrm\Exception\CurlException $e) {
|
||||
ICrmOrderActions::eventLog(
|
||||
'intaro.crm/updater.php', 'RetailCrm\RestApi::sitesList::CurlException',
|
||||
$e->getCode() . ': ' . $e->getMessage()
|
||||
);
|
||||
return;
|
||||
}
|
||||
foreach ($arResult['arSites'] as $arSites) {
|
||||
$siteListArr[$arSites['LID']] = $sitesList[0]['code'];
|
||||
}
|
||||
COption::SetOptionString($mid, $CRM_SITES_LIST, serialize(ICrmOrderActions::clearArr($siteListArr)));
|
||||
}
|
||||
|
||||
//contragents type list
|
||||
$dbOrderTypesList = CSalePersonType::GetList(
|
||||
array(
|
||||
"SORT" => "ASC",
|
||||
"NAME" => "ASC"
|
||||
),
|
||||
array(
|
||||
"ACTIVE" => "Y",
|
||||
),
|
||||
false,
|
||||
false,
|
||||
array()
|
||||
);
|
||||
|
||||
$orderTypesList = array();
|
||||
while ($arOrderTypesList = $dbOrderTypesList->Fetch()){
|
||||
$orderTypesList[] = $arOrderTypesList;
|
||||
}
|
||||
$contragentTypeArr = array();
|
||||
foreach ($orderTypesList as $orderType) {
|
||||
$contragentTypeArr[$orderType['ID']] = 'individual';
|
||||
}
|
||||
COption::SetOptionString($mid, $CRM_CONTRAGENT_TYPE, serialize(ICrmOrderActions::clearArr($contragentTypeArr)));
|
||||
|
||||
function removeDirectory($dir) {
|
||||
if ($objs = glob($dir."/*")) {
|
||||
foreach($objs as $obj) {
|
||||
is_dir($obj) ? removeDirectory($obj) : unlink($obj);
|
||||
}
|
||||
}
|
||||
rmdir($dir);
|
||||
}
|
||||
if (!CModule::IncludeModule("main")) return;
|
||||
DeleteDirFilesEx('/retailcrm');
|
||||
DeleteDirFilesEx('/bitrix/modules/intaro.intarocrm/classes/general/agent.php');
|
||||
DeleteDirFilesEx('/bitrix/modules/intaro.intarocrm/classes/general/Exception/ApiException.php');
|
Loading…
Reference in New Issue
Block a user