Hola @manuelhub y @nuria_tienda,
Confirmado, el problema principal con el código que presentas es precisamente el id_parent. Como bien apunta @nuria_tienda, Tab::getIdFromClassName('TOP') no te dará el resultado esperado para un menú de nivel superior en el Back Office. Para que una pestaña aparezca como un menú principal, su id_parent debe ser 0 (para un menú raíz totalmente nuevo) o el ID de una de las grandes categorías principales existentes si quieres agruparla bajo algo como 'Configurar' o 'Ventas'.
Si quieres que tu menú aparezca, por ejemplo, bajo la sección 'Configurar' (donde suelen ir los módulos), el id_parent correcto sería el de 'AdminParentModules'. Aquí te dejo una corrección a tu método install() que debería funcionar:
public function install()
{
if (!parent::install()) {
return false;
}
$tab = new Tab();
$tab->active = 1;
$tab->class_name = 'AdminMyCustomMenu';
$tab->name = array_fill_keys(Language::getLanguages(false, false), 'Mi Menú Personalizado');
$tab->id_parent = (int)Tab::getIdFromClassName('AdminParentModules'); // Esto la coloca bajo 'Configurar'
$tab->module = $this->name;
if (!$tab->add()) {
return false;
}
return true;
}
Con esta modificación, tu pestaña AdminMyCustomMenu debería aparecer bajo el menú 'Configurar'. Recuerda que después de instalar el módulo, a veces hay que limpiar la caché o incluso revisar los permisos de los empleados para que el nuevo menú sea visible.
Para una gestión más avanzada y sin tener que tocar código directamente en cada instalación o actualización, te recomiendo usar un módulo para administrador de menú. Estos módulos están diseñados para añadir, editar, mover y eliminar elementos del menú de forma visual desde el Back Office, evitando así overrides frágiles que se rompen con las actualizaciones de PrestaShop.