• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/extra_services/manager.php
  • Класс: BitrixSaleDeliveryExtraServicesManager
  • Вызов: Manager::saveValuesForShipment
static function saveValuesForShipment($shipmentId, $extraServices)
{
	$result = new Result();

	if(intval($shipmentId) <= 0)
		throw new ArgumentNullException("shipmentId");

	$exist = array();

	$dbRes = ShipmentExtraServiceTable::getList(array(
		'filter' => array(
			'=SHIPMENT_ID' => $shipmentId
		)
	));

	while($row = $dbRes->fetch())
		$exist[$row["EXTRA_SERVICE_ID"]] = $row["ID"];

	if(is_array($extraServices))
	{
		foreach($extraServices as $extraServiceId => $value)
		{
			if(array_key_exists($extraServiceId, $exist))
			{
				$res = ShipmentExtraServiceTable::update($exist[$extraServiceId], array("VALUE" => $value));
			}
			else
			{
				$res = ShipmentExtraServiceTable::add(array(
					"EXTRA_SERVICE_ID" => $extraServiceId,
					"SHIPMENT_ID" => $shipmentId,
					"VALUE" => $value
				));
			}

			if($res->isSuccess())
				unset($exist[$extraServiceId]);
			else
				foreach($res->getErrors() as $error)
					$result->addError($error);

		}
	}

	foreach($exist as $extraServiceId => $value)
	{
		$res = ShipmentExtraServiceTable::delete($extraServiceId);

		if(!$res->isSuccess())
			foreach($res->getErrors() as $error)
				$result->addError($error);
	}

	return $result;
}