• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/order/builder/orderbuilder.php
  • Класс: BitrixSaleHelpersOrderBuilderOrderBuilder
  • Вызов: OrderBuilder::buildPayableItems
public function buildPayableItems(Payment $payment, array $payableItems): Result
{
	$result = new Result();

	$basket = $this->order->getBasket();
	$payableItemCollection = $payment->getPayableItemCollection();

	foreach ($payableItems as $item)
	{
		$payableItem = null;

		if (isset($item['BASKET_CODE']))
		{
			/** @var BasketItem $basketItem */
			$basketItem = $basket->getItemByBasketCode($item['BASKET_CODE']);
			if ($basketItem)
			{
				$payableItem = $payableItemCollection->createItemByBasketItem($basketItem);
			}
		}
		elseif (isset($item['DELIVERY_ID']))
		{
			/** @var Shipment $shipment */
			foreach ($this->order->getShipmentCollection()->getNotSystemItems() as $shipment)
			{
				if (
					$shipment->getId() === 0
					&& (int)$item['DELIVERY_ID'] === $shipment->getDeliveryId()
				)
				{
					$payableItem = $payableItemCollection->createItemByShipment($shipment);
				}
			}
		}

		if ($payableItem === null)
		{
			continue;
		}

		$quantity = floatval(str_replace(',', '.', $item['QUANTITY']));

		$payableItem->setField('QUANTITY', $quantity);
	}

	return $result;
}