$arParams["EXTRA_PARAMS"] = array(); } $arParams["LOCATION_TO"] = intval($arParams["LOCATION_TO"]); $arParams["LOCATION_FROM"] = intval($arParams["LOCATION_FROM"]); if ($arParams["LOCATION_FROM"] <= 0) { $arParams["LOCATION_FROM"] = COption::GetOptionString('sale', 'location'); } $arParams["STEP"] = intval($arParams["STEP"]); if ($arParams["STEP"] <= 0) { $arParams["AJAX_CALL"] = 'N'; } if (is_set($arParams["START_VALUE"])) { $arParams["START_VALUE"] = doubleval($arParams["START_VALUE"]); } if ($arParams["AJAX_CALL"] == "Y") { $shipment = CSaleDelivery::convertOrderOldToNew(array("WEIGHT" => $arParams["ORDER_WEIGHT"], "PRICE" => $arParams["ORDER_PRICE"], "LOCATION_TO" => $arParams["LOCATION_TO"], "LOCATION_ZIP" => $arParams['LOCATION_ZIP'], "ITEMS" => $arParams["ITEMS"], "CURRENCY" => $arParams["CURRENCY"])); /** @var \Bitrix\Sale\Delivery\Services\Base $deliveryObj */ $deliveryObj = \Bitrix\Sale\Delivery\Services\Manager::getObjectById($arParams["DELIVERY_ID"]); if (!$deliveryObj) { ShowError(GetMessage("SALE_DELIVERY_HANDLER_NOT_INSTALL")); return; } $calcResult = $deliveryObj->calculate($shipment); $result = array("VALUE" => $calcResult->getPrice(), "TRANSIT" => $calcResult->getPeriodDescription(), "RESULT" => $calcResult->isSuccess() ? "OK" : "ERROR"); if (!empty($arParams["ORDER_DATA"]) && is_array($arParams["ORDER_DATA"])) { $orderDeliveryPriceData = $arParams["ORDER_DATA"]; $orderDeliveryPriceData['BASKET_ITEMS'] = !empty($arParams['ITEMS']) && is_array($arParams['ITEMS']) ? $arParams['ITEMS'] : array(); $orderDeliveryPriceData['PRICE_DELIVERY'] = $orderDeliveryPriceData['DELIVERY_PRICE'] = $calcResult->getPrice(); $orderDeliveryPriceData['DELIVERY_ID'] = $arParams["DELIVERY_ID"]; CSaleDiscount::DoProcessOrder($orderDeliveryPriceData, array(), $arErrors); if (floatval($orderDeliveryPriceData['DELIVERY_PRICE']) >= 0 && $orderDeliveryPriceData['PRICE_DELIVERY'] != $calcResult->getPrice()) {
$bFirst = True; $arFilter = array("ACTIVE" => "Y", "PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "PSA_HAVE_PAYMENT" => "Y"); $dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC", "PSA_NAME" => "ASC"), $arFilter); while ($arPaySystem = $dbPaySystem->Fetch()) { if (IntVal($arUserResult["PAY_SYSTEM_ID"]) <= 0 && $bFirst) { $arPaySystem["CHECKED"] = "Y"; $arUserResult["PAY_SYSTEM_ID"] = $arPaySystem["ID"]; } $bFirst = false; } } } $bFirst = True; $bFound = false; $bSelected = false; $shipment = CSaleDelivery::convertOrderOldToNew(array("SITE_ID" => SITE_ID, "WEIGHT" => $arResult["ORDER_WEIGHT"], "PRICE" => $arResult["ORDER_PRICE"], "LOCATION_TO" => isset($arUserResult["DELIVERY_LOCATION_BCODE"]) ? $arUserResult["DELIVERY_LOCATION_BCODE"] : $arUserResult["DELIVERY_LOCATION"], "LOCATION_ZIP" => $arUserResult["DELIVERY_LOCATION_ZIP"], "ITEMS" => $arResult["BASKET_ITEMS"], "CURRENCY" => $arResult["BASE_LANG_CURRENCY"])); if (!empty($arUserResult["PAY_SYSTEM_ID"]) && $arParams["DELIVERY_TO_PAYSYSTEM"] == "p2d") { /** @var \Bitrix\Sale\Order $order */ $order = $shipment->getCollection()->getOrder(); /** @var \Bitrix\Sale\Payment $payment */ $payment = $order->getPaymentCollection()->createItem(); $payment->setField("PAY_SYSTEM_ID", $arUserResult["PAY_SYSTEM_ID"]); } /** @var \Bitrix\Sale\Delivery\Services\Base[] $arDeliveryServiceAll */ $arDeliveryServiceAll = \Bitrix\Sale\Delivery\Services\Manager::getServicesForShipment($shipment); if (intval($arUserResult["DELIVERY_ID"]) > 0) { $bFound = array_key_exists($arUserResult["DELIVERY_ID"], $arDeliveryServiceAll); } if (!$bFound && !empty($arUserResult["DELIVERY_ID"])) { $arUserResult["DELIVERY_ID"] = ""; $arResult["DELIVERY_PRICE"] = 0;