1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
payment.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 Payment extends Base
10{
11 public function getFields(): array
12 {
13 return [
14 'PAY_SYSTEM_XML_ID' => [
15 'TYPE' => self::TYPE_STRING,
16 'ATTRIBUTES' => [
18 ],
19 ],
20 'PAY_SYSTEM_IS_CASH' => [
21 'TYPE' => self::TYPE_CHAR,
22 'ATTRIBUTES' => [
24 ],
25 ],
26 'ACCOUNT_NUMBER' => [
27 'TYPE' => self::TYPE_STRING,
28 'ATTRIBUTES' => [
30 ],
31 ],
32 'ID' => [
33 'TYPE' => self::TYPE_INT,
34 'ATTRIBUTES' => [
36 ],
37 ],
38 'ORDER_ID' => [
39 'TYPE' => self::TYPE_INT,
40 'ATTRIBUTES' => [
43 ],
44 ],
45 'PAID' => [
46 'TYPE' => self::TYPE_CHAR,
47 ],
48 'DATE_PAID' => [
49 'TYPE' => self::TYPE_DATETIME,
50 ],
51 'EMP_PAID_ID' => [
52 'TYPE' => self::TYPE_INT,
53 ],
54 'PAY_SYSTEM_ID' => [
55 'TYPE' => self::TYPE_INT,
56 'ATTRIBUTES' => [
57 Attributes::Required, //for builder
58 ],
59 ],
60 'PS_STATUS' => [
61 'TYPE' => self::TYPE_CHAR,
62 ],
63 'PS_STATUS_CODE' => [
64 'TYPE' => self::TYPE_STRING,
65 ],
66 'PS_STATUS_DESCRIPTION' => [
67 'TYPE' => self::TYPE_STRING,
68 ],
69 'PS_STATUS_MESSAGE' => [
70 'TYPE' => self::TYPE_STRING,
71 ],
72 'PS_SUM' => [
73 'TYPE' => self::TYPE_FLOAT,
74 ],
75 'PS_CURRENCY' => [
76 'TYPE' => self::TYPE_STRING,
77 ],
78 'PS_RESPONSE_DATE' => [
79 'TYPE' => self::TYPE_DATETIME,
80 ],
81 'PAY_VOUCHER_NUM' => [
82 'TYPE' => self::TYPE_STRING,
83 ],
84 'PAY_VOUCHER_DATE' => [
85 'TYPE' => self::TYPE_DATETIME,
86 ],
87 'DATE_PAY_BEFORE' => [
88 'TYPE' => self::TYPE_DATETIME,
89 ],
90 'DATE_BILL' => [
91 'TYPE' => self::TYPE_DATETIME,
92 ],
93 'XML_ID' => [
94 'TYPE' => self::TYPE_STRING,
95 ],
96 'SUM' => [
97 'TYPE' => self::TYPE_FLOAT,
98 ],
99 'CURRENCY' => [
100 'TYPE' => self::TYPE_STRING,
101 'ATTRIBUTES' => [
103 ],
104 ],
105 'PAY_SYSTEM_NAME' => [
106 'TYPE' => self::TYPE_STRING,
107 'ATTRIBUTES' => [
109 ],
110 ],
111 'COMPANY_ID' => [
112 'TYPE' => self::TYPE_INT,
113 ],
114 'PAY_RETURN_NUM' => [
115 'TYPE' => self::TYPE_STRING,
116 ],
117 'PRICE_COD' => [
118 'TYPE' => self::TYPE_FLOAT,
119 ],
120 'PAY_RETURN_DATE' => [
121 'TYPE' => self::TYPE_DATE,
122 ],
123 'EMP_RETURN_ID' => [
124 'TYPE' => self::TYPE_INT,
125 ],
126 'PAY_RETURN_COMMENT' => [
127 'TYPE' => self::TYPE_STRING,
128 ],
129 'RESPONSIBLE_ID' => [
130 'TYPE' => self::TYPE_INT,
131 ],
132 'EMP_RESPONSIBLE_ID' => [
133 'TYPE' => self::TYPE_INT,
134 ],
135 'DATE_RESPONSIBLE_ID' => [
136 'TYPE' => self::TYPE_DATETIME,
137 'ATTRIBUTES' => [
139 ],
140 ],
141 'IS_RETURN' => [
142 'TYPE' => self::TYPE_CHAR,
143 ],
144 'COMMENTS' => [
145 'TYPE' => self::TYPE_STRING,
146 ],
147 'UPDATED_1C' => [
148 'TYPE' => self::TYPE_CHAR,
149 ],
150 'ID_1C' => [
151 'TYPE' => self::TYPE_STRING,
152 ],
153 'VERSION_1C' => [
154 'TYPE' => self::TYPE_STRING,
155 ],
156 'EXTERNAL_PAYMENT' => [
157 'TYPE' => self::TYPE_CHAR,
158 ],
159 'PS_INVOICE_ID' => [
160 'TYPE' => self::TYPE_STRING,
161 ],
162 'MARKED' => [
163 'TYPE' => self::TYPE_CHAR,
164 ],
165 'REASON_MARKED' => [
166 'TYPE' => self::TYPE_STRING,
167 ],
168 'DATE_MARKED' => [
169 'TYPE' => self::TYPE_DATETIME,
170 'ATTRIBUTES' => [
172 ],
173 ],
174 'EMP_MARKED_ID' => [
175 'TYPE' => self::TYPE_INT,
176 ],
177 ];
178 }
179
180 public function internalizeFieldsModify($fields, $fieldsInfo = []): array
181 {
182 $result = [];
183
184 $fieldsInfo = empty($fieldsInfo) ? $this->getFields() : $fieldsInfo;
185 $listFieldsInfoAdd = $this->getListFieldInfo(
186 $fieldsInfo,
187 [
188 'filter' => [
189 'ignoredAttributes' => [
192 ],
193 'ignoredFields' => [
194 'ORDER_ID',
195 ],
196 ],
197 ]
198 );
199 $listFieldsInfoUpdate = $this->getListFieldInfo(
200 $fieldsInfo,
201 [
202 'filter' => [
203 'ignoredAttributes' => [
207 ],
208 'skipFields' => [
209 'ID',
210 ],
211 ],
212 ]
213 );
214
215 if (isset($fields['ORDER']['ID']))
216 {
217 $result['ORDER']['ID'] = (int)$fields['ORDER']['ID'];
218 }
219
220 if (isset($fields['ORDER']['PAYMENTS']))
221 {
222 foreach ($fields['ORDER']['PAYMENTS'] as $k => $item)
223 {
224 $result['ORDER']['PAYMENTS'][$k] = $this->internalizeFields(
225 $item,
226 $this->isNewItem($item) ? $listFieldsInfoAdd : $listFieldsInfoUpdate
227 );
228 }
229 }
230
231 return $result;
232 }
233
234 protected function getRewritedFields(): array
235 {
236 return [
237 'PAY_SYSTEM_IS_CASH' => [
238 'REFERENCE_FIELD'=>'PAY_SYSTEM.IS_CASH',
239 ],
240 'PAY_SYSTEM_XML_ID' => [
241 'REFERENCE_FIELD'=>'PAY_SYSTEM.XML_ID',
242 ],
243 ];
244 }
245
246 public function internalizeArguments($name, $arguments): array
247 {
248 if (!(
249 $name === 'getorderid'
250 || $name === 'getpaymentsystemid'
251 || $name === 'getpaymentsystemname'
252 || $name === 'getpersontypeid'
253 || $name === 'getsum'
254 || $name === 'getsumpaid'
255 || $name === 'isinner'
256 || $name === 'ismarked'
257 || $name === 'isnarked'
258 || $name === 'ispaid'
259 || $name === 'isreturn'
260 || $name === 'setpaid'
261 || $name === 'setreturn'
262 || $name === 'setavailablepaysystems'
263 || $name === 'clearavailablepaysystems'
264 ))
265 {
266 parent::internalizeArguments($name, $arguments);
267 }
268
269 return $arguments;
270 }
271
273 {
274 return $this->externalizeListFields($fields);
275 }
276
278 {
279 $result = new Result();
280
281 $emptyFields = [];
282 if (!isset($fields['ORDER']['ID']))
283 {
284 $emptyFields[] = '[order][id]';
285 }
286 if (!isset($fields['ORDER']['PAYMENTS']) || !is_array($fields['ORDER']['PAYMENTS']))
287 {
288 $emptyFields[] = '[order][payments][]';
289 }
290
291 if (!empty($emptyFields))
292 {
293 $result->addError(new Error('Required fields: ' . implode(', ', $emptyFields)));
294 }
295 else
296 {
297 $result = parent::checkFieldsModify($fields);
298 }
299
300 return $result;
301 }
302
304 {
305 $result = new Result();
306
307 $listFieldsInfoAdd = $this->getListFieldInfo(
308 $this->getFields(),
309 [
310 'filter' => [
311 'ignoredAttributes' => [
314 ],
315 'ignoredFields' => [
316 'ORDER_ID',
317 ],
318 ],
319 ]
320 );
321 $listFieldsInfoUpdate = $this->getListFieldInfo(
322 $this->getFields(),
323 [
324 'filter' => [
325 'ignoredAttributes' => [
329 ],
330 ],
331 ]
332 );
333
334 foreach ($fields['ORDER']['PAYMENTS'] as $k=>$item)
335 {
336 $required = $this->checkRequiredFields(
337 $item,
338 $this->isNewItem($item) ? $listFieldsInfoAdd : $listFieldsInfoUpdate
339 );
340 if (!$required->isSuccess())
341 {
342 $result->addError(new Error(
343 '[payments]['.$k.'] - ' . implode(', ', $required->getErrorMessages()) . '.'
344 ));
345 }
346 }
347
348 return $result;
349 }
350}
Определения 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
internalizeArguments($name, $arguments)
Определения payment.php:246
checkFieldsModify($fields)
Определения payment.php:277
externalizeFieldsModify($fields)
Определения payment.php:272
internalizeFieldsModify($fields, $fieldsInfo=[])
Определения payment.php:180
checkRequiredFieldsModify($fields)
Определения payment.php:303
</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
$name
Определения menu_edit.php:35
$k
Определения template_pdf.php:567
$fields
Определения yandex_run.php:501