Документация для разработчиков
Темная тема

CalculateFull

Описание и параметры

array CSaleDeliveryHandler::CalculateFull(
	string SID,
	string profile,
	array arOrder,
	string currency,
	mixed SITE_ID = false
);

Вызов полного цикла расчёта. В случае, если обработчик службы доставки осуществляет расчёт за один шаг, метод аналогичен CSaleDeliveryHandler::Calculate(). В противном случае метод автоматически выполнит переход на следующий шаг расчёта. Метод статический.

Примечание: метод устарел и не рекомендуется к использованию. Вместо него следует использовать методы класса \Bitrix\Sale\Delivery\Services\Base.

Параметры вызова

Параметр Описание
SID Строковый идентификатор обработчика.
profile Идентификатор профиля обработчика.
arOrder Массив заказа:
  • WEIGHT - суммарный вес заказа в граммах;
  • PRICE - суммарная стоимость заказа в базовой валюте магазина;
  • LOCATION_FROM - ID местоположения магазина, настраиваемого в настройках модуля "Интернет-магазин";
  • LOCATION_TO - ID местоположения, указываемого клиентом при оформлении заказа;
  • ITEMS - массив позиций корзины, причем каждая позиция обладает набором свойств. Одно из них - DIMENSIONS - массив, содержащий длину, высоту и ширину. Служба доставки может проверить подходят ли все товары для доставки данной службой (размеры / вес / цена) или сколько коробок необходимо для того, чтобы отправить весь заказ.
currency Идентификатор валюты.
SITE_ID Идентификатор сайта. По умолчанию используется текущий.

Возвращаемые значения

Возвращается ассоциативный массив следующей структуры:

Ключ Описание
RESULT Идентификатор ответа. Возможные значения:
  • "OK" - стоимость доставки успешно рассчитана;
  • "ERROR" - в процессе расчёта произошла ошибка.
VALUE Значение стоимости доставки в валюте, задаваемой в параметрах метода - currency. (RESULT = 'OK').
TRANSIT Длительность доставки в днях (RESULT = 'OK'). Если обработчик доставки не возвращает длительность, то этот параметр отсутствует.
TEXT Текст ошибки (RESULT = 'ERROR').

Пример использования


$arOrder = array(
  "WEIGHT" => "10", // вес заказа в граммах
  "PRICE" => "100", // стоимость заказа в базовой валюте магазина
  "LOCATION_FROM" => COption::GetOptionInt('sale', 'location'), // местоположение магазина
  "LOCATION_TO" => 55892, // местоположение доставки
);

$currency = CSaleLang::GetLangCurrency(SITE_ID);

$dbHandler = CSaleDeliveryHandler::GetBySID('simple');
if ($arHandler = $dbHandler->Fetch())
{
  $arProfiles = CSaleDeliveryHandler::GetHandlerCompability($arOrder, $arHandler);
  if (is_array($arProfiles) && count($arProfiles) > 0)
  {
    $arProfiles = array_keys($arProfiles);
    $arReturn = CSaleDeliveryHandler::CalculateFull(
      'simple', // идентификатор службы доставки
      $arProfiles[0], // идентификатор профиля доставки
      $arOrder, // заказ
      $currency // валюта, в которой требуется вернуть стоимость
    );

    if ($arReturn["RESULT"] == "OK")
    {
      ShowNote('Стоимость доставки успешно рассчитана!');
      echo 'Стоимость доставки: '.CurrencyFormat($arReturn["VALUE"], $currency).'<br />';
      if (is_set($arReturn['TRANSIT']) && $arReturn['TRANSIT'] > 0)
      {
        echo 'Длительность доставки: '.$arReturn['TRANSIT'].' дней.<br />';
      }
    }
    else
    {
      ShowError('Не удалось рассчитать стоимость доставки! '.$arResult['ERROR']);
    }
  }
  else
  {
    ShowError('Невозможно доставить заказ!');
  }
}
else
{
  ShowError('Обработчик не найден!');
}


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2020, «1С-Битрикс», 2020
Наверх