Bitrix: узнать стоимость товара в корзине

Как узнать будущую цену товара в корзине с учетом скидок. Например скидки могут зависить от количества товара.


<?

$offers_price_in_cart = Array();

foreach ($arResult["OFFERS"] as $offer) {
    $offers_price_in_cart[$offer["PROPERTIES"]["SIZES"]["VALUE_ENUM_ID"]] = Array(
        "ID" => $offer["ID"]
        , "PRICE" => Array()
        );
}

function get_offers_price(&$offers_price_in_cart, $count) {
    foreach ($offers_price_in_cart as &$offer) {
        $offer["IN_CART"] = Add2BasketByProductID($offer["ID"], $count, array(), Array(Array("NAME" => "CHECK_PRICE", "CODE" => "CHECK_PRICE", "VALUE" => "1", "SORT" => "400")));
    }

    $arBasket = GetBasketList();

    $arOrder = array(
        'SITE_ID' => SITE_ID,
        'USER_ID' => $GLOBALS["USER"]->GetID(),
        'BASKET_ITEMS' => $arBasket
    );

    $arOptions = array(
        'COUNT_DISCOUNT_4_ALL_QUANTITY' => "N"
    );

    $arErrors = array();

    CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors);

    foreach ($offers_price_in_cart as &$offer) {
        foreach ($arOrder["BASKET_ITEMS"] as $arItem) {
            if ($offer["ID"] == $offer["IN_CART"]) {
                $offer["PRICE"][$count] = number_format($arItem["PRICE"], 0, "", "");
                break;
            }
        }
    }


    $db_res = CSaleBasket::GetPropsList(array(), array());
    while ($ar_res = $db_res->Fetch()) {
        if ($ar_res["CODE"] == "CHECK_PRICE") {
            CSaleBasket::Delete($ar_res["BASKET_ID"]);
        }
    }
}

get_offers_price($offers_price_in_cart, 80);

Комментарии

  1. Когда в битриксе изобретут DTO и ооп для всей этой мешуры?)
    Нечитаемо же

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Bitrix: кнопка добавить в корзину

Битрикс: какого х*я ты ищешь в неактивных разделах

Битрикс: highloadblock значения в свойстве список