- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/helpers/controller/action/entity/order.php
- Класс: BitrixSaleHelpersControllerActionEntityOrder
- Вызов: Order::getTotal
static function getTotal(SaleOrder $order)
{
/** @var SaleBasket $basket */
//$basket = $order->getBasket();
$calculateBasket = $order->getBasket()->createClone();
$discounts = $order->getDiscount();
$showPrices = $discounts->getShowPrices();
if (!empty($showPrices['BASKET']))
{
foreach ($showPrices['BASKET'] as $basketCode => $data)
{
$basketItem = $calculateBasket->getItemByBasketCode($basketCode);
if ($basketItem instanceof SaleBasketItemBase)
{
$basketItem->setFieldNoDemand('BASE_PRICE', $data['SHOW_BASE_PRICE']);
$basketItem->setFieldNoDemand('PRICE', $data['SHOW_PRICE']);
$basketItem->setFieldNoDemand('DISCOUNT_PRICE', $data['SHOW_DISCOUNT']);
}
}
}
unset($showPrices);
$result = [
'WEIGHT_UNIT' => ConfigOption::get('sale', 'weight_unit', false, $order->getSiteId()),
'WEIGHT_KOEF' => ConfigOption::get('sale', 'weight_koef', 1, $order->getSiteId()),
];
/* $result['BASKET_POSITIONS'] = $basket->count();
$result['ORDER_PRICE'] = PriceMaths::roundPrecision($basket->getPrice());
$result['ORDER_WEIGHT'] = $basket->getWeight();
$result['PRICE_WITHOUT_DISCOUNT_VALUE'] = $basket->getBasePrice();
$result['BASKET_PRICE_DISCOUNT_DIFF_VALUE'] = PriceMaths::roundPrecision(
$basket->getBasePrice() - $basket->getPrice()
);
$result['DISCOUNT_PRICE'] = PriceMaths::roundPrecision(
$order->getDiscountPrice() + ($result['PRICE_WITHOUT_DISCOUNT_VALUE'] - $result['ORDER_PRICE'])
); */
$result['BASKET_POSITIONS'] = $calculateBasket->count();
$result['ORDER_PRICE'] = PriceMaths::roundPrecision($calculateBasket->getPrice());
$result['ORDER_WEIGHT'] = $calculateBasket->getWeight();
$result['PRICE_WITHOUT_DISCOUNT_VALUE'] = $calculateBasket->getBasePrice();
$result['BASKET_PRICE_DISCOUNT_DIFF_VALUE'] = PriceMaths::roundPrecision(
$calculateBasket->getBasePrice() - $calculateBasket->getPrice()
);
$result['DISCOUNT_PRICE'] = PriceMaths::roundPrecision(
$order->getDiscountPrice() + ($result['PRICE_WITHOUT_DISCOUNT_VALUE'] - $result['ORDER_PRICE'])
);
$result['DELIVERY_PRICE'] = PriceMaths::roundPrecision($order->getDeliveryPrice());
$result['ORDER_TOTAL_PRICE'] = PriceMaths::roundPrecision($order->getPrice());
return $result;
}