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 | Массив заказа:
|
currency | Идентификатор валюты. |
SITE_ID | Идентификатор сайта. По умолчанию используется текущий. |
Возвращаемые значения
Возвращается ассоциативный массив следующей структуры:
Ключ | Описание |
---|---|
RESULT | Идентификатор ответа. Возможные значения:
|
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