function ExportOrders2Xml($arFilter = array(), $nTopCount = 0, $currency = "", $crmMode = false, $time_limit = 0, $version = false, $arOptions = array()) { self::setVersionSchema($version); self::setCrmMode($crmMode); self::setCurrencySchema($currency); $count = false; if (IntVal($nTopCount) > 0) { $count = array("nTopCount" => $nTopCount); } $end_time = self::getEndTime($time_limit); if (IntVal($time_limit) > 0) { $lastOrderPrefix = self::getOrderPrefix(); if (self::$crmMode) { $lastOrderPrefix = md5(serialize($arFilter)); if (!empty($_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix]) && IntVal($nTopCount) > 0) { $count["nTopCount"] = $count["nTopCount"] + count($_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix]); } } else { if (IntVal($_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix]) > 0) { $arFilter["<ID"] = $_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix]; } } } self::$arResultStat = array("ORDERS" => 0, "CONTACTS" => 0, "COMPANIES" => 0); $bExportFromCrm = self::isExportFromCRM($arOptions); //$paySystems = self::getSalePaySystem(); //$delivery = self::getSaleDelivery(); $arStore = self::getCatalogStore(); $arMeasures = self::getCatalogMeasure(); self::setCatalogMeasure($arMeasures); $arAgent = self::getSaleExport(); if (self::$crmMode) { self::setXmlEncoding("UTF-8"); $arCharSets = self::getSite(); } echo self::getXmlRootName(); ?> <<?php echo CSaleExport::getTagName("SALE_EXPORT_COM_INFORMATION"); ?> <?php echo self::getCmrXmlRootNameParams(); ?> ><?php $arOrder = array("ID" => "DESC"); if (self::$crmMode) { $arOrder = array("DATE_UPDATE" => "ASC"); } $arSelect = array("ID", "LID", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "CANCELED", "DATE_CANCELED", "EMP_CANCELED_ID", "REASON_CANCELED", "STATUS_ID", "DATE_STATUS", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "EMP_STATUS_ID", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "SUM_PAID", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION", "ADDITIONAL_INFO", "COMMENTS", "TAX_VALUE", "STAT_GID", "RECURRING_ID", "ACCOUNT_NUMBER", "SUM_PAID", "DELIVERY_DOC_DATE", "DELIVERY_DOC_NUM", "TRACKING_NUMBER", "STORE_ID", "ID_1C", "VERSION", "USER.XML_ID"); $bCrmModuleIncluded = false; if ($bExportFromCrm) { $arSelect[] = "UF_COMPANY_ID"; $arSelect[] = "UF_CONTACT_ID"; if (IsModuleInstalled("crm") && CModule::IncludeModule("crm")) { $bCrmModuleIncluded = true; } } $filter = array('select' => $arSelect, 'filter' => $arFilter, 'order' => $arOrder, 'limit' => $count["nTopCount"]); if (!empty($arOptions['RUNTIME']) && is_array($arOptions['RUNTIME'])) { $filter['runtime'] = $arOptions['RUNTIME']; } $dbOrderList = \Bitrix\Sale\Internals\OrderTable::getList($filter); //$dbOrderList = CSaleOrder::GetList($arOrder, $arFilter, false, $count, $arSelect); while ($arOrder = $dbOrderList->Fetch()) { $order = \Bitrix\Sale\Order::load($arOrder['ID']); /* @var $order \Bitrix\Sale\Order*/ $arOrder['DATE_STATUS'] = $arOrder['DATE_STATUS']->toString(); $arOrder['DATE_INSERT'] = $arOrder['DATE_INSERT']->toString(); $arOrder['DATE_UPDATE'] = $arOrder['DATE_UPDATE']->toString(); foreach ($arOrder as $field => $value) { if (self::isFormattedDateFields('Order', $field)) { $arOrder[$field] = self::getFormatDate($value); } } if (self::$crmMode) { 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"])) { continue; } ob_start(); } self::$arResultStat["ORDERS"]++; $agentParams = array_key_exists($arOrder["PERSON_TYPE_ID"], $arAgent) ? $arAgent[$arOrder["PERSON_TYPE_ID"]] : array(); $arResultPayment = self::getPayment($arOrder); $paySystems = $arResultPayment['paySystems']; $arPayment = $arResultPayment['payment']; $arResultShipment = self::getShipment($arOrder); $arShipment = $arResultShipment['shipment']; $delivery = $arResultShipment['deliveryServices']; self::setDeliveryAddress(''); self::setSiteNameByOrder($arOrder); $saleProperties = self::getSaleProperties($order, $arOrder, $agentParams, $bExportFromCrm, $bCrmModuleIncluded, $paySystems, $delivery, $arOptions); $arProp = $saleProperties['arProp']; $agent = $saleProperties['agent']; $arOrderTax = CSaleExport::getOrderTax($arOrder["ID"]); $xmlResult['OrderTax'] = self::getXMLOrderTax($arOrderTax); self::setOrderSumTaxMoney(self::getOrderSumTaxMoney($arOrderTax)); $xmlResult['Contragents'] = self::getXmlContragents($arOrder, $arProp, $agent, $bExportFromCrm ? array("EXPORT_FROM_CRM" => "Y") : array()); $xmlResult['OrderDiscount'] = self::getXmlOrderDiscount($arOrder); $xmlResult['SaleStore'] = self::getXmlSaleStore($arOrder, $arStore); // self::getXmlSaleStoreBasket($arOrder,$arStore); $basketItems = self::getXmlBasketItems('Order', $arOrder, array('ORDER_ID' => $arOrder['ID']), array(), $arShipment); $xmlResult['BasketItems'] = $basketItems['outputXML']; $xmlResult['SaleProperties'] = self::getXmlSaleProperties($arOrder, $arShipment, $arPayment, $agent, $agentParams, $bExportFromCrm); self::OutputXmlDocument('Order', $xmlResult, $arOrder); if (self::getVersionSchema() >= self::PARTIAL_VERSION) { self::OutputXmlDocumentsByType('Payment', $xmlResult, $arOrder, $arPayment); self::OutputXmlDocumentsByType('Shipment', $xmlResult, $arOrder, $arShipment); self::OutputXmlDocumentRemove('Shipment', $arOrder); } if (self::$crmMode) { $c = ob_get_clean(); $c = CharsetConverter::ConvertCharset($c, $arCharSets[$arOrder["LID"]], "utf-8"); echo $c; $_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix][] = $arOrder["ID"]; } else { $_SESSION["BX_CML2_EXPORT"][$lastOrderPrefix] = $arOrder["ID"]; } if (self::checkTimeIsOver($time_limit, $end_time)) { break; } } ?> </<?php echo CSaleExport::getTagName("SALE_EXPORT_COM_INFORMATION"); ?> ><?php return self::$arResultStat; }