12 private static $MAX_WEIGHT = 10000;
13 private static $MAX_DIMENSIONS =
array(
"800",
"800",
"500");
15 private static $BASE_WEIGHT = 1000;
17 private static $TARIFS =
array();
18 private static $TARIF_IDX = 0;
19 private static $TARIF_DEFAULT = 1;
20 private static $TARIF_DESCR = 2;
22 public static function Init()
24 self::$TARIFS =
array(
40 'DESCRIPTION' =>
GetMessage(
'SALE_DH_KP_DESCR').
' <a href="http://www.kazpost.kz">http://www.kazpost.kz</a>',
41 'DESCRIPTION_INNER' =>
GetMessage(
'SALE_DH_KP_DESCR').
' <a href="http://www.kazpost.kz">http://www.kazpost.kz</a>',
42 'BASE_CURRENCY' =>
'KZT',
43 'HANDLER' => __FILE__,
45 'DBGETSETTINGS' =>
array(
'CDeliveryKazPost',
'GetSettings'),
46 'DBSETSETTINGS' =>
array(
'CDeliveryKazPost',
'SetSettings'),
47 'GETCONFIG' =>
array(
'CDeliveryKazPost',
'GetConfig'),
48 'COMPABILITY' =>
array(
'CDeliveryKazPost',
'Compability'),
49 'CALCULATOR' =>
array(
'CDeliveryKazPost',
'Calculate'),
53 'distant_inner' =>
array(
55 'DESCRIPTION' =>
GetMessage(
'SALE_DH_KP_DI_DESCR'),
56 'RESTRICTIONS_WEIGHT' =>
array(0, self::$MAX_WEIGHT),
57 'RESTRICTIONS_SUM' =>
array(0),
59 'RESTRICTIONS_MAX_SIZE' => 0,
60 'RESTRICTIONS_DIMENSIONS_SUM' => 0,
61 'RESTRICTIONS_DIMENSIONS' => self::$MAX_DIMENSIONS
70 'CONFIG_GROUPS' =>
array(
71 'distant_inner' =>
GetMessage(
'SALE_DH_KP_DI_TITLE'),
75 $aviableBoxes = self::getAviableBoxes();
77 foreach ($aviableBoxes as $boxId => $arBox)
80 $arConfig[
'CONFIG'][
'tarif_section_1'] =
array(
82 'TITLE' =>
GetMessage(
'SALE_DH_KP_TARIF_TITLE'),
83 'GROUP' =>
'distant_inner',
86 foreach (self::$TARIFS[
"BASE"] as $arTarif)
88 $tarifId = $arTarif[self::$TARIF_IDX];
89 $arConfig[
'CONFIG'][
'TARIF_'.$tarifId] =
array(
91 'DEFAULT' => $arTarif[self::$TARIF_DEFAULT],
92 'TITLE' => $arTarif[self::$TARIF_DESCR],
93 'GROUP' =>
'distant_inner',
97 $arConfig[
'CONFIG'][
'tarif_section_2'] =
array(
99 'TITLE' =>
GetMessage(
'SALE_DH_KP_TARIF_IREG'),
100 'GROUP' =>
'distant_inner',
103 foreach (self::$TARIFS[
"CAPITAL"] as $arTarif)
105 $tarifId = $arTarif[self::$TARIF_IDX];
106 $arConfig[
'CONFIG'][
'TARIF_'.$tarifId] =
array(
108 'DEFAULT' => $arTarif[self::$TARIF_DEFAULT],
109 'TITLE' => $arTarif[self::$TARIF_DESCR],
110 'GROUP' =>
'distant_inner',
119 return unserialize($strSettings, [
'allowed_classes' =>
false]);
124 foreach ($arSettings as
$key => $value)
127 $arSettings[
$key] = $value;
129 unset($arSettings[
$key]);
132 return serialize($arSettings);
135 public static function Calculate($profile, $arConfig, $arOrder,
$STEP, $TEMP =
false)
145 $packageCount =
count($arPackagesParams);
147 if ($packageCount <= 0)
161 foreach ($arPackagesParams as $arPackage)
163 $totalPrice += self::calculatePackPrice(
167 $arShopLocation[
'REGION_ID'] ?? 0,
168 $arLocationTo[
'REGION_ID'] ?? 0
174 'VALUE' => $totalPrice,
175 'PACKS_COUNT' => $packageCount,
185 foreach ($aviableBoxes as $arBox)
197 private static function getConfValue(&$arConfig,
$key)
202 private static function getAviableBoxes()
206 "NAME" =>
GetMessage(
"SALE_DH_KP_STNDRD_BOX"),
207 "DIMENSIONS" =>
array(
"800",
"800",
"500")
212 private static function calculatePackPrice($arPackage, $profile, $arConfig, $regionIdFrom, $regionIdTo)
215 $basePrice = $totalPrice = 0;
217 if($regionIdFrom == $regionIdTo)
218 $tarifGroup =
'CAPITAL';
220 $tarifGroup =
'BASE';
222 $basePrice = floatval(self::getConfValue($arConfig,
'TARIF_'.self::$TARIFS[$tarifGroup][
'WEIGHT_LESS_1000'][self::$TARIF_IDX]));
223 $arDebug[] =
'Base Price less 1000 g: '.$basePrice;
225 if($arPackage[
'WEIGHT'] > self::$BASE_WEIGHT)
227 $addWeight = ceil(($arPackage[
'WEIGHT'] - self::$BASE_WEIGHT)/500);
228 $addPrice = floatval(self::getConfValue($arConfig,
'TARIF_'.self::$TARIFS[$tarifGroup][
'WEIGHT_MORE_1000'][self::$TARIF_IDX]));
229 $arDebug[] =
'Price for additional weight more than 1000 g: '.$addWeight * $addPrice;
230 $basePrice += $addWeight * $addPrice;
233 $totalPrice = $basePrice;
234 $arDebug[] =
'Total value: '.$totalPrice;
static checkDimensions($arOrderDimensions, $arRestrictDimensions)
static Compability($arOrder, $arConfig)
static Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP=false)
static SetSettings($arSettings)
static GetSettings($strSettings)
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)
static getLocationByIdHitCached($id)
static getShopLocationId($siteId)
</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."%"