- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/exchange/entity/shipmentimport.php
- Класс: BitrixSaleExchangeEntityShipmentImport
- Вызов: ShipmentImport::synchronizeQuantityShipmentItems
public function synchronizeQuantityShipmentItems(SaleBasketItem $basketItem, $needQuantity)
{
$result = new SaleResult();
if(intval($needQuantity) <= 0)
{
return $result;
}
$entity = $this->getEntity();
/** @var SaleOrder $order */
$order = $this->getParentEntity();
$shipmentCollection = $order->getShipmentCollection();
/** @var SaleShipment $entity */
foreach ($shipmentCollection as $shipment)
{
/** @var SaleShipment $shipment */
if(!empty($entity) && $entity->getId() == $shipment->getId())
continue;
if($shipment->isShipped() || $shipment->isSystem())
continue;
$basketQuantity = $shipment->getBasketItemQuantity($basketItem);
if(empty($basketQuantity))
continue;
$shipmentItem = static::getShipmentItem($shipment, $basketItem);
if($basketQuantity >= $needQuantity)
{
$this->fillShipmentItem($shipmentItem, 0, $needQuantity);
$needQuantity = 0;
}
else
{
$this->fillShipmentItem($shipmentItem, 0, $basketQuantity);
$needQuantity -= $basketQuantity;
}
$this->setCollisions(EntityCollisionType::ShipmentBasketItemsModify, $shipment);
if($needQuantity == 0)
break;
}
if($needQuantity != 0)
$result->addError(new Error(GetMessage('SALE_EXCHANGE_ENTITY_SHIPMENT_SYNCHRONIZE_QUANTITY_ERROR'), 'SYNCHRONIZE_QUANTITY_ERROR'));
return $result;
}