public static function getTarifNumFromCsv(array $arShopLocation) { if (empty($arShopLocation) || !isset($arShopLocation['REGION_NAME_LANG'], $arShopLocation["ID"])) { return false; } $regionCodeFromCode = $regionCodeFromName = ""; $loc = \CSaleLocation::GetByIDForLegacyDelivery($arShopLocation["ID"]); $res = \Bitrix\Sale\Location\LocationTable::getList(array('filter' => array('=ID' => $loc["REGION_ID"]), 'select' => array('CODE'))); if ($locReg = $res->fetch()) { $regionCodeFromCode = $locReg["CODE"]; } $regionCodeFromName = self::getRegionCodeByOldName($arShopLocation['REGION_NAME_LANG']); $csvFile = CSaleHelper::getCsvObject(DELIVERY_RP_CSV_PATH . '/tarif_regions.csv'); $tarifNumber = false; $COL_TARIF_NUM = 0; while ($arRes = $csvFile->Fetch()) { if (strlen($regionCodeFromCode) > 0 && in_array($regionCodeFromCode, $arRes) || strlen($regionCodeFromName) > 0 && in_array($regionCodeFromName, $arRes)) { $tarifNumber = $arRes[$COL_TARIF_NUM]; break; } } return $tarifNumber; }
public static function getLocationByIdHitCached($id) { static $result = array(); if (!isset($result[$id])) { $result[$id] = CSaleLocation::GetByIDForLegacyDelivery($id); } return $result[$id]; }
function Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP = false) { $maxWeight = self::isHeavyEnabled($arConfig) ? self::$MAX_WEIGHT_HEAVY : self::$MAX_WEIGHT; $arPacks = CSaleDeliveryHelper::getBoxesFromConfig($profile, $arConfig); $arPackagesParams = CSaleDeliveryHelper::getRequiredPacks($arOrder["ITEMS"], $arPacks, $maxWeight); $packageCount = count($arPackagesParams); if (intval($packageCount) <= 0) { return array("RESULT" => "ERROR", "TEXT" => GetMessage("SALE_DH_RP_OVERLOAD")); } $totalPrice = 0; $arLocationTo = CSaleLocation::GetByIDForLegacyDelivery($arOrder['LOCATION_TO']); try { foreach ($arPackagesParams as $arPackage) { $totalPrice += self::calculatePackPrice($arPackage, $profile, $arConfig, $arLocationTo); } } catch (\Bitrix\Main\SystemException $e) { return array("RESULT" => "ERROR", "TEXT" => $e->getMessage()); } $arResult = array('RESULT' => 'OK', 'VALUE' => $totalPrice, 'PACKS_COUNT' => $packageCount); return $arResult; }