точнее убрать некоторые элементы/
Цепляюсь на событие OnSaleOrderBeforeSaved
Получаю корзину $basket = $order->getBasket();
Просто так изменить нельзя, в отгрузки уже добавлен товар. Поэтому получаю отгрузки
$shipmentCollection = $order->getShipmentCollection();
Далее делаю так (перебираю корзину, перебираю отгрузки и пытаюсь изменить количество сначала в отгрузках, потом в корзине):
foreach ($basket as $basketItem) {
foreach ($shipmentCollection as $orderShipment)
{
$collection = $orderShipment->getShipmentItemCollection();
$item = $collection->getItemByBasketId($basketItem->getField('ID'));
if (!empty($item))
{
$item->setQuantity((int)$arResult['AVAILABLES'][$basketItem->getProductId()]);
}
}
$result = $basketItem->setField('QUANTITY', (int)$arResult['AVAILABLES'][$basketItem->getProductId()]);
В корзине количество не меняется, потому что товар в отгрузках (пишет ошибку).
А вот изменерие таким образом в отгрузках выдает:
[Bitrix\Main\NotSupportedException]
(150)
/bitrix/modules/sale/lib/shipment.php:2151
#0: Bitrix\Sale\Shipment->calculateDelivery()
......
Подскажите что делаю не так? Почему в отгрузках не могу изменить количество товара элемента корзины?
Количество товара точно больше 0
считай корзину, удали товар (отгрузки сами удалятся) создай нужный товар сохрани
спасибо, но плохой вариант думаю. Там свойства у товаров и т.д. Мне надо просто по сути изменить количество в отгрузке. Главное в другом месте работает, а тут почему-то ошибку выдает.
Обсуждают сегодня