1<?
if (!defined(
"B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !==
true)
die();
9 public static function getPrice(&$arPaySystem, $orderPrice, $deliveryPrice, $buyerLocationId)
11 if(!isset($arPaySystem[
"PSA_TARIF"]) || $arPaySystem[
"PSA_TARIF"] ==
'')
16 $regId = $arLoc[
"REGION_ID"];
18 $arTarif = isset($arTarifs[$regId]) ? $arTarifs[$regId] : $arTarifs[0];
19 $fullPrice = $orderPrice + $deliveryPrice;
21 if($fullPrice <= 1000)
25 elseif($fullPrice <= 20000)
27 elseif($fullPrice <= 500000)
33 if ($arTarif[
"TARIFS"][$tarifNum][
"UPPER_SUMM"] < $orderPrice)
34 $percent = floatval($arTarif[
"TARIFS"][$tarifNum][
"PERCENT"]) * floatval($orderPrice) / 100;
35 $result = floatval($arTarif[
"TARIFS"][$tarifNum][
"FIX"]) + $percent;
41 public static function getValues($psId =
false, $persId =
false)
50 array(
"PAY_SYSTEM_ID" => $psId,
"PERSON_TYPE_ID" => $persId)
52 if ($arPSAction = $dbPSAction->Fetch())
62 'ps_payment_forward_calc_tarifs',
63 array(
'CSalePaySystemTarifPFC',
'getAllCMTarifsFromCsv')
74 $arTarifs = parent::extractFromField($strFieldContent);
75 $arTarifs = ($arTarifs) ?:
array();
76 $arRegIds = array_keys($arTarifs);
79 $arResult[0][
"TARIFS"] = self::getTarifArrayCSV($arTarifs[0]);
82 foreach ($regNames as $regId => $regName)
84 $assocTarif = self::getTarifArrayCSV($arTarifs[$regId]);
87 $arResult[$regId][
"TARIFS"] = $assocTarif;
99 if(is_array($arTarif))
101 foreach ($arTarif as $tarifId => $value)
103 if($tarifId ==
"REG_NEW" && $value > 0)
111 $arTarifId = explode(
'_', $tarifId);
113 if(isset($arTarifId[2]))
114 $regionId = $arTarifId[2];
119 return parent::prepareToField(
$arResult);
130 foreach ($arCmTarifs as $regionId => $arRegInfo)
134 'TYPE' =>
'TEXT_CENTERED',
135 'TITLE' => $arRegInfo[
"REG_NAME"],
136 'BLOCK_HIDEABLE' =>
'Y',
141 $arResult[$regionId.
'REG_ID'][
'BLOCK_DELETABLE'] =
'Y';
143 self::setTarifConfig(
144 'TARIF_1_'.$regionId,
146 $arRegInfo[
"TARIFS"][0],
149 self::setTarifConfig(
150 'TARIF_2_'.$regionId,
152 $arRegInfo[
"TARIFS"][1],
155 self::setTarifConfig(
156 'TARIF_3_'.$regionId,
158 $arRegInfo[
"TARIFS"][2],
161 self::setTarifConfig(
162 'TARIF_4_'.$regionId,
164 $arRegInfo[
"TARIFS"][3],
168 $arRegions = self::getRegionsList();
170 'TYPE' =>
'DROPDOWN',
172 'VALUES' => $arRegions,
173 'ONCHANGE' =>
"document.forms['pay_sys_form'].elements['apply'].click();"
179 private static function getRegionsList()
184 while ($arReg = $dbReg->Fetch())
185 $arResult[$arReg[
"ID"]] = $arReg[
"NAME"];
190 public static function checkCompability(&$arOrder, $orderPrice, $deliveryPrice, $buyerLocationId)
193 $fullPrice = $orderPrice+$deliveryPrice;
195 return ($fullPrice <= $maxSumm);
198 private static function setTarifConfig($tarifId, $tarifTitle, $arTarifs, &$arConfig)
200 $arConfig[$tarifId.
'_NAME'] =
array(
201 'TYPE' =>
'MULTI_CONTROL_STRING',
202 'MCS_ID' => $tarifId,
203 'TITLE' => $tarifTitle,
206 $arConfig[$tarifId.
'_FIX'] =
array(
208 'MCS_ID' => $tarifId,
209 'POST_TEXT' =>
' '.
GetMessage(
'SPFPCT_RUB').
' ',
211 'VALUE' => $arTarifs[
'FIX']
214 $arConfig[$tarifId.
'_PERCENT'] =
array(
216 'MCS_ID' => $tarifId,
218 'POST_TEXT' =>
' % ',
220 'VALUE' => $arTarifs[
'PERCENT']
223 $arConfig[$tarifId.
'_UPPER_SUMM'] =
array(
225 'MCS_ID' => $tarifId,
226 'PRE_TEXT' =>
' '.
GetMessage(
'SPFPCT_SUMM_MORE').
' ',
227 'POST_TEXT' =>
' '.
GetMessage(
'SPFPCT_RUB').
' ',
229 'VALUE' => $arTarifs[
'UPPER_SUMM']
233 private static function getTarifArrayCSV($arTarifs)
237 if(is_array($arTarifs) &&
count($arTarifs) == 12)
242 "FIX" => $arTarifs[
$i*3],
243 "PERCENT" => $arTarifs[
$i*3+1],
244 "UPPER_SUMM" => $arTarifs[
$i*3+2]
254 if(trim($regionNameLang) ==
'')
261 $arTarifs = $csvFile->Fetch();
263 while (
$arRes = $csvFile->Fetch())
265 if(mb_strtoupper(trim($regionNameLang)) ===
$arRes[$COL_REG_NAME])
272 $arTarifsResult = self::getTarifArrayCSV($arTarifs);
274 return $arTarifsResult;
284 while (
$arRes = $csvFile->Fetch())
286 $arRegName = array_shift(
$arRes);
287 $arTarifs[$arRegName] =
$arRes;
289 if($arRegName !=
'default')
290 $regNames[] = $arRegName;
293 if(isset($arTarifs[
'default']))
296 "TARIFS" => self::getTarifArrayCSV($arTarifs[
'default']),
297 "REG_NAME" =>
GetMessage(
'SPFPCT_TARIF_DEFAULT')
303 foreach ($regInfo as $regName => $regId)
305 $assocTarif = self::getTarifArrayCSV($arTarifs[$regName]);
307 $arResult[$regInfo[$regName]][
"TARIFS"] = $assocTarif;
308 $arResult[$regInfo[$regName]][
"REG_NAME"] = $regName;
static GetRegionsNamesByIds($arIds, $lang=LANGUAGE_ID)
static GetRegionsIdsByNames($arRegNames, $countryId=false)
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static getCsvObject($filePath)
static getShopLocation($siteId=false)
static getOptionOrImportValues($optName, $importFuncName=false, $arFuncParams=array(), $siteId="")
static GetByID($primary, $strLang=LANGUAGE_ID)
static GetRegionList($arOrder=Array("NAME_LANG"=>"ASC"), $arFilter=Array(), $strLang=LANGUAGE_ID)
static getValues($psId=false, $persId=false)
static getStructure($psId, $persId)
static getAllCMTarifsFromCsv()
static checkCompability(&$arOrder, $orderPrice, $deliveryPrice, $buyerLocationId)
static getPrice(&$arPaySystem, $orderPrice, $deliveryPrice, $buyerLocationId)
static getCMTarifsByRegionFromCsv($regionNameLang)
static prepareToField($arTarif)
static extractFromField($strFieldContent)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
GetMessage($name, $aReplace=null)
GetLangFileName($before, $after, $lang=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
</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."%"