Здравствуйте1 Есть кастомизированный sale.order.ajax c функционалом скидочных купонов. Проблема в том, что при применнении купона и аякс запросе метод CSaleOrder::DoCalculateOrder() не пересчитывает заказ. А пересчёт происходит только пр перезагрузке страницы.
Вообще, делаю так:
if (isset($_REQUEST['AJAX_CALL']) && $_REQUEST['AJAX_CALL'] == "Y") {
$arError = array();
$arWarnings = array();
$arOrderDat = CSaleOrder::DoCalculateOrder(
SITE_ID,
$GLOBALS["USER"]->GetID(),
$arResult['BASKET_ITEMS'],
$arUserResult['PERSON_TYPE_ID'],
$arUserResult['ORDER_PROP'],
$arUserResult['DELIVERY_ID'],
$arUserResult['PAY_SYSTEM_ID'],
array(),
$arError,
$arWarnings
);
if ($arOrderDat) {
foreach ($arResult['BASKET_ITEMS'] as $id => &$item) {
$item = &$arResult['BASKET_ITEMS'][$id];
$item['PRICE'] = ($arOrderDat['BASKET_ITEMS'][$id]['PRICE']);
$item['DISCOUNT_PRICE'] = ($item['BASE_PRICE'] - $arOrderDat['BASKET_ITEMS'][$id]['PRICE']);
$item['PRICE_FORMATED'] = SaleFormatCurrency($item['PRICE'], $arResult["BASE_LANG_CURRENCY"]);
}
$arOrderDat['BASKET_ITEMS'] = $arResult['BASKET_ITEMS'];
$orderPrice = $arResult["ORDER_PRICE"] = $arOrderDat["ORDER_PRICE"];
}
}