• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/exchange/entity/orderimport.php
  • Класс: BitrixSaleExchangeEntityOrderImport
  • Вызов: OrderImport::synchronizeQuantityBasketItems
public function synchronizeQuantityBasketItems(array $basketItemsIndex)
    {
        $result = new SaleResult();

        /** @var Order $order */
        $order = $this->getEntity();
        if(empty($order))
            return $result;

        $basket = $order->getBasket();

        $shipmentCollection = $order->getShipmentCollection();
        /** @var BitrixSaleShipment $systemShipment */
        $systemShipment = $shipmentCollection->getSystemShipment();

        if(!empty($basketItemsIndex) && is_array($basketItemsIndex))
        {
            foreach ($basketItemsIndex as $basketIndexId => $basketIndexQuantity)
            {
                /** @var BitrixSaleBasketItem $foundedBasketItem */
                if ($foundedBasketItem = $basket->getItemById($basketIndexId))
                {
                    $systemBasketQuantity = $systemShipment->getBasketItemQuantity($foundedBasketItem);

                    if($basketIndexQuantity>$systemBasketQuantity)
                    {
                        $needQuantity = $basketIndexQuantity-$systemBasketQuantity;

                        /** @var ShipmentImport $shipmentImport */
					$shipmentImport = $this->entityCreateByFactory($this->getShipmentTypeId());
					ExchangeManagerImport::configure($shipmentImport);
                        $shipmentImport->setParentEntity($order);

                        $r = $shipmentImport->synchronizeQuantityShipmentItems($foundedBasketItem, $needQuantity);
                        if($r->isSuccess())
                        {
                            $this->setCollisions(EntityCollisionType::OrderSynchronizeBasketItemsModify, $order);
                        }
                        else
                        {
						$this->setCollisions(EntityCollisionType::OrderSynchronizeBasketItemsModifyError, $order, implode(',', $result->getErrorMessages()));
                        	$result->addErrors($r->getErrors());
                        }
                    }
                }
            }
        }
        return $result;
    }