Módulo: Navegação Principal

Sistema central de navegação e controle de acesso do aplicativo Gestão Orçamentária SEDESE

🏠 Módulo: Navegação Principal

Sistema central de navegação e controle de acesso do aplicativo Gestão Orçamentária SEDESE

📋 Visão Geral do Módulo

ℹ️ Sobre este Módulo

  • Função Principal: Gerenciar acesso e navegação inicial do sistema
  • Telas: 2 telas
  • Controle de Acesso: Baseado em perfil e permissões
  • Primeira Execução: OnStart do App

🏠 Tela: Capa_Nova

Tela Inicial - Hub de Navegação

Tipo: Tela de Navegação Principal

Acesso: Usuários com perfil APMD

📊 Estatísticas da Tela

34
Controles Totais
5
Containers de Navegação
13
Botões

⚙️ Inicialização do App (OnStart)

Quando o aplicativo é iniciado, ANTES de qualquer tela ser exibida, o sistema executa:

// 1. Define perfil padrão
Set(varPerfil, "APMD");

// 2. Busca permissões do usuário logado
Set(_varPermissao, 
    LookUp(
        PermissoesSistemaAPMD,
        Usuario.Email = UsuáriosdoOffice365.MyProfileV2().mail,
        Permissoes
    )
);

// 3. Cria collections de navegação
ClearCollect(colNavMenu3,
    [
        { Label: "Geral", Screen: Demandas_Novo },
        { Label: "Inativos", Screen: Demandas_Orcamentarias_Inativos }
    ]
);

ClearCollect(colNavMenu4,
    [
        { Label: "Pendentes", Screen: Cotas_Pendentes },
        { Label: "Concluídos", Screen: Cotas_Concluídas },
        { Label: "Solicitações", Screen: Cotas_Solicitacoes }
    ]
);

ClearCollect(colNavMenu5,
    [
        { Label: "Programação Pendente", Screen: Remanejamento_Novo_Controle },
        { Label: "Demandas Pendentes", Screen: Remanejamento_Novo_Controle },
        { Label: "Concluídos", Screen: Remanejamento_Novo_Concluidos }
    ]
);

ClearCollect(colNavMenu6,
    [
        { Label: "Programação", Screen: Remanejamento_Novo_Programação },
        { Label: "Demandas", Screen: Remanejamento_Novo_Demandas }
    ]
);

ClearCollect(colNavMenu7,
    [
        { Label: "Geral", Screen: Programação_Controle },
        { Label: "Solicitações", Screen: Programacao_Solicitacoes }
    ]
);

// 4. Cria collection de imagens de loading
ClearCollect(colImagensLoading,
    [
        { ID: 1, Imagem: 'loading-screen-cat' },
        { ID: 2, Imagem: 'taylor swift' },
        { ID: 3, Imagem: 'Friends tv show meme' },
        { ID: 4, Imagem: 'Cameron Tucker_Eric Stonestreet & Mitchell Pritchett_Jesse Tyler Ferguson' },
        { ID: 5, Imagem: 'download (1)' },
        { ID: 6, Imagem: dog }
    ]
);

🎯 Função das Collections

Estas collections são globais e alimentam os componentes TabList em todas as telas do aplicativo, criando um sistema de navegação por abas consistente.

🚦 Determinação da Tela Inicial

StartScreen = Switch(
    varPerm, 
    "APMD", Capa_Nova,
    "Gestor", Programação_Controle,
    TELA_INCIAL_ERRO
)

🎨 Containers de Navegação Principais

🛠️ Botões de Ação Adicionais

ControleFunçãoOnSelect
ButtonConfiguracoesAbrir configurações de personalizaçãoNavigate(Configuracoes_Cores)
ButtonVersaoExibir informações de versãoSet(varShowVersion, true)
ButtonCanvas15_11Ação canvas 1(não especificado)
ButtonCanvas15_12Ação canvas 2(não especificado)
ButtonCanvas27_2Ação canvas 3(não especificado)
ButtonCanvas27_3Ação canvas 4(não especificado)

🎨 Elementos Visuais

  • Rectangle6: Container principal de fundo
  • Rectangle6_40: Elemento decorativo
  • Image3: Imagem de fundo
  • ImageGestaoOrcamentaria: Logo do sistema
  • TextDesenvolvido: Informações de desenvolvimento
  • TextCanvas15_3, TextCanvas15_4: Textos informativos

❌ Tela: TELA_INCIAL_ERRO

Tela de Erro - Acesso Negado

Tipo: Tela de Erro

Acesso: Usuários sem permissões

📊 Estatísticas da Tela

2
Controles Totais

🎯 Componentes

🔴 HomeMenuBkg_18

Tipo: Rectangle

Função: Fundo da mensagem de erro

Fill: Cor de aviso (vermelho/amarelo)

⚠️ TextCanvas2

Tipo: TextCanvas

Função: Mensagem de erro ao usuário

Text:

"Você não possui permissões para acessar este sistema. 
Entre em contato com o administrador."

🔒 Lógica de Acesso

🚨 Quando esta tela é exibida?

Esta tela aparece quando:

  • O usuário não está cadastrado em PermissoesSistemaAPMD
  • A variável varPerm não corresponde a "APMD" ou "Gestor"
  • O e-mail do usuário não é encontrado no sistema

Solução: O usuário deve solicitar acesso ao administrador do sistema para ser adicionado à lista de permissões.


🔗 Fluxo de Navegação do Módulo

graph TD
    A[OnStart do App] --> B{Verificar Permissões}
    B -->|varPerm = APMD| C[Capa_Nova]
    B -->|varPerm = Gestor| D[Programação_Controle]
    B -->|Sem Permissão| E[TELA_INICIAL_ERRO]
    
    C --> F[Programação]
    C --> G[Demandas]
    C --> H[DDO]
    C --> I[Cotas]
    C --> J[Remanejamentos]
    C --> K[Configurações]
    
    E --> L[Solicitar Acesso]
    
    style A fill:#667eea
    style B fill:#ffc107
    style C fill:#28a745
    style D fill:#17a2b8
    style E fill:#dc3545

📚 Variáveis Globais Criadas

VariávelTipoCriada emFunção
varPerfilTextOnStartDefine perfil padrão (“APMD”)
_varPermissaoTextOnStartArmazena permissão do usuário logado
colNavMenu3TableOnStartNavegação do módulo Demandas
colNavMenu4TableOnStartNavegação do módulo Cotas
colNavMenu5TableOnStartNavegação do módulo Remanejamento (Controle)
colNavMenu6TableOnStartNavegação do módulo Remanejamento (Execução)
colNavMenu7TableOnStartNavegação do módulo Programação
colImagensLoadingTableOnStartImagens para telas de loading

💡 Dicas de Uso

🎯 Perfis de Acesso

O sistema diferencia dois perfis principais:

  • APMD: Acesso completo, inicia em Capa_Nova
  • Gestor: Foco em programação, inicia em Programação_Controle

🔄 Collections Globais

As collections colNavMenu* são usadas em componentes TabList em todo o app. Modificá-las afeta a navegação em múltiplas telas.

🎨 Personalização

Use o botão "Configurações" na Capa_Nova para personalizar cores do sistema através de GestaoOrcamentaria_Configuracoes.

🖼️ Imagens de Loading

A collection colImagensLoading fornece variedade visual durante operações demoradas, tornando a espera mais agradável.


⚠️ Considerações Importantes

🔐 Segurança de Acesso

O controle de acesso é feito APENAS no frontend. Para segurança adicional, considere aplicar permissões também no SharePoint nas listas de dados.

📧 Identificação por E-mail

O sistema usa UsuáriosdoOffice365.MyProfileV2().mail para identificação. Certifique-se de que os e-mails em PermissoesSistemaAPMD estão corretos.

🔄 Atualização de Permissões

Mudanças na lista de permissões só são aplicadas após o usuário fechar e reabrir o aplicativo (novo OnStart).


📊 Fontes de Dados Utilizadas

Fonte de DadosTipoFunção no Módulo
PermissoesSistemaAPMDSharePoint ListControle de acesso e permissões
UsuáriosdoOffice365Office 365 ConnectorIdentificação do usuário logado
GestaoOrcamentaria_ConfiguracoesSharePoint ListConfigurações personalizadas por usuário

Última modificação October 20, 2025: controle gestao orcamentaria (399545f)