Удаление товаров из системы при импорте — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 2.9.6''' == Задача == Как известно из статьи [[Удаление_элементов_или_сня…»)
 
 
(не показана 1 промежуточная версия этого же участника)
Строка 3: Строка 3:
 
== Задача ==
 
== Задача ==
  
Как известно из статьи [[Удаление_элементов_или_снятие_активности_при_импорте_данных_из_1С], если в 1С товар был помечен на удаление, то UMI.CMS при импорте такого товара
+
Как известно из статьи [[Удаление_элементов_или_снятие_активности_при_импорте_данных_из_1С]], если в 1С товар был помечен на удаление, то UMI.CMS при импорте такого товара
 
поместит его в корзину. Если Вам необходимо, чтобы товар не помещался в корзину, а сразу удалялся из системы, то необходимо написать обработчик события exchangeOnUpdateElement,
 
поместит его в корзину. Если Вам необходимо, чтобы товар не помещался в корзину, а сразу удалялся из системы, то необходимо написать обработчик события exchangeOnUpdateElement,
 
пример оного дан ниже.  
 
пример оного дан ниже.  
Строка 38: Строка 38:
 
</source>
 
</source>
  
После этого товары, который были помечены, как удаленные, будут удалены из системы, минуя корзину.
+
После этого товары, которые были помечены, как удаленные, будут удалены из системы, минуя корзину.
 
  [[category:Интеграция с 1С]]
 
  [[category:Интеграция с 1С]]

Текущая версия на 10:07, 8 апреля 2014

Актуально для версии 2.9.6

Задача

Как известно из статьи Удаление_элементов_или_снятие_активности_при_импорте_данных_из_1С, если в 1С товар был помечен на удаление, то UMI.CMS при импорте такого товара поместит его в корзину. Если Вам необходимо, чтобы товар не помещался в корзину, а сразу удалялся из системы, то необходимо написать обработчик события exchangeOnUpdateElement, пример оного дан ниже.

Решение

Создаем в директории /classes/modules/catalog/ файл custom_events.php следующего содержания:

<?php
new umiEventListener("exchangeOnUpdateElement", "catalog", "onCatalogObjectImportDelete");
?>

и добавляем в файл /classes/modules/catalog/__custom_adm.php следующий метод:

public function onCatalogObjectImportDelete(iUmiEventPoint $eventPoint){
	if ($eventPoint->getMode() == 'after') {			
		$element = $eventPoint->getRef('element');	
		
		if ($element->getHierarchyType()->getMethod() !== 'object' || $element->getHierarchyType()->getModule() !== 'catalog') {
			return;
		}				
		$info = $eventPoint->getParam('element_info');
		
		if($info->hasAttribute('is-deleted') == true && $info->getAttribute('is-deleted') == true){
			umiHierarchy::getInstance()->removeDeletedElement($element->getId());
		}
	}else{
		return;
	}
}

После этого товары, которые были помечены, как удаленные, будут удалены из системы, минуя корзину.