Удаление товаров из системы при импорте — различия между версиями
Материал из Umicms
Mad grant (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9.6''' == Задача == Как известно из статьи [[Удаление_элементов_или_сня…») |
Mad grant (обсуждение | вклад) |
||
(не показана 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;
}
}
После этого товары, которые были помечены, как удаленные, будут удалены из системы, минуя корзину.