-
Берем прайс товаров, каждый из которых содержит значение FamilyId
Находим максимальный уровень вложенности меню по полю Level.
В цикле от нижнего уровня меню к верхнему проверяем каждое семейство узла меню (по каждому Id из поля FamilyGroupIds) на наличие его продуктов в прайсе. Продукт в прайсе должен быть:
Если таких продуктов нет, то помечаем сам узел меню “на удаление”.
Если FamilyGroupIds для узла является пустым, то ищем хотя бы одного потомка данного узла, не помеченного “на удаление”. Если таких потомков не найдено, помечаем узел меню “на удаление”.
Удаляем все узлы, помеченные “на удаление”.