3namespace Bitrix\Sale\Delivery\ExtraServices;
5use Bitrix\Main\SystemException;
6use Bitrix\Main\Localization\Loc;
8Loc::loadMessages(__FILE__);
14 $prices = !empty($structure[
"PARAMS"][
"PRICES"]) && is_array($structure[
"PARAMS"][
"PRICES"]) ? $structure[
"PARAMS"][
"PRICES"] :
array();
16 parent::__construct($id, $structure,
$currency, $value);
17 $this->params[
"TYPE"] =
"ENUM";
18 $this->params[
"OPTIONS"] =
array();
23 return Loc::getMessage(
"DELIVERY_EXTRA_SERVICE_ENUM_TITLE");
29 !isset($this->params[
"PRICES"])
30 || !is_array($this->params[
"PRICES"])
33 throw new SystemException(
"Service id: " . $this->
id .
" doesn't have field array PRICES");
36 if (isset($this->params[
"PRICES"][$this->value][
"PRICE"]))
38 $result = $this->params[
"PRICES"][$this->value][
"PRICE"];
42 $row = reset($this->params[
"PRICES"]);
46 return $this->convertToOperatingCurrency(
$result);
51 if(!isset(
$params[
"PARAMS"][
"PRICES"]) || !is_array(
$params[
"PARAMS"][
"PRICES"]))
54 foreach(
$params[
"PARAMS"][
"PRICES"] as $id => $price)
55 if($price[
"TITLE"] ==
'')
56 unset(
$params[
"PARAMS"][
"PRICES"][$id]);
63 return Loc::getMessage(
"DELIVERY_EXTRA_SERVICE_ENUM_LIST");
68 $result =
'<div style="border: 1px solid #e0e8ea; padding: 10px; width: 500px;">';
70 if(isset(
$params[
"PARAMS"][
"PRICES"]) && is_array(
$params[
"PARAMS"][
"PRICES"]))
72 foreach(
$params[
"PARAMS"][
"PRICES"] as $id => $price)
74 if(!isset(
$params[
"PARAMS"][
"PRICES"][$id]))
75 $params[
"PARAMS"][
"PRICES"][$id] = 0;
77 $result .= self::getValueHtml(
$name, $id, $price[
"TITLE"], $price[
"PRICE"] ?? 0,
$currency).
"<br><br>";
83 '<input type="button" value="'.Loc::getMessage(
"DELIVERY_EXTRA_SERVICE_ENUM_ADD").
84 '" onclick=\'var d=new Date(); '.
85 'this.parentNode.insertBefore(BX.create("span",{html: this.nextElementSibling.innerHTML.replace(/\#ID\#/g, d.getTime())}), this);\'>'.
86 '<span style="display:none;">'.self::getValueHtml(
$name,
'#ID#').
"<br><br>".
'</span><br><br></div>';
96 return Loc::getMessage(
"DELIVERY_EXTRA_SERVICE_ENUM_NAME").
97 ': <input name="'.$name.
'[PARAMS][PRICES]['.$id.
'][TITLE]" value="'.
htmlspecialcharsbx(
$title).
'"> '.
98 Loc::getMessage(
"DELIVERY_EXTRA_SERVICE_ENUM_PRICE").
99 ': <input name="'.$name.
'[PARAMS][PRICES]['.$id.
'][PRICE]" value="'.$price.
'">'.(
$currency <> '' ?
" (".$currency.
")" :
"");
107 foreach($prices as $id => $price)
110 return "(function(value){var prices=".\CUtil::PhpToJSObject($prices).
"; return prices[value]['PRICE'];})(this.value)";
115 if(!empty($this->params[
"PRICES"]) && is_array($this->params[
"PRICES"]))
119 foreach($this->params[
"PRICES"] as $id => $price)
120 $prices[$id] = $this->convertToOperatingCurrency($price);
131 $this->params[
"OPTIONS"] = [];
133 if (empty($this->params[
"PRICES"]) || !is_array($this->params[
"PRICES"]))
138 foreach ($this->params[
"PRICES"] as
$key => $price)
140 if (!is_array($price))
144 $priceTitle = trim((
string)($price[
'TITLE'] ??
''));
145 if ($priceTitle ===
'')
150 $priceVal = (float)($price[
'PRICE'] ?? 0);
151 $this->params[
'OPTIONS'][
$key] =
156 $this->convertToOperatingCurrency($priceVal),
157 $this->operatingCurrency,
169 return parent::getEditControl($prefix, $value);
175 return parent::getViewControl();
180 return "BX.onCustomEvent('onDeliveryExtraServiceValueChange', [{'id' : '".$id.
"', 'value': this.value, 'price': ".$this->
getJSPrice($prices).
"}]);";
188 return isset($this->params[
'PRICES'][$this->value])
189 ? (string)$this->params[
'PRICES'][$this->value][
'TITLE']
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
if(empty($signedUserToken)) $key
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
SaleFormatCurrency($fSum, $strCurrency, $OnlyValue=false, $withoutFormat=false)
const SALE_VALUE_PRECISION