• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/order.php
  • Класс: BitrixSaleControllerOrder
  • Вызов: Order::prepareFieldsImport
public function prepareFieldsImport($fields)
{
	$orderFields = [
		'USER_ID',
		'CURRENCY',
		'LID',
		'PERSON_TYPE_XML_ID',
		'STATUS_XML_ID',
		'CANCELED',
		'REASON_CANCELED',
		'COMMENTS',
		'XML_ID',
		'ID',
	];

	$orderPropertyValuesFields = [
		'NAME',
		'CODE',
		'ORDER_PROPS_XML_ID',
		'VALUE',
		'ORDER_PROPS_ID'
	];

	$basketItemFields = [
		'PRODUCT_XML_ID',
		'NAME',
		'MEASURE_CODE',
		'MEASURE_NAME',
		'QUANTITY',
		'CURRENCY',
		'XML_ID',
		'ID',
		'PRICE',
		'VAT_RATE',
		'VAT_INCLUDED',
	];

	$basketItemPropertiesFields = [
		'NAME',
		'VALUE',
		'CODE',
		'XML_ID'
	];

	$paymentFields = [
		'PAY_SYSTEM_XML_ID',
		'PAY_SYSTEM_ID',
		'PAID',
		'PAY_VOUCHER_NUM',
		'PAY_VOUCHER_DATE',
		'XML_ID',
		'ID',
		'SUM',
		'IS_RETURN',
		'PAY_RETURN_NUM',
		'PAY_RETURN_DATE',
		'PAY_RETURN_COMMENT',
		'COMMENTS',
	];

	$shipmentFields = [
		'BASE_PRICE_DELIVERY',
		'PRICE_DELIVERY',
		'ALLOW_DELIVERY',
		'DEDUCTED',
		'REASON_UNDO_DEDUCTED',
		'DELIVERY_DOC_NUM',
		'DELIVERY_DOC_DATE',
		'TRACKING_NUMBER',
		'XML_ID',
		'ID',
		'CANCELED',
		'COMMENTS',
		'STATUS_XML_ID',
		'STATUS_ID',
		'DELIVERY_XML_ID',
		'DELIVERY_ID',
	];

	$shipmentItemsFields = [
		'BASKET_ID',
		'QUANTITY',
		'XML_ID',
	];

	$result['ORDER'] = array_intersect_key($fields['ORDER'], array_flip($orderFields));

	if(isset($fields['ORDER']['PROPERTY_VALUES']))
	{
		foreach($fields['ORDER']['PROPERTY_VALUES'] as $k=>$v)
			$result['ORDER']['PROPERTY_VALUES'][$k] = array_intersect_key($v, array_flip($orderPropertyValuesFields));
	}

	if(isset($fields['ORDER']['BASKET_ITEMS']))
	{
		foreach($fields['ORDER']['BASKET_ITEMS'] as $k=>$item)
		{
			$result['ORDER']['BASKET_ITEMS'][$k] = array_intersect_key($item, array_flip($basketItemFields));

			if(isset($item['PROPERTIES']))
			{
				foreach($item['PROPERTIES'] as $kProps=>$pros)
				{
					$result['ORDER']['BASKET_ITEMS'][$k]['PROPERTIES'][$kProps] = array_intersect_key($pros, array_flip($basketItemPropertiesFields));
				}
			}
		}
	}

	if(isset($fields['ORDER']['PAYMENTS']))
	{
		foreach($fields['ORDER']['PAYMENTS'] as $k=>$payment)
		{
			$result['ORDER']['PAYMENTS'][$k] = array_intersect_key($payment, array_flip($paymentFields));
		}
	}

	if(isset($fields['ORDER']['SHIPMENTS']))
	{
		foreach($fields['ORDER']['SHIPMENTS'] as $k=>$shipment)
		{
			$result['ORDER']['SHIPMENTS'][$k] = array_intersect_key($shipment, array_flip($shipmentFields));

			if(isset($shipment['SHIPMENT_ITEMS']))
			{
				foreach($shipment['SHIPMENT_ITEMS'] as $kShipmentItem=>$shipmentItem)
				{
					$result['ORDER']['SHIPMENTS'][$k]['SHIPMENT_ITEMS'][$kShipmentItem] = array_intersect_key($shipmentItem, array_flip($shipmentItemsFields));
				}
			}
		}
	}

	return $result;
}