Задать вопрос
@dimas7525

Как в обработчике доставки рассчитывать цену исходя из свойства заказа?

Пишу свой обработчик доставки на основе кода:

CModule::IncludeModule("sale");

AddEventHandler("sale", "onSaleDeliveryHandlersBuildList", array('CFTeaCourier', 'Init'));

class CFTeaCourier
{
	function Init()
	{
		return array(
			/* Основное описание */
			"SID" => "courier",
			"NAME" => "Доставка курьером",
			"DESCRIPTION" => "Доставка в течении дня",
			"DESCRIPTION_INNER" => "Доставка в течении дня",
			"BASE_CURRENCY" => COption::GetOptionString("sale", "default_currency", "RUB"),
			"HANDLER" => __FILE__,

			/* Методы обработчика */
			"DBGETSETTINGS" => array("CFTeaCourier", "GetSettings"),
			"DBSETSETTINGS" => array("CFTeaCourier", "SetSettings"),
			"GETCONFIG" => array("CFTeaCourier", "GetConfig"),
			"COMPABILITY" => array("CFTeaCourier", "Compability"),
			"CALCULATOR" => array("CFTeaCourier", "Calculate"),

			/* Список профилей доставки */
			"PROFILES" => array(
				"courier" => array(
					"TITLE" => "По городу",
					"DESCRIPTION" => "Доставка в течении дня",
					"RESTRICTIONS_WEIGHT" => array(0), // без ограничений
					"RESTRICTIONS_SUM" => array(0), // без ограничений
				),
			)
		);
	}

	/**
	 * настройки обработчика
	 */
	function GetConfig()
	{
		$arConfig = array(
			"CONFIG_GROUPS" => array(),
			"CONFIG" => array(),
		);

		return $arConfig;
	}

	/**
	 * подготовка настроек для занесения в базу данных
	 */
	function SetSettings($arSettings)
	{
		foreach ($arSettings as $key => $value) {
			if (strlen($value) > 0) {
				$arSettings[$key] = doubleval($value);
			} else {
				unset($arSettings[$key]);
			}
		}

		return serialize($arSettings);
	}

	/**
	 * подготовка настроек, полученных из базы данных
	 */
	function GetSettings($strSettings)
	{
		return unserialize($strSettings);
	}

	/**
	 * метод проверки совместимости
	 */
	function Compability($arOrder, $arConfig)
	{
		return array('courier');
	}

	/**
	 * собственно, рассчет стоимости
	 */
	function Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP = false)
	{
		return array(
			"RESULT" => "OK",
			"VALUE" => 100
		);
	}
}


Можно ли в функции Calculate рассчитывать цену исходя из свойства заказа, которое пользователь выбирает уже на этапе оформления заказа?
  • Вопрос задан
  • 143 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы