1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
shipmentpropertyvalue.php
См. документацию.
1<?php
2
3namespace Bitrix\Sale\Rest\View;
4
5use Bitrix\Main\Error;
6use Bitrix\Main\Result;
7use Bitrix\Rest\Integration\View\Attributes;
8use Bitrix\Rest\Integration\View\DataType;
9
11{
12 public function getFields()
13 {
14 return [
15 'ID' => [
16 'TYPE' => DataType::TYPE_INT,
17 'ATTRIBUTES' => [
18 Attributes::READONLY,
19 Attributes::IMMUTABLE,
20 ],
21 ],
22 'SHIPMENT_ID' => [
23 'TYPE' => DataType::TYPE_INT,
24 'ATTRIBUTES' => [
25 Attributes::REQUIRED,
26 Attributes::IMMUTABLE,
27 ],
28 ],
29 'SHIPMENT_PROPS_XML_ID' => [
30 'TYPE' => DataType::TYPE_STRING,
31 'ATTRIBUTES' => [
32 Attributes::READONLY,
33 ]
34 ],
35 'NAME'=> [
36 'TYPE' => DataType::TYPE_STRING,
37 ],
38 'CODE'=> [
39 'TYPE' => DataType::TYPE_STRING,
40 ],
41 'VALUE' => [
42 'TYPE' => DataType::TYPE_STRING,
43 'ATTRIBUTES' => [
44 Attributes::REQUIRED,
45 ],
46 ],
47 'SHIPMENT_PROPS_ID' => [
48 'TYPE' => DataType::TYPE_INT,
49 'ATTRIBUTES' => [
50 Attributes::REQUIRED,
51 ],
52 ],
53 ];
54 }
55
56 protected function getRewriteFields(): array
57 {
58 return [
59 'SHIPMENT_ID' => [
60 'REFERENCE_FIELD' => 'ENTITY_ID',
61 ],
62 'SHIPMENT_PROPS_XML_ID' => [
63 'REFERENCE_FIELD' => 'ORDER_PROPS.XML_ID',
64 ],
65 'SHIPMENT_PROPS_ID' => [
66 'REFERENCE_FIELD' => 'ORDER_PROPS_ID',
67 ],
68 ];
69 }
70
72 {
73 $r = new Result();
74
75 $propertyValues =
76 (
77 isset($fields['SHIPMENT']['PROPERTY_VALUES'])
78 && is_array($fields['SHIPMENT']['PROPERTY_VALUES'])
79 )
80 ? $fields['SHIPMENT']['PROPERTY_VALUES']
81 : []
82 ;
83
84 foreach ($propertyValues as $k => $item)
85 {
86 $required = $this->checkRequiredFields(
87 $item,
88 $this->isNewItem($item)
89 ? $this->getListFieldsInfoAdd()
90 : $this->getListFieldsInfoUpdate()
91 );
92
93 if (!$required->isSuccess())
94 {
95 $r->addError(
96 new Error(
97 '[propertyValues]['.$k.'] - '
98 . implode(', ', $required->getErrorMessages()) . '.'
99 )
100 );
101 }
102 }
103
104 return $r;
105 }
106
108 {
109 $result = [];
110
111 if (isset($fields['SHIPMENT']['ID']))
112 {
113 $result['SHIPMENT']['ID'] = (int)$fields['SHIPMENT']['ID'];
114 }
115
116 if (
117 isset($fields['SHIPMENT']['PROPERTY_VALUES'])
118 && is_array($fields['SHIPMENT']['PROPERTY_VALUES'])
119 )
120 {
121 foreach ($fields['SHIPMENT']['PROPERTY_VALUES'] as $k => $item)
122 {
123 $result['SHIPMENT']['PROPERTY_VALUES'][$k] = $this->internalizeFields(
124 $item,
125 $this->isNewItem($item)
126 ? $this->getListFieldsInfoAdd()
127 : $this->getListFieldsInfoUpdate()
128 );
129 }
130 }
131
132 return $result;
133 }
134
136 {
137 return $this->externalizeListFields($fields);
138 }
139
140 private function getListFieldsInfoAdd(): array
141 {
142 $fields = $this->getFields();
143
144 return $this->getListFieldInfo(
145 $fields,
146 [
147 'filter' => [
148 'ignoredAttributes' => [
149 Attributes::HIDDEN,
150 Attributes::READONLY,
151 ],
152 'ignoredFields' => [
153 'SHIPMENT_ID',
154 ],
155 ],
156 ]
157 );
158 }
159
160 private function getListFieldsInfoUpdate(): array
161 {
162 $fields = $this->getFields();
163
164 return $this->getListFieldInfo(
165 $fields,
166 [
167 'filter' => [
168 'ignoredAttributes' => [
169 Attributes::HIDDEN,
170 Attributes::READONLY,
171 Attributes::IMMUTABLE,
172 ],
173 ],
174 ]
175 );
176 }
177}
Определения error.php:15
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$k
Определения template_pdf.php:567
$fields
Определения yandex_run.php:501