• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/order/builder/basketbuilderwithdistributedquantitycontrol.php
  • Класс: Bitrix\Crm\Order\Builder\BasketBuilderWithDistributedQuantityControl
  • Вызов: BasketBuilderWithDistributedQuantityControl::getNotDistributedItemQuantity
private function getNotDistributedItemQuantity(BasketItem $basketItem)
{
	$order = $this->getOrder();
	if (!$order)
	{
		return 0;
	}

	if ($this->getSettingsContainer()->getItemValue('builderScenario') === SettingsContainer::BUILDER_SCENARIO_SHIPMENT)
	{
		$systemShipment = $order->getShipmentCollection()->getSystemShipment();
		$quantity = $systemShipment->getBasketItemQuantity($basketItem);

		if (isset($this->formData['SHIPMENT']))
		{
			foreach ($this->formData['SHIPMENT'] as $shipmentArray)
			{
				if (empty($shipmentArray['ID']))
				{
					continue;
				}

				$shipment = $order->getShipmentCollection()->getItemById($shipmentArray['ID']);
				$quantity += $shipment->getBasketItemQuantity($basketItem);
			}
		}

		return $quantity;
	}

	$distributedQuantity = 0;
	/** @var Payment $payment */
	foreach ($order->getPaymentCollection() as $payment)
	{
		/** @var PayableBasketItem $item */
		foreach ($payment->getPayableItemCollection()->getBasketItems() as $item)
		{
			$entity = $item->getEntityObject();
			if ($entity->getBasketCode() === $basketItem->getBasketCode())
			{
				$distributedQuantity += $item->getQuantity();
			}
		}
	}

	return $basketItem->getQuantity() - $distributedQuantity;
}