• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/ordercompatibility.php
  • Класс: BitrixSaleCompatibleOrderCompatibility
  • Вызов: OrderCompatibility::resetOrderPrice
public function resetOrderPrice(SaleBasket $basket, array $requestFields)
{

	if (empty($requestFields['BASKET_ITEMS']))
		return false;

	$resetPrice = false;
	$resetPriceDelivery = false;

	/** @var SaleOrder $order */
	$order = $this->getOrder();

	if ($order->getId() == 0)
	{
		$order->resetData(array('PRICE_DELIVERY'));
		$resetPriceDelivery = true;
	}

	foreach ($requestFields['BASKET_ITEMS'] as $basketData)
	{
		if (!isset($basketData['ID']) || intval($basketData['ID']) <= 0)
			continue;

		/** @var SaleBasketItem $basketItem */
		if (!$basketItem = $basket->getItemById($basketData['ID']))
			continue;

		if ($resetPriceDelivery === false)
		{
			if ($order->getId() == 0 || isset($basketData['PRICE'])
				&& floatval($basketData['PRICE']) != $basketItem->getPrice())
			{

				$order->resetData(array('PRICE'));
				$resetPrice = true;
			}
		}


//			if ($resetPriceDelivery === false)
//			{
//				if ($order->getId() == 0 || isset($basketData['QUANTITY'])
//					&& floatval($basketData['QUANTITY']) != $basketItem->getQuantity())
//				{
//					$order->resetData(array('PRICE_DELIVERY'));
//					$resetPriceDelivery = true;
//				}
//			}

		if ($resetPriceDelivery && $resetPrice)
			return true;
	}


	//
	return false;
}