• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/check.php
  • Класс: BitrixSaleCashboxCheck
  • Вызов: Check::extractDataFromBasketItem
private function extractDataFromBasketItem(BasketItem $basketItem) : array
{
	static $shopPrices = [];

	$order = $basketItem->getBasket()->getOrder();

	if ($order)
	{
		$discounts = $order->getDiscount();
		if (!$shopPrices)
		{
			$shopPrices = $discounts->getShowPrices();
		}
	}

	$basketCode = $basketItem->getBasketCode();
	if (!empty($shopPrices['BASKET'][$basketCode]))
	{
		$basketItem->setFieldNoDemand('BASE_PRICE', $shopPrices['BASKET'][$basketCode]['SHOW_BASE_PRICE']);
		$basketItem->setFieldNoDemand('PRICE', $shopPrices['BASKET'][$basketCode]['SHOW_PRICE']);
		$basketItem->setFieldNoDemand('DISCOUNT_PRICE', $shopPrices['BASKET'][$basketCode]['SHOW_DISCOUNT']);
	}
	unset($basketCode);

	$data = [
		'ENTITY' => $basketItem,
		'PRODUCT_ID' => $basketItem->getProductId(),
		'NAME' => $basketItem->getField('NAME'),
		'BASE_PRICE' => $basketItem->getBasePriceWithVat(),
		'PRICE' => $basketItem->getPriceWithVat(),
		'SUM' => $basketItem->getFinalPrice(),
		'CURRENCY' => $basketItem->getCurrency(),
		'QUANTITY' => (float)$basketItem->getQuantity(),
		'MEASURE_CODE' => $basketItem->getField('MEASURE_CODE'),
		'VAT' => $this->getProductVatId($basketItem),
		'PAYMENT_OBJECT' => $this->getPaymentObject($basketItem),
	];

	if ($order)
	{
		$siteId = $order->getSiteId();
		$propertiesCodes = ['ARTNUMBER'];
		$itemProperties = self::getCatalogPropertiesForItem($basketItem->getProductId(), $propertiesCodes, $siteId);
		$data['PROPERTIES'] = $itemProperties;
	}
	else
	{
		$data['PROPERTIES'] = [];
	}

	if ($basketItem->isCustomPrice())
	{
		$data['BASE_PRICE'] = $basketItem->getPriceWithVat();
	}
	else
	{
		if ((float)$basketItem->getDiscountPrice() != 0)
		{
			$data['DISCOUNT'] = [
				'PRICE' => (float)$basketItem->getDiscountPrice(),
				'TYPE' => 'C',
			];
		}
	}

	return $data;
}