Здравствуйте. Подскажите, почему не применяется скидка на доставку, если корзина наполняется через $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' ); |