Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 public static function getLocationByIdHitCached($id)
 {
     static $result = array();
     if (!isset($result[$id])) {
         $result[$id] = CSaleLocation::GetByIDForLegacyDelivery($id);
     }
     return $result[$id];
 }
Exemplo n.º 3
0
 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;
 }