| Код |
|---|
$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
Как заставить работать корзину? Мне нужно чтобы в заказе была цена со скидкой и без.