13define(
'DELIVERY_RUSSIANPOST_WRITE_LOG', 0);
14define(
'DELIVERY_RUSSIANPOST_CACHE_LIFETIME', 2592000);
16define(
'DELIVERY_RUSSIANPOST_CATEGORY_DEFAULT', 23);
18define(
'DELIVERY_RUSSIANPOST_PRICE_TARIFF', 0.03);
19define(
'DELIVERY_RUSSIANPOST_PRICE_TARIFF_1', 0.04);
21define(
'DELIVERY_RUSSIANPOST_SERVER_POST_CATEGORY',
'viewPost');
22define(
'DELIVERY_RUSSIANPOST_SERVER_POST_CATEGORY_NAME',
'viewPostName');
23define(
'DELIVERY_RUSSIANPOST_SERVER_POST_PROFILE',
'typePost');
24define(
'DELIVERY_RUSSIANPOST_SERVER_POST_PROFILE_NAME',
'typePostName');
25define(
'DELIVERY_RUSSIANPOST_SERVER_POST_ZIP',
'postOfficeId');
26define(
'DELIVERY_RUSSIANPOST_SERVER_POST_WEIGHT',
'weight');
27define(
'DELIVERY_RUSSIANPOST_SERVER_POST_PRICE',
'value1');
29define(
'DELIVERY_RUSSIANPOST_SERVER_POST_COUNTRY',
'countryCode');
30define(
'DELIVERY_RUSSIANPOST_SERVER_POST_COUNTRY_NAME',
'countryCodeName');
32define(
'DELIVERY_RUSSIANPOST_SERVER',
'www.russianpost.ru');
33define(
'DELIVERY_RUSSIANPOST_SERVER_PORT', 80);
34define(
'DELIVERY_RUSSIANPOST_SERVER_PAGE',
'/autotarif/Autotarif.aspx');
35define(
'DELIVERY_RUSSIANPOST_SERVER_METHOD',
'GET');
36define(
'DELIVERY_RUSSIANPOST_SERVER_METHOD_CAPTHA',
'POST');
38define(
'DELIVERY_RUSSIANPOST_VALUE_CHECK_STRING',
'<span id="TarifValue">');
40 'DELIVERY_RUSSIANPOST_VALUE_CHECK_REGEXP_RUS',
41 '/<sup>\*<\/sup><\/td><td align="Right">*([0-9,]+)<\/td>/i'
44 'DELIVERY_RUSSIANPOST_VALUE_CHECK_REGEXP',
45 '/<span id="TarifValue">*([0-9,]+)<\/span>/i'
47define(
'DELIVERY_RUSSIANPOST_VALUE_CAPTHA_STRING',
'<input id="key"');
49 'DELIVERY_RUSSIANPOST_CAPTHA_REGEXP',
50 '/<input id="key" name="key" value="*([0-9,]+)"\/>/i'
55 public static function Init()
68 "SID" =>
"russianpost",
69 "NAME" =>
GetMessage(
'SALE_DH_RUSSIANPOST_NAME'),
70 "DESCRIPTION" =>
GetMessage(
'SALE_DH_RUSSIANPOST_DESCRIPTION'),
71 "DESCRIPTION_INNER" =>
GetMessage(
'SALE_DH_RUSSIANPOST_DESCRIPTION_INNER').
GetMessage(
'SALE_DH_RUSSIANPOST_DESCRIPTION_INNER2'),
74 "HANDLER" => __FILE__,
77 "DBGETSETTINGS" =>
array(
"CDeliveryRUSSIANPOST",
"GetSettings"),
78 "DBSETSETTINGS" =>
array(
"CDeliveryRUSSIANPOST",
"SetSettings"),
79 "GETCONFIG" =>
array(
"CDeliveryRUSSIANPOST",
"GetConfig"),
81 "COMPABILITY" =>
array(
"CDeliveryRUSSIANPOST",
"Compability"),
82 "CALCULATOR" =>
array(
"CDeliveryRUSSIANPOST",
"Calculate"),
83 "TRACKING_CLASS_NAME" =>
'\Bitrix\Sale\Delivery\Tracking\RusPost',
86 "GET_ADMIN_MESSAGE" =>
array(
"CDeliveryRUSSIANPOST",
"getAdminMessage"),
91 "TITLE" =>
GetMessage(
"SALE_DH_RUSSIANPOST_GROUND_TITLE"),
94 "RESTRICTIONS_WEIGHT" =>
array(0),
95 "RESTRICTIONS_SUM" =>
array(0),
99 "TITLE" =>
GetMessage(
"SALE_DH_RUSSIANPOST_AVIA_TITLE"),
102 "RESTRICTIONS_WEIGHT" =>
array(0),
112 "CONFIG_GROUPS" =>
array(
113 "all" =>
GetMessage(
'SALE_DH_RUSSIANPOST_CONFIG_TITLE'),
118 "TYPE" =>
"DROPDOWN",
120 "TITLE" =>
GetMessage(
'SALE_DH_RUSSIANPOST_CONFIG_CATEGORY'),
128 $arList =
array(23, 12, 13, 26, 36, 16);
130 for (
$i = 0, $cnt =
count($arList);
$i < $cnt;
$i++)
132 $arConfig[
"CONFIG"][
"category"][
"VALUES"][$arList[
$i]] =
GetMessage(
'SALE_DH_RUSSIANPOST_CONFIG_CATEGORY_'.$arList[
$i]);
141 "category" => intval($strSettings)
147 if(!isset($arSettings[
"category"]))
150 return intval($arSettings[
"category"]);
165 while ($arZIP = $rsZIPList->Fetch())
181 require(
"russianpost/country.php");
187 mb_strtoupper(
$arLocation[
"COUNTRY_NAME_ORIG"]) == $country_name
188 || mb_strtoupper(
$arLocation[
"COUNTRY_SHORT_NAME"]) == $country_name
189 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME_LANG"]) == $country_name
190 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME"]) == $country_name
195 "NAME" => $country_name,
201 public static function Calculate($profile, $arConfig, $arOrder,
$STEP, $TEMP =
false)
207 "TEXT" =>
GetMessage(
'SALE_DH_RUSSIANPOST_ERROR_CONNECT'),
211 if ($arOrder[
"WEIGHT"] <= 0)
212 $arOrder[
"WEIGHT"] = 1;
216 if ($arOrder[
'LOCATION_ZIP'])
219 $arLocationTo[
'ZIP'] =
array(0 => $arOrder[
'LOCATION_ZIP']);
228 $arLocationFrom[
"ZIP"] =
array(0 => $zip);
230 if ($arLocationTo[
"IS_RUSSIAN"] ==
'Y' &&
count($arLocationTo[
"ZIP"]) <= 0)
234 "TEXT" =>
GetMessage(
'SALE_DH_RUSSIANPOST_ERROR_NOZIP'),
238 $cache_id =
"sale|8.0.3|russianpost|".$profile.
"|".$arConfig[
"category"][
"VALUE"].
"|".$arOrder[
"LOCATION_FROM"].
"|".($arLocationTo[
"IS_RUSSIAN"] ==
'Y' ? $arLocationTo[
"ZIP"][0] : $arOrder[
"LOCATION_TO"]);
240 if (in_array($arConfig[
"category"][
"VALUE"],
array(23, 12, 13, 26, 16)))
241 $cache_id .=
"|".ceil(intval($arOrder[
"WEIGHT"])/20).
"_";
243 $cache_id .=
"|".ceil(intval($arOrder[
"WEIGHT"])/500).
"_";
245 $obCache =
new CPHPCache();
248 $vars = $obCache->GetVars();
252 if (in_array($arConfig[
"category"][
"VALUE"],
array(36, 26, 16)))
263 $arProfile =
array(
"ground" => 1,
"avia" => 2);
265 if ($arLocationTo[
"IS_RUSSIAN"] ==
"Y")
307 if (!
$res->isSuccess())
318 "TEXT" =>
GetMessage(
'SALE_DH_RUSSIANPOST_ERROR_CONNECT'),
328 $cResult = preg_match(
335 $arCode[
"key"] = intval(
$matches[1]);
339 if(!
$res->isSuccess())
352 "TEXT" =>
GetMessage(
'SALE_DH_RUSSIANPOST_ERROR_CONNECT'),
359 $bResult = preg_match(
368 $bResult = preg_match(
377 $obCache->StartDataCache();
383 $obCache->EndDataCache(
390 if(in_array($arConfig[
"category"][
"VALUE"],
array(26, 16, 36)))
404 "TEXT" =>
GetMessage(
'SALE_DH_RUSSIANPOST_ERROR_RESPONSE'),
412 "TEXT" =>
GetMessage(
'SALE_DH_RUSSIANPOST_ERROR_RESPONSE'),
417 public static function Compability($arOrder, $arConfig)
422 mb_strtoupper($arLocationFrom[
"CITY_NAME_ORIG"]) ==
"МОСКВА"
423 || mb_strtoupper($arLocationFrom[
"CITY_SHORT_NAME"]) ==
"МОСКВА"
424 || mb_strtoupper($arLocationFrom[
"CITY_NAME_LANG"]) ==
"МОСКВА"
425 || mb_strtoupper($arLocationFrom[
"CITY_NAME_ORIG"]) ==
"MOSCOW"
426 || mb_strtoupper($arLocationFrom[
"CITY_SHORT_NAME"]) ==
"MOSCOW"
427 || mb_strtoupper($arLocationFrom[
"CITY_NAME_LANG"]) ==
"MOSCOW"
435 if (isset($arConfig[
"category"][
"VALUE"]) && $arConfig[
"category"][
"VALUE"] == 26 )
436 return array(
"ground");
438 return array(
"ground",
"avia");
449 (mb_strtoupper(
$arLocation[
"COUNTRY_NAME_ORIG"]) ==
"РОССИЯ"
450 || mb_strtoupper(
$arLocation[
"COUNTRY_SHORT_NAME"]) ==
"РОССИЯ"
451 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME_LANG"]) ==
"РОССИЯ"
452 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME_ORIG"]) ==
"RUSSIA"
453 || mb_strtoupper(
$arLocation[
"COUNTRY_SHORT_NAME"]) ==
"RUSSIA"
454 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME_LANG"]) ==
"RUSSIA"
455 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME_ORIG"]) ==
"РОССИЙСКАЯ ФЕДЕРАЦИЯ"
456 || mb_strtoupper(
$arLocation[
"COUNTRY_SHORT_NAME"]) ==
"РОССИЙСКАЯ ФЕДЕРАЦИЯ"
457 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME_LANG"]) ==
"РОССИЙСКАЯ ФЕДЕРАЦИЯ"
458 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME_ORIG"]) ==
"RUSSIAN FEDERATION"
459 || mb_strtoupper(
$arLocation[
"COUNTRY_SHORT_NAME"]) ==
"RUSSIAN FEDERATION"
460 || mb_strtoupper(
$arLocation[
"COUNTRY_NAME_LANG"]) ==
"RUSSIAN FEDERATION"
469 $fp = fopen(__DIR__.
"/russianpost.log",
"a");
470 fwrite($fp,
"\r\n==========================================\r\n");
482 $result = new \Bitrix\Main\Entity\Result();
483 $url =
"http://".DELIVERY_RUSSIANPOST_SERVER.DELIVERY_RUSSIANPOST_SERVER_PAGE;
486 $httpClient = new \Bitrix\Main\Web\HttpClient(
array(
488 "socketTimeout" => 30,
489 "streamTimeout" => 30,
497 $reqResult =$httpClient->getResult();
499 $errors = $httpClient->getError();
501 if (!$reqResult && !empty(
$errors))
503 foreach(
$errors as $errorCode => $errMes)
504 $result->addError(
new \
Bitrix\Main\Entity\EntityError($errorCode.
": ".$errMes));
508 $status = $httpClient->getStatus();
512 $result->addError(
new \Bitrix\Main\Entity\EntityError(
'HTTP error code: %d',
$status));
527 'SALE_DH_RUSSIANPOST_MESSAGE',
529 '#A1#' =>
'<a href="/bitrix/admin/sale_delivery_service_edit.php?lang='.LANGUAGE_ID.
'&PARENT_ID=0&CLASS_NAME=%5CSale%5CHandlers%5CDelivery%5CAdditionalHandler&SERVICE_TYPE=RUSPOST">',
539AddEventHandler(
"sale",
"onSaleDeliveryHandlersBuildList",
array(
'CDeliveryRUSSIANPOST',
'Init'));
static GetByID($currency)
static GetOptionString($module_id, $name, $def="", $site=false, $bExactSite=false)
static GetLocationZIP($location)
static __GetCountry($arLocation)
static __Write2Log($data)
static __GetLocation($location, $bGetZIP=false)
static Compability($arOrder, $arConfig)
static Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP=false)
static sendRequestData($data, $method)
static __IsRussian($arLocation)
static SetSettings($arSettings)
static GetSettings($strSettings)
static IncludeModule($module_name)
static getLocationByIdHitCached($id)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
const DELIVERY_RUSSIANPOST_SERVER_POST_PROFILE
const DELIVERY_RUSSIANPOST_SERVER_POST_CATEGORY
const DELIVERY_RUSSIANPOST_SERVER_POST_PRICE
const DELIVERY_RUSSIANPOST_VALUE_CAPTHA_STRING
const DELIVERY_RUSSIANPOST_SERVER_POST_COUNTRY_NAME
const DELIVERY_RUSSIANPOST_CAPTHA_REGEXP
const DELIVERY_RUSSIANPOST_VALUE_CHECK_STRING
const DELIVERY_RUSSIANPOST_VALUE_CHECK_REGEXP_RUS
const DELIVERY_RUSSIANPOST_SERVER_POST_ZIP
const DELIVERY_RUSSIANPOST_SERVER_POST_CATEGORY_NAME
const DELIVERY_RUSSIANPOST_WRITE_LOG
const DELIVERY_RUSSIANPOST_SERVER_POST_PROFILE_NAME
const DELIVERY_RUSSIANPOST_VALUE_CHECK_REGEXP
const DELIVERY_RUSSIANPOST_CATEGORY_DEFAULT
const DELIVERY_RUSSIANPOST_SERVER_POST_COUNTRY
const DELIVERY_RUSSIANPOST_CACHE_LIFETIME
const DELIVERY_RUSSIANPOST_SERVER_METHOD_CAPTHA
const DELIVERY_RUSSIANPOST_PRICE_TARIFF_1
const DELIVERY_RUSSIANPOST_SERVER_METHOD
const DELIVERY_RUSSIANPOST_SERVER_POST_WEIGHT
</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']
$arRUSSIANPOSTCountryList