• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/order/builder/orderbuilder.php
  • Класс: BitrixSaleHelpersOrderBuilderOrderBuilder
  • Вызов: OrderBuilder::buildTradeBindings
public function buildTradeBindings()
{
	if(!isset($this->formData["TRADE_BINDINGS"]))
	{
		return $this;
	}

	if(!$this->removeTradeBindings())
	{
		return $this;
	}

	if(isset($this->formData["TRADE_BINDINGS"]) && count($this->formData["TRADE_BINDINGS"])>0)
	{
		$tradeBindingCollection = $this->order->getTradeBindingCollection();

		foreach($this->formData["TRADE_BINDINGS"] as $fields)
		{
			$tradingPlatformId = (int)($fields['TRADING_PLATFORM_ID'] ?? 0);
			if ($tradingPlatformId === 0)
			{
				continue;
			}

			$r = $this->tradingPlatformExists($tradingPlatformId);

			if($r->isSuccess())
			{
				$id = (int)($fields['ID'] ?? 0);
				$isNew = ($id <= 0);

				if($isNew)
				{
					$binding = $tradeBindingCollection->createItem();
				}
				else
				{
					$binding = $tradeBindingCollection->getItemById($id);

					if(!$binding)
					{
						$this->errorsContainer->addError(new Error('Can't find Trade Binding with id:"'.$id.'"', 'TRADE_BINDING_NOT_EXISTS'));
						continue;
					}
				}

				$fields = array_intersect_key($fields, array_flip(TradeBindingEntity::getAvailableFields()));

				$r = $binding->setFields($fields);
			}

			if(!$r->isSuccess())
				$this->errorsContainer->addErrors($r->getErrors());
		}
	}

	return $this;
}