• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_product_row.php
  • Класс: \CAllCrmProductRow
  • Вызов: CAllCrmProductRow::GetByID
static function GetByID($ID, $arOptions = array())
{
	$ID = intval($ID);

	$arResult = CCrmEntityHelper::GetCached(self::CACHE_NAME, $ID);
	if (is_array($arResult))
	{
		return $arResult;
	}

	$dbRes = CCrmProductRow::GetList(array(), array('ID' => $ID), false, false, array(), $arOptions);
	$arResult = $dbRes->Fetch();

	if(is_array($arResult))
	{
		CCrmEntityHelper::SetCached(self::CACHE_NAME, $ID, $arResult);

		if(isset($arResult['OWNER_TYPE']))
		{
			// Remove space padding of CHAR column
			$arResult['OWNER_TYPE'] = trim($arResult['OWNER_TYPE']);
		}

		$productID = $arResult['PRODUCT_ID'] = intval($arResult['PRODUCT_ID']);
		$arResult['PRICE'] = round(doubleval($arResult['PRICE']), 2);
		$arResult['QUANTITY'] = round(doubleval($arResult['QUANTITY']), 4);

		$arResult['DISCOUNT_TYPE_ID'] = isset($arResult['DISCOUNT_TYPE_ID'])
			? intval($arResult['DISCOUNT_TYPE_ID']) : \Bitrix\Crm\Discount::UNDEFINED;
		$arResult['DISCOUNT_RATE'] = isset($arResult['DISCOUNT_RATE']) ? round(doubleval($arResult['DISCOUNT_RATE']), 2) : 0.0;
		$arResult['DISCOUNT_SUM'] = isset($arResult['DISCOUNT_SUM']) ? round(doubleval($arResult['DISCOUNT_SUM']), 2) : 0.0;

		$arResult['TAX_RATE'] = isset($arResult['TAX_RATE']) ? round(doubleval($arResult['TAX_RATE']), 2) : null;
		$arResult['TAX_INCLUDED'] = isset($arResult['TAX_INCLUDED']) ? $arResult['DISCOUNT_SUM'] : 'N';
		$arResult['CUSTOMIZED'] = isset($arResult['CUSTOMIZED']) ? $arResult['CUSTOMIZED'] : 'N';

		$arResult['MEASURE_CODE'] = isset($arResult['MEASURE_CODE']) ? intval($arResult['MEASURE_CODE']) : 0;
		$arResult['MEASURE_NAME'] = isset($arResult['MEASURE_NAME']) ? $arResult['MEASURE_NAME'] : '';

		if($productID > 0 && $arResult['MEASURE_CODE'] <= 0)
		{
			$defaultMeasureInfo = \Bitrix\Crm\Measure::getDefaultMeasure();
			$measureInfos = \Bitrix\Crm\Measure::getProductMeasures($productID);

			if(isset($measureInfos[$productID]) && !empty($measureInfos[$productID]))
			{
				$measureInfo = $measureInfos[$productID][0];
				$result['MEASURE_CODE'] = $measureInfo['CODE'];
				$result['MEASURE_NAME'] = $measureInfo['SYMBOL'];
			}
			elseif($defaultMeasureInfo !== null)
			{
				$result['MEASURE_CODE'] = $defaultMeasureInfo['CODE'];
				$result['MEASURE_NAME'] = $defaultMeasureInfo['SYMBOL'];
			}
		}
	}

	return $arResult;
}