Здравствуйте. Подскажите, почему не применяется скидка на доставку, если корзина наполняется через $newBasket = Basket::create('s1'); ?
Если корзина формируется через $basket = \Bitrix\Sale\Basket::loadItemsForFUser то скидка к доставке применяется.
Мне нужно создать заказ из одного товара, не трогая существующую корзину пользователя, но чтобы к доставке применялась скидка.
Делаю это так:
Но если использовать корзину текущего пользователя, то всё работает нормально и скидка на доставку применяется:
Если корзина формируется через $basket = \Bitrix\Sale\Basket::loadItemsForFUser то скидка к доставке применяется.
Мне нужно создать заказ из одного товара, не трогая существующую корзину пользователя, но чтобы к доставке применялась скидка.
Делаю это так:
| Код |
|---|
$newBasket = Basket::create('s1');
$item = $newBasket->createItem('catalog', 3299);
$item->setFields(array(
'NAME' => 'Товар 1',
'QUANTITY' => 1,
'CURRENCY' => $currencyCode,
'LID' => 's1',
'PRICE' => 555,
'CUSTOM_PRICE' => 'Y'
));
// Создаём новый заказ
$order = Order::create('s1', 68);
$order->setPersonTypeId(1);
$order->setField('CURRENCY', $currencyCode);
$order->setBasket($newBasket);
// Создаём одну отгрузку и устанавливаем способ доставки
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(Bitrix\Sale\Delivery\Services\Manager::getObjectById(9));
$shipmentItemCollection = $shipment->getShipmentItemCollection();
foreach ($newBasket as $basketItem) {
$itemx = $shipmentItemCollection->createItem($basketItem);
$itemx->setQuantity($basketItem->getQuantity());
}
$order->doFinalAction(true);
$result = $order->save();
|
| Код |
|---|
$newBasket = \Bitrix\Sale\Basket::loadItemsForFUser( \Bitrix\Sale\Fuser::getId(), 's1' ); |