4namespace Bitrix\Catalog\RestView;
7use Bitrix\Rest\Integration\View\Attributes;
10use Bitrix\Rest\Integration\View\DataType;
11use Bitrix\Rest\Integration\View\Base;
19 'TYPE'=>DataType::TYPE_INT,
25 'TYPE'=>DataType::TYPE_INT,
32 'TYPE'=>DataType::TYPE_INT,
35 'TYPE'=>DataType::TYPE_INT,
42 'TYPE'=>DataType::TYPE_FLOAT,
44 Attributes::REQUIRED_ADD
48 'TYPE'=>DataType::TYPE_STRING,
50 Attributes::REQUIRED_ADD
54 'TYPE'=>DataType::TYPE_DATETIME,
60 'TYPE'=>DataType::TYPE_INT
63 'TYPE'=>DataType::TYPE_INT
66 'TYPE'=>DataType::TYPE_FLOAT,
76 if (
$name ==
'modify')
78 if(isset($arguments[
'fields']))
82 $arguments[
'fields'] = $this->convertKeysToSnakeCaseFields(
$fields);
87 $arguments = parent::convertKeysToSnakeCaseArguments(
$name, $arguments);
102 parent::internalizeArguments(
$name, $arguments);
112 $fieldsInfo = empty($fieldsInfo)? $this->
getFields():$fieldsInfo;
113 $listFieldsInfoAdd = $this->getListFieldInfo($fieldsInfo, [
'filter'=>[
'ignoredAttributes'=>[Attributes::HIDDEN, Attributes::READONLY],
'ignoredFields'=>[
'PRODUCT_ID']]]);
114 $listFieldsInfoUpdate = $this->getListFieldInfo($fieldsInfo, [
'filter'=>[
'ignoredAttributes'=>[Attributes::HIDDEN, Attributes::READONLY, Attributes::IMMUTABLE],
'skipFields'=>[
'ID']]]);
116 if(isset(
$fields[
'PRODUCT'][
'ID']))
119 if(isset(
$fields[
'PRODUCT'][
'PRICES']))
121 foreach (
$fields[
'PRODUCT'][
'PRICES'] as
$k=>$item)
123 $result[
'PRODUCT'][
'PRICES'][
$k] = $this->internalizeFields($item,
124 $this->isNewItem($item)? $listFieldsInfoAdd:$listFieldsInfoUpdate
134 if(
$name ==
'modify')
136 $fields = $arguments[
'fields'];
141 return parent::checkArguments(
$name, $arguments);
150 if(!isset(
$fields[
'PRODUCT'][
'ID']))
152 $emptyFields[] =
'[product][id]';
154 if(!isset(
$fields[
'PRODUCT'][
'PRICES']) || !is_array(
$fields[
'PRODUCT'][
'PRICES']))
156 $emptyFields[] =
'[product][prices][]';
159 if(
count($emptyFields)>0)
161 $r->addError(
new Error(
'Required fields: '.implode(
', ', $emptyFields)));
166 if(!$required->isSuccess())
167 $r->addError(
new Error(
'Required fields: '.implode(
' ', $required->getErrorMessages())));
177 $listFieldsInfoAdd = $this->getListFieldInfo($this->
getFields(), [
'filter'=>[
'ignoredAttributes'=>[Attributes::HIDDEN, Attributes::READONLY],
'ignoredFields'=>[
'PRODUCT_ID']]]);
178 $listFieldsInfoUpdate = $this->getListFieldInfo($this->
getFields(), [
'filter'=>[
'ignoredAttributes'=>[Attributes::HIDDEN, Attributes::READONLY, Attributes::IMMUTABLE]]]);
180 foreach (
$fields[
'PRODUCT'][
'PRICES'] as
$k=>$item)
182 $required = $this->checkRequiredFields($item,
183 $this->isNewItem($item)? $listFieldsInfoAdd:$listFieldsInfoUpdate
185 if(!$required->isSuccess())
187 $r->addError(
new Error(
'[prices]['.
$k.
'] - '.implode(
', ', $required->getErrorMessages()).
'.'));
195 if (
$name ==
'modify')
209 return $this->externalizeListFields(
$fields);
212 private function isNewItem(
$fields)
214 return (isset(
$fields[
'ID']) ===
false);
internalizeArguments($name, $arguments)
checkFieldsModify($fields)
externalizeFieldsModify($fields)
convertKeysToSnakeCaseArguments($name, $arguments)
checkArguments($name, $arguments)
internalizeFieldsModify($fields, $fieldsInfo=[])
externalizeResult($name, $fields)
checkRequiredFieldsModify($fields)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
</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."%"