parent
066655eea4
commit
20695708d8
5 changed files with 113 additions and 30 deletions
|
@ -443,12 +443,13 @@ class RCrmActions
|
|||
public static function customOrderPropList()
|
||||
{
|
||||
$propsList = OrderPropsTable::getList([
|
||||
'select' => ['ID', 'CODE', 'NAME', 'PERSON_TYPE_ID'],
|
||||
'select' => ['ID', 'CODE', 'NAME', 'PERSON_TYPE_ID', 'TYPE'],
|
||||
'filter' => [
|
||||
['!=CODE' => "LP_BONUS_INFO"],
|
||||
['!=CODE' => "LP_DISCOUNT_INFO"],
|
||||
['>ID' => 19],
|
||||
['TYPE' => 'STRING']
|
||||
['?TYPE' => 'STRING | NUMBER | Y/N | DATE'],
|
||||
['MULTIPLE' => 'N']
|
||||
]
|
||||
]);
|
||||
|
||||
|
@ -458,6 +459,7 @@ class RCrmActions
|
|||
foreach ($propsList as $prop) {
|
||||
$key = $prop['ID'] . '#' . $prop['CODE'];
|
||||
$resultList[$key] = $prop['NAME'] . ' (' . $prop['PERSON_TYPE_ID'] . ')';
|
||||
$resultList[$prop['TYPE'] . '_TYPE'][$key] = $prop['NAME'] . ' (' . $persons[$prop['PERSON_TYPE_ID']] . ')';
|
||||
}
|
||||
|
||||
return $resultList;
|
||||
|
@ -492,6 +494,41 @@ class RCrmActions
|
|||
return $resultList;
|
||||
}
|
||||
|
||||
public static function convertPropToCrmValue($prop)
|
||||
{
|
||||
$result = $prop['VALUE'][0];
|
||||
|
||||
if ($prop['TYPE'] === 'Y/N') {
|
||||
$result = $prop['VALUE'][0] === 'Y' ? 1 : 0;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public static function convertCrmValueToPropOrder($objProperty, $crmValue)
|
||||
{
|
||||
$result = $crmValue;
|
||||
$typeField = $objProperty->getType();
|
||||
|
||||
if ($typeField === 'Y/N') {
|
||||
$result = $crmValue == 1 ? 'Y' : 'N';
|
||||
}
|
||||
|
||||
if ($typeField === 'DATE') {
|
||||
if (empty($crmValue)) {
|
||||
return $crmValue;
|
||||
}
|
||||
|
||||
try {
|
||||
$result = date('d.m.Y', strtotime($crmValue));
|
||||
} catch (\Exception $exception) {
|
||||
$result = '';
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public static function sendConfiguration($api, $active = true)
|
||||
{
|
||||
$scheme = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
|
||||
|
|
|
@ -1245,6 +1245,7 @@ class RetailCrmHistory
|
|||
if (isset($matchedCustomOrderFields[$code])) {
|
||||
$masIdentifier = explode('#', $matchedCustomOrderFields[$code], 2);
|
||||
$property = $propertyCollection->getItemByOrderPropertyId($masIdentifier[0]);
|
||||
$value = RCrmActions::convertCrmValueToPropOrder($property, $value);
|
||||
$r = $property->setField('VALUE', $value);
|
||||
|
||||
if (!$r->isSuccess()) {
|
||||
|
|
|
@ -136,7 +136,7 @@ class RetailCrmOrder
|
|||
&& !empty($arParams['customOrderProps'])
|
||||
&& isset($arParams['customOrderProps'][$prop['ID'] . '#' . $prop['CODE']])
|
||||
) {
|
||||
$order['customFields'][$arParams['customOrderProps'][$prop['ID'] . '#' . $prop['CODE']]] = $prop['VALUE'][0];
|
||||
$order['customFields'][$arParams['customOrderProps'][$prop['ID'] . '#' . $prop['CODE']]] = RCrmActions::convertPropToCrmValue($prop);
|
||||
} elseif (is_array($arParams['optionsOrderProps'][$arOrder['PERSON_TYPE_ID']])
|
||||
&& $search = array_search($prop['CODE'], $arParams['optionsOrderProps'][$arOrder['PERSON_TYPE_ID']])) {//other
|
||||
if (in_array($search, ['fio', 'phone', 'email'])) {//fio, phone, email
|
||||
|
|
|
@ -183,6 +183,14 @@ $MESS ['CUSTOM_FIELDS_TOGGLE_MSG'] = 'Активность обмена поль
|
|||
$MESS ['CUSTOM_FIELDS_ORDER_LABEL'] = 'Свойство заказа / пользовательское поле в црм';
|
||||
$MESS ['CUSTOM_FIELDS_USER_LABEL'] = 'Поля пользователя / Пользовательские поля клиента в црм';
|
||||
$MESS ['SELECT_FIELD_NAME'] = 'Поле';
|
||||
$MESS ['INTEGER_TYPE'] = 'Целое число';
|
||||
$MESS ['STRING_TYPE'] = 'Строка';
|
||||
$MESS ['TEXT_TYPE'] = 'Текст';
|
||||
$MESS ['NUMBER_TYPE'] = 'Число';
|
||||
$MESS ['NUMERIC_TYPE'] = 'Число';
|
||||
$MESS ['Y/N_TYPE'] = 'Булев тип';
|
||||
$MESS ['BOOLEAN_TYPE'] = 'Булев тип';
|
||||
$MESS ['DATE_TYPE'] = 'Дата';
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -942,9 +942,11 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||
$customOrderProps = [];
|
||||
$customUserFields = [];
|
||||
|
||||
foreach ($arResult['bitrixOrdersCustomProp'] as $code => $text) {
|
||||
if (!empty($_POST['bitrixOrderProp_' . $code]) && !empty($_POST['crmOrderField_' . $code])) {
|
||||
$customOrderProps[htmlspecialchars($_POST['bitrixOrderProp_' . $code])] = htmlspecialchars($_POST['crmOrderField_' . $code]);
|
||||
foreach ($arResult['bitrixOrdersCustomProp'] as $list) {
|
||||
foreach ($list as $code => $text) {
|
||||
if (!empty($_POST['bitrixOrderProp_' . $code]) && !empty($_POST['crmOrderField_' . $code])) {
|
||||
$customOrderProps[htmlspecialchars($_POST['bitrixOrderProp_' . $code])] = htmlspecialchars($_POST['crmOrderField_' . $code]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -989,7 +991,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||
$arResult['inventoriesList'] = $APPLICATION->ConvertCharsetArray($api->storesList()->stores, 'utf-8', SITE_CHARSET);
|
||||
$arResult['priceTypeList'] = $APPLICATION->ConvertCharsetArray($api->pricesTypes()->priceTypes, 'utf-8', SITE_CHARSET);
|
||||
$arResult['crmCustomOrderFields'] = $APPLICATION->ConvertCharsetArray(
|
||||
$api->customFieldsList(['entity' => 'order', 'type' => [0 => 'string', 1 => 'text']], 250)->customFields,
|
||||
$api->customFieldsList(['entity' => 'order', 'type' => ['string','text', 'numeric', 'boolean', 'date']], 250)->customFields,
|
||||
'utf-8',
|
||||
SITE_CHARSET
|
||||
);
|
||||
|
@ -1013,6 +1015,15 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||
echo CAdminMessage::ShowMessage(GetMessage('ERR_JSON'));
|
||||
}
|
||||
|
||||
$crmCustomOrderFieldsList = [];
|
||||
|
||||
foreach ($arResult['crmCustomOrderFields'] as $customField){
|
||||
$crmCustomOrderFieldsList[strtoupper($customField['type']) . '_TYPE'][] = ['name' => $customField['name'], 'code' => $customField['code']];
|
||||
}
|
||||
|
||||
$arResult['crmCustomOrderFields'] = $crmCustomOrderFieldsList;
|
||||
unset($crmCustomOrderFieldsList);
|
||||
|
||||
$arResult['matchedOrderProps'] = ConfigProvider::getMatchedOrderProps();
|
||||
$arResult['matchedUserFields'] = ConfigProvider::getMatchedUserFields();
|
||||
|
||||
|
@ -2213,7 +2224,8 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||
?>
|
||||
<tr class="heading">
|
||||
<p>При работе с данной настройкой, убедитесь, что у вас не используются кастомизированные файлы по работе с заказами и пользователями.</p>
|
||||
<p>Если же они имеются, убедитеть, что функционал по работе с пользовательскими полями встроен в модуль</p>
|
||||
<p>Если же они имеются, убедитеть, что функционал по работе с пользовательскими полями встроен в модуль
|
||||
<p>Типы кастомных полей должны быть одинаковыми, во избежаение проблем с синхронизацией</p>
|
||||
<td colspan="2" class="option-other-heading">
|
||||
<b>
|
||||
<label>
|
||||
|
@ -2252,13 +2264,18 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||
onchange="changeSelectValue(this, 'bitrixOrderProp_', 'crmOrderField_');"
|
||||
>
|
||||
<option value=""></option>
|
||||
<?php foreach ($arResult['bitrixOrdersCustomProp'] as $code => $prop) {?>
|
||||
<option
|
||||
value="<?php echo $code ?>"
|
||||
<?php if ($bitrixProp === $code) echo 'selected'; ?>
|
||||
>
|
||||
<?php echo $prop ?>
|
||||
</option>
|
||||
|
||||
<?php foreach ($arResult['bitrixOrdersCustomProp'] as $type => $mass) {?>
|
||||
<optgroup label="<?php echo GetMessage($type); ?>">
|
||||
<?php foreach ($mass as $code => $prop) {?>
|
||||
<option
|
||||
value="<?php echo $code ?>"
|
||||
<?php if ($bitrixProp === $code) echo 'selected'; ?>
|
||||
>
|
||||
<?php echo $prop ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</optgroup>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</td>
|
||||
|
@ -2269,13 +2286,17 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||
name="crmOrderField_<?php echo $bitrixProp ?>"
|
||||
>
|
||||
<option value=""></option>
|
||||
<?php foreach ($arResult['crmCustomOrderFields'] as $crmProp) {?>
|
||||
<option
|
||||
value="<?php echo $crmProp['code'] ?>"
|
||||
<?php if ($crmField === $crmProp['code']) echo 'selected'; ?>
|
||||
>
|
||||
<?php echo $crmProp['name'] ?>
|
||||
</option>
|
||||
<?php foreach ($arResult['crmCustomOrderFields'] as $type => $mass) {?>
|
||||
<optgroup label="<?php echo GetMessage($type); ?>">
|
||||
<?php foreach ($mass as $crmProp) {?>
|
||||
<option
|
||||
value="<?php echo $crmProp['code'] ?>"
|
||||
<?php if ($crmField === $crmProp['code']) echo 'selected'; ?>
|
||||
>
|
||||
<?php echo $crmProp['name'] ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</optgroup>
|
||||
<?php } ?>
|
||||
</select>
|
||||
|
||||
|
@ -2362,11 +2383,20 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||
onchange="changeSelectValue(this, 'bitrixOrderProp_', 'crmOrderField_');"
|
||||
>
|
||||
<option value=""></option>
|
||||
<?php foreach ($arResult['bitrixOrdersCustomProp'] as $code => $prop) {?>
|
||||
<option value="<?php echo $code ?>">
|
||||
<?php echo $prop ?>
|
||||
</option>
|
||||
|
||||
<?php foreach ($arResult['bitrixOrdersCustomProp'] as $type => $mass) {?>
|
||||
<optgroup label="<?php echo GetMessage($type); ?>">
|
||||
<?php foreach ($mass as $code => $prop) {?>
|
||||
<option
|
||||
value="<?php echo $code ?>"
|
||||
<?php if ($bitrixProp === $code) echo 'selected'; ?>
|
||||
>
|
||||
<?php echo $prop ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</optgroup>
|
||||
<?php } ?>
|
||||
|
||||
</select>
|
||||
</td>
|
||||
<td class="adm-list-table-cell adm-detail-content-cell-r" colspan="2" width="50%">
|
||||
|
@ -2376,10 +2406,17 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||
name="crmOrderField"
|
||||
>
|
||||
<option value=""></option>
|
||||
<?php foreach ($arResult['crmCustomOrderFields'] as $crmProp) {?>
|
||||
<option value="<?php echo $crmProp['code'] ?>">
|
||||
<?php echo $crmProp['name'] ?>
|
||||
</option>
|
||||
<?php foreach ($arResult['crmCustomOrderFields'] as $type => $mass) {?>
|
||||
<optgroup label="<?php echo GetMessage($type); ?>">
|
||||
<?php foreach ($mass as $crmProp) {?>
|
||||
<option
|
||||
value="<?php echo $crmProp['code'] ?>"
|
||||
<?php if ($crmField === $crmProp['code']) echo 'selected'; ?>
|
||||
>
|
||||
<?php echo $crmProp['name'] ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</optgroup>
|
||||
<?php } ?>
|
||||
</select>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue