Entidade MENUS

RTMENU.MENUS

Descrição

Representa os menus que fazem parte de um sistema.

Atributos

AtributoDomínioRegrasDescrição
IDID(18)Rqd PK Id:
Chave de identificação interna
MENUUPPER(80)Rqd UK Menu:
Nome global do menu. Será tipicamente formado por SISTEMA.NOME.
TITULOTEXT(160)Rqd Título:
Título do menu (texto que aparece no mesmo).
DESCRICAOWIKIDescrição:
Texto livre para descrever o menu. Meramente informativo. Ex: Opções de configuração e parametrização do sistema.
SEQUENCIAINTEGERSequência:
Número usado para ordenar os menus. Útil apenas para ordenar os menus que são topo.

Valor padrão = 50
TOPOFLAG(1)Topo:
Indica se o menu deve ou não aparecer no topo da aplicação.
O "topo" será calculado como "S" se existir um usuário apontando para ele, ou a preferência do menu padrão apontar para ele.

Valor padrão = N
ATIVOFLAG(1)Rqd Ativo:
Indica se o menu está ou não ativo. Somente menus ativos podem ser utilizados no sistema.

Valor padrão = S
PARAMETROSTEXT_LONGParâmetros:
Parâmetros que são repassados para os itens de menu. Este campo é utilizado somente em menus que representam dashboards (nome do menu inicia com DASHBOARD_), não possuindo aplicação para os demais menus.
Os parâmetros informados no menu não se sobrepõem aos parâmetros informados itens do menu da dashboard (Itens de menu).
Os parâmetros que podem ser informados obedecem as mesmas configurações definidas para Dashboard.
EM_USOFLAG(1)Em uso:
Esse atributo indica que o menu está sendo utilizado.
Seu valor será calculado, se o menu tem relacionamentos com usuário, itens de menus e/ou aplicações(aplicacoes_sistemas) seu valor será S, caso contrário será N.

Valor padrão = N

Regras

Calcular "Em uso"

(Antes de inserir, Antes de alterar)
Verifica se o menu está em uso, através dos relacionamentos com usuário, itens de menus e aplicacoes_sistemas
O "em uso" será marcado com "S" se:

Calcular atributo "Topo"

(Antes de inserir, Antes de alterar)
O "topo" será "S" se existir um usuário apontando para ele, ou a preferência do menu padrão apontar para ele.

Atualizar atributo "em uso" dos submenus

(Depois de inserir, Depois de alterar)
Se o atributo "Em uso" for alterado atualiza o atributo dos menus que são submenus deste menu.

Atualizar dashboard usuário

(Depois de excluir, Depois de alterar)
Quando o nome do menu é modificado ou excluído deve-se atualizar os usuários que tenham esse menu como dashboard.

Find or create item(nome, titulo, sequencia)

Busca um determinado item de menu e cria o item, caso não seja localizado.

Find or create menu(nome, titulo)

Cria (se necessário) um determinado menu no sistema.
Caso o menu já exista, apenas retorna ele.
Caso o menu não exista, cria e retorna-o.

Find or create sub-menu(nome, titulo, sequencia)

Busca ou cria um sub-menu.

Has menu(menu_id)

Verifica se o menu tem um determinado sub-menu.
Esta função é utilizada para evitar que a estrutura de menus cause um loop infinito.

Algoritmo:
if menuId == this.ID
    return true
else
    for each menu in sub-menus loop
        if menu.hasMenu(menuId) 
            return true
        end-if
    end-loop
    return false
end-if