- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/exchange/onec/converterdocumentorder.php
- Класс: BitrixSaleExchangeOneCConverterDocumentOrder
- Вызов: ConverterDocumentOrder::externalize
public function externalize(array $fields)
{
$result = array();
$traits = $fields['TRAITS'];
$items = $fields['ITEMS'];
$taxes = $fields['TAXES'];
$stories = isset($fields['STORIES']) ? array_unique($fields['STORIES'], SORT_NUMERIC): array();
$businessValue = $fields['BUSINESS_VALUE'];
$availableFields = $this->getFieldsInfo();
/** @var ISettingsExport $settings */
$settings = $this->getSettings();
foreach ($availableFields as $k=>$v)
{
$value='';
switch ($k)
{
case 'ID':
$value = $traits['ID'];
break;
case 'NUMBER':
/** TODO: only EntityType::ORDER */
$value = $settings->prefixFor($this->getEntityTypeId()).$traits['ACCOUNT_NUMBER'];
break;
case 'ID_1C':
$value = ($traits[$k]<>'' ? $traits[$k]:'');
break;
case 'DATE':
$value = $traits['DATE_INSERT'];
break;
case 'OPERATION':
$value = DocumentBase::resolveDocumentTypeName($this->getDocmentTypeId());
break;
case 'ROLE':
$value = DocumentBase::getLangByCodeField('SELLER');
break;
case 'CURRENCY':
$replaceCurrency = $settings->getReplaceCurrency();
$value = mb_substr($replaceCurrency <> ''? $replaceCurrency : $traits[$k], 0, 3);
break;
case 'CURRENCY_RATE':
$value = self::CURRENCY_RATE_DEFAULT;
break;
case 'AMOUNT':
$value = $traits['PRICE'];
break;
case 'VERSION':
$value = $traits['VERSION'];
break;
case 'TIME':
$value = $traits['DATE_INSERT'];
break;
case 'COMMENT':
$value = $traits['COMMENTS'];
break;
case 'DISCOUNTS':
$value = $this->externalizeDiscounts($traits, $v);
break;
case 'TAXES':
if(count($taxes)>0)
$value = $this->externalizeTaxes($taxes, $v);
break;
case 'STORIES':
if(count($stories)>0)
$value = $this->externalizeStories(current($stories), $v);
break;
case 'ITEMS':
$value = $this->externalizeItems($items, $v);
break;
case 'REK_VALUES':
$value=array();
foreach($v['FIELDS'] as $name=>$fieldInfo)
{
$valueRV='';
switch($name)
{
case 'DATE_PAID':
$valueRV = $traits['DATE_PAYED'];
break;
case 'PAY_NUMBER':
$valueRV = $traits['PAY_VOUCHER_NUM'];
break;
case 'DATE_ALLOW_DELIVERY_LAST':
$valueRV = $traits['DATE_ALLOW_DELIVERY'];
break;
case 'DELIVERY_SERVICE':
case 'DELIVERY_ID':
case 'PAY_SYSTEM':
case 'PAY_SYSTEM_ID':
case 'USER_DESCRIPTION':
$valueRV = $traits[$name];
break;
case 'ALLOW_DELIVERY':
//??????
break;
case 'ORDER_PAID':
$valueRV = $traits['PAYED'];
break;
case 'CANCEL':
$valueRV = $traits['CANCELED'];
break;
case 'FINAL_STATUS':
$valueRV = ($traits['STATUS_ID']=='F'? 'Y':'N');
break;
case 'ORDER_STATUS':
$valueRV = "[".$traits['STATUS_ID']."] ".static::getStatusNameById($traits['STATUS_ID']);
break;
case 'ORDER_STATUS_ID':
$valueRV = $traits['STATUS_ID'];
break;
case 'DATE_CANCEL':
$valueRV = $traits['DATE_CANCELED'];
break;
case 'CANCEL_REASON':
$valueRV = $traits['REASON_CANCELED'];
break;
case 'DATE_STATUS':
$valueRV = $traits['DATE_STATUS'];
break;
case 'SITE_NAME':
$valueRV = '['.$traits['LID'].'] '.static::getSiteNameByLid($traits['LID']);
break;
case 'REKV':
$value = array_merge($value, $this->externalizeRekv($businessValue[$name], $fieldInfo));
break;
}
if(!in_array($name, array('REKV')))
{
$value[] = $this->externalizeRekvValue($name, $valueRV, $fieldInfo);
}
}
break;
}
if(!in_array($k, array('DISCOUNTS', 'TAXES', 'STORES', 'ITEMS', 'REK_VALUES')))
{
$this->externalizeField($value, $v);
}
$result[$k] = $value;
}
$result = $this->modifyTrim($result);
return $result;
}