Возвращаем информацию об удаляющихся при обмене с 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);
}
}
}
}
}
}
}
?>