• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/order.php
  • Класс: BitrixSaleControllerOrder
  • Вызов: Order::tryModifyAction
public function tryModifyAction(array $fields)
{
	$r = $this->modify($fields);

	if($r->isSuccess())
	{
		/** @var BitrixSaleOrder $order */
		$order = $r->getData()['ORDER'];

		$result = $this->toArray($order);

		if(is_array($result['ORDER']['PAYMENTS']))
		{
			foreach ($result['ORDER']['PAYMENTS'] as $ix=>&$fields)
			{
				$paySystems = Manager::getListWithRestrictions(
					$order
						->getPaymentCollection()
						->getItemByIndex($ix)
				);

				foreach ($paySystems as $paySystem)
				{
					if((int)$paySystem['PAY_SYSTEM_ID']>0) //Without Inner
					{
						$fields['LIST_PAY_SYSTEM_WITH_RESTRICTIONS'][]=[
							'ID'=>$paySystem['PAY_SYSTEM_ID'],
						];
					}
				}
			}
		}

		if(is_array($result['ORDER']['SHIPMENTS']))
		{
			foreach ($result['ORDER']['SHIPMENTS'] as $ix=>&$fields)
			{
				$services = BitrixSaleDeliveryServicesManager::getRestrictedObjectsList(
					$order
						->getShipmentCollection()
						->getItemByIndex($ix)
				);

				foreach ($services as $service)
				{
					$fields['LIST_DELIIVERY_SERVICES_RESTRICTIONS'][]=[
						'ID'=>$service->getId(),
					];
				}
			}
		}
		return $result;
	}
	else
	{
		$this->addErrors($r->getErrors());
		return null;
	}
}