• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/services/automatic.php
  • Класс: BitrixSaleDeliveryServicesAutomatic
  • Вызов: Automatic::prepareFieldsForSaving
public function prepareFieldsForSaving(array $fields)
{
	$fields = parent::prepareFieldsForSaving($fields);

	if(!isset($fields["CONFIG"]))
		return $fields;

	if(!isset($fields["CONFIG"]["MAIN"]["SID"]) || $fields["CONFIG"]["MAIN"]["SID"] == '')
		throw new SystemException(Loc::getMessage("SALE_DLVR_HANDL_AUT_ERROR_HANDLER"));

	if($this->sid == '')
		return $fields;

	$fields["CODE"] = $this->sid;

	$configMain = $fields["CONFIG"]["MAIN"];

	if (isset($this->handlerInitParams["DBSETSETTINGS"]) && is_callable($this->handlerInitParams["DBSETSETTINGS"]))
	{
		$oldSettings = $fields["CONFIG"];
		unset($oldSettings["MAIN"]);

		$oldSettings = self::convertNewSettingsToOld($oldSettings);

		if (!$strOldSettings = call_user_func($this->handlerInitParams["DBSETSETTINGS"], $oldSettings))
			throw new SystemException("Can't save delivery services's old settings");
	}
	else
	{
		$strOldSettings = "";
	}

	$strOldSettings = serialize($strOldSettings);
	$fields["CONFIG"] = array(
		"MAIN" => $configMain
	);

	$fields["CONFIG"]["MAIN"]["OLD_SETTINGS"] = $strOldSettings;

	if(isset($this->handlerInitParams["CURRENCY"]) && $this->handlerInitParams["CURRENCY"] <> '')
		$fields["CURRENCY"] = $this->handlerInitParams["CURRENCY"];

	return $fields;
}