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

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-2021, «1С-Битрикс», 2021
Наверх