• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/shipmentitemstorecollection.php
  • Класс: BitrixSaleShipmentItemStoreCollection
  • Вызов: ShipmentItemStoreCollection::setBarcodeQuantityFromArray
public function setBarcodeQuantityFromArray(array $values)
{
	$result = new Result();
	$requestBarcodeList = static::getBarcodeListFromArray($values);

	$plusList = array();
	$oldQuantityList = $this->getAllBarcodeList();

	foreach ($requestBarcodeList as $storeId => $barcodeDat)
	{
		foreach ($barcodeDat as $barcodeValue => $barcode)
		{
			if (isset($oldQuantityList[$storeId][$barcodeValue])
				&& $oldQuantityList[$storeId][$barcodeValue]['ID'] == $barcode['ID'])
			{
				$oldBarcode = $oldQuantityList[$storeId][$barcodeValue];
				if ($barcode['QUANTITY'] == $oldBarcode['QUANTITY'])
				{
					continue;
				}
				elseif ($barcode['QUANTITY'] < $oldBarcode['QUANTITY'])
				{
					/** @var ShipmentItemStore $item */
					$item = $this->getItemById($oldBarcode['ID']);
					if ($item)
						$item->setField('QUANTITY', $barcode['QUANTITY']);
				}
				else
				{
					$plusList[$barcodeValue] = array(
						'ID' => $barcode['ID'],
						'QUANTITY' => $barcode['QUANTITY']
					);
				}
			}
		}
	}

	foreach ($plusList as $barcode)
	{
		if ($barcode['ID'] <= 0)
			continue;

		$item = $this->getItemById($barcode['ID']);
		if ($item)
		{
			/** @var Result $r */
			$r = $item->setField('QUANTITY', $barcode['QUANTITY']);
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
			}
		}
	}

	return $result;
}