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);
Когда в битриксе изобретут DTO и ооп для всей этой мешуры?)
ОтветитьУдалитьНечитаемо же