Код |
---|
$productId = 1632013; $quantity = 1; \Bitrix\Main\Loader::includeModule('sib.core'); $price = \Sib\Core\Catalog::getDiscountPriceArray($productId); $priceTypeRegion = \Sib\Core\Prices::getPriceTypeRegion(); $priceEquals = \Sib\Core\Prices::getPriceEquals(); $priceTypeId = ($price['PRICE_DISCOUNT'] != 0 && $price['PRICE_DISCOUNT'] < $price['BASE_PRICE']) ? $priceEquals[$priceTypeRegion] : $priceTypeRegion; $basket = \Bitrix\Sale\Basket::LoadItemsForFUser(\Bitrix\Sale\Fuser::getId(), SITE_ID); if ($basketItem = $basket->getExistsItem('catalog', $productId)) { $basketItem->setField('QUANTITY', $basketItem->getQuantity() + $quantity); } else { $basketItem = $basket->createItem('catalog', $productId); $basketItem->setFields([ 'CUSTOM_PRICE' => 'Y', 'PRODUCT_PROVIDER_CLASS' => '', 'PRICE' => $price['PRICE_DISCOUNT'] > 0 ? $price['PRICE_DISCOUNT'] : $price['BASE_PRICE'], 'BASE_PRICE' => $price['BASE_PRICE'], 'PRICE_TYPE_ID' => $priceTypeId, 'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(), 'LID' => \Bitrix\Main\Context::getCurrent()->getSite(), 'NAME' => 'test', 'PRODUCT_XML_ID' => '123123123123', 'QUANTITY' => $quantity ]); } $basket->save(); |
Корзина не сохраняет поле PRICE, которое ей указали, а записывает значение из поля BASE_PRICE
Как заставить работать корзину? Мне нужно чтобы в заказе была цена со скидкой и без.