1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
export.php
См. документацию.
1<?php
2
8
10
11$GLOBALS["SALE_EXPORT"] = Array();
12
13final class ExportOneCCRM extends CSaleExport
14{
15 protected static function getParentEntityTypeId()
16 {
17 return \Bitrix\Sale\Exchange\EntityType::INVOICE;
18 }
19
20 protected static function load($id)
21 {
22 return \Bitrix\Crm\Invoice\Invoice::load($id);
23 }
24
25 public static function getParentEntityTable()
26 {
27 return new \Bitrix\Crm\Invoice\Internals\InvoiceTable();
28 }
29
30 protected static function getPaymentTable()
31 {
32 return new \Bitrix\Crm\Invoice\Internals\PaymentTable();
33 }
34
35 protected static function getShipmentTable()
36 {
37 return new \Bitrix\Crm\Invoice\Internals\ShipmentTable();
38 }
39
40 protected static function getBasketTable()
41 {
42 return new \Bitrix\Crm\Invoice\Internals\BasketTable();
43 }
44
45 protected static function getEntityChangeTable()
46 {
47 return new \Bitrix\Crm\Invoice\Internals\InvoiceChangeTable();
48 }
49
50 protected static function getEntityMarker()
51 {
52 return new \Bitrix\Crm\Invoice\EntityMarker();
53 }
54
55 protected static function getPersonType()
56 {
57 return \Bitrix\Crm\Invoice\PersonType::class;
58 }
59
60 public static function normalizeExternalCode($xml)
61 {
62 static $sales = null;
63
64 list($originatorId, $productXmlId) = explode("#", $xml, 2);
65 if($productXmlId<>'')
66 {
67 if($sales === null)
68 $sales = CCrmExternalSaleHelper::PrepareListItems();
69
70 if(isset($sales[$originatorId]))
71 {
72 $xml = $productXmlId;
73 }
74 }
75
76 return parent::normalizeExternalCode($xml);
77 }
78
79 protected static function getUserTimeStapmX(array $arOrder)
80 {
81 return new \Bitrix\Main\Type\DateTime(CDatabase::FormatDate($arOrder["CRM_INVOICE_INTERNALS_INVOICE_USER_TIMESTAMP_X"]));
82 }
83
84 protected static function getUserXmlId(array $arOrder, array $arProp)
85 {
86 if($arOrder["CRM_INVOICE_INTERNALS_INVOICE_USER_XML_ID"] <> '')
87 {
88 $xmlId = htmlspecialcharsbx($arOrder["CRM_INVOICE_INTERNALS_INVOICE_USER_XML_ID"]);
89 }
90 else
91 {
92 $xmlId = static::updateEmptyUserXmlId($arOrder, $arProp);
93 }
94
95 return $xmlId;
96 }
97
98 protected static function resolveEntityTypeId($typeDocument, array $document)
99 {
101 switch ($typeDocument)
102 {
103 case 'Order':
105 break;
106 case 'Payment':
107 $psType = \Bitrix\Sale\PaySystem\Manager::getPsType($document['PAY_SYSTEM_ID']);
108
109 if($psType == 'A')
111 elseif($psType == 'N')
113 else
115 break;
116 case 'Shipment':
118 break;
119 }
120
121 return $typeEntityId;
122 }
123
124 protected static function getStatusInfoByStatusId($id)
125 {
126 $result = [];
127
128 $res = \Bitrix\Crm\Invoice\InvoiceStatus::getList(['filter'=>['ID'=>$id]]);
129 if($status = $res->fetch())
131
132 return $result;
133 }
134}
135
137{
138 const DEFAULT_VERSION = 2.05;
139 const PARTIAL_VERSION = 2.1;
141
142 const LAST_ORDER_PREFIX = 'LAST_ORDER_ID';
143
145
147 static $crmMode;
148 static $currency;
149 static $measures;
150 static $orderTax;
151
153 static $xmlVersion = "1.0";
154 static $xmlEncoding = "windows-1251";
155 static $xmlRootName = "<?xml version=\"#version#\" encoding=\"#encoding#\"?>";
156
157 static $typeDocument = "";
158 static $deliveryAdr = "";
159
160 static $siteNameByOrder = "";
161
163
164 protected static $lid = null;
165
166 protected static function getParentEntityTypeId()
167 {
168 return \Bitrix\Sale\Exchange\EntityType::ORDER;
169 }
170
171 protected static function load($id)
172 {
173 $registry = Sale\Registry::getInstance(Sale\Registry::REGISTRY_TYPE_ORDER);
174
176 $orderClass = $registry->getOrderClassName();
177
178 return $orderClass::load($id);
179 }
180
181 public static function getParentEntityTable()
182 {
183 return new \Bitrix\Sale\Internals\OrderTable();
184 }
185
186 protected static function getPaymentTable()
187 {
188 return new \Bitrix\Sale\Internals\PaymentTable();
189 }
190
191 protected static function getShipmentTable()
192 {
193 return new \Bitrix\Sale\Internals\ShipmentTable();
194 }
195
196 protected static function getBasketTable()
197 {
198 return new \Bitrix\Sale\Internals\BasketTable();
199 }
200
201 protected static function getEntityChangeTable()
202 {
203 return new \Bitrix\Sale\Internals\OrderChangeTable();
204 }
205
206 protected static function getEntityMarker()
207 {
208 return new \Bitrix\Sale\EntityMarker();
209 }
210
211 protected static function getPersonType()
212 {
213 return \Bitrix\Sale\PersonType::class;
214 }
215
216 protected static function getUserTimeStapmX(array $arOrder)
217 {
218 return new \Bitrix\Main\Type\DateTime(CDatabase::FormatDate($arOrder["SALE_INTERNALS_ORDER_USER_TIMESTAMP_X"]));
219 }
220
221 protected static function getUserXmlId(array $arOrder, array $arProp)
222 {
223 if($arOrder["SALE_INTERNALS_ORDER_USER_XML_ID"] <> '')
224 {
225 $xmlId = htmlspecialcharsbx($arOrder["SALE_INTERNALS_ORDER_USER_XML_ID"]);
226 }
227 else
228 {
229 $xmlId = static::updateEmptyUserXmlId($arOrder, $arProp);
230 }
231
232 return $xmlId;
233 }
234
235 protected static function updateEmptyUserXmlId(array $arOrder, array $arProp)
236 {
237 $xmlId = htmlspecialcharsbx(mb_substr($arOrder["USER_ID"]."#".$arProp["USER"]["LOGIN"]."#".$arProp["USER"]["LAST_NAME"]." ".$arProp["USER"]["NAME"]." ".$arProp["USER"]["SECOND_NAME"], 0, 40));
239
240 return $xmlId;
241 }
242
243 protected static function resolveEntityTypeId($typeDocument, array $document)
244 {
246 switch ($typeDocument)
247 {
248 case 'Order':
250 break;
251 case 'Payment':
252 $psType = \Bitrix\Sale\PaySystem\Manager::getPsType($document['PAY_SYSTEM_ID']);
253
254 if($psType == 'A')
256 elseif($psType == 'N')
258 else
260 break;
261 case 'Shipment':
263 break;
264 }
265
266 return $typeEntityId;
267 }
268
269 protected static function getStatusInfoByStatusId($id)
270 {
271 return CSaleStatus::GetLangByID($id);
272 }
273
278 protected static function toText($value)
279 {
280 $value = preg_replace('/<style[^>]*>.*?<\/style>/is', '', $value);
281 $value = preg_replace('/<blockquote[^>]*>.*?<\/blockquote>/is', '', $value);
282 $value = preg_replace('/<script[^>]*>.*?<\/script>/is', '', $value);
283
284 return html_entity_decode(
285 strip_tags(
286 preg_replace('/(<br[^>]*>)+/isu', "\n", $value)
287 )
288 );
289 }
290
291 public static function getNumberBasketPosition($basketId)
292 {
293 return intval($basketId) % self::DIVIDER_NUMBER_POSITION;
294 }
295
296 public static function setLanguage($value)
297 {
298 static::$lid = $value;
299 }
300
301 public static function setXmlEncoding($encoding)
302 {
303 self::$xmlEncoding = $encoding;
304 }
305
306 public static function getXmlRootName()
307 {
308 return str_replace(array("#version#","#encoding#"),array(self::$xmlVersion,self::$xmlEncoding),self::$xmlRootName);
309 }
310
311 public static function getCmrXmlRootNameParams()
312 {
313 return CSaleExport::getTagName("SALE_EXPORT_SHEM_VERSION")."=\"".self::getVersionSchema()."\" ".CSaleExport::getTagName("SALE_EXPORT_SHEM_DATE_CREATE")."=\"".date("Y-m-d")."T".date("G:i:s")."\" ".CSaleExport::getTagName("SALE_EXPORT_DATE_FORMAT")."=\"".CSaleExport::getTagName("SALE_EXPORT_DATE_FORMAT_DF")."=yyyy-MM-dd; ".CSaleExport::getTagName("SALE_EXPORT_DATE_FORMAT_DLF")."=DT\" ".CSaleExport::getTagName("SALE_EXPORT_DATE_FORMAT_DATETIME")."=\"".CSaleExport::getTagName("SALE_EXPORT_DATE_FORMAT_DF")."=".CSaleExport::getTagName("SALE_EXPORT_DATE_FORMAT_TIME")."; ".CSaleExport::getTagName("SALE_EXPORT_DATE_FORMAT_DLF")."=T\" ".CSaleExport::getTagName("SALE_EXPORT_DEL_DT")."=\"T\" ".CSaleExport::getTagName("SALE_EXPORT_FORM_SUMM")."=\"".CSaleExport::getTagName("SALE_EXPORT_FORM_CC")."=18; ".CSaleExport::getTagName("SALE_EXPORT_FORM_CDC")."=2; ".CSaleExport::getTagName("SALE_EXPORT_FORM_CRD")."=.\" ".CSaleExport::getTagName("SALE_EXPORT_FORM_QUANT")."=\"".CSaleExport::getTagName("SALE_EXPORT_FORM_CC")."=18; ".CSaleExport::getTagName("SALE_EXPORT_FORM_CDC")."=2; ".CSaleExport::getTagName("SALE_EXPORT_FORM_CRD")."=.\"";
314 }
315
316 public static function getDeliveryAddress()
317 {
318 return self::$deliveryAdr;
319 }
320
321 public static function setDeliveryAddress($deliveryAdr)
322 {
323 self::$deliveryAdr = $deliveryAdr;
324 }
325
326 public static function setVersionSchema($versionSchema=false)
327 {
328 self::$versionSchema = $versionSchema;
329 }
330
331 public static function setCrmMode($crmMode)
332 {
333 self::$crmMode = $crmMode;
334 }
335
336 public static function setCurrencySchema($currency)
337 {
338 self::$currency = $currency;
339 }
340
341 public static function getVersionSchema()
342 {
343 return doubleval(str_replace(" ", "", str_replace(",", ".", (!empty(self::$versionSchema) ? self::$versionSchema : self::DEFAULT_VERSION))));
344 }
345
349 public static function getCashBoxOneCId()
350 {
351 static $cashBoxOneCId = null;
352
353 if($cashBoxOneCId === null)
354 {
355 $cashBoxOneCId = \Bitrix\Sale\Cashbox\Cashbox1C::getId();
356 }
357
358 return $cashBoxOneCId;
359 }
360
361 public static function isExportFromCRM($arOptions)
362 {
363 return (isset($arOptions["EXPORT_FROM_CRM"]) && $arOptions["EXPORT_FROM_CRM"] === "Y");
364 }
365
366 public static function getEndTime($time_limit)
367 { //This is an optimization. We assume than no step can take more than one year.
368 if($time_limit > 0)
369 $end_time = time() + $time_limit;
370 else
371 $end_time = time() + 365*24*3600; // One year
372
373 return $end_time;
374 }
375
376 public static function checkTimeIsOver($time_limit,$end_time)
377 {
378 if(intval($time_limit) > 0 && time() > $end_time )
379 return true;
380 else
381 return false;
382 }
383
384 public static function getOrderPrefix()
385 {
386 return self::LAST_ORDER_PREFIX;
387 }
388
389 public static function getAccountNumberShopPrefix()
390 {
391 static $accountNumberShopPrefix = null;
392 if($accountNumberShopPrefix === null)
393 $accountNumberShopPrefix = COption::GetOptionString("sale", "1C_SALE_ACCOUNT_NUMBER_SHOP_PREFIX", "");
394
395 return $accountNumberShopPrefix;
396 }
397
398 public static function getSalePaySystem()
399 {
400 $paySystems = array();
401 $dbPaySystem = CSalePaySystem::GetList(Array("ID" => "ASC"), Array("ACTIVE" => "Y"), false, false, Array("ID", "NAME", "ACTIVE"));
402 while($arPaySystem = $dbPaySystem -> Fetch())
403 $paySystems[$arPaySystem["ID"]] = $arPaySystem["NAME"];
404
405 return $paySystems;
406 }
407
408 public static function getSaleDelivery()
409 {
410 $delivery = array();
411 $dbDeliveryList = \Bitrix\Sale\Delivery\Services\Table::GetList();
412 while($service = $dbDeliveryList->fetch())
413 {
415 $delivery[$deliveryObj->GetId()] = ($deliveryObj->isProfile() ? $deliveryObj->getNameWithParent():$deliveryObj->getName());
416 }
417 return $delivery;
418 }
419
420 public static function getCatalogStore()
421 {
422 $arStore = array();
423 if(CModule::IncludeModule("catalog"))
424 {
425 $dbList = CCatalogStore::GetList(
426 array("SORT" => "DESC", "ID" => "ASC"),
427 array("ACTIVE" => "Y", "ISSUING_CENTER" => "Y"),
428 false,
429 false,
430 array("ID", "SORT", "TITLE", "ADDRESS", "DESCRIPTION", "PHONE", "EMAIL", "XML_ID")
431 );
432 while ($arStoreTmp = $dbList->Fetch())
433 {
434 if($arStoreTmp["XML_ID"] == '')
435 $arStoreTmp["XML_ID"] = $arStoreTmp["ID"];
436 $arStore[$arStoreTmp["ID"]] = $arStoreTmp;
437 }
438 }
439 return $arStore;
440 }
441
442 public static function getOrderDeliveryItem($arOrder, $bVat, $vatRate, $vatSum)
443 {
444 if(floatval($arOrder["PRICE_DELIVERY"])<=0)
445 return;
446 ?>
447 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM")?>>
448 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>ORDER_DELIVERY</<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
449 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_ORDER_DELIVERY")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
450 <?
451 if(self::getVersionSchema() > self::DEFAULT_VERSION)
452 {
453 ?>
454 <<?=CSaleExport::getTagName("SALE_EXPORT_UNIT")?>>
455 <<?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>>796</<?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>>
456 <<?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME_UNIT")?>><?=htmlspecialcharsbx(self::$measures[796]['MEASURE_TITLE'])?></<?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME_UNIT")?>>
457 </<?=CSaleExport::getTagName("SALE_EXPORT_UNIT")?>>
458 <<?=CSaleExport::getTagName("SALE_EXPORT_KOEF")?>>1</<?=CSaleExport::getTagName("SALE_EXPORT_KOEF")?>>
459 <?
460 }
461 else
462 {
463 ?>
464 <<?=CSaleExport::getTagName("SALE_EXPORT_BASE_UNIT")?> <?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>="796" <?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME_UNIT")?>="<?=CSaleExport::getTagName("SALE_EXPORT_SHTUKA")?>" <?=CSaleExport::getTagName("SALE_EXPORT_INTERNATIONAL_ABR")?>="<?=CSaleExport::getTagName("SALE_EXPORT_RCE")?>"><?=CSaleExport::getTagName("SALE_EXPORT_SHT")?></<?=CSaleExport::getTagName("SALE_EXPORT_BASE_UNIT")?>>
465 <?
466 }
467 ?>
468 <<?=CSaleExport::getTagName("SALE_EXPORT_PRICE_PER_ITEM")?>><?=$arOrder["PRICE_DELIVERY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_PRICE_PER_ITEM")?>>
469 <<?=CSaleExport::getTagName("SALE_EXPORT_QUANTITY")?>>1</<?=CSaleExport::getTagName("SALE_EXPORT_QUANTITY")?>>
470 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=$arOrder["PRICE_DELIVERY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
471 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
472 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
473 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_TYPE_NOMENKLATURA")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
474 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=CSaleExport::getTagName("SALE_EXPORT_SERVICE")?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
475 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
476 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
477 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_TYPE_OF_NOMENKLATURA")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
478 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=CSaleExport::getTagName("SALE_EXPORT_SERVICE")?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
479 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
480 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
481 <?if($bVat)
482 {
483 $deliveryTax = roundEx((($arOrder["PRICE_DELIVERY"] / ($vatRate+1)) * $vatRate), 2);
484 if(self::$orderTax > $vatSum && self::$orderTax == roundEx($vatSum + $deliveryTax, 2))
485 {
486 ?>
487 <<?=CSaleExport::getTagName("SALE_EXPORT_TAX_RATES")?>>
488 <<?=CSaleExport::getTagName("SALE_EXPORT_TAX_RATE")?>>
489 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_VAT")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
490 <<?=CSaleExport::getTagName("SALE_EXPORT_RATE")?>><?=$vatRate * 100?></<?=CSaleExport::getTagName("SALE_EXPORT_RATE")?>>
491 </<?=CSaleExport::getTagName("SALE_EXPORT_TAX_RATE")?>>
492 </<?=CSaleExport::getTagName("SALE_EXPORT_TAX_RATES")?>>
493 <<?=CSaleExport::getTagName("SALE_EXPORT_TAXES")?>>
494 <<?=CSaleExport::getTagName("SALE_EXPORT_TAX")?>>
495 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_VAT")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
496 <<?=CSaleExport::getTagName("SALE_EXPORT_IN_PRICE")?>>true</<?=CSaleExport::getTagName("SALE_EXPORT_IN_PRICE")?>>
497 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=$deliveryTax?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
498 </<?=CSaleExport::getTagName("SALE_EXPORT_TAX")?>>
499 </<?=CSaleExport::getTagName("SALE_EXPORT_TAXES")?>>
500 <?
501 }
502 }?>
503 </<?=CSaleExport::getTagName("SALE_EXPORT_ITEM")?>>
504 <?
505 }
506
507 public static function getCatalogMeasure()
508 {
509 $arMeasures = array();
510 if(CModule::IncludeModule("catalog"))
511 {
512 $dbList = CCatalogMeasure::getList(array(), array(), false, false, array("CODE", "MEASURE_TITLE","SYMBOL_LETTER_INTL", "SYMBOL_RUS"));
513 while($arList = $dbList->Fetch())
514 {
515 $arMeasures[$arList["CODE"]] = $arList;
516 }
517 }
518 if(empty($arMeasures))
519 $arMeasures[796] = array('NAME'=>CSaleExport::getTagName("SALE_EXPORT_SHTUKA"));
520
521 return $arMeasures;
522 }
523
524 public static function setCatalogMeasure($arMeasures)
525 {
526 self::$measures = $arMeasures;
527 }
528
529 public static function setOrderSumTaxMoney($orderTax)
530 {
531 self::$orderTax = $orderTax;
532
533 }
534
535 public static function getSaleExport()
536 {
537 $export = new CSaleExport();
538 $arAgent = array();
539
540 $dbExport = $export->GetList();
541 while($arExport = $dbExport->Fetch())
542 {
543 $arAgent[$arExport["PERSON_TYPE_ID"]] = unserialize($arExport["VARS"], ['allowed_classes' => false]);
544 }
545 return $arAgent;
546 }
547
548 public static function prepareSaleProperty($arOrder, $bExportFromCrm, $bCrmModuleIncluded, $paySystems, $delivery, &$locationStreetPropertyValue, \Bitrix\Sale\Order $order)
549 {
550 $arProp = Array();
551 $arProp["ORDER"] = $arOrder;
552
553 if (intval($arOrder["USER_ID"]) > 0)
554 {
555 $dbUser = CUser::GetByID($arOrder["USER_ID"]);
556 if ($arUser = $dbUser->Fetch())
557 $arProp["USER"] = $arUser;
558 }
559
560 if ($bExportFromCrm)
561 {
562 $arProp["CRM"] = array();
563 $companyID = isset($arOrder["UF_COMPANY_ID"]) ? intval($arOrder["UF_COMPANY_ID"]) : 0;
564 $contactID = isset($arOrder["UF_CONTACT_ID"]) ? intval($arOrder["UF_CONTACT_ID"]) : 0;
565 if ($companyID > 0)
566 {
567 $arProp["CRM"]["CLIENT_ID"] = "CRMCO".$companyID;
568 }
569 else
570 {
571 $arProp["CRM"]["CLIENT_ID"] = "CRMC".$contactID;
572 }
573
574 $clientInfo = array(
575 "LOGIN" => "",
576 "NAME" => "",
577 "LAST_NAME" => "",
578 "SECOND_NAME" => ""
579 );
580
581 if ($bCrmModuleIncluded)
582 {
583 if ($companyID > 0)
584 {
585 $arCompanyFilter = array('=ID' => $companyID);
586 $dbCompany = CCrmCompany::GetListEx(
587 array(), $arCompanyFilter, false, array("nTopCount" => 1),
588 array("TITLE")
589 );
590 $arCompany = $dbCompany->Fetch();
591 unset($dbCompany, $arCompanyFilter);
592 if (is_array($arCompany))
593 {
594 if (isset($arCompany["TITLE"]))
595 $clientInfo["NAME"] = $arCompany["TITLE"];
596 }
597 unset($arCompany);
598 }
599 else if ($contactID > 0)
600 {
601 $arContactFilter = array('=ID' => $contactID);
602 $dbContact = CCrmContact::GetListEx(
603 array(), $arContactFilter, false, array("nTopCount" => 1),
604 array("NAME", "LAST_NAME", "SECOND_NAME")
605 );
606 $arContact = $dbContact->Fetch();
607 unset($dbContact, $arContactFilter);
608 if (is_array($arContact))
609 {
610 if (isset($arContact["NAME"]))
611 $clientInfo["NAME"] = $arContact["NAME"];
612 if (isset($arContact["LAST_NAME"]))
613 $clientInfo["LAST_NAME"] = $arContact["LAST_NAME"];
614 if (isset($arContact["SECOND_NAME"]))
615 $clientInfo["SECOND_NAME"] = $arContact["SECOND_NAME"];
616 }
617 unset($arContact);
618 }
619 }
620
621 $arProp["CRM"]["CLIENT"] = $clientInfo;
622 unset($clientInfo);
623 }
624
625 if(intval($arOrder["PAY_SYSTEM_ID"]) > 0)
626 $arProp["ORDER"]["PAY_SYSTEM_NAME"] = $paySystems[$arOrder["PAY_SYSTEM_ID"]];
627 if($arOrder["DELIVERY_ID"] <> '')
628 $arProp["ORDER"]["DELIVERY_NAME"] = $delivery[$arOrder["DELIVERY_ID"]];
629
630
631 $propertyCollection = $order->getPropertyCollection();
632 $locationStreetPropertyValue = '';
633 foreach ($propertyCollection as $prop)
634 {
635 if($prop->getType() == 'Y/N')
636 {
637 if ($prop->getValue() == "Y")
638 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')] = "true";
639 else
640 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')] = "false";
641 }
642 elseif ($prop->getType() == 'STRING')
643 {
644 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')] = $prop->getValue();
645 }
646 elseif ($prop->getType() == 'ENUM')
647 {
648 if($prop->getProperty()['MULTIPLE'] == 'Y')
649 {
650 $propertyValue = $prop->getValue();
651 $curVal = [];
652 if (is_string($propertyValue))
653 {
654 $curVal = explode(',', $propertyValue);
655 }
656 elseif (is_array($propertyValue))
657 {
658 $curVal = $propertyValue;
659 }
660 foreach($curVal as $vm)
661 {
662 $arVal = CSaleOrderPropsVariant::GetByValue($prop->getField('ORDER_PROPS_ID'), $vm);
663 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')] .= ", ".$arVal["NAME"];
664 }
665 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')] = mb_substr($arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')], 2);
666 }
667 else
668 {
669 $arVal = CSaleOrderPropsVariant::GetByValue($prop->getField('ORDER_PROPS_ID'), $prop->getValue());
670 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')] = $arVal["NAME"];
671 }
672 }
673 elseif ($prop->getType() == "LOCATION")
674 {
675 $arVal = CSaleLocation::GetByID($prop->getValue(), LANGUAGE_ID);
676
678 {
679 if(intval($arVal['ID']))
680 {
681 try
682 {
683 $res = \Bitrix\Sale\Location\LocationTable::getPathToNode($arVal['ID'], array('select' => array('LNAME' => 'NAME.NAME', 'TYPE_ID'), 'filter' => array('=NAME.LANGUAGE_ID' => LANGUAGE_ID)));
684 $types = \Bitrix\Sale\Location\Admin\TypeHelper::getTypeCodeIdMapCached();
685 $path = array();
686 while($item = $res->fetch())
687 {
688 // copy street to STREET property
689 if($types['ID2CODE'][$item['TYPE_ID']] == 'STREET')
690 $locationStreetPropertyValue = $item['LNAME'];
691 $path[] = $item['LNAME'];
692 }
693
694 $locationString = implode(' - ', $path);
695 }
696 catch(\Bitrix\Main\SystemException $e)
697 {
698 $locationString = '';
699 }
700 }
701 else
702 $locationString = '';
703 }
704 else
705 $locationString = ($arVal["COUNTRY_NAME"].(($arVal["COUNTRY_NAME"] == '' || $arVal["REGION_NAME"] == '') ? "" : " - ").$arVal["REGION_NAME"].(($arVal["COUNTRY_NAME"] == '' || $arVal["CITY_NAME"] == '') ? "" : " - ").$arVal["CITY_NAME"]);
706
707 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')] = $locationString;
708
709 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')."_CITY"] = $arVal["CITY_NAME"];
710 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')."_COUNTRY"] = $arVal["COUNTRY_NAME"];
711 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')."_REGION"] = $arVal["REGION_NAME"];
712 }
713 else
714 {
715 $arProp["PROPERTY"][$prop->getField('ORDER_PROPS_ID')] = $prop->getValue();
716
717 }
718 }
719
720 return $arProp;
721 }
722
723 public static function prepareSalePropertyRekv(\Bitrix\Sale\IBusinessValueProvider $entity, $agentParams, $arProp, $locationStreetPropertyValue = '')
724 {
725 if(!($entity instanceof \Bitrix\Sale\Order))
726 {
728 $collection = $entity->getCollection();
729 $order = $collection->getOrder();
730 }
731 else
732 $order = $entity;
733
734 $providersInstance = self::getProvidersInstanceByEntity($entity);
735
736 $personTypeId = $order->getPersonTypeId();
737
738 $personTypes = BusinessValue::getPersonTypes();
739
740 if (! $personType = $personTypes[$personTypeId])
741 {
742 self::logError($order->getId(), 'Undefined DOMAIN for person type id "'.$personTypeId.'"');
743 return false;
744 }
745
746 $systemCodes1C = array_flip(self::$systemCodes[$personType['DOMAIN']]);
747
748 foreach($agentParams as $k => $v)
749 {
750 if(mb_strpos($k, "REKV_") !== false)
751 {//params
752 if(!is_array($v))
753 {
754 $agent["REKV"][$k] = $v;
755 }
756 else
757 {
758 if($v["TYPE"] == '')
759 $agent["REKV"][$k] = $v["VALUE"];//code
760 else
761 {
762 switch($v["TYPE"])
763 {
764 case 'CRM':
765 $agent["REKV"][$k] = $arProp[$v["TYPE"]][$v["VALUE"]];//value
766 break;
767 default:
768
769 if (! ($codeKey = $systemCodes1C[$k])
770 && mb_substr($k, 0, 5) === 'REKV_'
771 && ($codeIndex = mb_substr($k, 5)) !== ''
772 && ($codeKey = BusinessValueConsumer1C::getRekvCodeKey($order->getPersonTypeId(), $codeIndex))
773 && ($providerInstance = $providersInstance[$v["TYPE"]])
774 && is_set($providerInstance))
775 {
776 $bsValue = Bitrix\Sale\BusinessValue::getValueFromProvider($providerInstance, $codeKey, BusinessValueConsumer1C::CONSUMER_KEY);
777 $agent["REKV"][$k] = (is_array($bsValue) ? implode(',', $bsValue):$bsValue);
778 }
779 }
780 }
781 }
782 }
783 else
784 {
785 if(!is_array($v))
786 {
787 $agent[$k] = $v;
788 }
789 else
790 {
791 if($v["TYPE"] == '')
792 $agent[$k] = $v["VALUE"];
793 else
794 {
795 switch($v["TYPE"])
796 {
797 case 'CRM':
798 $agent[$k] = $arProp[$v["TYPE"]][$v["VALUE"]];
799 break;
800 default:
801 if (($codeKey = $systemCodes1C[$k])
802 && ($providerInstance = $providersInstance[$v["TYPE"]])
803 && is_set($providerInstance))
804 {
805 $bsValue = Bitrix\Sale\BusinessValue::getValueFromProvider($providerInstance, $codeKey, BusinessValueConsumer1C::CONSUMER_KEY);
806 $agent[$k] = (is_array($bsValue) ? implode(',', $bsValue):$bsValue);
807 }
808 }
809 }
810
811 if($k == 'STREET' && mb_strlen($locationStreetPropertyValue))
812 $agent[$k] = $locationStreetPropertyValue.($agent[$k] <> ''? ', ' : '').$agent[$k];
813 }
814 }
815 }
816
817 return $agent;
818 }
819
820 public static function getSite()
821 {
822 $arCharSets = array();
823 $dbSitesList = CSite::GetList();
824 while ($arSite = $dbSitesList->Fetch())
825 $arCharSets[$arSite["ID"]] = $arSite["CHARSET"];
826
827 return $arCharSets;
828 }
829
830 public static function setSiteNameByOrder($arOrder)
831 {
832 $dbSite = CSite::GetByID($arOrder["LID"]);
833 $arSite = $dbSite->Fetch();
834 self::$siteNameByOrder = $arSite["NAME"];
835 }
836
837 public static function getPayment($arOrder)
838 {
839 $result = array();
840 $entity = static::getPaymentTable();
841
842 $PaymentParam['select'] =
843 array(
844 "ID",
845 "ID_1C",
846 "PAID",
847 "DATE_BILL",
848 "ORDER_ID",
849 "CURRENCY",
850 "SUM",
851 "COMMENTS",
852 "DATE_PAID",
853 "PAY_SYSTEM_ID",
854 "PAY_SYSTEM_NAME",
855 "IS_RETURN",
856 "PAY_RETURN_COMMENT",
857 "PAY_VOUCHER_NUM",
858 "PAY_VOUCHER_DATE",
859
860 );
861
862
863 $PaymentParam['filter']['ORDER_ID'] = $arOrder['ID'];
864 $PaymentParam['filter']['!=EXTERNAL_PAYMENT'] = 'F';
865 $innerPS = 0;
866 $limit = 0;
867 $inc = 0;
868
869 if(self::getVersionSchema() < self::PARTIAL_VERSION)
870 {
872 $limit = 1;
873 }
874
875 $resPayment = $entity::getList($PaymentParam);
876
877 while($arPayment = $resPayment->fetch())
878 {
879 foreach($arPayment as $field=>$value)
880 {
881 if(self::isFormattedDateFields('Payment', $field))
882 {
883 $arPayment[$field] = self::getFormatDate($value);
884 }
885 }
886
887 $result['paySystems'][$arPayment['PAY_SYSTEM_ID']] = $arPayment['PAY_SYSTEM_NAME'];
888
889 if($innerPS == 0 || $innerPS!=$arPayment['PAY_SYSTEM_ID'])
890 {
891 if($limit == 0 || $inc < $limit)
892 $result['payment'][] = $arPayment;
893
894 $inc++;
895 }
896 }
897 return $result;
898 }
899
900 public static function getShipment($arOrder)
901 {
902 $result = array();
903 $entity = static::getShipmentTable();
904
905 $ShipmentParams['select'] =
906 array(
907 "ID",
908 "ID_1C",
909 "DATE_INSERT",
910 "CURRENCY",
911 "PRICE_DELIVERY",
912 "COMMENTS",
913 "DATE_ALLOW_DELIVERY",
914 "STATUS_ID",
915 "DEDUCTED",
916 "DATE_DEDUCTED",
917 "REASON_UNDO_DEDUCTED",
918 "RESERVED",
919 "DELIVERY_ID",
920 "DELIVERY_NAME",
921 "CANCELED",
922 "DATE_CANCELED",
923 "REASON_CANCELED",
924 "REASON_MARKED",
925 "ORDER_ID",
926 "TRACKING_NUMBER"
927 );
928
929 $ShipmentParams['filter']['ORDER_ID'] = $arOrder['ID'];
930 $ShipmentParams['filter']['=SYSTEM'] = 'N';
931 $limit = 0;
932 $inc = 0;
933
934 if(self::getVersionSchema() < self::PARTIAL_VERSION )
935 $limit = 1;
936
937 $resShipment = $entity::getList($ShipmentParams);
938 while($arShipment = $resShipment->fetch())
939 {
940 foreach($arShipment as $field=>$value)
941 {
942 if(self::isFormattedDateFields('Shipment', $field))
943 {
944 $arShipment[$field] = self::getFormatDate($value);
945 }
946 }
947
948 $result['deliveryServices'][$arShipment['DELIVERY_ID']] = $arShipment['DELIVERY_NAME'];
949
950 if($limit == 0 || $inc < $limit)
951 $result['shipment'][] = $arShipment;
952
953 $inc++;
954 }
955
956 return $result;
957 }
958
959 protected static function getLastOrderExported($timeUpdate)
960 {
961 return (new Exchange(Sale\Exchange\Logger\ProviderType::ONEC_NAME))
962 ->getEffectedRows(
963 $timeUpdate,
964 static::getParentEntityTypeId(),
965 \Bitrix\Sale\Exchange\ManagerExport::getDirectionType());
966 }
967
971 protected static function prepareFilter($arFilter=array())
972 {
973 if(intval($_SESSION["BX_CML2_EXPORT"][self::getOrderPrefix()]) > 0)
974 {
975 $arFilter[">=DATE_UPDATE"] = ConvertTimeStamp($_SESSION["BX_CML2_EXPORT"][self::getOrderPrefix()], "FULL");
976 }
977 return $arFilter;
978 }
979
983 protected static function saveExportParams(array $arOrder)
984 {
985 $_SESSION["BX_CML2_EXPORT"][self::getOrderPrefix()] = MakeTimeStamp($arOrder["DATE_UPDATE"], CSite::GetDateFormat("FULL"));
986 }
987
988 protected static function getLastDateUpdateByParams(array $params)
989 {
990 $params = static::prepareFilter($params);
991 return isset($params[">=DATE_UPDATE"])? $params[">=DATE_UPDATE"]:'';
992 }
993
998 public static function export(array $params)
999 {
1000 $result = new \Bitrix\Sale\Result();
1001
1002 $filter = $params['filter'];
1003 $timeLimit = isset($params['limit'])? intval($params['limit']):0;
1004
1007
1008 $xml = $export->outputXmlCMLHeader();
1009
1010 $end_time = self::getEndTime($timeLimit);
1011
1012 $timeUpdate = static::getLastDateUpdateByParams($filter);
1013 $lastDateUpdateOrders = static::getLastOrderExported($timeUpdate);
1014
1015 if($timeUpdate<>'')
1016 $filter['>=DATE_UPDATE'] = $timeUpdate;
1017 $filter['RUNNING'] = 'N';
1018
1019 $entity = static::getParentEntityTable();
1020
1021 $list = $entity::getList([
1022 'select' => ["*"],
1023 'filter' => $filter,
1024 'order' => ["DATE_UPDATE" => "ASC", "ID"=>"ASC"],
1025 ]);
1026
1027 while($orderFields = $list->Fetch())
1028 {
1029 if((new Exchange(Sale\Exchange\Logger\ProviderType::ONEC_NAME))->isEffected($orderFields, $lastDateUpdateOrders))
1030 {
1031 continue;
1032 }
1033
1034 $r = $export->proccess(['ORDER_ID'=>$orderFields['ID']]);
1035 if($r->isSuccess())
1036 $xml .= $r->getData()[0];
1037
1038 static::saveExportParams($orderFields);
1039
1040 if(self::checkTimeIsOver($timeLimit, $end_time))
1041 {
1042 break;
1043 }
1044 }
1045
1046 $xml .= $export->outputXmlCMLFooter();
1047
1048 return $result->setData([$xml]);
1049 }
1050
1051 public static function ExportOrders2Xml($arFilter = Array(), $nTopCount = 0, $currency = "", $crmMode = false, $time_limit = 0, $version = false, $arOptions = Array())
1052 {
1053 $lastOrderPrefix = '';
1054 $arCharSets = array();
1055 $lastDateUpdateOrders = array();
1056 $entityMarker = static::getEntityMarker();
1057
1058 self::setVersionSchema($version);
1061
1062 $count = false;
1063 if(intval($nTopCount) > 0)
1064 $count = Array("nTopCount" => $nTopCount);
1065
1066 $end_time = self::getEndTime($time_limit);
1067
1068 if(intval($time_limit) > 0)
1069 {
1070 if(self::$crmMode)
1071 {
1072 $lastOrderPrefix = md5(serialize($arFilter));
1073 if(!empty($_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix]) && intval($nTopCount) > 0)
1074 $count["nTopCount"] = $count["nTopCount"]+count($_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix]);
1075 }
1076 }
1077
1078 if(!self::$crmMode)
1079 {
1080 $arFilter = static::prepareFilter($arFilter);
1081 $timeUpdate = isset($arFilter[">=DATE_UPDATE"])? $arFilter[">=DATE_UPDATE"]:'';
1082 $lastDateUpdateOrders = static::getLastOrderExported($timeUpdate);
1083 }
1084
1085 self::$arResultStat = array(
1086 "ORDERS" => 0,
1087 "CONTACTS" => 0,
1088 "COMPANIES" => 0,
1089 );
1090
1091 $bExportFromCrm = self::isExportFromCRM($arOptions);
1092
1093 $arStore = self::getCatalogStore();
1094 $arMeasures = self::getCatalogMeasure();
1095 self::setCatalogMeasure($arMeasures);
1096 $arAgent = self::getSaleExport();
1097
1098 if (self::$crmMode)
1099 {
1100 self::setXmlEncoding("UTF-8");
1101 $arCharSets = self::getSite();
1102 }
1103
1104 echo self::getXmlRootName();?>
1105
1106<<?=CSaleExport::getTagName("SALE_EXPORT_COM_INFORMATION")?> <?=self::getCmrXmlRootNameParams()?>><?
1107
1108 $arOrder = array("DATE_UPDATE" => "ASC", "ID"=>"ASC");
1109
1110 $arSelect = array(
1111 "ID", "LID", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "CANCELED", "DATE_CANCELED",
1112 "EMP_CANCELED_ID", "REASON_CANCELED", "STATUS_ID", "DATE_STATUS", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "EMP_STATUS_ID",
1113 "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID", "PRICE", "CURRENCY", "DISCOUNT_VALUE",
1114 "SUM_PAID", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION",
1115 "ADDITIONAL_INFO",
1116 "COMMENTS", "TAX_VALUE", "STAT_GID", "RECURRING_ID", "ACCOUNT_NUMBER", "SUM_PAID", "DELIVERY_DOC_DATE", "DELIVERY_DOC_NUM", "TRACKING_NUMBER", "STORE_ID",
1117 "ID_1C", "VERSION",
1118 "USER.XML_ID", "USER.TIMESTAMP_X"
1119 );
1120
1121 $bCrmModuleIncluded = false;
1122 if ($bExportFromCrm)
1123 {
1124 $arSelect[] = "UF_COMPANY_ID";
1125 $arSelect[] = "UF_CONTACT_ID";
1126 if (IsModuleInstalled("crm") && CModule::IncludeModule("crm"))
1127 $bCrmModuleIncluded = true;
1128 }
1129
1130 $arFilter['RUNNING'] = 'N';
1131
1132 $filter = array(
1133 'select' => $arSelect,
1134 'filter' => $arFilter,
1135 'order' => $arOrder,
1136 'limit' => $count["nTopCount"]
1137 );
1138
1139 if (!empty($arOptions['RUNTIME']) && is_array($arOptions['RUNTIME']))
1140 {
1141 $filter['runtime'] = $arOptions['RUNTIME'];
1142 }
1143
1144 $entity = static::getParentEntityTable();
1145
1146 $dbOrderList = $entity::getList($filter);
1147
1148 while($arOrder = $dbOrderList->Fetch())
1149 {
1150 if(!self::$crmMode && (new Exchange(Sale\Exchange\Logger\ProviderType::ONEC_NAME))->isEffected($arOrder, $lastDateUpdateOrders))
1151 {
1152 continue;
1153 }
1154
1155 static::$documentsToLog = array();
1156 $contentToLog = '';
1157
1158 $order = static::load($arOrder['ID']);
1159 $arOrder['DATE_STATUS'] = $arOrder['DATE_STATUS']->toString();
1160 $arOrder['DATE_INSERT'] = $arOrder['DATE_INSERT']->toString();
1161 $arOrder['DATE_UPDATE'] = $arOrder['DATE_UPDATE']->toString();
1162
1163 foreach($arOrder as $field=>$value)
1164 {
1165 if(self::isFormattedDateFields('Order', $field))
1166 {
1167 $arOrder[$field] = self::getFormatDate($value);
1168 }
1169 }
1170
1171 if (self::$crmMode)
1172 {
1173 if(self::getVersionSchema() > self::DEFAULT_VERSION && is_array($_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix]) && in_array($arOrder["ID"], $_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix]) && empty($arFilter["ID"]))
1174 continue;
1175 ob_start();
1176 }
1177
1178 self::$arResultStat["ORDERS"]++;
1179
1180 $agentParams = (array_key_exists($arOrder["PERSON_TYPE_ID"], $arAgent) ? $arAgent[$arOrder["PERSON_TYPE_ID"]] : array() );
1181
1182 $arResultPayment = self::getPayment($arOrder);
1183 $paySystems = $arResultPayment['paySystems'] ?? [];
1184 $arPayment = $arResultPayment['payment'] ?? [];
1185
1186 $arResultShipment = self::getShipment($arOrder);
1187 $arShipment = $arResultShipment['shipment'] ?? [];
1188 $delivery = $arResultShipment['deliveryServices'] ?? [];
1189
1191 self::setSiteNameByOrder($arOrder);
1192
1193 $arProp = self::prepareSaleProperty($arOrder, $bExportFromCrm, $bCrmModuleIncluded, $paySystems, $delivery, $locationStreetPropertyValue, $order);
1194 $agent = self::prepareSalePropertyRekv($order, $agentParams, $arProp, $locationStreetPropertyValue);
1195
1196 $arOrderTax = CSaleExport::getOrderTax($order);
1197 $xmlResult['OrderTax'] = self::getXMLOrderTax($arOrderTax);
1198 self::setOrderSumTaxMoney(self::getOrderSumTaxMoney($arOrderTax));
1199
1200 $xmlResult['Contragents'] = self::getXmlContragents($arOrder, $arProp, $agent, $bExportFromCrm ? array("EXPORT_FROM_CRM" => "Y") : array());
1201 $xmlResult['OrderDiscount'] = self::getXmlOrderDiscount($arOrder);
1202 $xmlResult['SaleStoreList'] = $arStore;
1203 $xmlResult['ShipmentsStoreList'] = self::getShipmentsStoreList($order);
1204 // self::getXmlSaleStoreBasket($arOrder,$arStore);
1205 $basketItems = self::getXmlBasketItems('Order', $arOrder, array('ORDER_ID'=>$arOrder['ID']), array(), $arShipment);
1206
1207 $numberItems = array();
1208 foreach($basketItems['result'] as $basketItem)
1209 {
1210 $number = self::getNumberBasketPosition($basketItem["ID"]);
1211
1212 if(in_array($number, $numberItems))
1213 {
1214 $r = new \Bitrix\Sale\Result();
1215 $r->addWarning(new \Bitrix\Main\Error(GetMessage("SALE_EXPORT_REASON_MARKED_BASKET_PROPERTY").'1C_Exchange:Order.export.basket.properties', 'SALE_EXPORT_REASON_MARKED_BASKET_PROPERTY'));
1216 $entityMarker::addMarker($order, $order, $r);
1217 $order->setField('MARKED','Y');
1218 $order->setField('DATE_UPDATE',null);
1219 $order->save();
1220 break;
1221 }
1222 else
1223 {
1224 $numberItems[] = $number;
1225 }
1226 }
1227
1228 $xmlResult['BasketItems'] = $basketItems['outputXML'];
1229 $xmlResult['SaleProperties'] = self::getXmlSaleProperties($arOrder, $arShipment, $arPayment, $agent, $agentParams, $bExportFromCrm);
1230 $xmlResult['RekvProperties'] = self::getXmlRekvProperties($agent, $agentParams);
1231
1232
1233 if(self::getVersionSchema() >= self::CONTAINER_VERSION)
1234 {
1235 ob_start();
1236 echo '<'.CSaleExport::getTagName("SALE_EXPORT_CONTAINER").'>';
1237 }
1238
1239 self::OutputXmlDocument('Order', $xmlResult, $arOrder);
1240
1241 if(self::getVersionSchema() >= self::PARTIAL_VERSION)
1242 {
1243 self::OutputXmlDocumentsByType('Payment',$xmlResult, $arOrder, $arPayment, $order, $agentParams, $arProp, $locationStreetPropertyValue);
1244 self::OutputXmlDocumentsByType('Shipment',$xmlResult, $arOrder, $arShipment, $order, $agentParams, $arProp, $locationStreetPropertyValue);
1245 self::OutputXmlDocumentRemove('Shipment',$arOrder);
1246 }
1247
1248 if(self::getVersionSchema() >= self::CONTAINER_VERSION)
1249 {
1250 echo '</'.CSaleExport::getTagName("SALE_EXPORT_CONTAINER").'>';
1251 $contentToLog = ob_get_contents();
1252 ob_end_clean();
1253 echo $contentToLog;
1254 }
1255
1256 if (self::$crmMode)
1257 {
1258 $c = ob_get_clean();
1259 $c = \Bitrix\Main\Text\Encoding::convertEncoding($c, $arCharSets[$arOrder["LID"]], "utf-8");
1260 echo $c;
1261 $_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix][] = $arOrder["ID"];
1262 }
1263 else
1264 {
1265 static::saveExportParams($arOrder);
1266 }
1267
1268 ksort(static::$documentsToLog);
1269
1270 foreach (static::$documentsToLog as $entityTypeId=>$documentsToLog)
1271 {
1272 foreach ($documentsToLog as $documentToLog)
1273 {
1274 $fieldToLog = $documentToLog;
1275 $fieldToLog['ENTITY_TYPE_ID'] = $entityTypeId;
1276 if(self::getVersionSchema() >= self::CONTAINER_VERSION)
1277 {
1278 if($entityTypeId == \Bitrix\Sale\Exchange\EntityType::ORDER )
1279 $fieldToLog['MESSAGE'] = $contentToLog;
1280 }
1281 static::log($fieldToLog);
1282 }
1283 }
1284
1285 if(self::checkTimeIsOver($time_limit, $end_time))
1286 {
1287 break;
1288 }
1289 }
1290 ?>
1291
1292 </<?=CSaleExport::getTagName("SALE_EXPORT_COM_INFORMATION")?>><?
1293
1294 return self::$arResultStat;
1295 }
1296
1297 public static function safetyUnZip($file_name, $last_inx = null, $interval = 0)
1298 {
1299 $start_time = time();
1300 $dir_name = mb_substr($file_name, 0, mb_strrpos($file_name, '/') + 1);
1301
1302 if (mb_strlen($dir_name) <= mb_strlen($_SERVER['DOCUMENT_ROOT']))
1303 {
1304 return false;
1305 }
1306
1308 $oArchiver = CBXArchive::GetArchive($file_name, 'ZIP');
1309 if ($oArchiver instanceof IBXArchive)
1310 {
1311 $entries = $oArchiver->GetProperties()['nb'];
1312
1313 for ($inx = 0; $inx < $entries; $inx++)
1314 {
1315 //Skip from last step
1316 if (is_null($last_inx) === false)
1317 {
1318 if ((int)$last_inx >= $inx)
1319 {
1320 continue;
1321 }
1322 }
1323
1324 $oArchiver->SetOptions([
1325 'RULE' => [
1326 'by_index' => [
1327 [
1328 'start' => $inx,
1329 'end' => $inx,
1330 ]
1331 ]
1332 ]
1333 ]);
1334
1335 $rArchiver = $oArchiver->Unpack($dir_name);
1336 if (!$rArchiver)
1337 {
1338 return false;
1339 }
1340
1341 //Jump to next step
1342 if($interval > 0 && (time() - $start_time) > ($interval))
1343 {
1344 return $inx;
1345 }
1346 }
1347
1348 return true;
1349 }
1350 else
1351 {
1352 return false;
1353 }
1354 }
1355
1356 public static function UnZip($file_name, $last_zip_entry = "", $interval = 0)
1357 {
1358 $start_time = time();
1359
1361
1362 //Function and securioty checks
1363 if(!function_exists("zip_open"))
1364 return false;
1365 $dir_name = mb_substr($file_name, 0, mb_strrpos($file_name, "/") + 1);
1366 if(mb_strlen($dir_name) <= mb_strlen($_SERVER["DOCUMENT_ROOT"]))
1367 return false;
1368
1369 $hZip = zip_open($file_name);
1370 if(!$hZip)
1371 return false;
1372 //Skip from last step
1373 if($last_zip_entry)
1374 {
1375 while($entry = zip_read($hZip))
1376 if(zip_entry_name($entry) == $last_zip_entry)
1377 break;
1378 }
1379
1381 //Continue unzip
1382 while($entry = zip_read($hZip))
1383 {
1384 $entry_name = zip_entry_name($entry);
1385 //Check for directory
1386 zip_entry_open($hZip, $entry);
1387 if(zip_entry_filesize($entry))
1388 {
1389
1390 $file_name = trim(str_replace("\\", "/", trim($entry_name)), "/");
1391 $file_name = \Bitrix\Main\Text\Encoding::convertEncoding($file_name, "cp866", LANG_CHARSET);
1392
1393 $bBadFile = HasScriptExtension($file_name)
1394 || IsFileUnsafe($file_name)
1395 || !$io->ValidatePathString("/".$file_name)
1396 ;
1397
1398 if(!$bBadFile)
1399 {
1400 $file_name = $io->GetPhysicalName($dir_name.rel2abs("/", $file_name));
1401 CheckDirPath($file_name);
1402 $fout = fopen($file_name, "wb");
1403 if(!$fout)
1404 return false;
1405 while($data = zip_entry_read($entry, 102400))
1406 {
1407 $data_len = strlen($data);
1408 $result = fwrite($fout, $data);
1409 if($result !== $data_len)
1410 return false;
1411 }
1412 }
1413 }
1414 zip_entry_close($entry);
1415
1416 //Jump to next step
1417 if($interval > 0 && (time()-$start_time) > ($interval))
1418 {
1419 zip_close($hZip);
1420 return $entry_name;
1421 }
1422 }
1423 zip_close($hZip);
1424 return true;
1425 }
1426
1427 public static function getOrderTax(\Bitrix\Sale\Order $order)
1428 {
1429 $arResult = array();
1430 if($order->getId()>0)
1431 {
1432 $tax = $order->getTax();
1433 $arResult = $tax->getTaxList();
1434 }
1435
1436 return $arResult;
1437 }
1438
1439 public static function getOrderSumTaxMoney($arOrderTaxAll)
1440 {
1441 $orderTax = 0;
1442 if(is_array($arOrderTaxAll) && count($arOrderTaxAll)>0)
1443 {
1444 foreach ($arOrderTaxAll as $arOrderTax )
1445 {
1446 $arOrderTax["VALUE_MONEY"] = roundEx($arOrderTax["VALUE_MONEY"], 2);
1447 $orderTax += $arOrderTax["VALUE_MONEY"];
1448 }
1449 }
1450 return $orderTax;
1451 }
1452
1453 public static function getXmlOrderTax($arOrderTaxAll)
1454 {
1455 $strResult = "";
1456 if(is_array($arOrderTaxAll) && count($arOrderTaxAll)>0)
1457 {
1458 $orderTax = 0;
1459 $strResult .= "<".CSaleExport::getTagName("SALE_EXPORT_TAXES").">";
1460 foreach ($arOrderTaxAll as $arOrderTax )
1461 {
1462 $arOrderTax["VALUE_MONEY"] = roundEx($arOrderTax["VALUE_MONEY"], 2);
1463 $orderTax += $arOrderTax["VALUE_MONEY"];
1464
1465 $strResult .= "<".CSaleExport::getTagName("SALE_EXPORT_TAX").">".
1466 "<".CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME").">".htmlspecialcharsbx($arOrderTax["TAX_NAME"])."</".CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME").">".
1467 "<".CSaleExport::getTagName("SALE_EXPORT_IN_PRICE").">".(($arOrderTax["IS_IN_PRICE"]=="Y") ? "true" : "false")."</".CSaleExport::getTagName("SALE_EXPORT_IN_PRICE").">".
1468 "<".CSaleExport::getTagName("SALE_EXPORT_AMOUNT").">".$arOrderTax["VALUE_MONEY"]."</".CSaleExport::getTagName("SALE_EXPORT_AMOUNT").">".
1469 "</".CSaleExport::getTagName("SALE_EXPORT_TAX").">";
1470 }
1471 $strResult .= "</".CSaleExport::getTagName("SALE_EXPORT_TAXES").">";
1472 }
1473
1474 return $strResult;
1475 }
1476
1477 public static function getXmlOrderDiscount($arOrder)
1478 {
1479 $strResult='';
1480 if(DoubleVal($arOrder["DISCOUNT_VALUE"]) > 0)
1481 {
1482 $strResult = "<".CSaleExport::getTagName("SALE_EXPORT_DISCOUNTS").">
1483 <".CSaleExport::getTagName("SALE_EXPORT_DISCOUNT").">
1484 <".CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME").">".CSaleExport::getTagName("SALE_EXPORT_ORDER_DISCOUNT")."</".CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME").">
1485 <".CSaleExport::getTagName("SALE_EXPORT_AMOUNT").">".$arOrder["DISCOUNT_VALUE"]."</".CSaleExport::getTagName("SALE_EXPORT_AMOUNT").">
1486 <".CSaleExport::getTagName("SALE_EXPORT_IN_PRICE").">false</".CSaleExport::getTagName("SALE_EXPORT_IN_PRICE").">
1487 </".CSaleExport::getTagName("SALE_EXPORT_DISCOUNT").">
1488 </".CSaleExport::getTagName("SALE_EXPORT_DISCOUNTS").">";
1489 }
1490 return $strResult;
1491 }
1492
1493 public static function getShipmentsStoreList(Bitrix\Sale\Order $order)
1494 {
1495 $result = array();
1496
1497 $shipmentCollection = $order->getShipmentCollection();
1498
1499 if($shipmentCollection->count()>0)
1500 {
1502 foreach($shipmentCollection as $shipment)
1503 {
1504 if ($shipment->isSystem())
1505 continue;
1506
1507 $storeId = $shipment->getStoreId();
1508
1509 if($storeId>0)
1510 $result[$shipment->getId()] = $storeId;
1511 }
1512 }
1513 return $result;
1514 }
1515
1516 public static function getXmlSaleStore($arShipmentStore, $arStore)
1517 {
1518 $bufer = '';
1519 if(count($arShipmentStore)>0)
1520 {
1521 ob_start();
1522
1523 foreach($arShipmentStore as $shipmentStoreId)
1524 {
1525 if(intval($shipmentStoreId) > 0 && !empty($arStore[$shipmentStoreId]))
1526 {
1527 ?>
1528 <<?=CSaleExport::getTagName("SALE_EXPORT_STORY")?>>
1529 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>><?=$arStore[$shipmentStoreId]["XML_ID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
1530 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=htmlspecialcharsbx($arStore[$shipmentStoreId]["TITLE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1531
1532 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS")?>>
1533 <<?=CSaleExport::getTagName("SALE_EXPORT_PRESENTATION")?>><?=htmlspecialcharsbx($arStore[$shipmentStoreId]["ADDRESS"])?></<?=CSaleExport::getTagName("SALE_EXPORT_PRESENTATION")?>>
1534 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
1535 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_STREET")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
1536 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arStore[$shipmentStoreId]["ADDRESS"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1537 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
1538 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS")?>>
1539
1540 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTACTS")?>>
1541 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTACT")?>>
1542 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=(self::getVersionSchema() > self::DEFAULT_VERSION ? CSaleExport::getTagName("SALE_EXPORT_WORK_PHONE_NEW") : CSaleExport::getTagName("SALE_EXPORT_WORK_PHONE"))?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
1543 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arStore[$shipmentStoreId]["PHONE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1544 </<?=CSaleExport::getTagName("SALE_EXPORT_CONTACT")?>>
1545 </<?=CSaleExport::getTagName("SALE_EXPORT_CONTACTS")?>>
1546 </<?=CSaleExport::getTagName("SALE_EXPORT_STORY")?>>
1547 <?
1548 }
1549 }
1550 $bufer = ob_get_clean();
1551 }
1552 if($bufer <> '')
1553 $bufer = "<".CSaleExport::getTagName("SALE_EXPORT_STORIES").">".$bufer."</".CSaleExport::getTagName("SALE_EXPORT_STORIES").">";
1554
1555 return $bufer;
1556 }
1557
1558 public static function getXmlSaleStoreBasket($arOrder,$arStore)
1559 {
1560 ob_start();
1561 $storeBasket = "
1562 <".CSaleExport::getTagName("SALE_EXPORT_STORIES").">
1563 <".CSaleExport::getTagName("SALE_EXPORT_STORY").">
1564 <".CSaleExport::getTagName("SALE_EXPORT_ID").">".$arStore[$arOrder["STORE_ID"]]["XML_ID"]."</".CSaleExport::getTagName("SALE_EXPORT_ID").">
1565 <".CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME").">".htmlspecialcharsbx($arStore[$arOrder["STORE_ID"]]["TITLE"])."</".CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME").">
1566 </".CSaleExport::getTagName("SALE_EXPORT_STORY").">
1567 </".CSaleExport::getTagName("SALE_EXPORT_STORIES").">
1568 ";
1569 //$bufer = ob_get_clean();
1570 ob_get_clean();
1571 return $storeBasket;
1572 }
1573
1578 public static function normalizeExternalCode($code)
1579 {
1580 $xml_id = $code;
1581 list($productXmlId, $offerXmlId) = explode("#", $xml_id, 2);
1582 if ($productXmlId === $offerXmlId)
1583 $xml_id = $productXmlId;
1584
1585 return $xml_id;
1586 }
1587
1588 protected static function outputXmlMarkingCodeGroup($arBasket)
1589 {
1590 ?>
1591 <<?=CSaleExport::getTagName("SALE_EXPORT_MARKING_CODE_GROUP")?>>
1592 <<?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>><?=$arBasket["MARKING_CODE_GROUP"]?></<?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>>
1593 </<?=CSaleExport::getTagName("SALE_EXPORT_MARKING_CODE_GROUP")?>>
1594 <?
1595 }
1596
1597 protected static function outputXmlMarkingCode($shipmentItemId, $order)
1598 {
1599 $list = [];
1600 if($order instanceof \Bitrix\Sale\Order)
1601 {
1602 $shipmentCollection = $order->getShipmentCollection();
1603
1604 if($shipmentCollection->count()>0)
1605 {
1607 foreach($shipmentCollection as $shipment)
1608 {
1609 if ($shipment->isSystem())
1610 continue;
1611
1612 $shipmentItemCollection = $shipment->getShipmentItemCollection();
1613
1615 foreach ($shipmentItemCollection as $shipmentItem)
1616 {
1617 if ($shipmentItem->getId() == $shipmentItemId)
1618 {
1619 $basketItem = $shipmentItem->getBasketItem();
1620 if ($basketItem->isSupportedMarkingCode())
1621 {
1622 $storeCollection = $shipmentItem->getShipmentItemStoreCollection();
1623
1624 for ($i = $shipmentItem->getQuantity(); $i > 0; $i--)
1625 {
1626 if ($storeCollection)
1627 {
1629 if ($itemStore = $storeCollection->current())
1630 {
1631 $code = $itemStore->getMarkingCode();
1632 if($code <> '')
1633 {
1634 $list[] = $code;
1635 }
1636
1637 $storeCollection->next();
1638 }
1639 }
1640 }
1641 }
1642 break 2;
1643 }
1644 }
1645 }
1646 }
1647 }
1648 if(count($list)>0)
1649 {
1650 ?>
1651 <<?=CSaleExport::getTagName("SALE_EXPORT_MARKING_MARKINGS")?>>
1652 <?
1653 foreach($list as $code)
1654 {
1655 ?>
1656 <<?=CSaleExport::getTagName("SALE_EXPORT_MARKING_MARKING")?>>
1657 <<?=CSaleExport::getTagName("SALE_EXPORT_MARKING_BARCODE")?>><?=$code?></<?=CSaleExport::getTagName("SALE_EXPORT_MARKING_BARCODE")?>>
1658 </<?=CSaleExport::getTagName("SALE_EXPORT_MARKING_MARKING")?>>
1659 <?
1660 }
1661 ?>
1662 </<?=CSaleExport::getTagName("SALE_EXPORT_MARKING_MARKINGS")?>>
1663 <?
1664 }
1665 }
1666
1667 protected static function outputXmlUnit($arBasket)
1668 {
1669 if(self::getVersionSchema() > self::DEFAULT_VERSION)
1670 {
1671 if(intval($arBasket["MEASURE_CODE"]) <= 0)
1672 $arBasket["MEASURE_CODE"] = 796;
1673 ?>
1674 <<?=CSaleExport::getTagName("SALE_EXPORT_UNIT")?>>
1675 <<?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>><?=$arBasket["MEASURE_CODE"]?></<?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>>
1676 <<?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME_UNIT")?>><?=htmlspecialcharsbx(self::$measures[$arBasket["MEASURE_CODE"]]['MEASURE_TITLE'])?></<?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME_UNIT")?>>
1677 </<?=CSaleExport::getTagName("SALE_EXPORT_UNIT")?>>
1678 <<?=CSaleExport::getTagName("SALE_EXPORT_KOEF")?>>1</<?=CSaleExport::getTagName("SALE_EXPORT_KOEF")?>>
1679 <?
1680 }
1681 else
1682 {
1683 if($arBasket["MEASURE_CODE"] == 796)
1684 {
1685 ?>
1686 <<?=CSaleExport::getTagName("SALE_EXPORT_BASE_UNIT")?> <?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>="796" <?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME_UNIT")?>="<?=CSaleExport::getTagName("SALE_EXPORT_SHTUKA")?>" <?=CSaleExport::getTagName("SALE_EXPORT_INTERNATIONAL_ABR")?>="<?=CSaleExport::getTagName("SALE_EXPORT_RCE")?>"><?=CSaleExport::getTagName("SALE_EXPORT_SHT")?></<?=CSaleExport::getTagName("SALE_EXPORT_BASE_UNIT")?>>
1687 <?
1688 }
1689 else
1690 {
1691 ?>
1692 <<?=CSaleExport::getTagName("SALE_EXPORT_BASE_UNIT")?> <?=CSaleExport::getTagName("SALE_EXPORT_CODE")?>="<?=$arBasket["MEASURE_CODE"]?>" <?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME_UNIT")?>="<?=htmlspecialcharsbx(self::$measures[$arBasket["MEASURE_CODE"]]['MEASURE_TITLE'])?>" <?=CSaleExport::getTagName("SALE_EXPORT_INTERNATIONAL_ABR")?>="<?=self::$measures[$arBasket["MEASURE_CODE"]]["SYMBOL_LETTER_INTL"]?>"><?=self::$measures[$arBasket["MEASURE_CODE"]]["SYMBOL_RUS"]?></<?=CSaleExport::getTagName("SALE_EXPORT_BASE_UNIT")?>>
1693 <?
1694 }
1695
1696 }
1697 }
1698
1699 public static function getXmlBasketItems($type, $arOrder, $arFilter, $arSelect=array(), $arShipment=array(), $order=null)
1700 {
1701 $result = array();
1702 $entity = static::getBasketTable();
1703
1704 ob_start();
1705 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ITEMS")?>><?
1706
1707 $select = array("ID", "NOTES", "PRODUCT_XML_ID", "CATALOG_XML_ID", "NAME", "PRICE", "QUANTITY", "DISCOUNT_PRICE", "VAT_RATE", "MEASURE_CODE", "SET_PARENT_ID", "TYPE", "VAT_INCLUDED", "MARKING_CODE_GROUP");
1708 if(count($arSelect)>0)
1709 $select = array_merge($arSelect, $select);
1710
1711 $dbBasket = $entity::getList(array(
1712 'select' => $select,
1713 'filter' => $arFilter,
1714 'order' => array("NAME" => "ASC")
1715 ));
1716
1717 $basketSum = 0;
1718 $priceType = "";
1719 $bVat = false;
1720 $vatRate = 0;
1721 $vatSum = 0;
1722 while ($arBasket = $dbBasket->fetch())
1723 {
1724 if(strval($arBasket['TYPE'])!='' && $arBasket['TYPE']== \Bitrix\Sale\BasketItem::TYPE_SET)
1725 continue;
1726
1727 $result[] = $arBasket;
1728
1729 if($priceType == '')
1730 $priceType = $arBasket["NOTES"];
1731 ?>
1732 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM")?>>
1733 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>><?=htmlspecialcharsbx(static::normalizeExternalCode($arBasket["PRODUCT_XML_ID"]))?></<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
1734 <<?=CSaleExport::getTagName("SALE_EXPORT_CATALOG_ID")?>><?=htmlspecialcharsbx($arBasket["CATALOG_XML_ID"])?></<?=CSaleExport::getTagName("SALE_EXPORT_CATALOG_ID")?>>
1735 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=htmlspecialcharsbx($arBasket["NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1736 <?
1737
1738 static::outputXmlUnit($arBasket);
1739
1740 if($type == 'Order')
1741 {
1742 static::outputXmlMarkingCodeGroup($arBasket);
1743 }
1744 elseif($type == 'Shipment')
1745 {
1746 static::outputXmlMarkingCode($arBasket['SALE_INTERNALS_BASKET_SHIPMENT_ITEM_ID'], $order);
1747 }
1748
1749 if(DoubleVal($arBasket["DISCOUNT_PRICE"]) > 0)
1750 {
1751 ?>
1752 <<?=CSaleExport::getTagName("SALE_EXPORT_DISCOUNTS")?>>
1753 <<?=CSaleExport::getTagName("SALE_EXPORT_DISCOUNT")?>>
1754 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_ITEM_DISCOUNT")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1755 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=$arBasket["DISCOUNT_PRICE"]?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
1756 <<?=CSaleExport::getTagName("SALE_EXPORT_IN_PRICE")?>>true</<?=CSaleExport::getTagName("SALE_EXPORT_IN_PRICE")?>>
1757 </<?=CSaleExport::getTagName("SALE_EXPORT_DISCOUNT")?>>
1758 </<?=CSaleExport::getTagName("SALE_EXPORT_DISCOUNTS")?>>
1759 <?
1760 }
1761 ?>
1762 <?if(self::getVersionSchema() >= self::PARTIAL_VERSION && $type == 'Shipment')
1763 {?>
1764 <<?=CSaleExport::getTagName("SALE_EXPORT_PRICE_PER_ITEM")?>><?=$arBasket["PRICE"]?></<?=CSaleExport::getTagName("SALE_EXPORT_PRICE_PER_ITEM")?>>
1765 <<?=CSaleExport::getTagName("SALE_EXPORT_QUANTITY")?>><?=$arBasket["SALE_INTERNALS_BASKET_SHIPMENT_ITEM_QUANTITY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_QUANTITY")?>>
1766 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=$arBasket["PRICE"]*$arBasket["SALE_INTERNALS_BASKET_SHIPMENT_ITEM_QUANTITY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
1767 <?}
1768 else{
1769 ?>
1770 <<?=CSaleExport::getTagName("SALE_EXPORT_PRICE_PER_ITEM")?>><?=$arBasket["PRICE"]?></<?=CSaleExport::getTagName("SALE_EXPORT_PRICE_PER_ITEM")?>>
1771 <<?=CSaleExport::getTagName("SALE_EXPORT_QUANTITY")?>><?=$arBasket["QUANTITY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_QUANTITY")?>>
1772 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=$arBasket["PRICE"]*$arBasket["QUANTITY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
1773 <?}?>
1774 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
1775 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1776 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_TYPE_NOMENKLATURA")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1777 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=CSaleExport::getTagName("SALE_EXPORT_ITEM")?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1778 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1779 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1780 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_TYPE_OF_NOMENKLATURA")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1781 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=CSaleExport::getTagName("SALE_EXPORT_ITEM")?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1782 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1783
1784 <?
1785 $number = self::getNumberBasketPosition($arBasket["ID"]);
1786 ?>
1787 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1788 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_BASKET_NUMBER")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1789 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$number?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1790 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1791 <?
1792 $dbProp = CSaleBasket::GetPropsList(Array("SORT" => "ASC", "ID" => "ASC"), Array("BASKET_ID" => $arBasket["ID"]), false, false, array("NAME", "SORT", "VALUE", "CODE"));
1793 while($arPropBasket = $dbProp->Fetch())
1794 {
1795 ?>
1796 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1797 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE_BASKET")?>#<?=($arPropBasket["CODE"] != "" ? $arPropBasket["CODE"]:htmlspecialcharsbx($arPropBasket["NAME"]))?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1798 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arPropBasket["VALUE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1799 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1800 <?
1801 }
1802 ?>
1803 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
1804 <?if(DoubleVal($arBasket["VAT_RATE"]) > 0)
1805 {
1806 $bVat = true;
1807 $vatRate = DoubleVal($arBasket["VAT_RATE"]);
1808 $basketVatSum = (($arBasket["PRICE"] / ($arBasket["VAT_RATE"]+1)) * $arBasket["VAT_RATE"]);
1809 $vatSum += roundEx($basketVatSum * $arBasket["QUANTITY"], 2);
1810 ?>
1811 <<?=CSaleExport::getTagName("SALE_EXPORT_TAX_RATES")?>>
1812 <<?=CSaleExport::getTagName("SALE_EXPORT_TAX_RATE")?>>
1813 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_VAT")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1814 <<?=CSaleExport::getTagName("SALE_EXPORT_RATE")?>><?=$arBasket["VAT_RATE"] * 100?></<?=CSaleExport::getTagName("SALE_EXPORT_RATE")?>>
1815 </<?=CSaleExport::getTagName("SALE_EXPORT_TAX_RATE")?>>
1816 </<?=CSaleExport::getTagName("SALE_EXPORT_TAX_RATES")?>>
1817 <<?=CSaleExport::getTagName("SALE_EXPORT_TAXES")?>>
1818 <<?=CSaleExport::getTagName("SALE_EXPORT_TAX")?>>
1819 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_VAT")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1820 <<?=CSaleExport::getTagName("SALE_EXPORT_IN_PRICE")?>><?=$arBasket["VAT_INCLUDED"]=="Y"?'true':'false'?></<?=CSaleExport::getTagName("SALE_EXPORT_IN_PRICE")?>>
1821 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=roundEx($basketVatSum, 2)?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
1822 </<?=CSaleExport::getTagName("SALE_EXPORT_TAX")?>>
1823 </<?=CSaleExport::getTagName("SALE_EXPORT_TAXES")?>>
1824 <?
1825 }
1826 ?>
1827 <?//=self::getXmlSaleStoreBasket($arOrder,$arStore)?>
1828 </<?=CSaleExport::getTagName("SALE_EXPORT_ITEM")?>>
1829 <?
1830 $basketSum += $arBasket["PRICE"]*$arBasket["QUANTITY"];
1831 }
1832
1833 if(self::getVersionSchema() >= self::PARTIAL_VERSION)
1834 {
1835 if(count($arShipment)>0)
1836 {
1837 foreach($arShipment as $shipment)
1838 {
1839 self::getOrderDeliveryItem($shipment, $bVat, $vatRate, $vatSum);
1840 }
1841 }
1842 }
1843 else
1844 self::getOrderDeliveryItem($arOrder, $bVat, $vatRate, $vatSum);
1845
1846 ?>
1847 </<?=CSaleExport::getTagName("SALE_EXPORT_ITEMS")?>><?
1848
1849 $bufer = ob_get_clean();
1850 return array('outputXML'=>$bufer,'result'=>$result);
1851 }
1852
1853 public static function getXmlSaleProperties($arOrder, $arShipment, $arPayment, $agent, $agentParams, $bExportFromCrm)
1854 {
1855 ob_start();
1856
1857 $arShipment = $arShipment[0];
1858 $arPayment = $arPayment[0];
1859
1860 ?><<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>><?
1861 if($arOrder["DATE_PAYED"] <> '')
1862 {
1863 ?>
1864 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1865 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DATE_PAID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1866 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$arOrder["DATE_PAYED"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1867 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1868 <?
1869 }
1870
1871 if(self::getVersionSchema() < self::PARTIAL_VERSION || $bExportFromCrm) // #version# < 2.10 ? || $bExportFromCrm
1872 {
1873 if($arPayment["PAY_VOUCHER_NUM"] <> '')
1874 {
1875 ?>
1876 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1877 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PAY_NUMBER")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1878 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arPayment["PAY_VOUCHER_NUM"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1879 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1880 <?
1881 }
1882 if($arShipment["DATE_ALLOW_DELIVERY"] <> '')
1883 {
1884 ?>
1885 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1886 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DATE_ALLOW_DELIVERY")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1887 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$arShipment["DATE_ALLOW_DELIVERY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1888 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1889 <?
1890 }
1891 }
1892 else
1893 {
1894 ?>
1895 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1896 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DATE_ALLOW_DELIVERY_LAST")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1897 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$arOrder["DATE_ALLOW_DELIVERY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1898 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>><?
1899
1900 }
1901
1902 if($arShipment["DELIVERY_ID"] <> '')
1903 {
1904 ?>
1905 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1906 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DELIVERY_SERVICE")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1907 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arShipment["DELIVERY_NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1908 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1909 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1910 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=GetMessage("SALE_EXPORT_DELIVERY_ID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1911 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arShipment["DELIVERY_ID"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1912 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1913 <?
1914 }
1915
1916 if(intval($arPayment["PAY_SYSTEM_ID"])>0)
1917 {
1918 ?>
1919 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1920 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PAY_SYSTEM")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1921 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arPayment["PAY_SYSTEM_NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1922 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1923 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1924 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=GetMessage("SALE_EXPORT_PAY_SYSTEM_ID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1925 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arPayment["PAY_SYSTEM_ID"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1926 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1927 <?
1928 }
1929 ?>
1930 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1931 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_ORDER_PAID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1932 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($arOrder["PAYED"]=="Y")?"true":"false";?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1933 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1934 <?
1935 if(self::getVersionSchema() < self::PARTIAL_VERSION || $bExportFromCrm)
1936 {
1937 ?>
1938 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1939 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_ALLOW_DELIVERY")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1940 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($arShipment["ALLOW_DELIVERY"]=="Y")?"true":"false";?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1941 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>><?
1942 }
1943 ?>
1944 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1945 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_CANCELED")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1946 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($arOrder["CANCELED"]=="Y")?"true":"false";?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1947 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1948 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1949 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_FINAL_STATUS")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1950 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($arOrder["STATUS_ID"]=="F")?"true":"false";?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1951 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1952 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1953 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_ORDER_STATUS")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1954 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?$arStatus = static::getStatusInfoByStatusId($arOrder["STATUS_ID"]); echo htmlspecialcharsbx("[".$arOrder["STATUS_ID"]."] ".$arStatus["NAME"]);?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1955 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1956 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1957 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=GetMessage("SALE_EXPORT_ORDER_STATUS_ID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1958 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arOrder["STATUS_ID"]);?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1959 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1960 <?if($arOrder["DATE_CANCELED"] <> '')
1961 {
1962 ?>
1963 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1964 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=GetMessage("SALE_EXPORT_DATE_CANCEL")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1965 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$arOrder["DATE_CANCELED"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1966 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1967 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1968 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=GetMessage("SALE_EXPORT_CANCEL_REASON")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1969 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arOrder["REASON_CANCELED"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1970 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1971 <?
1972 }
1973 if($arOrder["DATE_STATUS"] <> '')
1974 {
1975 ?>
1976 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1977 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DATE_STATUS")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1978 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$arOrder["DATE_STATUS"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1979 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1980 <?
1981 }
1982 if($arOrder["USER_DESCRIPTION"] <> '')
1983 {
1984 ?>
1985 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1986 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_USER_DESCRIPTION")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
1987 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($arOrder["USER_DESCRIPTION"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
1988 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
1989 <?
1990 }
1991 self::OutputXmlSiteName($arOrder);
1992
1993 self::OutputXmlRekvProperties($agent, $agentParams);
1994
1996
1997 ?>
1998 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
1999 <?
2000 $bufer = ob_get_clean();
2001 return $bufer;
2002}
2003
2004 public static function getXmlRekvProperties($agent, $agentParams)
2005 {
2006 ob_start();
2007 self::OutputXmlRekvProperties($agent, $agentParams);
2008 $bufer = ob_get_clean();
2009 return $bufer;
2010 }
2011
2012 public static function OutputXmlRekvProperties($agent, $agentParams)
2013 {
2014 if(!empty($agent["REKV"]))
2015 {
2016 foreach($agent["REKV"] as $k => $v)
2017 {
2018 if($agentParams[$k]["NAME"] <> '' && $v <> '')
2019 {
2020 ?>
2021 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2022 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=htmlspecialcharsbx($agentParams[$k]["NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2023 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($v)?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2024 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2025 <?
2026 }
2027 }
2028 }
2029 }
2030
2031 public static function getXmlContragents($arOrder = array(), $arProp = array(), $agent = array(), $arOptions = array())
2032 {
2033 ob_start();
2034 self::ExportContragents($arOrder, $arProp, $agent, $arOptions);
2035 $ec_bufer = ob_get_clean();
2036 return $ec_bufer;
2037 }
2038
2039 public static function OutputXmlDocumentsByType($typeDocument, $xmlResult, $arOrder, $documents, \Bitrix\Sale\Order $order=null, $agentParams, $arProp, $locationStreetPropertyValue)
2040 {
2041 if(is_array($documents) && count($documents)>0)
2042 {
2043 foreach($documents as $document)
2044 {
2045 $document['LID'] = $arOrder['LID'];
2046 $document['VERSION'] = $arOrder['VERSION'];
2047
2048 switch($typeDocument)
2049 {
2050 case 'Payment':
2051
2052 if($document['DATE_BILL']=='')
2053 $document['DATE_BILL'] = $arOrder['DATE_INSERT_FORMAT'];
2054
2055 if(($paymentCollection = $order->getPaymentCollection()))
2056 {
2057 foreach($paymentCollection as $payment)
2058 {
2059 if($payment->getId() == $document['ID'])
2060 {
2061 $agent = self::prepareSalePropertyRekv($payment, $agentParams, $arProp, $locationStreetPropertyValue);
2062 $xmlResult['RekvProperties'] = self::getXmlRekvProperties($agent, $agentParams);
2063 break;
2064 }
2065 }
2066 }
2067
2068 self::OutputXmlDocument('Payment',$xmlResult, $document);
2069 break;
2070 case 'Shipment':
2071
2072 if(($shipmentCollection = $order->getShipmentCollection()))
2073 {
2074 foreach($shipmentCollection as $shipment)
2075 {
2076 if($shipment->getId() == $document['ID'])
2077 {
2078 $agent = self::prepareSalePropertyRekv($shipment, $agentParams, $arProp, $locationStreetPropertyValue);
2079 $xmlResult['RekvProperties'] = self::getXmlRekvProperties($agent, $agentParams);
2080 break;
2081 }
2082 }
2083 }
2084
2085 $basketItems = self::getXmlBasketItems('Shipment', $document, array(
2086 'ORDER_ID'=>$document['ORDER_ID'],
2087 'SHIPMENT_ITEM.ORDER_DELIVERY_ID'=>$document['ID'],
2088 ),
2089 array(
2090 'SHIPMENT_ITEM.QUANTITY',
2091 'SHIPMENT_ITEM.ID'
2092 ),
2093 array(
2094 array('PRICE_DELIVERY'=>$document['PRICE_DELIVERY'])
2095 ),
2096 $order
2097 );
2098 $xmlResult['BasketItems'] = $basketItems['outputXML'];
2099 $document['BasketResult'] = $basketItems['result'];
2100
2101 self::OutputXmlDocument('Shipment',$xmlResult, $document);
2102 break;
2103 }
2104 }
2105 }
2106 }
2107
2108 public static function OutputXmlSiteName($arOrder)
2109 {
2110 ?>
2111 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2112 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_SITE_NAME")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2113 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>[<?=$arOrder["LID"]?>] <?=htmlspecialcharsbx(self::$siteNameByOrder)?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2114 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2115 <?
2116 }
2117
2118 public static function OutputXmlDeliveryAddress()
2119 {
2120 if(self::getDeliveryAddress() <> '')
2121 {
2122 ?>
2123 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2124 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=GetMessage("SALE_EXPORT_DELIVERY_ADDRESS")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2125 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx(self::getDeliveryAddress())?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2126 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2127
2128 <?
2129 }
2130 }
2131
2132 public static function OutputXmlDocumentRemove($typeDocument, $document)
2133 {
2134 global $DB;
2135 $entity = static::getEntityChangeTable();
2136
2137 switch($typeDocument)
2138 {
2139 case 'Shipment':
2140 if($document['ID']>0)
2141 {
2142 $result = $entity::getList(
2143 array(
2144 'filter'=>array('ORDER_ID'=>$document['ID'], 'ENTITY' => 'SHIPMENT', 'TYPE' => 'SHIPMENT_REMOVED'),
2145 'order'=>array('ID'=>'DESC')
2146 )
2147 );
2148
2149 while($resultChange = $result->fetch())
2150 {?>
2151 <<?=CSaleExport::getTagName("SALE_EXPORT_DOCUMENT")?>>
2152 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>><?=$resultChange["ENTITY_ID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
2153 <<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER")?>><?=$resultChange["ENTITY_ID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER")?>>
2154 <<?=CSaleExport::getTagName("SALE_EXPORT_DATE")?>><?=$DB->FormatDate($resultChange["DATE_CREATE"], CSite::GetDateFormat("FULL"), "YYYY-MM-DD")?></<?=CSaleExport::getTagName("SALE_EXPORT_DATE")?>>
2155 <<?=CSaleExport::getTagName("SALE_EXPORT_HOZ_OPERATION")?>><?=CSaleExport::getTagName("SALE_EXPORT_ITEM_SHIPMENT")?></<?=CSaleExport::getTagName("SALE_EXPORT_HOZ_OPERATION")?>>
2156 <<?=CSaleExport::getTagName("SALE_EXPORT_ROLE")?>><?=CSaleExport::getTagName("SALE_EXPORT_SELLER")?></<?=CSaleExport::getTagName("SALE_EXPORT_ROLE")?>>
2157 <<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY")?>><?=htmlspecialcharsbx(mb_substr($document["CURRENCY"], 0, 3))?></<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY")?>>
2158 <<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER_BASE")?>><?=$resultChange['ORDER_ID']?></<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER_BASE")?>>
2159 <<?=CSaleExport::getTagName("SALE_EXPORT_REMOVED")?>>true</<?=CSaleExport::getTagName("SALE_EXPORT_REMOVED")?>>
2160 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>></<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
2161 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTRAGENTS")?>></<?=CSaleExport::getTagName("SALE_EXPORT_CONTRAGENTS")?>>
2162 <<?=GetMessage("CC_BSC1_ITEMS")?>></<?=GetMessage("CC_BSC1_ITEMS")?>>
2163 </<?=CSaleExport::getTagName("SALE_EXPORT_DOCUMENT")?>>
2164 <?}
2165 }
2166
2167 break;
2168 }
2169 }
2170
2171 public static function OutputXmlDocument($typeDocument,$xmlResult, $document=array())
2172 {
2173 global $DB;
2174 ?>
2175 <?ob_start();?>
2176 <<?=CSaleExport::getTagName("SALE_EXPORT_DOCUMENT")?>><?
2177 switch($typeDocument)
2178 {
2179 case 'Order':
2180 ?>
2181 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>><?=$document["ID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
2182 <<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER")?>><?=self::getAccountNumberShopPrefix();?><?=$document["ACCOUNT_NUMBER"]?></<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER")?>>
2183 <<?=CSaleExport::getTagName("SALE_EXPORT_DATE")?>><?=$DB->FormatDate($document["DATE_INSERT_FORMAT"], CSite::GetDateFormat("FULL"), "YYYY-MM-DD")?></<?=CSaleExport::getTagName("SALE_EXPORT_DATE")?>>
2184 <<?=CSaleExport::getTagName("SALE_EXPORT_HOZ_OPERATION")?>><?=CSaleExport::getTagName("SALE_EXPORT_ITEM_ORDER")?></<?=CSaleExport::getTagName("SALE_EXPORT_HOZ_OPERATION")?>>
2185 <<?=CSaleExport::getTagName("SALE_EXPORT_ROLE")?>><?=CSaleExport::getTagName("SALE_EXPORT_SELLER")?></<?=CSaleExport::getTagName("SALE_EXPORT_ROLE")?>>
2186 <<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY")?>><?=htmlspecialcharsbx(((self::$currency <> '')? mb_substr(self::$currency, 0, 3) : mb_substr($document["CURRENCY"], 0, 3)))?></<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY")?>>
2187 <<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY_RATE")?>>1</<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY_RATE")?>>
2188 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=$document["PRICE"]?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
2189 <?
2190 if(self::getVersionSchema() > self::DEFAULT_VERSION)
2191 {
2192 ?>
2193 <<?=CSaleExport::getTagName("SALE_EXPORT_VERSION")?>><?=(intval($document["VERSION"]) > 0 ? $document["VERSION"] : 0)?></<?=CSaleExport::getTagName("SALE_EXPORT_VERSION")?>><?
2194 if($document["ID_1C"] <> '')
2195 {
2196 ?>
2197 <<?=CSaleExport::getTagName("SALE_EXPORT_ID_1C")?>><?=htmlspecialcharsbx($document["ID_1C"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ID_1C")?>><?
2198 }
2199 }
2200 if (self::$crmMode)
2201 {
2202 ?><DateUpdate><?=$DB->FormatDate($document["DATE_UPDATE"], CSite::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS");?></DateUpdate><?
2203 }
2204 echo $xmlResult['Contragents'];
2205 ?>
2206 <<?=CSaleExport::getTagName("SALE_EXPORT_TIME")?>><?=$DB->FormatDate($document["DATE_INSERT_FORMAT"], CSite::GetDateFormat("FULL"), "HH:MI:SS")?></<?=CSaleExport::getTagName("SALE_EXPORT_TIME")?>>
2207 <<?=CSaleExport::getTagName("SALE_EXPORT_COMMENTS")?>><?=htmlspecialcharsbx(self::toText($document["COMMENTS"]))?></<?=CSaleExport::getTagName("SALE_EXPORT_COMMENTS")?>>
2208 <? echo $xmlResult['OrderTax'];
2209 echo $xmlResult['OrderDiscount'];
2210 echo self::getXmlSaleStore(array_unique($xmlResult['ShipmentsStoreList'], SORT_NUMERIC), $xmlResult['SaleStoreList']);
2211 //$storeBasket = self::getXmlSaleStoreBasket($document,$arStore);
2212 echo $xmlResult['BasketItems'];
2213 echo $xmlResult['SaleProperties'];
2214 break;
2215
2216 case 'Payment':
2217 case 'Shipment':
2218 ?>
2219 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>><?=($document["ID_1C"] <> '' ? $document["ID_1C"]:$document["ID"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
2220 <<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER")?>><?=$document["ID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER")?>>
2221 <? switch($typeDocument)
2222 {
2223 case 'Payment':
2224 ?>
2225
2226 <<?=CSaleExport::getTagName("SALE_EXPORT_DATE")?>><?=$DB->FormatDate($document["DATE_BILL"], CSite::GetDateFormat("FULL"), "YYYY-MM-DD")?></<?=CSaleExport::getTagName("SALE_EXPORT_DATE")?>>
2227 <<?=CSaleExport::getTagName("SALE_EXPORT_HOZ_OPERATION")?>><?=CSaleExport::getTagName("SALE_EXPORT_ITEM_PAYMENT_".\Bitrix\Sale\PaySystem\Manager::getPsType($document['PAY_SYSTEM_ID']))?></<?=CSaleExport::getTagName("SALE_EXPORT_HOZ_OPERATION")?>>
2228 <? break;
2229 case 'Shipment':?>
2230 <<?=CSaleExport::getTagName("SALE_EXPORT_DATE")?>><?=$DB->FormatDate($document["DATE_INSERT"], CSite::GetDateFormat("FULL"), "YYYY-MM-DD")?></<?=CSaleExport::getTagName("SALE_EXPORT_DATE")?>>
2231 <<?=CSaleExport::getTagName("SALE_EXPORT_HOZ_OPERATION")?>><?=CSaleExport::getTagName("SALE_EXPORT_ITEM_SHIPMENT")?></<?=CSaleExport::getTagName("SALE_EXPORT_HOZ_OPERATION")?>>
2232 <? break;
2233 }?>
2234 <<?=CSaleExport::getTagName("SALE_EXPORT_ROLE")?>><?=CSaleExport::getTagName("SALE_EXPORT_SELLER")?></<?=CSaleExport::getTagName("SALE_EXPORT_ROLE")?>>
2235 <<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY")?>><?=htmlspecialcharsbx(((self::$currency <> '')? mb_substr(self::$currency, 0, 3) : mb_substr($document["CURRENCY"], 0, 3)))?></<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY")?>>
2236 <<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY_RATE")?>>1</<?=CSaleExport::getTagName("SALE_EXPORT_CURRENCY_RATE")?>>
2237 <? switch($typeDocument)
2238 {
2239 case 'Payment':
2240 ?>
2241 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=$document['SUM']?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
2242 <? break;
2243 case 'Shipment':
2244 $price = 0;
2245 if(count($document['BasketResult'])>0)
2246 {
2247 foreach($document['BasketResult'] as $basketItem)
2248 {
2249 $price = $price + $basketItem['PRICE'] * $basketItem['SALE_INTERNALS_BASKET_SHIPMENT_ITEM_QUANTITY'];
2250 }
2251 }
2252 ?>
2253 <<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>><?=$price+intval($document['PRICE_DELIVERY'])?></<?=CSaleExport::getTagName("SALE_EXPORT_AMOUNT")?>>
2254 <? break;
2255 }?>
2256 <<?=CSaleExport::getTagName("SALE_EXPORT_VERSION")?>><?=(intval($document["VERSION"]) > 0 ? $document["VERSION"] : 0)?></<?=CSaleExport::getTagName("SALE_EXPORT_VERSION")?>>
2257 <<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER_BASE")?>><?=$document['ORDER_ID']?></<?=CSaleExport::getTagName("SALE_EXPORT_NUMBER_BASE")?>>
2258 <?echo $xmlResult['Contragents'];?>
2259 <? switch($typeDocument)
2260 {
2261 case 'Payment':
2262 ?>
2263 <<?=CSaleExport::getTagName("SALE_EXPORT_TIME")?>><?=$DB->FormatDate($document["DATE_BILL"], CSite::GetDateFormat("FULL"), "HH:MI:SS")?></<?=CSaleExport::getTagName("SALE_EXPORT_TIME")?>>
2264 <? break;
2265 case 'Shipment':?>
2266 <?=$xmlResult['OrderTax'];?>
2267 <?
2268 if(isset($xmlResult['ShipmentsStoreList'][$document["ID"]]))
2269 {
2270 $storId = $xmlResult['ShipmentsStoreList'][$document["ID"]];
2271 echo self::getXmlSaleStore(array($document["ID"]=>$storId), $xmlResult['SaleStoreList']);
2272 }?>
2273
2274 <<?=CSaleExport::getTagName("SALE_EXPORT_TIME")?>><?=$DB->FormatDate($document["DATE_INSERT"], CSite::GetDateFormat("FULL"), "HH:MI:SS")?></<?=CSaleExport::getTagName("SALE_EXPORT_TIME")?>>
2275 <? break;
2276 }?>
2277 <<?=CSaleExport::getTagName("SALE_EXPORT_COMMENTS")?>><?=htmlspecialcharsbx($document["COMMENTS"])?></<?=CSaleExport::getTagName("SALE_EXPORT_COMMENTS")?>>
2278
2279 <? switch($typeDocument)
2280 {
2281 case 'Payment':
2282
2283 $checkData = false;
2284 $cashBoxOneCId = self::getCashBoxOneCId();
2285 if(isset($cashBoxOneCId) && $cashBoxOneCId>0)
2286 {
2287 $checks = \Bitrix\Sale\Cashbox\CheckManager::getPrintableChecks(array($cashBoxOneCId), array($document['ORDER_ID']));
2288 foreach($checks as $checkId=>$check)
2289 {
2290 if($check['PAYMENT_ID']==$document["ID"])
2291 {
2292 $checkData = $check;
2293 break;
2294 }
2295 }
2296 }
2297 ?>
2298 <?
2299 if($checkData)
2300 {
2301 ?>
2302 <<?=CSaleExport::getTagName("SALE_EXPORT_CASHBOX_CHECKS")?>>
2303 <<?=CSaleExport::getTagName("SALE_EXPORT_CASHBOX_CHECK")?>>
2304 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>><?=($checkData['ID'])?></<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
2305 <<?=CSaleExport::getTagName("SALE_EXPORT_PROP_VALUES")?>>
2306 <<?=CSaleExport::getTagName("SALE_EXPORT_PROP_VALUE")?>>
2307 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>PRINT_CHECK</<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
2308 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>true</<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2309 </<?=CSaleExport::getTagName("SALE_EXPORT_PROP_VALUE")?>>
2310 </<?=CSaleExport::getTagName("SALE_EXPORT_PROP_VALUES")?>>
2311 </<?=CSaleExport::getTagName("SALE_EXPORT_CASHBOX_CHECK")?>>
2312 </<?=CSaleExport::getTagName("SALE_EXPORT_CASHBOX_CHECKS")?>>
2313 <?
2314 }
2315 ?>
2316 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
2317 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2318 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DATE_PAID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2319 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["DATE_PAID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2320 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2321 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2322 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_CANCELED")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2323 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($document["CANCELED"]=='Y'? 'true':'false')?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2324 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2325 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2326 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PAY_SYSTEM_ID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2327 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["PAY_SYSTEM_ID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2328 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2329 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2330 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PAY_SYSTEM")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2331 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["PAY_SYSTEM_NAME"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2332 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2333 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2334 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PAY_PAID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2335 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($document["PAID"]=='Y'? 'true':'false')?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2336 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2337 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2338 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PAY_RETURN")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2339 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($document["IS_RETURN"]=='Y'? 'true':'false')?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2340 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2341 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2342 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PAY_RETURN_REASON")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2343 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["PAY_RETURN_COMMENT"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2344 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2345 <?self::OutputXmlSiteName($document);?>
2346 <?if(isset($xmlResult['RekvProperties']) && $xmlResult['RekvProperties'] <> '') echo $xmlResult['RekvProperties'];?>
2347 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
2348 <? break;
2349
2350 case 'Shipment':
2351 ?>
2352
2353 <?
2354 echo $xmlResult['BasketItems'];
2355 ?>
2356
2357 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
2358 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2359 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_PRICE_DELIVERY")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2360 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($document["PRICE_DELIVERY"] <> ''? $document["PRICE_DELIVERY"]:"0.0000")?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2361 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2362 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2363 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DATE_ALLOW_DELIVERY")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2364 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["DATE_ALLOW_DELIVERY"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2365 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2366 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2367 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DELIVERY_LOCATION")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2368 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["DELIVERY_LOCATION"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2369 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2370 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2371 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DELIVERY_STATUS")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2372 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["STATUS_ID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2373 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2374 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2375 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DELIVERY_DEDUCTED")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2376 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($document["DEDUCTED"]=='Y'? 'true':'false')?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2377 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2378 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2379 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DATE_DEDUCTED")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2380 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["DATE_DEDUCTED"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2381 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2382 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2383 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_REASON_UNDO_DEDUCTED")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2384 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["REASON_UNDO_DEDUCTED"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2385 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2386 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2387 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_RESERVED")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2388 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($document["RESERVED"]=='Y'? 'true':'false')?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2389 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2390 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2391 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DELIVERY_ID")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2392 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["DELIVERY_ID"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2393 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2394 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2395 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DELIVERY")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2396 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["DELIVERY_NAME"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2397 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2398 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2399 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_CANCELED")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2400 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=($document["CANCELED"]=='Y'? 'true':'false')?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2401 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2402 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2403 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_DELIVERY_DATE_CANCEL")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2404 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["DATE_CANCELED"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2405 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2406 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2407 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=GetMessage("SALE_EXPORT_CANCEL_REASON")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2408 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["REASON_CANCELED"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2409 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2410 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2411 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_REASON_MARKED")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2412 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["REASON_MARKED"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2413 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2414 <<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2415 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=CSaleExport::getTagName("SALE_EXPORT_TRACKING_NUMBER")?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2416 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=$document["TRACKING_NUMBER"]?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2417 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTY_VALUE")?>>
2418
2419 <?self::OutputXmlSiteName($document);?>
2421
2422 <?if(isset($xmlResult['RekvProperties']) && $xmlResult['RekvProperties'] <> '') echo $xmlResult['RekvProperties'];?>
2423 </<?=CSaleExport::getTagName("SALE_EXPORT_PROPERTIES_VALUES")?>>
2424 <?
2425 break;
2426 }
2427 }
2428 ?>
2429 </<?=CSaleExport::getTagName("SALE_EXPORT_DOCUMENT")?>>
2430 <?$c = ob_get_contents();
2431 ob_end_clean();
2432 echo $c;
2433
2434 $typeEntityId = static::resolveEntityTypeId($typeDocument, $document);
2435
2436 if(intval($typeEntityId)>0)
2437 {
2438 $filedsTolog = array(
2439 'ENTITY_ID' => $document["ID"],
2440 'XML_ID' => $document["ID_1C"]
2441 );
2442
2443 if(self::getVersionSchema() < self::CONTAINER_VERSION)
2444 $filedsTolog['MESSAGE'] = $c;
2445
2446 switch ($typeDocument)
2447 {
2448 case 'Order':
2449 $filedsTolog['ENTITY_DATE_UPDATE'] = new \Bitrix\Main\Type\DateTime(CDatabase::FormatDate($document['DATE_UPDATE']));
2450 if(self::getVersionSchema() >= self::CONTAINER_VERSION)
2451 $filedsTolog['PARENT_ID'] = $document["ID"];
2452 break;
2453 case 'Payment':
2454 case 'Shipment':
2455 $filedsTolog['OWNER_ENTITY_ID'] = $document["ORDER_ID"];
2456
2457 if(self::getVersionSchema() >= self::CONTAINER_VERSION)
2458 $filedsTolog['PARENT_ID'] = $document["ORDER_ID"];
2459 break;
2460 }
2461
2462 static::$documentsToLog[$typeEntityId][] = $filedsTolog;
2463 }
2464 }
2465
2466 public static function ExportContragents($arOrder = array(), $arProp = array(), $agent = array(), $arOptions = array())
2467 {
2468 $bExportFromCrm = (isset($arOptions["EXPORT_FROM_CRM"]) && $arOptions["EXPORT_FROM_CRM"] === "Y");
2469 ?>
2470 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTRAGENTS")?>>
2471 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTRAGENT")?>>
2472 <?
2473 if ($bExportFromCrm):
2474 $xmlId = htmlspecialcharsbx(mb_substr($arProp["CRM"]["CLIENT_ID"]."#".$arProp["CRM"]["CLIENT"]["LOGIN"]."#".$arProp["CRM"]["CLIENT"]["LAST_NAME"]." ".$arProp["CRM"]["CLIENT"]["NAME"]." ".$arProp["CRM"]["CLIENT"]["SECOND_NAME"], 0, 40));
2475 else:
2476 $xmlId = static::getUserXmlId($arOrder, $arProp);
2477 endif; ?>
2478 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>><?=$xmlId?></<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
2479
2480 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=htmlspecialcharsbx($agent["AGENT_NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2481 <?
2482 self::setDeliveryAddress($agent["ADDRESS_FULL"]);
2483
2484 //region address
2485 $address = "";
2486 if($agent["ADDRESS_FULL"] <> '')
2487 {
2488 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_PRESENTATION").">".htmlspecialcharsbx($agent["ADDRESS_FULL"])."</".CSaleExport::getTagName("SALE_EXPORT_PRESENTATION").">";
2489 }
2490 else
2491 {
2492 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_PRESENTATION")."></".CSaleExport::getTagName("SALE_EXPORT_PRESENTATION").">";
2493 }
2494 if($agent["INDEX"] <> '')
2495 {
2496 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2497 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_POST_CODE")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2498 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["INDEX"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2499 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2500 }
2501 if($agent["COUNTRY"] <> '')
2502 {
2503 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2504 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_COUNTRY")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2505 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["COUNTRY"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2506 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2507 }
2508 if($agent["REGION"] <> '')
2509 {
2510 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2511 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_REGION")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2512 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["REGION"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2513 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2514 }
2515 if($agent["STATE"] <> '')
2516 {
2517 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2518 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_STATE")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2519 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["STATE"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2520 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2521 }
2522 if($agent["TOWN"] <> '')
2523 {
2524 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2525 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_SMALL_CITY")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2526 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["TOWN"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2527 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2528 }
2529 if($agent["CITY"] <> '')
2530 {
2531 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2532 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_CITY")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2533 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["CITY"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2534 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2535 }
2536 if($agent["STREET"] <> '')
2537 {
2538 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2539 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_STREET")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2540 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["STREET"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2541 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2542 }
2543 if($agent["HOUSE"] <> '')
2544 {
2545 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2546 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_HOUSE")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2547 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["HOUSE"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2548 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2549 }
2550 if($agent["BUILDING"] <> '')
2551 {
2552 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2553 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_BUILDING")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2554 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["BUILDING"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2555 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2556 }
2557 if($agent["FLAT"] <> '')
2558 {
2559 $address .= "<".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">
2560 <".CSaleExport::getTagName("SALE_EXPORT_TYPE").">".CSaleExport::getTagName("SALE_EXPORT_FLAT")."</".CSaleExport::getTagName("SALE_EXPORT_TYPE").">
2561 <".CSaleExport::getTagName("SALE_EXPORT_VALUE").">".htmlspecialcharsbx($agent["FLAT"])."</".CSaleExport::getTagName("SALE_EXPORT_VALUE").">
2562 </".CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD").">";
2563 }
2564 //endregion
2565
2566 if($agent["IS_FIZ"]=="Y")
2567 {
2568 self::$arResultStat["CONTACTS"]++;
2569 ?>
2570 <<?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME")?>><?=htmlspecialcharsbx($agent["FULL_NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_FULL_NAME")?>>
2571 <?
2572 if($agent["SURNAME"] <> '')
2573 {
2574 ?><<?=CSaleExport::getTagName("SALE_EXPORT_SURNAME")?>><?=htmlspecialcharsbx($agent["SURNAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_SURNAME")?>><?
2575 }
2576 if($agent["NAME"] <> '')
2577 {
2578 ?><<?=CSaleExport::getTagName("SALE_EXPORT_NAME")?>><?=htmlspecialcharsbx($agent["NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_NAME")?>><?
2579 }
2580 if($agent["SECOND_NAME"] <> '')
2581 {
2582 ?><<?=CSaleExport::getTagName("SALE_EXPORT_MIDDLE_NAME")?>><?=htmlspecialcharsbx($agent["SECOND_NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_MIDDLE_NAME")?>><?
2583 }
2584 if($agent["BIRTHDAY"] <> '')
2585 {
2586 ?><<?=CSaleExport::getTagName("SALE_EXPORT_BIRTHDAY")?>><?=htmlspecialcharsbx($agent["BIRTHDAY"])?></<?=CSaleExport::getTagName("SALE_EXPORT_BIRTHDAY")?>><?
2587 }
2588 if($agent["MALE"] <> '')
2589 {
2590 ?><<?=CSaleExport::getTagName("SALE_EXPORT_SEX")?>><?=htmlspecialcharsbx($agent["MALE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_SEX")?>><?
2591 }
2592 if($agent["INN"] <> '')
2593 {
2594 ?><<?=CSaleExport::getTagName("SALE_EXPORT_INN")?>><?=htmlspecialcharsbx($agent["INN"])?></<?=CSaleExport::getTagName("SALE_EXPORT_INN")?>><?
2595 }
2596 if($agent["KPP"] <> '')
2597 {
2598 ?><<?=CSaleExport::getTagName("SALE_EXPORT_KPP")?>><?=htmlspecialcharsbx($agent["KPP"])?></<?=CSaleExport::getTagName("SALE_EXPORT_KPP")?>><?
2599 }
2600 if($address <> '')
2601 {
2602 ?><<?=CSaleExport::getTagName("SALE_EXPORT_REGISTRATION_ADDRESS")?>>
2603 <?=$address?>
2604 </<?=CSaleExport::getTagName("SALE_EXPORT_REGISTRATION_ADDRESS")?>>
2605 <?
2606 }
2607 }
2608 else
2609 {
2610 self::$arResultStat["COMPANIES"]++;
2611 ?>
2612 <<?=CSaleExport::getTagName("SALE_EXPORT_OFICIAL_NAME")?>><?=htmlspecialcharsbx($agent["FULL_NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_OFICIAL_NAME")?>>
2613 <?
2614 if($address <> '')
2615 {
2616 ?><<?=CSaleExport::getTagName("SALE_EXPORT_UR_ADDRESS")?>>
2617 <?=$address?>
2618 </<?=CSaleExport::getTagName("SALE_EXPORT_UR_ADDRESS")?>><?
2619 }
2620 if($agent["INN"] <> '')
2621 {
2622 ?><<?=CSaleExport::getTagName("SALE_EXPORT_INN")?>><?=htmlspecialcharsbx($agent["INN"])?></<?=CSaleExport::getTagName("SALE_EXPORT_INN")?>><?
2623 }
2624 if($agent["KPP"] <> '')
2625 {
2626 ?><<?=CSaleExport::getTagName("SALE_EXPORT_KPP")?>><?=htmlspecialcharsbx($agent["KPP"])?></<?=CSaleExport::getTagName("SALE_EXPORT_KPP")?>><?
2627 }
2628 if($agent["EGRPO"] <> '')
2629 {
2630 ?><<?=CSaleExport::getTagName("SALE_EXPORT_EGRPO")?>><?=htmlspecialcharsbx($agent["EGRPO"])?></<?=CSaleExport::getTagName("SALE_EXPORT_EGRPO")?>><?
2631 }
2632 if($agent["OKVED"] <> '')
2633 {
2634 ?><<?=CSaleExport::getTagName("SALE_EXPORT_OKVED")?>><?=htmlspecialcharsbx($agent["OKVED"])?></<?=CSaleExport::getTagName("SALE_EXPORT_OKVED")?>><?
2635 }
2636 if($agent["OKDP"] <> '')
2637 {
2638 ?><<?=CSaleExport::getTagName("SALE_EXPORT_OKDP")?>><?=htmlspecialcharsbx($agent["OKDP"])?></<?=CSaleExport::getTagName("SALE_EXPORT_OKDP")?>><?
2639 }
2640 if($agent["OKOPF"] <> '')
2641 {
2642 ?><<?=CSaleExport::getTagName("SALE_EXPORT_OKOPF")?>><?=htmlspecialcharsbx($agent["OKOPF"])?></<?=CSaleExport::getTagName("SALE_EXPORT_OKOPF")?>><?
2643 }
2644 if($agent["OKFC"] <> '')
2645 {
2646 ?><<?=CSaleExport::getTagName("SALE_EXPORT_OKFC")?>><?=htmlspecialcharsbx($agent["OKFC"])?></<?=CSaleExport::getTagName("SALE_EXPORT_OKFC")?>><?
2647 }
2648 if($agent["OKPO"] <> '')
2649 {
2650 ?><<?=CSaleExport::getTagName("SALE_EXPORT_OKPO")?>><?=htmlspecialcharsbx($agent["OKPO"])?></<?=CSaleExport::getTagName("SALE_EXPORT_OKPO")?>><?
2651 ?><<?=CSaleExport::getTagName("SALE_EXPORT_OKPO_CODE")?>><?=htmlspecialcharsbx($agent["OKPO"])?></<?=CSaleExport::getTagName("SALE_EXPORT_OKPO_CODE")?>><?
2652 }
2653 if($agent["ACCOUNT_NUMBER"] <> '')
2654 {
2655 ?>
2656 <<?=CSaleExport::getTagName("SALE_EXPORT_MONEY_ACCOUNTS")?>>
2657 <<?=CSaleExport::getTagName("SALE_EXPORT_MONEY_ACCOUNT")?>>
2658 <<?=CSaleExport::getTagName("SALE_EXPORT_ACCOUNT_NUMBER")?>><?=htmlspecialcharsbx($agent["ACCOUNT_NUMBER"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ACCOUNT_NUMBER")?>>
2659 <<?=CSaleExport::getTagName("SALE_EXPORT_BANK")?>>
2660 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=htmlspecialcharsbx($agent["B_NAME"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2661 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS")?>>
2662 <<?=CSaleExport::getTagName("SALE_EXPORT_PRESENTATION")?>><?=htmlspecialcharsbx($agent["B_ADDRESS_FULL"])?></<?=CSaleExport::getTagName("SALE_EXPORT_PRESENTATION")?>>
2663 <?
2664 if($agent["B_INDEX"] <> '')
2665 {
2666 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2667 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_POST_CODE")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2668 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_INDEX"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2669 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2670 }
2671 if($agent["B_COUNTRY"] <> '')
2672 {
2673 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2674 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_COUNTRY")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2675 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_COUNTRY"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2676 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2677 }
2678 if($agent["B_REGION"] <> '')
2679 {
2680 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2681 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_REGION")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2682 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_REGION"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2683 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2684 }
2685 if($agent["B_STATE"] <> '')
2686 {
2687 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2688 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_STATE")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2689 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_STATE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2690 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2691 }
2692 if($agent["B_TOWN"] <> '')
2693 {
2694 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2695 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_SMALL_CITY")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2696 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_TOWN"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2697 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2698 }
2699 if($agent["B_CITY"] <> '')
2700 {
2701 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2702 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_CITY")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2703 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_CITY"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2704 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2705 }
2706 if($agent["B_STREET"] <> '')
2707 {
2708 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2709 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_STREET")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2710 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_STREET"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2711 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2712 }
2713 if($agent["B_HOUSE"] <> '')
2714 {
2715 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2716 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_HOUSE")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2717 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_HOUSE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2718 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2719 }
2720 if($agent["B_BUILDING"] <> '')
2721 {
2722 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2723 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_BUILDING")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2724 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_BUILDING"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2725 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2726 }
2727 if($agent["B_FLAT"] <> '')
2728 {
2729 ?><<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2730 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_FLAT")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2731 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["B_FLAT"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2732 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>><?
2733 }
2734 ?>
2735 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS")?>>
2736 <?
2737 if($agent["B_BIK"] <> '')
2738 {
2739 ?><<?=CSaleExport::getTagName("SALE_EXPORT_BIC")?>><?=htmlspecialcharsbx($agent["B_BIK"])?></<?=CSaleExport::getTagName("SALE_EXPORT_BIC")?>><?
2740 }
2741 ?>
2742 </<?=CSaleExport::getTagName("SALE_EXPORT_BANK")?>>
2743 </<?=CSaleExport::getTagName("SALE_EXPORT_MONEY_ACCOUNT")?>>
2744 </<?=CSaleExport::getTagName("SALE_EXPORT_MONEY_ACCOUNTS")?>>
2745 <?
2746 }
2747 }
2748
2749 if($agent["F_ADDRESS_FULL"] <> '')
2750 {
2751 self::setDeliveryAddress($agent["F_ADDRESS_FULL"]);
2752 ?>
2753 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS")?>>
2754 <<?=CSaleExport::getTagName("SALE_EXPORT_PRESENTATION")?>><?=htmlspecialcharsbx($agent["F_ADDRESS_FULL"])?></<?=CSaleExport::getTagName("SALE_EXPORT_PRESENTATION")?>>
2755 <?
2756 if($agent["F_INDEX"] <> '')
2757 {
2758 ?>
2759 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2760 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_POST_CODE")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2761 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_INDEX"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2762 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2763 <?
2764 }
2765 if($agent["F_COUNTRY"] <> '')
2766 {
2767 ?>
2768 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2769 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_COUNTRY")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2770 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_COUNTRY"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2771 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2772 <?
2773 }
2774 if($agent["F_REGION"] <> '')
2775 {
2776 ?>
2777 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2778 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_REGION")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2779 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_REGION"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2780 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2781 <?
2782 }
2783 if($agent["F_STATE"] <> '')
2784 {
2785 ?>
2786 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2787 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_STATE")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2788 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_STATE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2789 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2790 <?
2791 }
2792 if($agent["F_TOWN"] <> '')
2793 {
2794 ?>
2795 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2796 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_SMALL_CITY")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2797 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_TOWN"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2798 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2799 <?
2800 }
2801 if($agent["F_CITY"] <> '')
2802 {
2803 ?>
2804 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2805 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_CITY")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2806 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_CITY"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2807 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2808 <?
2809 }
2810 if($agent["F_STREET"] <> '')
2811 {
2812 ?>
2813 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2814 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_STREET")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2815 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_STREET"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2816 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2817 <?
2818 }
2819 if($agent["F_HOUSE"] <> '')
2820 {
2821 ?>
2822 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2823 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_HOUSE")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2824 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_HOUSE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2825 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2826 <?
2827 }
2828 if($agent["F_BUILDING"] <> '')
2829 {
2830 ?>
2831 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2832 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_BUILDING")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2833 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_BUILDING"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2834 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2835 <?
2836 }
2837 if($agent["F_FLAT"] <> '')
2838 {
2839 ?>
2840 <<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2841 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=CSaleExport::getTagName("SALE_EXPORT_FLAT")?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2842 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["F_FLAT"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2843 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS_FIELD")?>>
2844 <?
2845 }
2846 ?>
2847 </<?=CSaleExport::getTagName("SALE_EXPORT_ADDRESS")?>>
2848 <?
2849 }
2850
2851 if($agent["PHONE"] <> '' || $agent["EMAIL"] <> '')
2852 {
2853 ?>
2854 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTACTS")?>>
2855 <?
2856 if($agent["PHONE"] <> '')
2857 {
2858 ?>
2859 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTACT")?>>
2860 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=(self::getVersionSchema() > self::DEFAULT_VERSION ? CSaleExport::getTagName("SALE_EXPORT_WORK_PHONE_NEW") : CSaleExport::getTagName("SALE_EXPORT_WORK_PHONE"))?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2861 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["PHONE"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2862 </<?=CSaleExport::getTagName("SALE_EXPORT_CONTACT")?>>
2863 <?
2864 }
2865 if($agent["EMAIL"] <> '')
2866 {
2867 ?>
2868 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTACT")?>>
2869 <<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>><?=(self::getVersionSchema() > self::DEFAULT_VERSION ? CSaleExport::getTagName("SALE_EXPORT_MAIL_NEW") : CSaleExport::getTagName("SALE_EXPORT_MAIL"))?></<?=CSaleExport::getTagName("SALE_EXPORT_TYPE")?>>
2870 <<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>><?=htmlspecialcharsbx($agent["EMAIL"])?></<?=CSaleExport::getTagName("SALE_EXPORT_VALUE")?>>
2871 </<?=CSaleExport::getTagName("SALE_EXPORT_CONTACT")?>>
2872 <?
2873 }
2874 ?>
2875 </<?=CSaleExport::getTagName("SALE_EXPORT_CONTACTS")?>>
2876 <?
2877 }
2878 if($agent["CONTACT_PERSON"] <> '')
2879 {
2880 ?>
2881 <<?=CSaleExport::getTagName("SALE_EXPORT_REPRESENTATIVES")?>>
2882 <<?=CSaleExport::getTagName("SALE_EXPORT_REPRESENTATIVE")?>>
2883 <<?=CSaleExport::getTagName("SALE_EXPORT_CONTRAGENT")?>>
2884 <<?=CSaleExport::getTagName("SALE_EXPORT_RELATION")?>><?=CSaleExport::getTagName("SALE_EXPORT_CONTACT_PERSON")?></<?=CSaleExport::getTagName("SALE_EXPORT_RELATION")?>>
2885 <<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>><?=md5($agent["CONTACT_PERSON"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ID")?>>
2886 <<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>><?=htmlspecialcharsbx($agent["CONTACT_PERSON"])?></<?=CSaleExport::getTagName("SALE_EXPORT_ITEM_NAME")?>>
2887 </<?=CSaleExport::getTagName("SALE_EXPORT_CONTRAGENT")?>>
2888 </<?=CSaleExport::getTagName("SALE_EXPORT_REPRESENTATIVE")?>>
2889 </<?=CSaleExport::getTagName("SALE_EXPORT_REPRESENTATIVES")?>>
2890 <?
2891 }?>
2892 <<?=CSaleExport::getTagName("SALE_EXPORT_ROLE")?>><?=CSaleExport::getTagName("SALE_EXPORT_BUYER")?></<?=CSaleExport::getTagName("SALE_EXPORT_ROLE")?>>
2893 </<?=CSaleExport::getTagName("SALE_EXPORT_CONTRAGENT")?>>
2894 </<?=CSaleExport::getTagName("SALE_EXPORT_CONTRAGENTS")?>>
2895 <?
2896
2897 $filedsTolog = array(
2898 'ENTITY_ID' => $arOrder["USER_ID"],
2899 'PARENT_ID' => $arOrder['ID'],
2900 'ENTITY_DATE_UPDATE' => static::getUserTimeStapmX($arOrder),
2901 'XML_ID' => $xmlId
2902 );
2903
2904 static::$documentsToLog[\Bitrix\Sale\Exchange\EntityType::USER_PROFILE][] = $filedsTolog;
2905 }
2906
2907 public static function getFormatDate($value)
2908 {
2909 if(!is_set($value))
2910 return null;
2911
2912 $setValue = $value;
2913
2914 if (($value instanceof DateTime)
2915 || ($value instanceof \Bitrix\Main\Type\Date))
2916 {
2917 $setValue = $value->toString();
2918 }
2919
2921 $time = new Bitrix\Main\Type\DateTime($setValue);
2922 if(self::getVersionSchema() >= self::PARTIAL_VERSION )
2923 $format = 'Y-m-d\TH:i:s';
2924 else
2925 $format = 'd.m.Y H:i:s';
2926
2927 return $time->format($format);
2928 }
2929
2930 public static function isFormattedDateFields($type, $field)
2931 {
2932 $formattedDateFields = self::getFormattedDateFields();
2933 return in_array($field, $formattedDateFields[$type]);
2934 }
2935
2936 public static function getFormattedDateFields()
2937 {
2938 return array(
2939 'Order' => array(
2940 'DATE_PAYED',
2941 'DATE_CANCELED',
2942 'DATE_STATUS',
2943 'DATE_ALLOW_DELIVERY',
2944
2945 ),
2946 'Shipment' => array(
2947 'DATE_ALLOW_DELIVERY',
2948 'DATE_DEDUCTED',
2949 'DATE_CANCELED',
2950 ),
2951 'Payment' => array(
2952 'DATE_PAID',
2953 ),
2954 );
2955 }
2956
2958 private static $systemCodes = array(
2959 // !!! Make sure these codes are in sync with system codes in BusinessValueConsumer1C !!!
2960 // 'new bizval name' => 'old 1c name'
2961 BusinessValue::INDIVIDUAL_DOMAIN => array(
2962 'BUYER_PERSON_NAME' => 'FULL_NAME' ,
2963 'BUYER_PERSON_NAME_FIRST' => 'NAME' ,
2964 'BUYER_PERSON_NAME_SECOND' => 'SECOND_NAME' ,
2965 'BUYER_PERSON_NAME_LAST' => 'SURNAME' ,
2966 'BUYER_PERSON_NAME_AGENT' => 'AGENT_NAME' ,
2967 'BUYER_PERSON_NAME_CONTACT' => 'CONTACT_PERSON',
2968 'BUYER_PERSON_BIRTHDAY' => 'BIRTHDAY' ,
2969 'BUYER_PERSON_GENDER' => 'MALE' ,
2970 'BUYER_PERSON_INN' => 'INN' ,
2971 'BUYER_PERSON_KPP' => 'KPP' ,
2972 'BUYER_PERSON_ADDRESS' => 'ADDRESS_FULL' ,
2973 'BUYER_PERSON_ZIP' => 'INDEX' ,
2974 'BUYER_PERSON_COUNTRY' => 'COUNTRY' ,
2975 'BUYER_PERSON_REGION' => 'REGION' ,
2976 'BUYER_PERSON_STATE' => 'STATE' ,
2977 'BUYER_PERSON_TOWN' => 'TOWN' ,
2978 'BUYER_PERSON_CITY' => 'CITY' ,
2979 'BUYER_PERSON_STREET' => 'STREET' ,
2980 'BUYER_PERSON_HOUSING' => 'BUILDING' ,
2981 'BUYER_PERSON_BUILDING' => 'HOUSE' ,
2982 'BUYER_PERSON_APARTMENT' => 'FLAT' ,
2983 'BUYER_PERSON_PHONE' => 'PHONE' ,
2984 'BUYER_PERSON_EMAIL' => 'EMAIL' ,
2985 'BUYER_PERSON_F_ADDRESS_FULL'=> 'F_ADDRESS_FULL',
2986 'BUYER_PERSON_F_INDEX' => 'F_INDEX' ,
2987 'BUYER_PERSON_F_COUNTRY' => 'F_COUNTRY' ,
2988 'BUYER_PERSON_F_REGION' => 'F_REGION' ,
2989 'BUYER_PERSON_F_STATE' => 'F_STATE' ,
2990 'BUYER_PERSON_F_TOWN' => 'F_TOWN' ,
2991 'BUYER_PERSON_F_CITY' => 'F_CITY' ,
2992 'BUYER_PERSON_F_STREET' => 'F_STREET' ,
2993 'BUYER_PERSON_F_BUILDING' => 'F_BUILDING' ,
2994 'BUYER_PERSON_F_HOUSE' => 'F_HOUSE' ,
2995 'BUYER_PERSON_F_FLAT' => 'F_FLAT' ,
2996 ),
2997 BusinessValue::ENTITY_DOMAIN => array(
2998 'BUYER_COMPANY_NAME' => 'FULL_NAME' ,
2999 'BUYER_COMPANY_NAME_AGENT' => 'AGENT_NAME' ,
3000 'BUYER_COMPANY_NAME_CONTACT' => 'CONTACT_PERSON',
3001 'BUYER_COMPANY_INN' => 'INN' ,
3002 'BUYER_COMPANY_KPP' => 'KPP' ,
3003 'BUYER_COMPANY_ADDRESS' => 'ADDRESS_FULL' ,
3004 'BUYER_COMPANY_ZIP' => 'INDEX' ,
3005 'BUYER_COMPANY_COUNTRY' => 'COUNTRY' ,
3006 'BUYER_COMPANY_REGION' => 'REGION' ,
3007 'BUYER_COMPANY_STATE' => 'STATE' ,
3008 'BUYER_COMPANY_TOWN' => 'TOWN' ,
3009 'BUYER_COMPANY_CITY' => 'CITY' ,
3010 'BUYER_COMPANY_STREET' => 'STREET' ,
3011 'BUYER_COMPANY_HOUSING' => 'BUILDING' ,
3012 'BUYER_COMPANY_BUILDING' => 'HOUSE' ,
3013 'BUYER_COMPANY_APARTMENT' => 'FLAT' ,
3014 'BUYER_COMPANY_PHONE' => 'PHONE' ,
3015 'BUYER_COMPANY_EMAIL' => 'EMAIL' ,
3016 'BUYER_COMPANY_EGRPO' => 'EGRPO' ,
3017 'BUYER_COMPANY_OKVED' => 'OKVED' ,
3018 'BUYER_COMPANY_OKDP' => 'OKDP' ,
3019 'BUYER_COMPANY_OKOPF' => 'OKOPF' ,
3020 'BUYER_COMPANY_OKFC' => 'OKFC' ,
3021 'BUYER_COMPANY_OKPO' => 'OKPO' ,
3022 'BUYER_COMPANY_BANK_ACCOUNT' => 'ACCOUNT_NUMBER',
3023 'BUYER_COMPANY_BANK_NAME' => 'B_NAME',
3024 'BUYER_COMPANY_BANK_BIK' => 'B_BIK',
3025 'BUYER_COMPANY_BANK_ADDRESS_FULL' => 'B_ADDRESS_FULL',
3026 'BUYER_COMPANY_BANK_INDEX' => 'B_INDEX',
3027 'BUYER_COMPANY_BANK_COUNTRY' => 'B_COUNTRY',
3028 'BUYER_COMPANY_BANK_REGION' => 'B_REGION',
3029 'BUYER_COMPANY_BANK_STATE' => 'B_STATE',
3030 'BUYER_COMPANY_BANK_TOWN' => 'B_TOWN',
3031 'BUYER_COMPANY_BANK_CITY' => 'B_CITY',
3032 'BUYER_COMPANY_BANK_STREET' => 'B_STREET',
3033 'BUYER_COMPANY_BANK_BUILDING' => 'B_BUILDING',
3034 'BUYER_COMPANY_BANK_HOUSE' => 'B_HOUSE',
3035 'BUYER_COMPANY_F_ADDRESS_FULL'=> 'F_ADDRESS_FULL',
3036 'BUYER_COMPANY_F_INDEX' => 'F_INDEX' ,
3037 'BUYER_COMPANY_F_COUNTRY' => 'F_COUNTRY' ,
3038 'BUYER_COMPANY_F_REGION' => 'F_REGION' ,
3039 'BUYER_COMPANY_F_STATE' => 'F_STATE' ,
3040 'BUYER_COMPANY_F_TOWN' => 'F_TOWN' ,
3041 'BUYER_COMPANY_F_CITY' => 'F_CITY' ,
3042 'BUYER_COMPANY_F_STREET' => 'F_STREET' ,
3043 'BUYER_COMPANY_F_BUILDING' => 'F_BUILDING' ,
3044 'BUYER_COMPANY_F_HOUSE' => 'F_HOUSE' ,
3045 'BUYER_COMPANY_F_FLAT' => 'F_FLAT' ,
3046 ),
3047 );
3048
3049 public static function GetList($order = Array("ID" => "DESC"), $filter = Array(), $group = false, $arNavStartParams = false, $select = array())
3050 {
3051 if (! ($select && is_array($select)))
3052 $select = array("ID", "PERSON_TYPE_ID", "VARS");
3053
3054 $select = array_flip($select);
3055
3056 $personTypes = BusinessValue::getPersonTypes();
3057
3058 if ($filter && is_array($filter))
3059 {
3060 if ($filter['PERSON_TYPE_ID'])
3061 {
3062 if (! is_array($filter['PERSON_TYPE_ID']))
3063 $filter['PERSON_TYPE_ID'] = array($filter['PERSON_TYPE_ID']);
3064
3065 $personTypes = array_intersect_key($personTypes, array_flip($filter['PERSON_TYPE_ID']));
3066 }
3067
3068 if (isset($filter['ID']))
3069 {
3070 $personTypes = isset($personTypes[$filter['ID']])
3071 ? array($filter['ID'] => $personTypes[$filter['ID']])
3072 : array();
3073 }
3074 }
3075
3076 $rows = array();
3077
3078 if ($personTypes
3079 && ($consumers = BusinessValue::getConsumers())
3080 && ($consumer = $consumers[BusinessValueConsumer1C::CONSUMER_KEY])
3081 && is_array($consumer)
3082 && ($codes = $consumer['CODES'])
3083 && is_array($codes))
3084 {
3085 foreach ($personTypes as $personTypeId => $personType)
3086 {
3087 $systemCodes = self::$systemCodes[$personType['DOMAIN']];
3088 $vars = array();
3089
3090 foreach ($codes as $codeKey => $code)
3091 {
3092 if ($mapping = BusinessValue::getMapping($codeKey, BusinessValueConsumer1C::CONSUMER_KEY, $personTypeId, array('GET_VALUE' => array('PROPERTY' => 'BY_ID'))))
3093 {
3094 $mapping1C = array('VALUE' => $mapping['PROVIDER_VALUE']);
3095
3096 switch ($mapping['PROVIDER_KEY'])
3097 {
3098 case 'VALUE':
3099 $mapping1C['TYPE'] = '';
3100 break;
3101
3102 case 'USER':
3103 case 'ORDER':
3104 case 'PROPERTY':
3105 case 'COMPANY':
3106 case 'PAYMENT':
3107 case 'SHIPMENT':
3108 $mapping1C['TYPE'] = $mapping['PROVIDER_KEY'];
3109 break;
3110
3111 default: continue 2; // other types aren't present in old version
3112 }
3113
3114 if (isset($code['CODE_INDEX']))
3115 {
3116 $codeKey1C = 'REKV_'.$code['CODE_INDEX'];
3117 $mapping1C['NAME'] = $code['NAME'];
3118 }
3119 else
3120 {
3121 $codeKey1C = $systemCodes[$codeKey];
3122 }
3123
3124 $vars[$codeKey1C] = $mapping1C;
3125 }
3126 }
3127
3128 if ($vars)
3129 {
3130 $vars['IS_FIZ'] = $personTypes[$personTypeId]['DOMAIN'] === BusinessValue::INDIVIDUAL_DOMAIN ? 'Y' : 'N';
3131
3132 $rows []= array_intersect_key(array(
3133 'ID' => $personTypeId,
3134 'PERSON_TYPE_ID' => $personTypeId,
3135 'VARS' => serialize($vars),
3136 ), $select);
3137 }
3138 }
3139 }
3140
3141 if (! $group && is_array($group))
3142 {
3143 return count($rows);
3144 }
3145 else
3146 {
3147 $result = new CDBResult();
3148 $result->InitFromArray($rows);
3149 return $result;
3150 }
3151 }
3152
3158 {
3159 $providersInstance = array(
3160 'ORDER' => self::getProviderInstanceByProviderCode($entity, 'ORDER' ),
3161 'USER' => self::getProviderInstanceByProviderCode($entity, 'USER' ),
3162 'COMPANY' => self::getProviderInstanceByProviderCode($entity, 'COMPANY' ),
3163 'SHIPMENT' => self::getProviderInstanceByProviderCode($entity, 'SHIPMENT' ),
3164 'PAYMENT' => self::getProviderInstanceByProviderCode($entity, 'PAYMENT' ),
3165 'PROPERTY' => self::getProviderInstanceByProviderCode($entity, 'PROPERTY' ),
3166 );
3167
3168 return $providersInstance;
3169 }
3170
3176 protected static function getProvidersInstanceByOrder(Bitrix\Sale\Order $order)
3177 {
3178 static $providersInstance = array();
3179
3180 if(! is_set($providersInstance, $order->getId()))
3181 {
3182 $providersInstance[$order->getId()] = self::getProvidersInstanceByEntity($order);
3183 }
3184
3185 return $providersInstance;
3186 }
3187
3188 protected static function getProviderInstanceByProviderCode(\Bitrix\Sale\IBusinessValueProvider $entity, $providerCode)
3189 {
3190 $providerInstance = null;
3191 $order = null;
3193 if($entity instanceof \Bitrix\Sale\Order)
3194 $order = $entity;
3195 else
3196 {
3198 $collection = $entity->getCollection();
3199 $order = $collection->getOrder();
3200 }
3201
3202 switch($providerCode)
3203 {
3204 case 'ORDER':
3205 case 'USER':
3206 case 'PROPERTY':
3207 $providerInstance = $order;
3208 break;
3209 case 'COMPANY':
3210 $providerInstance = $entity;
3211 break;
3212 case 'PAYMENT':
3213 if($order instanceof \Bitrix\Sale\Order)
3214 {
3215 $collection = $order->getPaymentCollection();
3216 foreach($collection as $payment)
3217 {
3218 $providerInstance = $payment;
3219 break;
3220 }
3221 }
3222 else
3223 $providerInstance = $entity;
3224
3225 break;
3226 case 'SHIPMENT':
3227 if($order instanceof \Bitrix\Sale\Order)
3228 {
3229 $collection = $order->getShipmentCollection();
3230 foreach($collection as $shipment)
3231 {
3232 $providerInstance = $shipment;
3233 break;
3234 }
3235 }
3236 else
3237 $providerInstance = $entity;
3238 break;
3239 }
3240
3241 return $providerInstance;
3242 }
3243
3244 public static function GetByID($ID)
3245 {
3246 $ID = intval($ID);
3247
3248 if (isset($GLOBALS["SALE_EXPORT"]["SALE_EXPORT_CACHE_".$ID]) && is_array($GLOBALS["SALE_EXPORT"]["SALE_EXPORT_CACHE_".$ID]) && is_set($GLOBALS["SALE_EXPORT_CACHE_".$ID], "ID"))
3249 {
3250 return $GLOBALS["SALE_EXPORT"]["SALE_EXPORT_CACHE_".$ID];
3251 }
3252 else
3253 {
3254 $dbResult = self::GetList(array(), array('ID' => $ID));
3255
3256 if ($arResult = $dbResult->Fetch())
3257 {
3258 $GLOBALS["SALE_EXPORT"]["SALE_EXPORT_CACHE_".$ID] = $arResult;
3259 return $arResult;
3260 }
3261 }
3262
3263 return False;
3264 }
3265
3267 private static function logError($itemId, $message, Bitrix\Main\Result $result = null)
3268 {
3269 if ($result)
3270 $message .= "\n".implode("\n", $result->getErrorMessages());
3271
3273 'SEVERITY' => 'ERROR',
3274 'AUDIT_TYPE_ID' => 'SALE_1C_TO_BUSINESS_VALUE_ERROR',
3275 'MODULE_ID' => 'sale',
3276 'ITEM_ID' => $itemId,
3277 'DESCRIPTION' => $message,
3278 ));
3279 }
3280
3282 private static function setMap($personTypeId, array $map1C, $itemId)
3283 {
3284 BusinessValueConsumer1C::getConsumers(); // initialize 1C codes
3285
3286 $personTypes = BusinessValue::getPersonTypes();
3287
3288 if (! $personType = $personTypes[$personTypeId])
3289 {
3290 self::logError($itemId, 'Undefined DOMAIN for person type id "'.$personTypeId.'"');
3291 return;
3292 }
3293
3294 $systemCodes1C = array_flip(self::$systemCodes[$personType['DOMAIN']]);
3295
3296 foreach ($map1C as $codeKey1C => $mapping1C)
3297 {
3298 if ($codeKey1C && is_array($mapping1C))
3299 {
3300 if (! $mapping1C['VALUE'])
3301 continue; // TODO maybe??
3302
3303 $mapping = array('PROVIDER_VALUE' => $mapping1C['VALUE']);
3304
3305 if (! ($codeKey = $systemCodes1C[$codeKey1C])
3306 && mb_substr($codeKey1C, 0, 5) === 'REKV_'
3307 && ($codeIndex = mb_substr($codeKey1C, 5)) !== ''
3308 && $mapping1C['NAME'])
3309 {
3310 $codeKey = BusinessValueConsumer1C::getRekvCodeKey($personTypeId, $codeIndex);
3311 $mapping['NAME'] = $mapping1C['NAME'];
3312 }
3313
3314 if (! $codeKey)
3315 continue;
3316
3317 switch ($mapping1C['TYPE'])
3318 {
3319 case '':
3320 $mapping['PROVIDER_KEY'] = 'VALUE';
3321 break;
3322
3323 case 'USER':
3324 case 'ORDER':
3325 case 'PROPERTY':
3326 $mapping['PROVIDER_KEY'] = $mapping1C['TYPE'];
3327 break;
3328
3329 default: continue 2; // other types should not be there
3330 }
3331
3332 $r = BusinessValueConsumer1C::setMapping($codeKey, $personTypeId, $mapping);
3333
3334 if (! $r->isSuccess())
3335 self::logError($itemId, 'Cannot set mapping with code key "'.$codeKey.'"', $r);
3336 }
3337 }
3338 }
3339
3341 public static function migrateToBusinessValues()
3342 {
3343 $allPersonTypes = BusinessValue::getPersonTypes(true);
3344
3345 Bitrix\Main\Application::getConnection()->query('DELETE FROM b_sale_bizval_code_1c');
3346
3347 $result = Bitrix\Main\Application::getConnection()->query('SELECT * FROM b_sale_export');
3348
3349 while ($row = $result->fetch())
3350 {
3351 if (! (($map1C = unserialize($row['VARS'], ['allowed_classes' => false])) && is_array($map1C)))
3352 continue;
3353
3354 $personTypeId = $row['PERSON_TYPE_ID'];
3355 $domain = $map1C['IS_FIZ'] === 'Y' ? BusinessValue::INDIVIDUAL_DOMAIN : BusinessValue::ENTITY_DOMAIN;
3356 unset($map1C['IS_FIZ']);
3357
3358 if (! isset($allPersonTypes[$personTypeId]))
3359 {
3360 self::logError($row['ID'], 'Undefined person type "'.$personTypeId.'"');
3361 continue;
3362 }
3363 elseif (isset($allPersonTypes[$personTypeId]['DOMAIN']))
3364 {
3365 if ($allPersonTypes[$personTypeId]['DOMAIN'] !== $domain)
3366 {
3367 self::logError($row['ID'], 'Person type "'.$personTypeId.'" domain is "'.$allPersonTypes[$personTypeId]['DOMAIN'].'", but in 1C is "'.$domain.'"');
3368 continue;
3369 }
3370 }
3371 else
3372 {
3373 $r = Bitrix\Sale\Internals\BusinessValuePersonDomainTable::add(array(
3374 'PERSON_TYPE_ID' => $personTypeId,
3375 'DOMAIN' => $domain,
3376 ));
3377
3378 if ($r->isSuccess())
3379 {
3380 $allPersonTypes[$personTypeId]['DOMAIN'] = $domain;
3381 BusinessValue::getPersonTypes(true, $allPersonTypes);
3382 }
3383 else
3384 {
3385 self::logError($row['ID'], 'Unable to set person type "'.$personTypeId.'" domain', $r);
3386 continue;
3387 }
3388 }
3389
3390 self::setMap($personTypeId, $map1C, 'Migrate:'.$personTypeId.':'.$row['ID']);
3391 }
3392 }
3393
3394 public static function CheckFields($ACTION, &$arFields, $ID = 0)
3395 {
3396 if ((is_set($arFields, "PERSON_TYPE_ID") || $ACTION=="ADD") && intval($arFields["PERSON_TYPE_ID"]) <= 0)
3397 {
3398 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SALE_EXPORT_NO_PERSON_TYPE_ID"), "EMPTY_PERSON_TYPE_ID");
3399 return false;
3400 }
3401
3402 if (is_set($arFields, "PERSON_TYPE_ID"))
3403 {
3405 $personType = static::getPersonType();
3406 $dbRes = $personType::getList([
3407 'filter' => [
3408 '=ID' => $arFields["PERSON_TYPE_ID"]
3409 ]
3410 ]);
3411 if (!$dbRes->fetch())
3412 {
3413 $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $arFields["PERSON_TYPE_ID"], GetMessage("SALE_EXPORT_ERROR_PERSON_TYPE_ID")), "ERROR_NO_PERSON_TYPE_ID");
3414 return false;
3415 }
3416 }
3417
3418 return True;
3419 }
3420
3421 public static function Add($arFields)
3422 {
3423 if (! static::CheckFields('ADD', $arFields))
3424 return false;
3425
3426 foreach ($arFields as $key => $value)
3427 {
3428 if (mb_substr($key, 0, 1) == "=")
3429 {
3430 $arFields[mb_substr($key, 1)] = $value;
3431 unset($arFields[$key]);
3432 }
3433 }
3434
3435 if (($map1C = unserialize($arFields['VARS'], ['allowed_classes' => false])) && is_array($map1C))
3436 {
3437 self::setMap($arFields['PERSON_TYPE_ID'], $map1C, 'Add:'.$arFields['PERSON_TYPE_ID']);
3438 }
3439
3440 return $arFields['PERSON_TYPE_ID'];
3441 }
3442
3443 public static function Update($ID, $arFields)
3444 {
3445 $ID = intval($ID);
3446
3447 if (! static::CheckFields('UPDATE', $arFields, $ID))
3448 return false;
3449
3450 foreach ($arFields as $key => $value)
3451 {
3452 if (mb_substr($key, 0, 1) == "=")
3453 {
3454 $arFields[mb_substr($key, 1)] = $value;
3455 unset($arFields[$key]);
3456 }
3457 }
3458
3459 if (($map1C = unserialize($arFields['VARS'], ['allowed_classes' => false])) && is_array($map1C))
3460 {
3461 self::setMap($arFields['PERSON_TYPE_ID'], $map1C, 'Update:'.$arFields['PERSON_TYPE_ID'].':'.$ID);
3462 }
3463
3464 return $arFields['PERSON_TYPE_ID'];
3465 }
3466
3467 public static function deleteREKV($typeId)
3468 {
3469 $r = new \Bitrix\Main\Result();
3470
3471 $res = \Bitrix\Sale\Internals\BusinessValueCode1CTable::getList(array(
3472 'select'=>array('CODE_INDEX', 'PERSON_TYPE_ID'),
3473 'filter'=>array('PERSON_TYPE_ID'=>$typeId)
3474 ));
3475 while($row=$res->fetch())
3476 {
3477 $r = \Bitrix\Sale\Internals\BusinessValueCode1CTable::delete(array(
3478 'PERSON_TYPE_ID' => $row['PERSON_TYPE_ID'],
3479 'CODE_INDEX' => $row['CODE_INDEX'],
3480 ));
3481
3482 if($r->isSuccess())
3483 {
3484 $r = \Bitrix\Sale\Internals\BusinessValueTable::delete(array(
3485 'CODE_KEY' => BusinessValueConsumer1C::getRekvCodeKey($row['PERSON_TYPE_ID'], $row['CODE_INDEX']),
3486 'CONSUMER_KEY' => BusinessValueConsumer1C::CONSUMER_KEY,
3487 'PERSON_TYPE_ID' => $row['PERSON_TYPE_ID'],
3488 ));
3489 }
3490 }
3491 return $r;
3492 }
3493
3494 public static function Delete($ID)
3495 {
3496 $ID = intval($ID);
3497
3498 unset($GLOBALS["SALE_EXPORT"]["SALE_EXPORT_CACHE_".$ID]);
3499
3500 BusinessValue::INDIVIDUAL_DOMAIN; // make sure BusinessValueCode1CTable loaded since it in the same file as BusinessValue
3501 $consumers = BusinessValueConsumer1C::getConsumers(); // initialize 1C codes
3502 $consumer = $consumers[BusinessValueConsumer1C::CONSUMER_KEY];
3503
3504 if (is_array($consumer['CODES']))
3505 {
3506 foreach ($consumer['CODES'] as $codeKey => $code)
3507 {
3508 if(!isset($code['CODE_INDEX']))
3509 {
3511 }
3512 }
3513 }
3514
3515 return new CDBResult();
3516 }
3517
3523 public static function getTagName($name)
3524 {
3525 if (static::$lid === null)
3526 {
3527 static::setLanguage(LANGUAGE_ID);
3528 }
3529
3530 static $lang = array();
3531
3532 if (empty($lang[static::$lid]))
3533 {
3534 $lang[static::$lid] = \Bitrix\Main\Localization\Loc::loadLanguageFile($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/general/export.php', static::$lid);
3535 }
3536
3537 if (array_key_exists($name, $lang[static::$lid]) && strval(trim($lang[static::$lid][$name])) !== '')
3538 {
3539 $value = $lang[static::$lid][$name];
3540 }
3541 else
3542 {
3544 }
3545
3546 return $value;
3547 }
3548
3555 public static function log(array $fields)
3556 {
3557 $params['ENTITY_ID'] = $fields['ENTITY_ID'];
3558 $params['ENTITY_TYPE_ID'] = $fields['ENTITY_TYPE_ID'];
3560
3561 if ($fields['XML_ID'] <> '')
3562 $params['XML_ID'] = $fields['XML_ID'];
3563
3564 if ($fields['ENTITY_DATE_UPDATE'] <> '')
3565 $params['ENTITY_DATE_UPDATE'] = $fields['ENTITY_DATE_UPDATE'];
3566
3567 if (intval($fields['PARENT_ID'])>0)
3568 $params['PARENT_ID'] = $fields['PARENT_ID'];
3569
3570 if (intval($fields['OWNER_ENTITY_ID'])>0)
3571 $params['OWNER_ENTITY_ID'] = $fields['OWNER_ENTITY_ID'];
3572
3573 if ($fields['MARKED'] <> '')
3574 $params['MARKED'] = $fields['MARKED'];
3575
3576 $params['MESSAGE'] = LoggerDiag::isOn()? $fields['MESSAGE']:null;
3577
3578 $params['DATE_INSERT'] = new \Bitrix\Main\Type\DateTime();
3579
3580 return (new Exchange(Sale\Exchange\Logger\ProviderType::ONEC_NAME))->add($params);
3581 }
3582}
$path
Определения access_edit.php:21
$count
Определения admin_tab.php:4
$type
Определения options.php:106
$arVal
Определения options.php:1785
$arResult
Определения generate_coupon.php:16
static getConnection($name="")
Определения application.php:638
Определения error.php:15
static loadLanguageFile($file, $language=null, $normalize=true)
Определения loc.php:225
static getMessage($code, $replace=null, $language=null)
Определения loc.php:30
static convertEncoding($data, $charsetFrom, $charsetTo)
Определения encoding.php:17
const TYPE_SET
Определения basketitem.php:28
static getRekvCodeKey($personTypeId, $codeIndex)
Определения businessvalue.php:1513
static setMapping($codeKey, $personTypeId, array $mapping)
Определения businessvalue.php:1553
static getMapping($codeKey, $consumerKey=null, $personTypeId=null, array $options=array())
Определения businessvalue.php:131
const INDIVIDUAL_DOMAIN
Определения businessvalue.php:17
static getPersonTypes($all=false, array $resetAllPersonTypes=null)
Определения businessvalue.php:627
const ENTITY_DOMAIN
Определения businessvalue.php:16
static getValueFromProvider(IBusinessValueProvider $provider=null, $codeKey, $consumerKey)
Определения businessvalue.php:26
static getConsumers()
Определения businessvalue.php:412
static getId()
Определения cashbox1c.php:50
static createObject(array $srvParams)
Определения manager.php:367
static updateEmptyXmlId($id, $xmlId)
Определения userimportbase.php:242
const INVOICE_PAYMENT_CASH
Определения entitytype.php:18
const INVOICE_PAYMENT_CASH_LESS
Определения entitytype.php:19
const PAYMENT_CASH_LESS
Определения entitytype.php:11
const PAYMENT_CASH
Определения entitytype.php:10
const USER_PROFILE
Определения entitytype.php:14
const INVOICE_PAYMENT_CARD_TRANSACTION
Определения entitytype.php:20
const UNDEFINED
Определения entitytype.php:7
const PAYMENT_CARD_TRANSACTION
Определения entitytype.php:12
const INVOICE_SHIPMENT
Определения entitytype.php:17
static getDirectionType()
Определения managerexport.php:19
static getPathToNode($primary, $parameters, $behaviour=array('SHOW_LEAF'=> true))
Определения tree.php:360
static getInnerPaySystemId()
Определения manager.php:642
static getPsType($paySystemId)
Определения manager.php:311
static getInstance($type)
Определения registry.php:183
static isLocationProEnabled()
Определения location.php:40
static GetByValue($PropID, $Value)
Определения order_props_variant.php:7
static GetList($arOrder=array("SORT"=> "ASC", "NAME"=> "ASC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения pay_system.php:236
static GetArchive($strArcName, $strType="")
Определения archive.php:26
static GetInstance()
Определения virtual_io.php:60
static Add($arFields)
Определения event_log.php:44
static GetPropsList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения basket.php:317
Определения export.php:137
static getCmrXmlRootNameParams()
Определения export.php:311
static getDeliveryAddress()
Определения export.php:316
static getVersionSchema()
Определения export.php:341
const LAST_ORDER_PREFIX
Определения export.php:142
static getOrderTax(\Bitrix\Sale\Order $order)
Определения export.php:1427
static OutputXmlDeliveryAddress()
Определения export.php:2118
static ExportOrders2Xml($arFilter=Array(), $nTopCount=0, $currency="", $crmMode=false, $time_limit=0, $version=false, $arOptions=Array())
Определения export.php:1051
const DEFAULT_VERSION
Определения export.php:138
static getProvidersInstanceByOrder(Bitrix\Sale\Order $order)
Определения export.php:3176
static $orderTax
Определения export.php:150
static getOrderDeliveryItem($arOrder, $bVat, $vatRate, $vatSum)
Определения export.php:442
static getEndTime($time_limit)
Определения export.php:366
static getEntityChangeTable()
Определения export.php:201
static export(array $params)
Определения export.php:998
static getAccountNumberShopPrefix()
Определения export.php:389
static $xmlEncoding
Определения export.php:154
static $xmlRootName
Определения export.php:155
static getPaymentTable()
Определения export.php:186
static Delete($ID)
Определения export.php:3494
static outputXmlUnit($arBasket)
Определения export.php:1667
static getLastOrderExported($timeUpdate)
Определения export.php:959
static $currency
Определения export.php:148
static getStatusInfoByStatusId($id)
Определения export.php:269
static getCatalogStore()
Определения export.php:420
static OutputXmlRekvProperties($agent, $agentParams)
Определения export.php:2012
static OutputXmlDocument($typeDocument, $xmlResult, $document=array())
Определения export.php:2171
const PARTIAL_VERSION
Определения export.php:139
static setVersionSchema($versionSchema=false)
Определения export.php:326
static getXmlSaleStore($arShipmentStore, $arStore)
Определения export.php:1516
static getXmlRekvProperties($agent, $agentParams)
Определения export.php:2004
static Add($arFields)
Определения export.php:3421
static getNumberBasketPosition($basketId)
Определения export.php:291
static GetByID($ID)
Определения export.php:3244
static migrateToBusinessValues()
Определения export.php:3341
static getSaleExport()
Определения export.php:535
static $documentsToLog
Определения export.php:162
static getXmlSaleProperties($arOrder, $arShipment, $arPayment, $agent, $agentParams, $bExportFromCrm)
Определения export.php:1853
static setDeliveryAddress($deliveryAdr)
Определения export.php:321
static prepareFilter($arFilter=array())
Определения export.php:971
static $deliveryAdr
Определения export.php:158
static UnZip($file_name, $last_zip_entry="", $interval=0)
Определения export.php:1356
static toText($value)
Определения export.php:278
static $typeDocument
Определения export.php:157
static getPayment($arOrder)
Определения export.php:837
static OutputXmlDocumentsByType($typeDocument, $xmlResult, $arOrder, $documents, \Bitrix\Sale\Order $order=null, $agentParams, $arProp, $locationStreetPropertyValue)
Определения export.php:2039
static checkTimeIsOver($time_limit, $end_time)
Определения export.php:376
static getOrderPrefix()
Определения export.php:384
static isFormattedDateFields($type, $field)
Определения export.php:2930
static GetList($order=Array("ID"=> "DESC"), $filter=Array(), $group=false, $arNavStartParams=false, $select=array())
Определения export.php:3049
static getCatalogMeasure()
Определения export.php:507
static getSalePaySystem()
Определения export.php:398
static $crmMode
Определения export.php:147
static getUserTimeStapmX(array $arOrder)
Определения export.php:216
static getSite()
Определения export.php:820
static $versionSchema
Определения export.php:146
static getShipment($arOrder)
Определения export.php:900
static getXmlOrderDiscount($arOrder)
Определения export.php:1477
static setXmlEncoding($encoding)
Определения export.php:301
static saveExportParams(array $arOrder)
Определения export.php:983
static ExportContragents($arOrder=array(), $arProp=array(), $agent=array(), $arOptions=array())
Определения export.php:2466
static getShipmentTable()
Определения export.php:191
static getSaleDelivery()
Определения export.php:408
static $siteNameByOrder
Определения export.php:160
static getOrderSumTaxMoney($arOrderTaxAll)
Определения export.php:1439
static updateEmptyUserXmlId(array $arOrder, array $arProp)
Определения export.php:235
static getUserXmlId(array $arOrder, array $arProp)
Определения export.php:221
static getCashBoxOneCId()
Определения export.php:349
static deleteREKV($typeId)
Определения export.php:3467
static resolveEntityTypeId($typeDocument, array $document)
Определения export.php:243
static getTagName($name)
Определения export.php:3523
static getXmlRootName()
Определения export.php:306
static getPersonType()
Определения export.php:211
static $lid
Определения export.php:164
static $arResultStat
Определения export.php:152
static OutputXmlSiteName($arOrder)
Определения export.php:2108
static setCatalogMeasure($arMeasures)
Определения export.php:524
static setCrmMode($crmMode)
Определения export.php:331
static getLastDateUpdateByParams(array $params)
Определения export.php:988
const CONTAINER_VERSION
Определения export.php:140
static getBasketTable()
Определения export.php:196
static setLanguage($value)
Определения export.php:296
static getXmlContragents($arOrder=array(), $arProp=array(), $agent=array(), $arOptions=array())
Определения export.php:2031
static $xmlVersion
Определения export.php:153
static getXmlSaleStoreBasket($arOrder, $arStore)
Определения export.php:1558
static isExportFromCRM($arOptions)
Определения export.php:361
static setSiteNameByOrder($arOrder)
Определения export.php:830
static setCurrencySchema($currency)
Определения export.php:336
static getXmlOrderTax($arOrderTaxAll)
Определения export.php:1453
static $measures
Определения export.php:149
static Update($ID, $arFields)
Определения export.php:3443
static setOrderSumTaxMoney($orderTax)
Определения export.php:529
static getXmlBasketItems($type, $arOrder, $arFilter, $arSelect=array(), $arShipment=array(), $order=null)
Определения export.php:1699
static normalizeExternalCode($code)
Определения export.php:1578
static getParentEntityTable()
Определения export.php:181
static getFormattedDateFields()
Определения export.php:2936
static outputXmlMarkingCodeGroup($arBasket)
Определения export.php:1588
static log(array $fields)
Определения export.php:3555
static prepareSaleProperty($arOrder, $bExportFromCrm, $bCrmModuleIncluded, $paySystems, $delivery, &$locationStreetPropertyValue, \Bitrix\Sale\Order $order)
Определения export.php:548
const DIVIDER_NUMBER_POSITION
Определения export.php:144
static getProvidersInstanceByEntity(\Bitrix\Sale\IBusinessValueProvider $entity)
Определения export.php:3157
static getParentEntityTypeId()
Определения export.php:166
static OutputXmlDocumentRemove($typeDocument, $document)
Определения export.php:2132
static getEntityMarker()
Определения export.php:206
static GetByID($primary, $strLang=LANGUAGE_ID)
Определения location.php:118
static GetLangByID($statusId, $languageId=LANGUAGE_ID)
Определения status.php:55
Определения export.php:14
static load($id)
Определения export.php:20
static getEntityChangeTable()
Определения export.php:45
static getPaymentTable()
Определения export.php:30
static getStatusInfoByStatusId($id)
Определения export.php:124
static getUserTimeStapmX(array $arOrder)
Определения export.php:79
static getShipmentTable()
Определения export.php:35
static normalizeExternalCode($xml)
Определения export.php:60
static getUserXmlId(array $arOrder, array $arProp)
Определения export.php:84
static resolveEntityTypeId($typeDocument, array $document)
Определения export.php:98
static getPersonType()
Определения export.php:55
static getBasketTable()
Определения export.php:40
static getParentEntityTable()
Определения export.php:25
static getParentEntityTypeId()
Определения export.php:15
static getEntityMarker()
Определения export.php:50
$start_time
Определения clock_selector.php:9
if(!empty($by)) $dbOrderList
Определения commerceml.php:40
$arFields
Определения dblapprove.php:5
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr ><?endif?><? $propertyIndex=0;foreach( $arGlobalProperties as $propertyCode=> $propertyValue
Определения file_new.php:729
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
if($ajaxMode) $ID
Определения get_user.php:27
$entity
$select
Определения iblock_catalog_list.php:194
$filter
Определения iblock_catalog_list.php:54
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
$ACTION
Определения csv_new_setup.php:27
$io
Определения csv_new_run.php:98
endif
Определения csv_new_setup.php:990
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
if(!defined('SITE_ID')) $lang
Определения include.php:91
const LANG_CHARSET
Определения include.php:65
$status
Определения session.php:10
$arOptions
Определения structure.php:223
roundEx($value, $prec=0)
Определения tools.php:4635
CheckDirPath($path)
Определения tools.php:2707
IsFileUnsafe($name)
Определения tools.php:3016
IsModuleInstalled($module_id)
Определения tools.php:5301
HasScriptExtension($check_name)
Определения tools.php:2956
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
MakeTimeStamp($datetime, $format=false)
Определения tools.php:538
$name
Определения menu_edit.php:35
Order
Определения order.php:6
Определения collection.php:2
$GLOBALS['____1690880296']
Определения license.php:1
$payment
Определения payment.php:14
$order
Определения payment.php:8
$paymentCollection
Определения payment.php:11
$service
Определения payment.php:18
$time
Определения payment.php:61
$message
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
$bVat
Определения factura.php:659
</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
if(CSalePaySystemAction::GetParamValue("DATE_PAY_BEFORE", false)) $dbBasket
Определения html.php:162
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$rows
Определения options.php:264
$k
Определения template_pdf.php:567
$GLOBALS['_____370096793']
Определения update_client.php:1
$dbResult
Определения updtr957.php:3
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168
$fields
Определения yandex_run.php:501