1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
contractortable.php
См. документацию.
1<?php
2
3namespace Bitrix\Catalog;
4
5use Bitrix\Main\Localization\Loc;
6use Bitrix\Main\ORM\Data\DataManager;
7use Bitrix\Main\ORM\Event;
8use Bitrix\Main\ORM\EventResult;
9use Bitrix\Main\ORM\Fields\DatetimeField;
10use Bitrix\Main\ORM\Fields\EnumField;
11use Bitrix\Main\ORM\Fields\IntegerField;
12use Bitrix\Main\ORM\Fields\StringField;
13use Bitrix\Main\ORM\Fields\Validators\LengthValidator;
14use Bitrix\Main\Type\DateTime;
15
56
58{
59 public const TYPE_INDIVIDUAL = '1';
60 public const TYPE_COMPANY = '2';
61
67 public static function getTableName(): string
68 {
69 return 'b_catalog_contractor';
70 }
71
77 public static function getMap(): array
78 {
79 return [
80 'ID' => new IntegerField(
81 'ID',
82 [
83 'primary' => true,
84 'autocomplete' => true,
85 'title' => Loc::getMessage('CONTRACTOR_ENTITY_ID_FIELD'),
86 ]
87 ),
88 'PERSON_TYPE' => new EnumField(
89 'PERSON_TYPE',
90 [
91 'required' => true,
92 'values' => static::getTypes(),
93 'title' => Loc::getMessage('CONTRACTOR_ENTITY_PERSON_TYPE_FIELD'),
94 ]
95 ),
96 'PERSON_NAME' => new StringField(
97 'PERSON_NAME',
98 [
99 'validation' => [__CLASS__, 'validatePersonName'],
100 'title' => Loc::getMessage('CONTRACTOR_ENTITY_PERSON_NAME_FIELD'),
101 ]
102 ),
103 'PERSON_LASTNAME' => new StringField(
104 'PERSON_LASTNAME',
105 [
106 'validation' => [__CLASS__, 'validatePersonLastname'],
107 'title' => Loc::getMessage('CONTRACTOR_ENTITY_PERSON_LASTNAME_FIELD'),
108 ]
109 ),
110 'PERSON_MIDDLENAME' => new StringField(
111 'PERSON_MIDDLENAME',
112 [
113 'validation' => [__CLASS__, 'validatePersonMiddlename'],
114 'title' => Loc::getMessage('CONTRACTOR_ENTITY_PERSON_MIDDLENAME_FIELD'),
115 ]
116 ),
117 'EMAIL' => new StringField(
118 'EMAIL',
119 [
120 'validation' => [__CLASS__, 'validateEmail'],
121 'title' => Loc::getMessage('CONTRACTOR_ENTITY_EMAIL_FIELD'),
122 ]
123 ),
124 'PHONE' => new StringField(
125 'PHONE',
126 [
127 'validation' => [__CLASS__, 'validatePhone'],
128 'title' => Loc::getMessage('CONTRACTOR_ENTITY_PHONE_FIELD'),
129 ]
130 ),
131 'POST_INDEX' => new StringField(
132 'POST_INDEX',
133 [
134 'validation' => [__CLASS__, 'validatePostIndex'],
135 'title' => Loc::getMessage('CONTRACTOR_ENTITY_POST_INDEX_FIELD'),
136 ]
137 ),
138 'COUNTRY' => new StringField(
139 'COUNTRY',
140 [
141 'validation' => [__CLASS__, 'validateCountry'],
142 'title' => Loc::getMessage('CONTRACTOR_ENTITY_COUNTRY_FIELD'),
143 ]
144 ),
145 'CITY' => new StringField(
146 'CITY',
147 [
148 'validation' => [__CLASS__, 'validateCity'],
149 'title' => Loc::getMessage('CONTRACTOR_ENTITY_CITY_FIELD'),
150 ]
151 ),
152 'COMPANY' => new StringField(
153 'COMPANY',
154 [
155 'validation' => [__CLASS__, 'validateCompany'],
156 'title' => Loc::getMessage('CONTRACTOR_ENTITY_COMPANY_FIELD'),
157 ]
158 ),
159 'INN' => new StringField(
160 'INN',
161 [
162 'validation' => [__CLASS__, 'validateInn'],
163 'title' => Loc::getMessage('CONTRACTOR_ENTITY_INN_FIELD'),
164 ]
165 ),
166 'KPP' => new StringField(
167 'KPP',
168 [
169 'validation' => [__CLASS__, 'validateKpp'],
170 'title' => Loc::getMessage('CONTRACTOR_ENTITY_KPP_FIELD'),
171 ]
172 ),
173 'ADDRESS' => new StringField(
174 'ADDRESS',
175 [
176 'validation' => [__CLASS__, 'validateAddress'],
177 'title' => Loc::getMessage('CONTRACTOR_ENTITY_ADDRESS_FIELD'),
178 ]
179 ),
180 'DATE_MODIFY' => new DatetimeField(
181 'DATE_MODIFY',
182 [
183 'default' => function()
184 {
185 return new DateTime();
186 },
187 'title' => Loc::getMessage('CONTRACTOR_ENTITY_DATE_MODIFY_FIELD'),
188 ]
189 ),
190 'DATE_CREATE' => new DatetimeField(
191 'DATE_CREATE',
192 [
193 'default_value' => function()
194 {
195 return new DateTime();
196 },
197 'title' => Loc::getMessage('CONTRACTOR_ENTITY_DATE_CREATE_FIELD'),
198 ]
199 ),
200 'CREATED_BY' => new IntegerField(
201 'CREATED_BY',
202 [
203 'title' => Loc::getMessage('CONTRACTOR_ENTITY_CREATED_BY_FIELD'),
204 ]
205 ),
206 'MODIFIED_BY' => new IntegerField(
207 'MODIFIED_BY',
208 [
209 'title' => Loc::getMessage('CONTRACTOR_ENTITY_MODIFIED_BY_FIELD'),
210 ]
211 ),
212 ];
213 }
214
220 public static function validatePersonName(): array
221 {
222 return [
223 new LengthValidator(null, 100),
224 ];
225 }
226
232 public static function validatePersonLastname(): array
233 {
234 return [
235 new LengthValidator(null, 100),
236 ];
237 }
238
244 public static function validatePersonMiddlename(): array
245 {
246 return [
247 new LengthValidator(null, 100),
248 ];
249 }
250
256 public static function validateEmail(): array
257 {
258 return [
259 new LengthValidator(null, 100),
260 ];
261 }
262
268 public static function validatePhone(): array
269 {
270 return [
271 new LengthValidator(null, 45),
272 ];
273 }
274
280 public static function validatePostIndex(): array
281 {
282 return [
283 new LengthValidator(null, 45),
284 ];
285 }
286
292 public static function validateCountry(): array
293 {
294 return [
295 new LengthValidator(null, 45),
296 ];
297 }
298
304 public static function validateCity(): array
305 {
306 return [
307 new LengthValidator(null, 45),
308 ];
309 }
310
316 public static function validateCompany(): array
317 {
318 return [
319 new LengthValidator(null, 145),
320 ];
321 }
322
328 public static function validateInn(): array
329 {
330 return [
331 new LengthValidator(null, 145),
332 ];
333 }
334
340 public static function validateKpp(): array
341 {
342 return [
343 new LengthValidator(null, 145),
344 ];
345 }
346
352 public static function validateAddress(): array
353 {
354 return [
355 new LengthValidator(null, 255),
356 ];
357 }
358
359 public static function getTypeList(bool $description = false): array
360 {
361 if ($description)
362 {
363 return [
364 self::TYPE_INDIVIDUAL => Loc::getMessage('CONTRACTOR_ENTITY_TYPE_INDIVIDUAL'),
365 self::TYPE_COMPANY => Loc::getMessage('CONTRACTOR_ENTITY_TYPE_COMPANY'),
366 ];
367 }
368 else
369 {
370 return [
371 self::TYPE_INDIVIDUAL,
372 self::TYPE_COMPANY,
373 ];
374 }
375 }
376
377 public static function getTypes(): array
378 {
379 return static::getTypeList();
380 }
381
382 public static function getTypeDescriptions(): array
383 {
384 return static::getTypeList(true);
385 }
386
393 public static function onBeforeAdd(Event $event): EventResult
394 {
395 $result = new EventResult;
396 $data = $event->getParameter('fields');
397 if (!array_key_exists('DATE_MODIFY', $data))
398 {
399 $result->modifyFields([
400 'DATE_MODIFY' => new DateTime(),
401 ]);
402 }
403 if (!array_key_exists('DATE_CREATE', $data))
404 {
405 $result->modifyFields([
406 'DATE_CREATE' => new DateTime(),
407 ]);
408 }
409
410 return $result;
411 }
412
419 public static function onBeforeUpdate(Event $event): EventResult
420 {
421 $result = new EventResult;
422 $data = $event->getParameter('fields');
423 if (!array_key_exists('DATE_MODIFY', $data))
424 {
425 $result->modifyFields([
426 'DATE_MODIFY' => new DateTime(),
427 ]);
428 }
429
430 return $result;
431 }
432}
static validatePersonMiddlename()
Определения contractortable.php:244
static validatePhone()
Определения contractortable.php:268
static validateAddress()
Определения contractortable.php:352
static getTypeDescriptions()
Определения contractortable.php:382
static onBeforeAdd(Event $event)
Определения contractortable.php:393
static validatePostIndex()
Определения contractortable.php:280
static validatePersonLastname()
Определения contractortable.php:232
static validateCity()
Определения contractortable.php:304
static validateCompany()
Определения contractortable.php:316
static onBeforeUpdate(Event $event)
Определения contractortable.php:419
static validateCountry()
Определения contractortable.php:292
static validateEmail()
Определения contractortable.php:256
static getTypeList(bool $description=false)
Определения contractortable.php:359
static validatePersonName()
Определения contractortable.php:220
static getTableName()
Определения contractortable.php:67
$data['IS_AVAILABLE']
Определения .description.php:13
</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
if(Loader::includeModule( 'bitrix24')) elseif(Loader::includeModule('intranet') &&CIntranetUtils::getPortalZone() !=='ru') $description
Определения .description.php:24
Определения buffer.php:3
$event
Определения prolog_after.php:141