Возвращаем информацию об удаляющихся при обмене с 1С оплате и доставке в админке Битрикса
, МихаилПродолжение этой проблемы. Когда менеджер работает одновременно в админке и в 1С, и когда в 1С выключена загрузка отгрузок и оплат - Битрикс убирает из заказа эти данные. Возвращаем информацию в заказ, и список заказов.
<?php // local/php_interface/init.php // Добавляем информацию внутри заказа \Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'onSaleAdminOrderInfoBlockShow', ['DivasoftFixSyncOrderInfo', 'onSaleAdminOrderInfoBlockShow']); // Заполняем колонки в списке заказов \Bitrix\Main\EventManager::getInstance()->addEventHandler("main", "OnAdminListDisplay", ['DivasoftFixSyncOrderInfo', 'onAdminListDisplay']); \Bitrix\Main\EventManager::getInstance()->addEventHandler("main", "OnAdminSubListDisplay", ['DivasoftFixSyncOrderInfo', 'onAdminListDisplay']); class DivasoftFixSyncOrderInfo { static function getSystemDeliveryNameByOrderD7($order) { $shipmentCollection = $order->getShipmentCollection(); $shipmenName = "Не выбрана"; $systemShipmentItemCollection = $shipmentCollection->getSystemShipment()->getShipmentItemCollection(); foreach ($shipmentCollection as $obShipment) { if ($obShipment->isSystem()) { $arShipment = $obShipment->getFields()->getValues(); $shipmenName = $arShipment['DELIVERY_NAME']; } } return $shipmenName; } static function getSystemPaymentNameByOrderD7($order) { // getSystemPayment такого метода нет, запросим информацию по тому что есть $paySystemService = \Bitrix\Sale\PaySystem\Manager::getObjectById($order->getField('PAY_SYSTEM_ID')); $payName = $paySystemService->getField("NAME"); return $payName; } function onSaleAdminOrderInfoBlockShow(\Bitrix\Main\Event $event) { $order = $event->getParameter("ORDER"); $shipmenName = self::getSystemDeliveryNameByOrderD7($order); $payName = self::getSystemPaymentNameByOrderD7($order); return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array( array('TITLE' => 'Доставка:', 'VALUE' => $shipmenName, 'ID' => 'dvs_system_shipment'), array('TITLE' => 'Оплата:', 'VALUE' => $payName, 'ID' => 'dvs_system_payment'), ), 'sale' ); } function onAdminListDisplay(&$list) { if ($list->table_id == "tbl_sale_order") { foreach ($list->aRows as &$row) { foreach ($row->aFields as $key => &$val) { $order = false; if ($key == "DELIVERY") { if (!$val['view']['value']) { if (!$order) { $order = \Bitrix\Sale\Order::load($row->arRes['ID']); } $val['view']['value'] = self::getSystemDeliveryNameByOrderD7($order); } } if ($key == "PAY_SYSTEM") { if (!$val['view']['value']) { if (!$order) { $order = \Bitrix\Sale\Order::load($row->arRes['ID']); } $val['view']['value'] = self::getSystemPaymentNameByOrderD7($order); } } } } } } } ?>