14 private static $MAX_WEIGHT = 100000;
16 private static $defaultTarifs =
array(
39 public static function Init()
45 'DESCRIPTION' =>
GetMessage(
'SALE_DH_UP_DESCR1').
' <a href="http://novaposhta.ua">http://novaposhta.ua</a>. '.
GetMessage(
'SALE_DH_UP_DESCR2'),
46 'DESCRIPTION_INNER' =>
GetMessage(
'SALE_DH_UP_DESCR1').
' <a href="http://novaposhta.ua">http://novaposhta.ua</a>. '.
GetMessage(
'SALE_DH_UP_DESCR2'),
47 'BASE_CURRENCY' =>
'UAH',
48 'HANDLER' => __FILE__,
50 'DBGETSETTINGS' =>
array(
'CDeliveryUaPost',
'GetSettings'),
51 'DBSETSETTINGS' =>
array(
'CDeliveryUaPost',
'SetSettings'),
52 'GETCONFIG' =>
array(
'CDeliveryUaPost',
'GetConfig'),
53 'GETFEATURES' =>
array(
'CDeliveryUaPost',
'GetFeatures'),
54 'COMPABILITY' =>
array(
'CDeliveryUaPost',
'Compability'),
55 'CALCULATOR' =>
array(
'CDeliveryUaPost',
'Calculate'),
60 'TITLE' =>
GetMessage(
'SALE_DH_UP_WARE_TITLE'),
61 'DESCRIPTION' =>
GetMessage(
'SALE_DH_UP_WARE_DESCR'),
62 'RESTRICTIONS_WEIGHT' =>
array(0, self::$MAX_WEIGHT),
63 'RESTRICTIONS_SUM' =>
array(0),
65 'RESTRICTIONS_MAX_SIZE' => 0,
66 'RESTRICTIONS_DIMENSIONS_SUM' => 0,
67 'RESTRICTIONS_DIMENSIONS' => 0
70 'TITLE' =>
GetMessage(
'SALE_DH_UP_DOOR_TITLE'),
71 'DESCRIPTION' =>
GetMessage(
'SALE_DH_UP_DOOR_DESCR'),
72 'RESTRICTIONS_WEIGHT' =>
array(0, self::$MAX_WEIGHT),
73 'RESTRICTIONS_SUM' =>
array(0),
75 'RESTRICTIONS_MAX_SIZE' => 0,
76 'RESTRICTIONS_DIMENSIONS_SUM' => 0,
77 'RESTRICTIONS_DIMENSIONS' => 0
86 'CONFIG_GROUPS' =>
array(
87 'common' =>
GetMessage(
'SALE_DH_UP_GROUPS_COMMON'),
88 'ware' =>
GetMessage(
'SALE_DH_UP_GROUPS_WARE'),
94 $arConfig[
'CONFIG'][
'DELIVERY_TO_POST'] =
array(
105 $arConfig[
'CONFIG'][
'tarif_section_1'] =
array(
112 $arConfig[
'CONFIG'][
'TARIF_BO'] =
array(
114 'DEFAULT' => self::$defaultTarifs[
'BO'],
115 'TITLE' =>
GetMessage(
'SALE_DH_UP_TARIF_REG'),
117 'CHECK_FORMAT' =>
'NUMBER'
120 $arConfig[
'CONFIG'][
'TARIF_T1'] =
array(
122 'DEFAULT' => self::$defaultTarifs[
'T1'],
125 'CHECK_FORMAT' =>
'NUMBER'
128 $arConfig[
'CONFIG'][
'tarif_section_2'] =
array(
135 foreach (self::$defaultTarifs[
"WARE_DOOR"] as $uperWeight => $price)
137 $arConfig[
'CONFIG'][
'TARIF_WARE_DOOR_'.$uperWeight] =
array(
140 'TITLE' => ($prevWeight/1000).
' - '.($uperWeight/1000).
' '.
GetMessage(
'SALE_DH_UP_KG').
'.',
142 'CHECK_FORMAT' =>
'NUMBER'
145 $prevWeight = $uperWeight;
148 $arConfig[
'CONFIG'][
'tarif_section_3'] =
array(
155 foreach (self::$defaultTarifs[
"DOOR_DOOR"] as $uperWeight => $price)
157 $arConfig[
'CONFIG'][
'TARIF_DOOR_DOOR_'.$uperWeight] =
array(
160 'TITLE' => ($prevWeight/1000).
' - '.($uperWeight/1000).
' '.
GetMessage(
'SALE_DH_UP_KG').
'.',
162 'CHECK_FORMAT' =>
'NUMBER'
165 $prevWeight = $uperWeight;
168 $arConfig[
'CONFIG'][
'tarif_section_4'] =
array(
174 $arConfig[
'CONFIG'][
'OB_COMISS'] =
array(
176 'DEFAULT' => self::$defaultTarifs[
"OB_COMISS"],
177 'TITLE' =>
GetMessage(
'SALE_DH_UP_TARIF_DV_VALUE').
' %',
179 'CHECK_FORMAT' =>
'NUMBER'
183 $arConfig[
'CONFIG'][
'OB_COMISS_MIN'] =
array(
185 'DEFAULT' => self::$defaultTarifs[
"OB_COMISS_MIN"],
186 'TITLE' =>
GetMessage(
'SALE_DH_UP_TARIF_DV_MIN'),
188 'CHECK_FORMAT' =>
'NUMBER'
192 $aviableBoxes = self::getAviableBoxes();
194 foreach ($aviableBoxes as $boxId => $arBox)
198 foreach ($aviableBoxes as $boxId => $arBox)
206 return unserialize($strSettings, [
'allowed_classes' =>
false]);
211 foreach ($arSettings as
$key => $value)
214 $arSettings[
$key] = $value;
216 unset($arSettings[
$key]);
219 return serialize($arSettings);
226 if ($arConfig[
"DELIVERY_TO_POST"][
"VALUE"] ==
"ware")
231 if ($arConfig[
"OB_COMISS"][
"VALUE"] != 0 && $arConfig[
"OB_COMISS_MIN"][
"VALUE"] != 0)
237 public static function Calculate($profile, $arConfig, $arOrder,
$STEP, $TEMP =
false)
246 $packageCount =
count($arPackagesParams);
248 if(intval($packageCount) <= 0)
259 foreach ($arPackagesParams as $arPackage)
261 $totalPrice += self::calculatePackPrice($arPackage, $profile, $arConfig);
266 'VALUE' => $totalPrice,
267 'PACKS_COUNT' => $packageCount
274 if(floatval($arOrder[
"WEIGHT"]) <= self::$MAX_WEIGHT)
275 $profiles =
array(
'ware',
'door');
281 foreach ($profiles as $profile)
285 foreach ($aviableBoxes as $arBox)
298 private static function getConfValue(&$arConfig,
$key)
303 private static function getAviableBoxes()
308 "DIMENSIONS" =>
array(
"0",
"0",
"0")
313 private static function calculatePackPrice($arPackage, $profile, $arConfig)
318 $BO = floatval(self::getConfValue($arConfig,
'TARIF_BO'));
319 $arDebug[] =
'BO: '.$BO;
321 $T1 = floatval(self::getConfValue($arConfig,
'TARIF_T1'));
322 $arDebug[] =
'T1: '.$T1;
325 $arDebug[] =
'calc weight: '.$weightForCalc;
327 $CK = floatval(self::getConfValue($arConfig,
'OB_COMISS'))*$arPackage[
'PRICE']/100;
328 $minComiss = floatval(self::getConfValue($arConfig,
'OB_COMISS_MIN'));
333 $arDebug[] =
'ccomiss: '.$CK;
335 $deliveeryToPost = self::getConfValue($arConfig,
'DELIVERY_TO_POST');
337 if($profile ==
'door' && $deliveeryToPost ==
'door')
339 foreach (self::$defaultTarifs[
"DOOR_DOOR"] as $uperWeight => $value)
341 if($uperWeight > $weightForCalc)
343 $servicePrice = self::getConfValue($arConfig,
'TARIF_DOOR_DOOR_'.$uperWeight);
344 $arDebug[] =
'Service price: '.$servicePrice;
351 $servicePrice = $T1*ceil($weightForCalc/1000);
352 $arDebug[] =
'Service price: '.$servicePrice;
354 if($profile != $deliveeryToPost)
356 foreach (self::$defaultTarifs[
"WARE_DOOR"] as $uperWeight => $value)
358 if($uperWeight > $weightForCalc)
360 $price = self::getConfValue($arConfig,
'TARIF_WARE_DOOR_'.$uperWeight);
361 $arDebug[] =
'ware-door price: '.$price;
362 $servicePrice += $price;
363 $arDebug[] =
'Service price: '.$servicePrice;
370 $totalPrice = $servicePrice+$BO+$CK;
371 $arDebug[] =
'Total value: '.$totalPrice;
378 return $volume/4000000;
385 if(floatval($weight) >= floatval($volWeight))
static checkDimensions($arOrderDimensions, $arRestrictDimensions)
static getWeightForCalc($weight, $volume)
static Compability($arOrder, $arConfig)
static Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP=false)
static SetSettings($arSettings)
static GetSettings($strSettings)
static calcVolumeWeightByVolume($volume)
static GetFeatures($arConfig)
static IncludeModule($module_name)
static makeBoxConfig($boxId, $arBox, $group, &$arConfig)
static getRequiredPacks(&$arItems, $arPacks, $maxWeight, $reservedSpace=0.15)
static getConfValue($arField)
static getBoxesFromConfig($profile, &$arConfig)
</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)
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."%"