15 public static function Init()
30 "DESCRIPTION" =>
GetMessage(
'SALE_DH_UPS_DESCRIPTION'),
31 "DESCRIPTION_INNER" =>
GetMessage(
'SALE_DH_UPS_DESCRIPTION_INNER'),
34 "HANDLER" => __FILE__,
37 "DBGETSETTINGS" =>
array(
"CDeliveryUPS",
"GetSettings"),
38 "DBSETSETTINGS" =>
array(
"CDeliveryUPS",
"SetSettings"),
39 "GETCONFIG" =>
array(
"CDeliveryUPS",
"GetConfig"),
41 "COMPABILITY" =>
array(
"CDeliveryUPS",
"Compability"),
42 "CALCULATOR" =>
array(
"CDeliveryUPS",
"Calculate"),
47 "TITLE" =>
GetMessage(
"SALE_DH_UPS_EXPRESS_TITLE"),
48 "DESCRIPTION" =>
GetMessage(
"SALE_DH_UPS_EXPRESS_DESCRIPTION"),
51 "RESTRICTIONS_SUM" =>
array(0),
54 "express_saver" =>
array(
55 "TITLE" =>
GetMessage(
"SALE_DH_UPS_EXPRESS_SAVER_TITLE"),
56 "DESCRIPTION" =>
GetMessage(
"SALE_DH_UPS_EXPRESS_SAVER_DESCRIPTION"),
59 "RESTRICTIONS_SUM" =>
array(0),
68 "CONFIG_GROUPS" =>
array(
69 "tariff_tables" =>
GetMessage(
'SALE_DH_UPS_TARIFF_TITLE'),
75 "TITLE" =>
GetMessage(
'SALE_DH_UPS_CONFIG_zones_csv'),
76 "DEFAULT" =>
"/bitrix/modules/sale/delivery/ups/ru_csv_zones.csv",
77 "GROUP" =>
"tariff_tables",
80 "export_csv" =>
array(
82 "TITLE" =>
GetMessage(
'SALE_DH_UPS_CONFIG_export_csv'),
83 "DEFAULT" =>
"/bitrix/modules/sale/delivery/ups/ru_csv_export.csv",
84 "GROUP" =>
"tariff_tables",
93 [$zones_path, $export_path] = explode(
";", $strSettings);
96 "zones_csv" => $zones_path,
97 "export_csv" => $export_path
104 ($arSettings[
'zones_csv'] ??
'')
106 . ($arSettings[
'export_csv'] ??
'')
114 $fp = fopen(
$_SERVER[
"DOCUMENT_ROOT"].$file,
"r");
115 while (
$data = fgetcsv($fp, 1000,
","))
119 if (mb_substr(
$data[2], -3) ==
" EU")
$data[2] = mb_substr(
$data[2], 0, -3);
133 if ($fp = fopen($data_file,
"w"))
135 fwrite($fp,
'<'.
'?'.
"\r\n");
136 fwrite($fp,
'$arUPSZones = array('.
"\r\n");
140 fwrite($fp,
'"'.
$key.
'" => array("'.$arRow[0].
'", '.intval($arRow[1]).
', '.intval($arRow[2]).
'),'.
"\r\n");
143 fwrite($fp,
');'.
"\r\n");
144 fwrite($fp,
'?'.
'>');
155 $fp = fopen(
$_SERVER[
"DOCUMENT_ROOT"].$file,
"r");
160 while (
$data = fgetcsv($fp, 1000,
","))
162 if(mb_stristr(
$data[0],
"service option"))
164 if(mb_stristr(
$data[1],
"express saver"))
166 $current_profile =
"express_saver";
170 $current_profile =
"express";
198 $value = trim($value);
199 $value = str_replace(
".",
'', $value);
200 $value = str_replace(
",",
'.', $value);
204 if(doubleval(
$data[1]) <= 0)
217 $arFinalResult =
array();
223 foreach ($arProfileResult as
$key => $arWeightValues)
225 array_shift($arWeightValues);
226 $weight_value = $arWeightValues[0];
227 unset($arWeightValues[0]);
229 $arFinalResult[
$profile_id][$weight_value] = $arWeightValues;
235 if ($fp = fopen($data_file,
"w"))
237 fwrite($fp,
'<'.
'?'.
"\r\n");
238 fwrite($fp,
'$arUPSExport = array('.
"\r\n");
240 foreach ($arFinalResult as $profile => $arWeightValues)
242 fwrite($fp,
'"'.$profile.
'" => array('.
"\r\n");
244 foreach ($arWeightValues as $weight => $arZoneValues)
246 fwrite($fp,
'"'.$weight.
'" => array(');
248 foreach ($arZoneValues as $zone => $value)
250 fwrite($fp, $zone.
' => '.$value.
', ');
253 fwrite($fp,
'),'.
"\r\n");
256 fwrite($fp,
'),'.
"\r\n");
259 fwrite($fp,
');'.
"\r\n");
260 fwrite($fp,
'?'.
'>');
264 return $arFinalResult;
300 $zones_file = $arConfig[
"zones_csv"][
"VALUE"];
303 foreach ($arZones as $country_id => $arZone)
307 || (
$arLocation[
"COUNTRY_SHORT_NAME"] && mb_stristr($arZone[0],
$arLocation[
"COUNTRY_SHORT_NAME"]) !==
false)
308 || (
$arLocation[
"COUNTRY_NAME_LANG"] && mb_stristr($arZone[0],
$arLocation[
"COUNTRY_NAME_LANG"]) !==
false)
309 || (
$arLocation[
"COUNTRY_NAME_ORIG"] && mb_stristr(
$arLocation[
"COUNTRY_NAME_ORIG"], $arZone[0]) !==
false)
310 || (
$arLocation[
"COUNTRY_SHORT_NAME"] && mb_stristr(
$arLocation[
"COUNTRY_SHORT_NAME"], $arZone[0]) !==
false)
311 || (
$arLocation[
"COUNTRY_NAME_LANG"] && mb_stristr(
$arLocation[
"COUNTRY_NAME_LANG"], $arZone[0]) !==
false)
321 public static function Calculate($profile, $arConfig, $arOrder,
$STEP, $TEMP =
false)
327 if (LANGUAGE_ID !==
'en')
330 if (
false !== $arCountry)
331 $arLocationTo[
'COUNTRY_NAME_LANG'] = $arCountry[
'NAME'];
337 $zones_file = $arConfig[
"zones_csv"][
"VALUE"];
340 reset($arPriceTable);
343 $key = key($arPriceTable[$profile]);
344 next($arPriceTable[$profile]);
346 while (
$key && (doubleval($arOrder[
"WEIGHT"]) > doubleval(
$key)));
348 $zone = $arZones[$arLocationTo[
"COUNTRY_SID"]][$profile ==
"express_saver" ? 1 : 2];
350 $sum = $arPriceTable[$profile][
$key][$zone];
361 if (intval($arOrder[
"LOCATION_FROM"]) <= 0)
367 if ($arLocationFrom ===
false || $arLocationTo ===
false)
372 if ($arLocationFrom[
"COUNTRY_ID"] == $arLocationTo[
"COUNTRY_ID"])
375 if (LANGUAGE_ID !==
'en')
378 if (
false !== $arCountry)
379 $arLocationTo[
'COUNTRY_NAME_LANG'] = $arCountry[
'NAME'];
384 if ($arLocationTo[
"COUNTRY_SID"] ==
'')
387 $zones_file = $arConfig[
"zones_csv"][
"VALUE"];
390 $arZoneTo = $arZones[$arLocationTo[
"COUNTRY_SID"]];
392 if (intval($arZoneTo[1]) > 0)
393 return array(
"express",
"express_saver");
395 return array(
"express");
static GetByID($currency)
static GetCountryLangByID($ID, $strLang=LANGUAGE_ID)
static Compability($arOrder, $arConfig)
static Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP=false)
static SetSettings($arSettings)
static __GetExport($file)
static GetSettings($strSettings)
static __GetLocation(&$arLocation, $arConfig)
static __parseZonesFile($file)
static __parseExportFile($file)
static IncludeModule($module_name)
static GetByID($primary, $strLang=LANGUAGE_ID)
static Convert($value, $measureFrom, $measureTo="G")
const DELIVERY_UPS_EXPORT_PHP_FILE
const DELIVERY_UPS_ZONES_PHP_FILE
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
if(!\Bitrix\Main\Loader::includeModule('catalog')) $profile_id
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
$arLocation['REGION_NAME']