• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Sale/Reservation/ReservationService.php
  • Класс: Bitrix\Crm\Service\Sale\Reservation\ReservationService
  • Вызов: ReservationService::reservationProductsByEntityProductRows
public function reservationProductsByEntityProductRows(int $entityTypeId, int $entityId, array $productRows): Result
{
	$result = new Result();

	$isHasManualReserves = false;
	foreach ($productRows as $row)
	{
		if (isset($row['TYPE']) && $this->isRestrictedType((int)$row['TYPE']))
		{
			continue;
		}

		$rowId = (int)($row['ID'] ?? 0);
		if (!$rowId)
		{
			continue;
		}

		$storeId = $row['STORE_ID'] ?? null;
		$dateReserveEnd = $row['DATE_RESERVE_END'] ?? null;
		$reserveQuantity = $row['INPUT_RESERVE_QUANTITY'] ?? $row['RESERVE_QUANTITY'] ?? null;

		if (empty($storeId) && empty($dateReserveEnd) && empty($reserveQuantity))
		{
			continue;
		}

		$reserveQuantity = (float)$reserveQuantity;
		$storeId = $storeId ? (int)$storeId : null;
		$dateReserveEnd = $dateReserveEnd ? Date::createFromText($dateReserveEnd) : null;

		$reserveResult = $this->reservationProductRow($rowId, $reserveQuantity, $storeId, $dateReserveEnd);
		$result->addErrors($reserveResult->getErrors());

		$isHasManualReserves = true;
	}

	if (!$isHasManualReserves)
	{
		return $this->reservationProducts($entityTypeId, $entityId);
	}

	return $result;
}