• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/reservequantity.php
  • Класс: BitrixSaleReserveQuantity
  • Вызов: ReserveQuantity::save
public function save()
{
	$result = new Result();

	if (!$this->isChanged())
	{
		return $result;
	}

	$id = $this->getId();

	if ($id > 0)
	{
		$fields = $this->getFields()->getChangedValues();
		$r = $this->updateInternal($id, $fields);
	}
	else
	{
		if (!$this->getField('BASKET_ID'))
		{
			$basketItem = $this->getCollection()->getBasketItem();

			$fields['BASKET_ID'] = $basketItem->getId();
			$this->setFieldNoDemand('BASKET_ID', $fields['BASKET_ID']);
		}

		if (!$this->getField('DATE_RESERVE_END'))
		{
			$reserveClearPeriod = Configuration::getProductReserveClearPeriod();
			$defaultDateReserveEnd = (new BitrixMainTypeDate())->add($reserveClearPeriod . 'D');
			$this->setFieldNoDemand('DATE_RESERVE_END', $defaultDateReserveEnd);
		}

		$this->setFieldNoDemand('DATE_RESERVE', new MainTypeDateTime());

		$fields = $this->getFields()->getValues();

		$r = $this->addInternal($fields);
		if ($r->isSuccess())
		{
			$id = $r->getId();
			$this->setFieldNoDemand('ID', $id);
		}
	}

	if (!$r->isSuccess())
	{
		$result->addErrors($r->getErrors());
	}

	$result->setId($id);

	return $result;
}