• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/order/productmanager/entityproductconverter.php
  • Класс: Bitrix\Crm\Order\ProductManager\EntityProductConverter
  • Вызов: EntityProductConverter::convertToSaleBasketFormat
public function convertToSaleBasketFormat(array $product): array
{
	$prices = $this->pricesConverter->convertToSaleBasketPrices(
		(float)($product['PRICE'] ?? 0),
		(float)($product['PRICE_EXCLUSIVE'] ?? 0),
		(float)($product['PRICE_NETTO'] ?? 0),
		(float)($product['PRICE_BRUTTO'] ?? 0),
		isset($product['TAX_INCLUDED']) && $product['TAX_INCLUDED'] === 'Y'
	);

	$vatRate = null;
	if (isset($product['TAX_RATE']) && is_numeric($product['TAX_RATE']))
	{
		$vatRate = (float)$product['TAX_RATE'] * 0.01;
	}

	$xmlId = null;
	if (isset($product['ID']) && is_numeric($product['ID']))
	{
		$xmlId = BasketXmlId::getXmlIdFromRowId((int)$product['ID']);
	}

	return [
		'NAME' => $product['PRODUCT_NAME'],
		'MODULE' => $product['PRODUCT_ID'] ? 'catalog' : '',
		'PRODUCT_ID' => $product['PRODUCT_ID'],
		'OFFER_ID' => $product['PRODUCT_ID'], // used in basket builders
		'QUANTITY' => $product['QUANTITY'],
		'DISCOUNT_PRICE' => $prices['DISCOUNT_PRICE'],
		'BASE_PRICE' => $prices['BASE_PRICE'],
		'PRICE' => $prices['PRICE'],
		'CUSTOM_PRICE' => 'Y',
		'MEASURE_CODE' => $product['MEASURE_CODE'] ?? null,
		'MEASURE_NAME' => $product['MEASURE_NAME'] ?? '',
		'VAT_RATE' => $vatRate,
		'VAT_INCLUDED' => $product['TAX_INCLUDED'] ?? 'N',
		'XML_ID' => $xmlId,
		'TYPE' => ProductTypeMapper::getType((int)($product['TYPE'] ?? 0)),
		// not `sale` basket item, but used.
		'DISCOUNT_SUM' => $prices['DISCOUNT_PRICE'],
		'DISCOUNT_RATE' => $product['DISCOUNT_RATE'] ?? null,
		'DISCOUNT_TYPE_ID' => $product['DISCOUNT_TYPE_ID'] ?? null,
	];
}