Bitrix-D7 23.9
 
Загрузка...
Поиск...
Не найдено
userprofiledocument.php
1<?php
3
5
7{
8 protected static $FIELD_INFOS = null;
9
13 protected static function getMessage()
14 {
15 return Main\Localization\Loc::loadLanguageFile($_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/sale/general/export.php',self::CML_LANG_ID);
16 }
17
21 public function getTypeId()
22 {
24 }
25
29 static public function getFieldsInfo()
30 {
31 if(!self::$FIELD_INFOS)
32 {
33 self::$FIELD_INFOS = array(
34 'XML_ID' => array(
35 'TYPE' => 'string'
36 ),
37 'VERSION' => array(
38 'TYPE' => 'string'
39 ),
40 'ITEM_NAME' => array(
41 'TYPE' => 'string'
42 ),
43 'OFICIAL_NAME' => array(
44 'TYPE' => 'string'
45 ),
46 'FULL_NAME' => array(
47 'TYPE' => 'string'
48 ),
49 'INN' => array(
50 'TYPE' => 'string'
51 ),
52 'KPP' => array(
53 'TYPE' => 'string'
54 ),
55 'OKPO_CODE' => array(
56 'TYPE' => 'string'
57 ),
58 'EGRPO' => array(
59 'TYPE' => 'string'
60 ),
61 'OKVED' => array(
62 'TYPE' => 'string'
63 ),
64 'OKDP' => array(
65 'TYPE' => 'string'
66 ),
67 'OKOPF' => array(
68 'TYPE' => 'string'
69 ),
70 'OKFC' => array(
71 'TYPE' => 'string'
72 ),
73 'OKPO' => array(
74 'TYPE' => 'string'
75 ),
76 //region export fields
77 'SURNAME' => array(
78 'TYPE' => 'string'
79 ),
80 'NAME' => array(
81 'TYPE' => 'string'
82 ),
83 'MIDDLE_NAME' => array(
84 'TYPE' => 'string'
85 ),
86 'BIRTHDAY' => array(
87 'TYPE' => 'string'
88 ),
89 'SEX' => array(
90 'TYPE' => 'string'
91 ),
92 'MONEY_ACCOUNTS' => array(
93 'TYPE' => 'array',
94 'FIELDS' => array(
95 'ACCOUNT_NUMBER' => array(
96 'TYPE' => 'string'
97 ),
98 'BANK' => array(
99 'TYPE' => 'array',
100 'FIELDS' => array(
101 'ITEM_NAME' => array(
102 'TYPE' => 'string'
103 ),
104 'ADDRESS' => array(
105 'TYPE' => 'array',
106 'FIELDS' => array(
107 'PRESENTATION' => array(
108 'TYPE' => 'string'
109 ),
110 'ADDRESS_FIELD' => array(
111 'TYPE' => 'array',
112 'FIELDS' => array(
113 'POST_CODE' => array(
114 'TYPE' => 'array',
115 'FIELDS' => array(
116 'TYPE' => array(
117 'TYPE' => 'string'
118 ),
119 'VALUE' => array(
120 'TYPE' => 'string'
121 )
122 )
123 ),
124 'COUNTRY' => array(
125 'TYPE' => 'array',
126 'FIELDS' => array(
127 'TYPE' => array(
128 'TYPE' => 'string'
129 ),
130 'VALUE' => array(
131 'TYPE' => 'string'
132 )
133 )
134 ),
135 'REGION' => array(
136 'TYPE' => 'array',
137 'FIELDS' => array(
138 'TYPE' => array(
139 'TYPE' => 'string'
140 ),
141 'VALUE' => array(
142 'TYPE' => 'string'
143 )
144 )
145 ),
146 'STATE' => array(
147 'TYPE' => 'array',
148 'FIELDS' => array(
149 'TYPE' => array(
150 'TYPE' => 'string'
151 ),
152 'VALUE' => array(
153 'TYPE' => 'string'
154 )
155 )
156 ),
157 'SMALL_CITY' => array(
158 'TYPE' => 'array',
159 'FIELDS' => array(
160 'TYPE' => array(
161 'TYPE' => 'string'
162 ),
163 'VALUE' => array(
164 'TYPE' => 'string'
165 )
166 )
167 ),
168 'CITY' => array(
169 'TYPE' => 'array',
170 'FIELDS' => array(
171 'TYPE' => array(
172 'TYPE' => 'string'
173 ),
174 'VALUE' => array(
175 'TYPE' => 'string'
176 )
177 )
178 ),
179 'STREET' => array(
180 'TYPE' => 'array',
181 'FIELDS' => array(
182 'TYPE' => array(
183 'TYPE' => 'string'
184 ),
185 'VALUE' => array(
186 'TYPE' => 'string'
187 )
188 )
189 ),
190 'HOUSE' => array(
191 'TYPE' => 'array',
192 'FIELDS' => array(
193 'TYPE' => array(
194 'TYPE' => 'string'
195 ),
196 'VALUE' => array(
197 'TYPE' => 'string'
198 )
199 )
200 ),
201 'BUILDING' => array(
202 'TYPE' => 'array',
203 'FIELDS' => array(
204 'TYPE' => array(
205 'TYPE' => 'string'
206 ),
207 'VALUE' => array(
208 'TYPE' => 'string'
209 )
210 )
211 ),
212 'FLAT' => array(
213 'TYPE' => 'array',
214 'FIELDS' => array(
215 'TYPE' => array(
216 'TYPE' => 'string'
217 ),
218 'VALUE' => array(
219 'TYPE' => 'string'
220 )
221 )
222 )
223 )
224 )
225 )
226 )
227 )
228 )
229 )
230 ),
231 //endregion
232 'REGISTRATION_ADDRESS' => array(
233 'TYPE' => 'array',
234 'FIELDS' => array(
235 'PRESENTATION' => array(
236 'TYPE' => 'string'
237 ),
238 'ADDRESS_FIELD' => array(
239 'TYPE' => 'array',
240 'FIELDS' => array(
241 'POST_CODE' => array(
242 'TYPE' => 'array',
243 'FIELDS' => array(
244 'TYPE' => array(
245 'TYPE' => 'string'
246 ),
247 'VALUE' => array(
248 'TYPE' => 'string'
249 )
250 )
251 ),
252 'COUNTRY' => array(
253 'TYPE' => 'array',
254 'FIELDS' => array(
255 'TYPE' => array(
256 'TYPE' => 'string'
257 ),
258 'VALUE' => array(
259 'TYPE' => 'string'
260 )
261 )
262 ),
263 'REGION' => array(
264 'TYPE' => 'array',
265 'FIELDS' => array(
266 'TYPE' => array(
267 'TYPE' => 'string'
268 ),
269 'VALUE' => array(
270 'TYPE' => 'string'
271 )
272 )
273 ),
274 'STATE' => array(
275 'TYPE' => 'array',
276 'FIELDS' => array(
277 'TYPE' => array(
278 'TYPE' => 'string'
279 ),
280 'VALUE' => array(
281 'TYPE' => 'string'
282 )
283 )
284 ),
285 'SMALL_CITY' => array(
286 'TYPE' => 'array',
287 'FIELDS' => array(
288 'TYPE' => array(
289 'TYPE' => 'string'
290 ),
291 'VALUE' => array(
292 'TYPE' => 'string'
293 )
294 )
295 ),
296 'CITY' => array(
297 'TYPE' => 'array',
298 'FIELDS' => array(
299 'TYPE' => array(
300 'TYPE' => 'string'
301 ),
302 'VALUE' => array(
303 'TYPE' => 'string'
304 )
305 )
306 ),
307 'STREET' => array(
308 'TYPE' => 'array',
309 'FIELDS' => array(
310 'TYPE' => array(
311 'TYPE' => 'string'
312 ),
313 'VALUE' => array(
314 'TYPE' => 'string'
315 )
316 )
317 ),
318 'HOUSE' => array(
319 'TYPE' => 'array',
320 'FIELDS' => array(
321 'TYPE' => array(
322 'TYPE' => 'string'
323 ),
324 'VALUE' => array(
325 'TYPE' => 'string'
326 )
327 )
328 ),
329 'BUILDING' => array(
330 'TYPE' => 'array',
331 'FIELDS' => array(
332 'TYPE' => array(
333 'TYPE' => 'string'
334 ),
335 'VALUE' => array(
336 'TYPE' => 'string'
337 )
338 )
339 ),
340 'FLAT' => array(
341 'TYPE' => 'array',
342 'FIELDS' => array(
343 'TYPE' => array(
344 'TYPE' => 'string'
345 ),
346 'VALUE' => array(
347 'TYPE' => 'string'
348 )
349 )
350 )
351 )
352 )
353 )
354 ),
355 'UR_ADDRESS' => array(
356 'TYPE' => 'array',
357 'FIELDS' => array(
358 'PRESENTATION' => array(
359 'TYPE' => 'string'
360 ),
361 'ADDRESS_FIELD' => array(
362 'TYPE' => 'array',
363 'FIELDS' => array(
364 'POST_CODE' => array(
365 'TYPE' => 'array',
366 'FIELDS' => array(
367 'TYPE' => array(
368 'TYPE' => 'string'
369 ),
370 'VALUE' => array(
371 'TYPE' => 'string'
372 )
373 )
374 ),
375 'COUNTRY' => array(
376 'TYPE' => 'array',
377 'FIELDS' => array(
378 'TYPE' => array(
379 'TYPE' => 'string'
380 ),
381 'VALUE' => array(
382 'TYPE' => 'string'
383 )
384 )
385 ),
386 'REGION' => array(
387 'TYPE' => 'array',
388 'FIELDS' => array(
389 'TYPE' => array(
390 'TYPE' => 'string'
391 ),
392 'VALUE' => array(
393 'TYPE' => 'string'
394 )
395 )
396 ),
397 'STATE' => array(
398 'TYPE' => 'array',
399 'FIELDS' => array(
400 'TYPE' => array(
401 'TYPE' => 'string'
402 ),
403 'VALUE' => array(
404 'TYPE' => 'string'
405 )
406 )
407 ),
408 'SMALL_CITY' => array(
409 'TYPE' => 'array',
410 'FIELDS' => array(
411 'TYPE' => array(
412 'TYPE' => 'string'
413 ),
414 'VALUE' => array(
415 'TYPE' => 'string'
416 )
417 )
418 ),
419 'CITY' => array(
420 'TYPE' => 'array',
421 'FIELDS' => array(
422 'TYPE' => array(
423 'TYPE' => 'string'
424 ),
425 'VALUE' => array(
426 'TYPE' => 'string'
427 )
428 )
429 ),
430 'STREET' => array(
431 'TYPE' => 'array',
432 'FIELDS' => array(
433 'TYPE' => array(
434 'TYPE' => 'string'
435 ),
436 'VALUE' => array(
437 'TYPE' => 'string'
438 )
439 )
440 ),
441 'HOUSE' => array(
442 'TYPE' => 'array',
443 'FIELDS' => array(
444 'TYPE' => array(
445 'TYPE' => 'string'
446 ),
447 'VALUE' => array(
448 'TYPE' => 'string'
449 )
450 )
451 ),
452 'BUILDING' => array(
453 'TYPE' => 'array',
454 'FIELDS' => array(
455 'TYPE' => array(
456 'TYPE' => 'string'
457 ),
458 'VALUE' => array(
459 'TYPE' => 'string'
460 )
461 )
462 ),
463 'FLAT' => array(
464 'TYPE' => 'array',
465 'FIELDS' => array(
466 'TYPE' => array(
467 'TYPE' => 'string'
468 ),
469 'VALUE' => array(
470 'TYPE' => 'string'
471 )
472 )
473 )
474 )
475 )
476 )
477 ),
478 'ADDRESS' => array(
479 'TYPE' => 'array',
480 'FIELDS' => array(
481 'PRESENTATION' => array(
482 'TYPE' => 'string'
483 ),
484 'ADDRESS_FIELD' => array(
485 'TYPE' => 'array',
486 'FIELDS' => array(
487 'POST_CODE' => array(
488 'TYPE' => 'array',
489 'FIELDS' => array(
490 'TYPE' => array(
491 'TYPE' => 'string'
492 ),
493 'VALUE' => array(
494 'TYPE' => 'string'
495 )
496 )
497 ),
498 'COUNTRY' => array(
499 'TYPE' => 'array',
500 'FIELDS' => array(
501 'TYPE' => array(
502 'TYPE' => 'string'
503 ),
504 'VALUE' => array(
505 'TYPE' => 'string'
506 )
507 )
508 ),
509 'REGION' => array(
510 'TYPE' => 'array',
511 'FIELDS' => array(
512 'TYPE' => array(
513 'TYPE' => 'string'
514 ),
515 'VALUE' => array(
516 'TYPE' => 'string'
517 )
518 )
519 ),
520 'STATE' => array(
521 'TYPE' => 'array',
522 'FIELDS' => array(
523 'TYPE' => array(
524 'TYPE' => 'string'
525 ),
526 'VALUE' => array(
527 'TYPE' => 'string'
528 )
529 )
530 ),
531 'SMALL_CITY' => array(
532 'TYPE' => 'array',
533 'FIELDS' => array(
534 'TYPE' => array(
535 'TYPE' => 'string'
536 ),
537 'VALUE' => array(
538 'TYPE' => 'string'
539 )
540 )
541 ),
542 'CITY' => array(
543 'TYPE' => 'array',
544 'FIELDS' => array(
545 'TYPE' => array(
546 'TYPE' => 'string'
547 ),
548 'VALUE' => array(
549 'TYPE' => 'string'
550 )
551 )
552 ),
553 'STREET' => array(
554 'TYPE' => 'array',
555 'FIELDS' => array(
556 'TYPE' => array(
557 'TYPE' => 'string'
558 ),
559 'VALUE' => array(
560 'TYPE' => 'string'
561 )
562 )
563 ),
564 'HOUSE' => array(
565 'TYPE' => 'array',
566 'FIELDS' => array(
567 'TYPE' => array(
568 'TYPE' => 'string'
569 ),
570 'VALUE' => array(
571 'TYPE' => 'string'
572 )
573 )
574 ),
575 'BUILDING' => array(
576 'TYPE' => 'array',
577 'FIELDS' => array(
578 'TYPE' => array(
579 'TYPE' => 'string'
580 ),
581 'VALUE' => array(
582 'TYPE' => 'string'
583 )
584 )
585 ),
586 'FLAT' => array(
587 'TYPE' => 'array',
588 'FIELDS' => array(
589 'TYPE' => array(
590 'TYPE' => 'string'
591 ),
592 'VALUE' => array(
593 'TYPE' => 'string'
594 )
595 )
596 )
597 )
598 )
599 )
600 ),
601 'CONTACTS' => array(
602 'TYPE' => 'array',
603 'FIELDS' => array(
604 'CONTACT' => array(
605 'TYPE' => 'array',
606 'FIELDS' => array(
607 'WORK_PHONE_NEW' => array(
608 'TYPE' => 'array',
609 'FIELDS' => array(
610 'TYPE' => array(
611 'TYPE' => 'string'
612 ),
613 'VALUE' => array(
614 'TYPE' => 'string'
615 )
616 )
617 ),
618 'MAIL_NEW' => array(
619 'TYPE' => 'array',
620 'FIELDS' => array(
621 'TYPE' => array(
622 'TYPE' => 'string'
623 ),
624 'VALUE' => array(
625 'TYPE' => 'string'
626 )
627 )
628 )
629 )
630 )
631 )
632 ),
633 'REPRESENTATIVES' => array(
634 'TYPE' => 'array',
635 'FIELDS' => array(
636 'REPRESENTATIVE'=>array(
637 'TYPE' => 'array',
638 'FIELDS' => array(
639 'CONTACT_PERSON' => array(
640 'TYPE' => 'array',
641 'FIELDS' => array(
642 'RELATION' => array(
643 'TYPE' => 'string'
644 ),
645 'ITEM_NAME' => array(
646 'TYPE' => 'string'
647 )
648 )
649 ),
650 //region export representatives.fields
651 'CONTRAGENT' => array(
652 'TYPE' => 'array',
653 'FIELDS' => array(
654 'RELATION' => array(
655 'TYPE' => 'string'
656 ),
657 'ID' => array(
658 'TYPE' => 'string'
659 ),
660 'ITEM_NAME' => array(
661 'TYPE' => 'string'
662 )
663 )
664 )
665 //endregion
666 )
667 )
668 )
669 ),
670 'ROLE' => array(
671 'TYPE' => 'string'
672 ),
673 'REK_VALUES' => array(
674 'TYPE' => 'array',
675 'FIELDS' => array(
676 'DELIVERY_ADDRESS' => array(
677 'TYPE' => 'array',
678 'FIELDS' => array(
679 'NAME' => array(
680 'TYPE' => 'string'
681 ),
682 'VALUE' => array(
683 'TYPE' => 'string'
684 )
685 )
686 )
687 )
688 )
689
690 );
691 }
692 return self::$FIELD_INFOS;
693 }
694
695
700 static public function prepareFieldsData(array $document)
701 {
702 $message = static::getMessage();
703 $fields = array();
704
705 foreach(static::getFieldsInfo() as $k=>$v)
706 {
707 $value = $document[$message["SALE_EXPORT_".$k]][0]["#"];
708
709 switch($k)
710 {
711 case 'XML_ID':
712 $value = $document[$message["SALE_EXPORT_ID"]][0]["#"];
713 self::internalizeFields($value, $v);
714 $fields[$k] = $value;
715 break;
716 case 'VERSION':
717 case 'ITEM_NAME':
718 case 'OFICIAL_NAME':
719 case 'FULL_NAME':
720 case 'INN':
721 case 'KPP':
722 case 'OKPO_CODE':
723 case 'EGRPO':
724 case 'OKVED':
725 case 'OKDP':
726 case 'OKOPF':
727 case 'OKFC':
728 case 'OKPO':
729 if(!empty($value))
730 {
731 static::internalizeFields($value, $v);
732 $fields[$k] = $value;
733 }
734 break;
735 case 'REGISTRATION_ADDRESS':
736 case 'UR_ADDRESS':
737 case 'ADDRESS':
738 case 'CONTACTS':
739 case 'REPRESENTATIVES':
740 if(!empty($value))
741 {
742 $value = static::resolveFields($value, $v);
743 $fields[$k] = $value;
744 }
745 break;
746 }
747 }
748 return $fields;
749 }
750
756 static protected function resolveRelationArrayParams($value, $fieldsInfo)
757 {
758 $fields = array();
759 $message = self::getMessage();
760
761 foreach($value as $item)
762 {
763 foreach($fieldsInfo['FIELDS'] as $name => $info)
764 {
765 if($message["SALE_EXPORT_".$name] == $item['#'][$message["SALE_EXPORT_RELATION"]][0]['#'])
766 {
767 $fields[$name] = self::resolveFields($item['#'], $info);
768 }
769 }
770 }
771 return $fields;
772 }
773
779 static protected function resolveArrayParams($value, $fieldsInfo)
780 {
781 $fields = array();
782 $message = self::getMessage();
783
784 foreach($value as $item)
785 {
786 foreach($fieldsInfo['FIELDS'] as $name=>$info)
787 {
788 if($message["SALE_EXPORT_".$name] == $item['#'][$message["SALE_EXPORT_TYPE"]][0]['#'])
789 {
790 $fields[$name] = self::resolveFields($item['#'], $info);
791 }
792 }
793 }
794 return $fields;
795 }
796
802 static protected function resolveFields(array $document, array $fieldsInfo)
803 {
804 $fields = null;
805 $message = self::getMessage();
806
807 foreach($fieldsInfo['FIELDS'] as $name => $info)
808 {
809 $value = '';
810 $val = $document[$message["SALE_EXPORT_".$name]];
811 if(!empty($val))
812 {
813 if($info['TYPE'] == 'array')
814 {
815 if($name == 'ADDRESS_FIELD' || $name == 'CONTACT')
816 {
817 $value = self::resolveArrayParams($val, $info);
818 }
819 elseif($name == 'REPRESENTATIVE')
820 {
821 $value = self::resolveRelationArrayParams($val, $info);
822 }
823 }
824 else
825 {
826 $value = $val[0]["#"];
827 self::internalizeFields($value, $info);
828 }
829 $fields[$name] = $value;
830 }
831 }
832 return $fields;
833 }
834
838 function getExternalId()
839 {
840 if(isset($this->fields['XML_ID']))
841 {
842 return $this->fields['XML_ID'];
843 }
844
845 return null;
846 }
847}
static internalizeFields(&$value, $fieldInfo=null)
static resolveFields(array $document, array $fieldsInfo)