• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/controller.php
  • Класс: BitrixSaleControllerController
  • Вызов: Controller::getAdditionalFields
private function getAdditionalFields(BitrixSaleOrder $order)
{
	$ixInternal = [];
	//region fill internal Index
	foreach(BitrixSalePersonType::getList(['select'=>['ID', 'XML_ID']]) as $row)
		$ixInternal['personType'][$row['ID']] = $row['XML_ID'];

	foreach(BitrixSaleOrderStatus::getList(['select'=>['ID', 'XML_ID']]) as $row)
		$ixInternal['orderStatus'][$row['ID']] = $row['XML_ID'];

	foreach(BitrixSaleProperty::getList(['select'=>['ID', 'XML_ID']])->fetchAll() as $row)
		$ixInternal['properties'][$row['ID']] = $row['XML_ID'];

	foreach(BitrixSalePaySystemManager::getList(['select'=>['ID', 'XML_ID', 'IS_CASH']])->fetchAll() as $row)
	{
		$ixInternal['paySystems'][$row['ID']]['XML_ID'] = $row['XML_ID'];
		$ixInternal['paySystems'][$row['ID']]['IS_CASH'] = $row['IS_CASH'];
	}

	foreach(BitrixSaleDeliveryServicesManager::getActiveList() as $row)
		$ixInternal['deliverySystems'][$row['ID']] = $row['XML_ID'];

	foreach(BitrixSaleDeliveryStatus::getList(['select'=>['ID', 'XML_ID']]) as $row)
		$ixInternal['deliveryStatus'][$row['ID']] = $row['XML_ID'];

	foreach(BitrixSaleTradingPlatformTable::getList(['select'=>['ID', 'XML_ID']])->fetchAll() as $row)
		$ixInternal['tradingPlatform'][$row['ID']] = $row['XML_ID'];
	//endregion

	$r['ORDER'][$order->getInternalId()] = [
		'PERSON_TYPE_XML_ID'=>$ixInternal['personType'][$order->getPersonTypeId()],
		'STATUS_XML_ID'=>$ixInternal['orderStatus'][$order->getField('STATUS_ID')]];

	foreach ($order->getPropertyCollection() as $property)
		$r['PROPERTIES'][$property->getInternalIndex()] = ['ORDER_PROPS_XML_ID'=>$ixInternal['properties'][$property->getPropertyId()]];

	foreach ($order->getPaymentCollection() as $payment)
		$r['PAYMENTS'][$payment->getInternalIndex()] = [
			'PAY_SYSTEM_XML_ID'=>$ixInternal['paySystems'][$payment->getPaymentSystemId()]['XML_ID'],
			'PAY_SYSTEM_IS_CASH'=>$ixInternal['paySystems'][$payment->getPaymentSystemId()]['IS_CASH']
		];

	/** @var BitrixSaleShipment $shipment */
	foreach ($order->getShipmentCollection() as $shipment)
	{
		$shipmentIndex = $shipment->getInternalIndex();
		$r['SHIPMENTS'][$shipmentIndex] = [
			'DELIVERY_XML_ID'=>$ixInternal['deliverySystems'][$shipment->getDeliveryId()],
			'STATUS_XML_ID'=>$ixInternal['deliveryStatus'][$shipment->getField('STATUS_ID')]];
	}

	/** @var TradeBindingEntity $binding */
	foreach ($order->getTradeBindingCollection() as $binding)
		if($binding->getTradePlatform() !== null)
			$r['TRADE_BINDINGS'][$binding->getInternalIndex()] = ['TRADING_PLATFORM_XML_ID'=>$ixInternal['tradingPlatform'][$binding->getTradePlatform()->getId()]];

	return $r;
}