1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
shipment.php
См. документацию.
1<?php
2
3namespace Bitrix\Sale\Rest\Entity;
4
5use Bitrix\Main\Error;
6use Bitrix\Sale\Rest\Attributes;
7use Bitrix\Sale\Result;
8
9class Shipment extends Base
10{
11 public function getFields()
12 {
13 return [
14 'ID' => [
15 'TYPE' => self::TYPE_INT,
16 'ATTRIBUTES' => [
18 ],
19 ],
20 'ORDER_ID' => [
21 'TYPE' => self::TYPE_INT,
22 'ATTRIBUTES' => [
25 ],
26 ],
27 'STATUS_ID' => [
28 'TYPE' => self::TYPE_CHAR,
29 ],
30 'BASE_PRICE_DELIVERY' => [
31 'TYPE' => self::TYPE_FLOAT,
32 ],
33 'PRICE_DELIVERY' => [
34 'TYPE' => self::TYPE_FLOAT,
35 ],
36 'ALLOW_DELIVERY' => [
37 'TYPE' => self::TYPE_CHAR,
38 'ATTRIBUTES' => [
40 ],
41 ],
42 'DATE_ALLOW_DELIVERY' => [
43 'TYPE' => self::TYPE_DATETIME,
44 'ATTRIBUTES' => [
46 ],
47 ],
48 'EMP_ALLOW_DELIVERY_ID' => [
49 'TYPE' => self::TYPE_INT,
50 'ATTRIBUTES' => [
52 ],
53 ],
54 'DEDUCTED' => [
55 'TYPE' => self::TYPE_CHAR,
56 'ATTRIBUTES' => [
58 ],
59 ],
60 'DATE_DEDUCTED' => [
61 'TYPE' => self::TYPE_DATETIME,
62 'ATTRIBUTES' => [
64 ],
65 ],
66 'EMP_DEDUCTED_ID' => [
67 'TYPE' => self::TYPE_INT,
68 'ATTRIBUTES' => [
70 ],
71 ],
72 'REASON_UNDO_DEDUCTED' => [
73 'TYPE' => self::TYPE_STRING,
74 'ATTRIBUTES' => [
76 ],
77 ],
78 'DELIVERY_ID' => [
79 'TYPE' => self::TYPE_INT,
80 'ATTRIBUTES' => [
82 ],
83 ],
84 'DELIVERY_DOC_NUM' => [
85 'TYPE' => self::TYPE_STRING,
86 ],
87 'DELIVERY_DOC_DATE' => [
88 'TYPE' => self::TYPE_DATETIME,
89 ],
90 'TRACKING_NUMBER' => [
91 'TYPE' => self::TYPE_STRING,
92 ],
93 'XML_ID' => [
94 'TYPE' => self::TYPE_STRING,
95 ],
96 'DELIVERY_NAME' => [
97 'TYPE' => self::TYPE_STRING,
98 'ATTRIBUTES' => [
100 ],
101 ],
102 'COMPANY_ID' => [
103 'TYPE' => self::TYPE_INT,
104 ],
105 'MARKED'=>[
106 'TYPE' => self::TYPE_CHAR,
107 'ATTRIBUTES' => [
109 ],
110 ],
111 'DATE_MARKED' => [
112 'TYPE' => self::TYPE_DATETIME,
113 'ATTRIBUTES' => [
115 ],
116 ],
117 'EMP_MARKED_ID' => [
118 'TYPE'=>self::TYPE_INT,
119 'ATTRIBUTES' => [
121 ],
122 ],
123 'REASON_MARKED' => [
124 'TYPE' => self::TYPE_STRING,
125 'ATTRIBUTES' => [
127 ],
128 ],
129 'CANCELED' => [
130 'TYPE' => self::TYPE_CHAR,
131 'ATTRIBUTES' => [
133 ],
134 ],
135 'DATE_CANCELED' => [
136 'TYPE' => self::TYPE_DATETIME,
137 'ATTRIBUTES' => [
139 ],
140 ],
141 'EMP_CANCELED_ID' => [
142 'TYPE' => self::TYPE_INT,
143 'ATTRIBUTES' => [
145 ],
146 ],
147 'RESPONSIBLE_ID' => [
148 'TYPE' => self::TYPE_INT,
149 ],
150 'DATE_RESPONSIBLE_ID' => [
151 'TYPE' => self::TYPE_DATETIME,
152 'ATTRIBUTES' => [
154 ],
155 ],
156 'EMP_RESPONSIBLE_ID' => [
157 'TYPE' => self::TYPE_INT,
158 'ATTRIBUTES' => [
160 ],
161 ],
162 'COMMENTS' => [
163 'TYPE' => self::TYPE_STRING,
164 ],
165 'CURRENCY' => [
166 'TYPE' => self::TYPE_STRING,
167 'ATTRIBUTES' => [
169 ],
170 ],
171 'CUSTOM_PRICE_DELIVERY' => [
172 'TYPE' => self::TYPE_CHAR,
173 'ATTRIBUTES' => [
175 ],
176 ],
177 'UPDATED_1C' => [
178 'TYPE' => self::TYPE_CHAR,
179 'ATTRIBUTES' => [
181 ],
182 ],
183 'EXTERNAL_DELIVERY' => [
184 'TYPE' => self::TYPE_CHAR,
185 'ATTRIBUTES' => [
187 ],
188 ],
189 'VERSION_1C' => [
190 'TYPE' => self::TYPE_STRING,
191 'ATTRIBUTES' => [
193 ],
194 ],
195 'ID_1C' => [
196 'TYPE' => self::TYPE_STRING,
197 'ATTRIBUTES' => [
199 ],
200 ],
201 'TRACKING_STATUS' => [
202 'TYPE' => self::TYPE_STRING,
203 'ATTRIBUTES' => [
205 ],
206 ],
207 'TRACKING_LAST_CHECK' => [
208 'TYPE' => self::TYPE_STRING,
209 'ATTRIBUTES' => [
211 ],
212 ],
213 'TRACKING_DESCRIPTION' => [
214 'TYPE' => self::TYPE_STRING,
215 'ATTRIBUTES' => [
217 ],
218 ],
219 'DISCOUNT_PRICE' => [
220 'TYPE' => self::TYPE_FLOAT,
221 'ATTRIBUTES' => [
223 ],
224 ],
225 'DATE_INSERT' => [
226 'TYPE' => self::TYPE_DATETIME,
227 'ATTRIBUTES' => [
229 ],
230 ],
231 'SYSTEM' => [
232 'TYPE' => self::TYPE_CHAR,
233 'ATTRIBUTES' => [
235 ],
236 ],
237 'STATUS_XML_ID' => [
238 'TYPE' => self::TYPE_CHAR,
239 'ATTRIBUTES' => [
241 ],
242 ],
243 'DELIVERY_XML_ID' => [
244 'TYPE' => self::TYPE_STRING,
245 'ATTRIBUTES' => [
247 ],
248 ],
249 'ACCOUNT_NUMBER' => [
250 'TYPE' => self::TYPE_STRING,
251 'ATTRIBUTES' => [
253 ],
254 ],
255 'SHIPMENT_ITEMS' => [
256 'TYPE' => self::TYPE_LIST,
257 'ATTRIBUTES' => [
259 ],
260 ],
261 ];
262 }
263
264 public function internalizeFieldsModify($fields, $fieldsInfo=[])
265 {
266 $result = [];
267 $shipmentItem = new ShipmentItem();
268
269 $fieldsInfo = empty($fieldsInfo)? $this->getFields():$fieldsInfo;
270 $listFieldsInfoAdd = $this->getListFieldInfo($fieldsInfo, ['filter'=>['ignoredAttributes'=>[Attributes::Hidden, Attributes::ReadOnly]]]);
271 $listFieldsInfoUpdate = $this->getListFieldInfo($fieldsInfo, ['filter'=>['ignoredAttributes'=>[Attributes::Hidden, Attributes::ReadOnly, Attributes::Immutable], 'skipFields'=>['ID']]]);
272
273 if(isset($fields['ORDER']['ID']))
274 $result['ORDER']['ID'] = (int)$fields['ORDER']['ID'];
275
276 if(isset($fields['ORDER']['SHIPMENTS']))
277 {
278 foreach ($fields['ORDER']['SHIPMENTS'] as $k=>$item)
279 {
280 $result['ORDER']['SHIPMENTS'][$k] = $this->internalizeFields($item,
281 $this->isNewItem($item)? $listFieldsInfoAdd:$listFieldsInfoUpdate
282 );
283
284 if(isset($item['SHIPMENT_ITEMS']))
285 {
286 $result['ORDER']['SHIPMENTS'][$k]['SHIPMENT_ITEMS'] = $shipmentItem->internalizeFieldsModify(['SHIPMENT'=>['SHIPMENT_ITEMS'=>$item['SHIPMENT_ITEMS']]])['SHIPMENT']['SHIPMENT_ITEMS'];
287 }
288 }
289 }
290
291 return $result;
292 }
293
294 protected function getRewritedFields()
295 {
296 return [
297 'STATUS_XML_ID'=>[
298 'REFERENCE_FIELD'=>'STATUS_TABLE.XML_ID'
299 ],
300 'DELIVERY_XML_ID'=>[
301 'REFERENCE_FIELD'=>'DELIVERY.XML_ID'
302 ]
303 ];
304 }
305
306 public function externalizeFields($fields)
307 {
308 $shipmentItem = new \Bitrix\Sale\Rest\Entity\ShipmentItem();
309
310 $result = parent::externalizeFields($fields);
311
312 if(isset($fields['SHIPMENT_ITEMS']))
313 $result['SHIPMENT_ITEMS'] = $shipmentItem->externalizeListFields($fields['SHIPMENT_ITEMS']);
314
315 return $result;
316 }
317
319 {
320 return $this->externalizeListFields($fields);
321 }
322
323 public function checkFieldsModify($fields)
324 {
325 $r = new Result();
326
327 $emptyFields = [];
328 if(!isset($fields['ORDER']['ID']))
329 {
330 $emptyFields[] = '[order][id]';
331 }
332 if(!isset($fields['ORDER']['SHIPMENTS']) || !is_array($fields['ORDER']['SHIPMENTS']))
333 {
334 $emptyFields[] = '[order][shipments][]';
335 }
336
337 if(count($emptyFields)>0)
338 {
339 $r->addError(new Error('Required fields: '.implode(', ', $emptyFields)));
340 }
341 else
342 {
343 $r = parent::checkFieldsModify($fields);
344 }
345
346 return $r;
347 }
348
350 {
351 $r = new Result();
352
353 $shipmentItem = new ShipmentItem();
354
355 $listFieldsInfoAdd = $this->getListFieldInfo($this->getFields(), ['filter'=>['ignoredAttributes'=>[Attributes::Hidden, Attributes::ReadOnly], 'ignoredFields'=>['ORDER_ID']]]);
356 $listFieldsInfoUpdate = $this->getListFieldInfo($this->getFields(), ['filter'=>['ignoredAttributes'=>[Attributes::Hidden, Attributes::ReadOnly, Attributes::Immutable]]]);
357
358 foreach ($fields['ORDER']['SHIPMENTS'] as $k=>$item)
359 {
360 $required = $this->checkRequiredFields($item,
361 $this->isNewItem($item)? $listFieldsInfoAdd:$listFieldsInfoUpdate
362 );
363 if(!$required->isSuccess())
364 {
365 $r->addError(new Error('[shipments]['.$k.'] - '.implode(', ', $required->getErrorMessages()).'.'));
366 }
367
368 if(isset($item['SHIPMENT_ITEMS']))
369 {
370 $requiredShipmentItems = $shipmentItem->checkRequiredFieldsModify(['SHIPMENT'=>['SHIPMENT_ITEMS'=>$item['SHIPMENT_ITEMS']]]);
371 if(!$requiredShipmentItems->isSuccess())
372 {
373 $requiredPShipmentItemsFields = [];
374 foreach ($requiredShipmentItems->getErrorMessages() as $errorMessage)
375 {
376 $requiredPShipmentItemsFields[] = '[shipments]['.$k.']'.$errorMessage;
377 }
378 $r->addError(new Error(implode( ' ', $requiredPShipmentItemsFields)));
379 }
380 }
381 }
382 return $r;
383 }
384
385 public function internalizeArguments($name, $arguments)
386 {
387 if($name = 'getallowdeliverydate'
388 || $name == 'getallowdeliveryuserid'
389 || $name == 'getcompanyid'
390 || $name == 'getcurrency'
391 || $name == 'getdeliveryid'
392 || $name == 'getdeliveryname'
393 || $name == 'getparentorderid'
394 || $name == 'getpersontypeid'
395 || $name == 'getprice'
396 || $name == 'getphippeddate'
397 || $name == 'getshippeduserId'
398 || $name == 'getstoreid'
399 || $name == 'getunshipreason'
400 || $name == 'getvatrate'
401 || $name == 'getvatsum'
402 || $name == 'getweight'
403 || $name == 'setbasepricedelivery'
404 ){}
405 else
406 {
407 parent::internalizeArguments($name, $arguments);
408 }
409
410 return $arguments;
411 }
412}
Определения error.php:15
const Hidden
Определения attributes.php:8
const Required
Определения attributes.php:11
const ReadOnly
Определения attributes.php:9
const Immutable
Определения attributes.php:10
externalizeListFields($list)
Определения base.php:625
getListFieldInfo(array $fieldsInfo, $params=[])
Определения base.php:62
internalizeFields($fields, array $fieldsInfo)
Определения base.php:296
checkRequiredFields($fields, array $fieldsInfo, $params=[])
Определения base.php:736
isNewItem($fields)
Определения base.php:95
externalizeFields($fields)
Определения shipment.php:306
internalizeArguments($name, $arguments)
Определения shipment.php:385
checkFieldsModify($fields)
Определения shipment.php:323
externalizeFieldsModify($fields)
Определения shipment.php:318
internalizeFieldsModify($fields, $fieldsInfo=[])
Определения shipment.php:264
checkRequiredFieldsModify($fields)
Определения shipment.php:349
$result
Определения get_property_values.php:14
while($arParentIBlockProperty=$dbParentIBlockProperty->Fetch()) $errorMessage
$name
Определения menu_edit.php:35
</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."%"
Определения waybill.php:936
$k
Определения template_pdf.php:567
$fields
Определения yandex_run.php:501