- Модуль: 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,
];
}