• Модуль: 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;
}