Частично то, что было необходимо.
Вот код:
Вот код:
| Код |
|---|
AddEventHandler("sale", "OnBeforeOrderUpdate", "OnBeforeOrderUpdateHandler");
function OnBeforeOrderUpdateHandler($ID, $arFields) {
$arOrder = $ID;
$itemsSaleOrder = CSaleOrder::GetList(array(), array('ID'=>$arOrder), false, false);
$itemsSaleBasket = CSaleBasket::GetList(array(), array('ORDER_ID' => $arOrder), false, false, array());
$dom = new DomDocument('1.0','Windows-1251');
$zakaz = $dom->appendChild($dom->createElement('zakaz'));
while ($items = $itemsSaleOrder->Fetch()) {
foreach ($items as $keyOrderNew => $valueOrderNew) {
foreach ($arFields as $keyOrderOld => $valueOrderOld) {
if ($keyOrderNew != $keyOrderOld) {
if ($valueOrderNew == $valueOrderOld) {
$Element = $zakaz->appendChild($dom->createElement($keyOrderNew));
$Element->appendChild($dom->createTextNode(iconv("windows-1251", "UTF-8", $valueOrderNew)));
}
}
}
}
}
$itemsList = $zakaz->appendChild($dom->createElement('ItemsList'));
while ($items = $itemsSaleBasket->Fetch()) {
$item = $itemsList->appendChild($dom->createElement('Item'));
foreach ($items as $keySaleBasketOld=>$valueSaleBasketOld) {
foreach ($arFields["BASKET_ITEMS"] as $basketItemsKey=>$basketItemsDate) {
foreach ($basketItemsDate as $keySaleBasketNew => $valueSaleBasketNew) {
if ($items["PRODUCT_ID"] == $basketItemsDate["PRODUCT_ID"]) {
if ($keySaleBasketOld == $keySaleBasketNew) {
if ($valueSaleBasketOld != $valueSaleBasketNew) {
$Element = $item->appendChild($dom->createElement($keySaleBasketNew));
$Element->appendChild($dom->createTextNode(iconv("windows-1251", "UTF-8", $valueSaleBasketNew)));
}
}
}
}
}
}
}
$dom->formatOutput = true;
$test = $dom->saveXML();
} |