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