Процесс самостоятельного расчета скидок при получении корзины через API или получить корзину через API с уже примененными со всеми скидками, купонами и правилами работ корзины.
Недавно столкнулся с проблемой, что, при получении корзины через API в нем не применены ни какие купоны и скидки, хотя купон в сессии хранится.
Долго искал решения проблемы в форумах, но, не нашел внятного ответа и решения.
Обратился в саппорт, что благо помогли.
Вот теперь хочу поделится кодом который помог мне избавится от головной боли.
$arOrder содержит в себе массив корзины с общей суммой корзины и BASKET_ITEMS где есть список товаров со скидкой.
Также когда спросил у саппорта есть ли все это в документации, их ответ
Недавно столкнулся с проблемой, что, при получении корзины через API в нем не применены ни какие купоны и скидки, хотя купон в сессии хранится.
Долго искал решения проблемы в форумах, но, не нашел внятного ответа и решения.
Обратился в саппорт, что благо помогли.
Вот теперь хочу поделится кодом который помог мне избавится от головной боли.
$fuserId = CSaleBasket::GetBasketUserID(); $dbBasketItems = CSaleBasket::GetList( array("ID" => "ASC"), array( "FUSER_ID" => $fuserId, "LID" => SITE_ID, "ORDER_ID" => "NULL", "DELAY"=>"N" ), false, false, array( "ID", "NAME", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "PRODUCT_PRICE_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT", "DETAIL_PAGE_URL", "NOTES", "CURRENCY", "VAT_RATE", "CATALOG_XML_ID", "PRODUCT_XML_ID", "SUBSCRIBE", "DISCOUNT_PRICE", "PRODUCT_PROVIDER_CLASS", "TYPE", "SET_PARENT_ID" ) ); $allSum = 0; $allWeight = 0; $arResult = array(); while ($arBasketItems = $dbBasketItems->Fetch()) { $allSum += ($arBasketItems["PRICE"] * $arBasketItems["QUANTITY"]); $allWeight += ($arBasketItems["WEIGHT"] * $arBasketItems["QUANTITY"]); $arResult[] = $arBasketItems; } $arOrder = array( 'SITE_ID' => SITE_ID, 'USER_ID' => $GLOBALS["USER"]->GetID(), 'ORDER_PRICE' => $allSum, // сумма всей корзины 'ORDER_WEIGHT' => $allWeight, // вес всей корзины 'BASKET_ITEMS' => $arResult // товары сами ); $arOptions = array( 'COUNT_DISCOUNT_4_ALL_QUANTITY' => "Y", ); $arErrors = array(); CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors); return $arOrder; |
$arOrder содержит в себе массив корзины с общей суммой корзины и BASKET_ITEMS где есть список товаров со скидкой.
Также когда спросил у саппорта есть ли все это в документации, их ответ
В документации процесс самостоятельного расчета скидок не описан. |