Pular para o conteúdo principal

ADM001 — Cadastro de Usuários (enriquecimento)

Menu: Sistema > Administração > Cadastro de Usuários

Objetivo​

O módulo ADM001 (Cadastro de Usuários) permite ao administrador do sistema criar, editar, inativar e excluir as contas de acesso ao JunsoftERP. Para cada usuário, define-se login, senha, pessoa vinculada, empresa padrão, empresas liberadas (com permissões de Faturamento/Estoque/Financeiro), locais de armazenagem permitidos, tabelas de preço disponíveis e, opcionalmente, tipos de conta financeira restritos. A partir daqui também se acessa, por atalhos, outras telas de configuração do usuário (Controle de Acesso a Programas, Contas de E-mail, Vendedores, Autorizador, Duplicações, Parâmetros de Usuário e Atalho de Módulos).

Fluxo principal​

  1. Abrir Sistema > Administração > Cadastro de Usuários. A tela carrega a lista de usuários e localiza automaticamente o usuário da sessão atual (ou o primeiro registro). (Aba Usuário) — source/ADM001/UfrmADM001.pas:242-249 (iniciar)
  2. Clicar em 'Novo' para incluir um usuário; o foco vai para o campo Login (código do usuário). (Aba Usuário) — source/ADM001/UfrmADM001.pas:254-267 (TfrmADM001.ANovoExecute)
  3. Preencher Login, Nome e Senha; opcionalmente vincular a Pessoa (F9 busca), Conta de E-mail, Grupo Alçada e demais parâmetros (backup, exportação, fechar visualizador etc.). (Aba Usuário) — source/ADM001/UfrmADM001.pas:594-621 (TfrmADM001.editCD_EMPRPADRAOExit)
  4. Informar a Empresa Padrão; ao sair do campo, o sistema grava o usuário e cria automaticamente o vínculo dele com essa empresa (Faturamento/Estoque/Financeiro = S). (Aba Usuário) — source/ADM001/UfrmADM001.pas:578-668 (TfrmADM001.editCD_EMPRPADRAOExit)
  5. Ir à aba 'Usuário x Empresa' para liberar/restringir outras empresas e módulos (Faturamento, Estoque, Financeiro) por empresa. (Aba Usuário x Empresa) — source/ADM001/UdmADM001.pas:246-252 (TdmADM001.tabUSUARIOEMPRESAAfterInsert)
  6. Ir à aba 'Locais de Armazenagem' para vincular os locais que o usuário pode movimentar. (Aba Locais de Armazenagem) — source/ADM001/UdmADM001.pas:266-301 (TdmADM001.tabLOCALUSUARIOBeforePost)
  7. Se o parâmetro PARMFINANC.ST_RESTRICAOTIPOCONTA estiver ativo, ir à aba 'Tipos de Conta Restritos' e informar os tipos de conta que o usuário não pode movimentar. (Aba Tipos de Conta Restritos) — source/ADM001/UfrmADM001.pas:235-240 (iniciar)
  8. Ir à aba 'Tabelas de Preço' para liberar as tabelas de preço que o usuário pode consultar/usar. (Aba Tabelas de Preço) — source/ADM001/UdmADM001.pas:412-442 (TdmADM001.tabUSUARIOTABPRECOBeforePost)
  9. Clicar em 'Salvar' para gravar todas as abas alteradas; o sistema confirma com a mensagem I-0047. (Barra de ferramentas) — source/ADM001/UfrmADM001.pas:283-297 (TfrmADM001.ASalvarExecute)

Campos obrigatórios​

CampoCondiçãoMensagemFonte
CD_USUARIO, NM_USUARIO, SN_USUARIO (Login, Nome, Senha)Ao tentar definir a Empresa Padrão do usuário (saída do campo Empresa Padrão) sem ter preenchido Login, Nome ou SenhaÉ necessário informar o Login! / É necessário informar o Nome! / É necessário informar a Senha!source/ADM001/UfrmADM001.pas:594-621 (TfrmADM001.editCD_EMPRPADRAOExit)
Empresa (aba Usuário)Ao gravar o registro da aba Usuário x Empresa (grid de empresas liberadas)É obrigatório informar a Empresa!source/ADM001/UdmADM001.pas:165-176 (TdmADM001.tabUSUARIOEMPRESABeforePost)
Local de Armazenagem e Tipo de Local (aba Locais de Armazenagem)Ao gravar uma linha do grid de locais de armazenagem do usuárioInforme o Local de Armazenagem! / Informe o Tipo Local de Armazenagem!source/ADM001/UdmADM001.pas:266-281 (TdmADM001.tabLOCALUSUARIOBeforePost)
Tipo de Conta (aba Tipos de Conta Restritos)Ao gravar uma linha do grid de tipos de conta restritos (aba só aparece se PARMFINANC.ST_RESTRICAOTIPOCONTA = S)O Tipo de Conta deve ser informado!source/ADM001/UdmADM001.pas:357-365 (TdmADM001.tabTIPOCONTARESTRITABeforePost)
Tabela de Preço (aba Tabelas de Preço)Ao gravar uma linha do grid de tabelas de preço liberadas para o usuárioInforme a Tabela de Preço!source/ADM001/UdmADM001.pas:412-421 (TdmADM001.tabUSUARIOTABPRECOBeforePost)
Campos com Required=True na tabela USUARIO (genérico)Sempre que o campo tiver a propriedade Required do banco e não fizer parte da chave, ao salvar a aba UsuárioO Campo "<rótulo>" deve ser Informado! (validação genérica, não é um código de catálogo do módulo)source/ADM001/UdmADM001.pas:155-158 (TdmADM001.tabUSUARIOBeforePost)

Mensagens: causa e ação​

C-0045​

Causa: O analista/administrador clicou em 'Excluir' com um usuário selecionado.

Ação: Confirmar se realmente deseja excluir o usuário; se o usuário tiver empresas liberadas cadastradas, a exclusão será bloqueada em seguida (ver mensagem 'O usuário possui Empresas Liberadas Cadastradas').

Fonte: source/ADM001/UfrmADM001.pas:301-328 (TfrmADM001.AExcluirExecute)

C-0048​

Causa: O usuário tentou fechar a tela (ou trocar de programa) com alterações pendentes em alguma aba (inclusão ou edição não salva).

Ação: Responder Sim para salvar automaticamente antes de fechar, ou Não para descartar as alterações.

Fonte: source/ADM001/UfrmADM001.pas:383-393 (TfrmADM001.FormClose)

I-0046​

Causa: A exclusão do usuário foi concluída (após confirmar C-0045 e passar pela verificação de empresas liberadas).

Ação: Nenhuma ação necessária; é apenas a confirmação de sucesso.

Fonte: source/ADM001/UfrmADM001.pas:322-326 (TfrmADM001.AExcluirExecute)

I-0047​

Causa: Todas as abas com dados em inclusão/edição foram gravadas com sucesso ao clicar em Salvar.

Ação: Nenhuma ação necessária; é apenas a confirmação de sucesso.

Fonte: source/ADM001/UfrmADM001.pas:283-297 (TfrmADM001.ASalvarExecute)

W-0017​

Causa: O usuário logado clicou no botão de atalho para 'Controle de Acesso a Programas' (ADM004), mas o programa ADM004 não está liberado no menu dele.

Ação: Solicitar ao administrador que libere o acesso ao programa ADM004 no cadastro de perfil/menu do usuário.

Fonte: source/ADM001/UfrmADM001.pas:746-763 (TfrmADM001.btnADM004Click)

W-0457​

Causa: O usuário logado clicou no atalho para o cadastro de Pessoas (TFA001), mas não tem esse programa liberado no menu.

Ação: Solicitar ao administrador que libere o acesso ao programa TFA001.

Fonte: source/ADM001/UfrmADM001.pas:714-728 (TfrmADM001.btnTFA001Click)

W-1659​

Causa: Clique no atalho para 'Contas de E-mail' (ADM021) sem esse programa liberado no menu do usuário.

Ação: Solicitar liberação de acesso ao programa ADM021.

Fonte: source/ADM001/UfrmADM001.pas:730-744 (TfrmADM001.btnADM021Click)

W-1660​

Causa: Clique no atalho para 'Atalho de Módulos' (ADM005) sem esse programa liberado no menu do usuário.

Ação: Solicitar liberação de acesso ao programa ADM005.

Fonte: source/ADM001/UfrmADM001.pas:765-782 (TfrmADM001.btnADM005Click)

W-1661​

Causa: Clique no atalho para 'Parâmetros de Usuários' (ADM012) sem esse programa liberado no menu do usuário (ou sem Empresa Padrão informada, que é validado antes).

Ação: Solicitar liberação de acesso ao programa ADM012 e garantir que a Empresa Padrão do usuário esteja preenchida.

Fonte: source/ADM001/UfrmADM001.pas:784-806 (TfrmADM001.btnADM012Click)

W-1662​

Causa: Clique no atalho para 'Duplicações' (ADM013) sem esse programa liberado no menu do usuário.

Ação: Solicitar liberação de acesso ao programa ADM013.

Fonte: source/ADM001/UfrmADM001.pas:808-825 (TfrmADM001.btnADM013Click)

W-1663​

Causa: Clique no atalho para 'Cadastro de Autorizador' (TFA008) sem esse programa liberado no menu do usuário.

Ação: Solicitar liberação de acesso ao programa TFA008.

Fonte: source/ADM001/UfrmADM001.pas:827-844 (TfrmADM001.btnTFA008Click)

W-1664​

Causa: Clique no atalho para 'Vendedores' (TFA007) sem esse programa liberado no menu do usuário.

Ação: Solicitar liberação de acesso ao programa TFA007.

Fonte: source/ADM001/UfrmADM001.pas:864-881 (TfrmADM001.btnTFA007Click)

A Tabela de Preço já está Associado para o Usuário!​

Causa: Tentativa de incluir na aba Tabelas de Preço uma tabela de preço que já está vinculada a esse usuário.

Ação: Não repetir a inclusão; verificar o grid de tabelas de preço do usuário, a tabela já está lá.

Fonte: source/ADM001/UdmADM001.pas:424-436 (TdmADM001.tabUSUARIOTABPRECOBeforePost)

Conta de E-mail não Cadastrada. Verifique [ADM021]!​

Causa: O código informado no campo Conta de E-mail não existe na tabela CONTASEMAIL.

Ação: Cadastrar a conta em Sistema > Contas de E-mail (ADM021) ou usar F9 para buscar um código válido.

Fonte: source/ADM001/UdmADM001.pas:334-355 (TdmADM001.tabUSUARIOCD_CONTAEMAILValidate)

Empresa não cadastrada! [ADM002]​

Causa: O código de empresa informado (na Empresa Padrão do usuário ou na aba Usuário x Empresa) não existe na tabela EMPRESA.

Ação: Informar um código de empresa válido, cadastrado em Sistema > Empresas (ADM002), ou usar F9 para buscar.

Fonte: source/ADM001/UdmADM001.pas:200-217 (TdmADM001.tabUSUARIOCD_EMPRPADRAOValidate), source/ADM001/UdmADM001.pas:219-234 (TdmADM001.tabUSUARIOEMPRESACD_EMPRESAValidate)

Esta pessoa está desativada! [TFA001]​

Causa: A pessoa vinculada ao usuário (campo Pessoa) está com status inativo (ST_ATIVA = 'N') no cadastro de Pessoas.

Ação: Reativar a pessoa no cadastro de Pessoas (TFA001) ou selecionar outra pessoa ativa.

Fonte: source/ADM001/UdmADM001.pas:183-198 (TdmADM001.tabUSUARIOCD_PESSOAValidate)

Grupo Alçada não Cadastrado! Verifique [ADM025].​

Causa: O código informado no campo Grupo Alçada não existe na tabela GRUPOUSUARIO.

Ação: Informar um código válido de grupo de alçada, cadastrado em ADM025, ou usar F9 para buscar.

Fonte: source/ADM001/UdmADM001.pas:486-508 (TdmADM001.tabUSUARIOCD_GRUPOALCADAValidate)

Informe a Tabela de Preço!​

Causa: Tentativa de gravar uma linha na aba Tabelas de Preço sem informar o código da tabela.

Ação: Preencher o campo Tabela de Preço (ou usar F9 para buscar) antes de gravar a linha.

Fonte: source/ADM001/UdmADM001.pas:412-421 (TdmADM001.tabUSUARIOTABPRECOBeforePost)

Informe o Local de Armazenagem!​

Causa: Tentativa de gravar uma linha na aba Locais de Armazenagem sem informar o Local.

Ação: Preencher o campo Local (ou usar F9 para buscar) antes de gravar.

Fonte: source/ADM001/UdmADM001.pas:271-275 (TdmADM001.tabLOCALUSUARIOBeforePost)

Informe o Tipo Local de Armazenagem!​

Causa: Tentativa de gravar uma linha na aba Locais de Armazenagem sem informar o Tipo de Local.

Ação: Preencher o campo Tipo de Local antes de gravar.

Fonte: source/ADM001/UdmADM001.pas:276-280 (TdmADM001.tabLOCALUSUARIOBeforePost)

Não foi possível realizar a gravação de Usuário! %s​

Causa: Ocorreu uma exceção ao tentar gravar automaticamente o usuário/empresa padrão ao sair do campo Empresa Padrão — geralmente porque Login, Nome ou Senha ainda não foram informados.

Ação: Verificar se Login, Nome e Senha do usuário estão preenchidos e tentar novamente informar a Empresa Padrão.

Fonte: source/ADM001/UfrmADM001.pas:594-674 (TfrmADM001.editCD_EMPRPADRAOExit)

O Local de Armazenagem já está Associado para o Usuário!​

Causa: Tentativa de incluir um local de armazenagem que já está vinculado a esse usuário (mesmo par tipo local + local).

Ação: Não repetir a inclusão; conferir no grid de locais o vínculo já existente.

Fonte: source/ADM001/UdmADM001.pas:282-294 (TdmADM001.tabLOCALUSUARIOBeforePost)

O Tabela de Preço já informada! Verifique.​

Causa: Ao digitar/selecionar o código da tabela de preço no campo do grid, o sistema já detecta que esse código está associado a este usuário.

Ação: Escolher outra tabela de preço ou verificar a lista já cadastrada.

Fonte: source/ADM001/UdmADM001.pas:444-461 (TdmADM001.tabUSUARIOTABPRECOCD_TABPRECOValidate)

O Tipo de Conta deve ser informado!​

Causa: Tentativa de gravar uma linha na aba Tipos de Conta Restritos sem informar o tipo de conta.

Ação: Preencher o campo Tipo de Conta (F9 para buscar) antes de gravar.

Fonte: source/ADM001/UdmADM001.pas:357-361 (TdmADM001.tabTIPOCONTARESTRITABeforePost)

O Tipo de Conta já informada! Verifique.​

Causa: O tipo de conta informado já está cadastrado como restrito para esse mesmo usuário.

Ação: Não repetir a inclusão; o tipo de conta já consta na lista de restrições do usuário.

Fonte: source/ADM001/UdmADM001.pas:373-383 (TdmADM001.tabTIPOCONTARESTRITACD_TIPOCONTAValidate)

O Tipo de Conta não está Cadastrado! [TFC005]​

Causa: O código de tipo de conta informado não existe na tabela TIPOCONTA.

Ação: Informar um código de tipo de conta válido, cadastrado em TFC005.

Fonte: source/ADM001/UdmADM001.pas:386-390 (TdmADM001.tabTIPOCONTARESTRITACD_TIPOCONTAValidate)

O usuário possui Empresas Liberadas Cadastradas. Verifique!​

Causa: Tentativa de excluir um usuário que ainda tem uma ou mais empresas vinculadas na tabela USUARIOEMPRESA.

Ação: Remover todos os vínculos na aba 'Usuário x Empresa' antes de excluir o usuário.

Fonte: source/ADM001/UfrmADM001.pas:309-320 (TfrmADM001.AExcluirExecute)

Pessoa não cadastrada! [TFA001]​

Causa: O código informado no campo Pessoa não existe na tabela PESSOA.

Ação: Cadastrar a pessoa em TFA001 ou informar um código válido (F9 para buscar).

Fonte: source/ADM001/UdmADM001.pas:189-193 (TdmADM001.tabUSUARIOCD_PESSOAValidate)

É obrigatório informar a Empresa!​

Causa: Duas situações no código geram essa mesma mensagem: (1) gravar uma linha da aba Usuário x Empresa sem informar a empresa; (2) abrir o atalho de Parâmetros de Usuário (ADM012) sem a Empresa Padrão do usuário preenchida.

Ação: Preencher o campo Empresa na aba Usuário x Empresa, ou preencher a Empresa Padrão na aba Usuário antes de acessar Parâmetros de Usuário.

Fonte: source/ADM001/UdmADM001.pas:165-176 (TdmADM001.tabUSUARIOEMPRESABeforePost), source/ADM001/UfrmADM001.pas:789-791 (TfrmADM001.btnADM012Click)

Regras de negócio​

  • ADM001.R001 (ver regras/ADM001/ADM001.R001.md)
  • ADM001.R002 (ver regras/ADM001/ADM001.R002.md)
  • ADM001.R003 (ver regras/ADM001/ADM001.R003.md)
  • ADM001.R004 (ver regras/ADM001/ADM001.R004.md)
  • ADM001.R005 (ver regras/ADM001/ADM001.R005.md)
  • ADM001.R006 (ver regras/ADM001/ADM001.R006.md)
  • ADM001.R007 (ver regras/ADM001/ADM001.R007.md)
  • ADM001.R008 (ver regras/ADM001/ADM001.R008.md)
  • ADM001.R009 (ver regras/ADM001/ADM001.R009.md)
  • ADM001.R010 (ver regras/ADM001/ADM001.R010.md)
  • ADM001.R011 (ver regras/ADM001/ADM001.R011.md)
  • ADM001.R012 (ver regras/ADM001/ADM001.R012.md)
  • ADM001.R013 (ver regras/ADM001/ADM001.R013.md)
  • ADM001.R014 (ver regras/ADM001/ADM001.R014.md)
  • ADM001.R015 (ver regras/ADM001/ADM001.R015.md)
  • ADM001.R016 (ver regras/ADM001/ADM001.R016.md)
  • ADM001.R017 (ver regras/ADM001/ADM001.R017.md)
  • ADM001.R018 (ver regras/ADM001/ADM001.R018.md)
  • ADM001.R019 (ver regras/ADM001/ADM001.R019.md)
  • ADM001.R020 (ver regras/ADM001/ADM001.R020.md)
  • ADM001.R021 (ver regras/ADM001/ADM001.R021.md)

Perguntas frequentes​

P: Por que ao tentar excluir um usuário aparece a mensagem 'O usuário possui Empresas Liberadas Cadastradas. Verifique!'? R: O sistema não permite excluir um usuário que ainda tenha empresas vinculadas na aba Usuário x Empresa. É preciso ir na aba 'Usuário x Empresa' e remover todas as empresas liberadas para esse usuário antes de excluí-lo. Fonte: source/ADM001/UfrmADM001.pas:301-327 (TfrmADM001.AExcluirExecute)

P: A tela deu a mensagem 'A Tabela de Preço já está Associado para o Usuário!', o que fazer? R: O usuário está tentando incluir na aba 'Tabelas de Preço' uma tabela que já consta na lista dele. Não é necessário adicionar novamente; verifique no grid se a tabela já aparece. Fonte: source/ADM001/UdmADM001.pas:412-442 (TdmADM001.tabUSUARIOTABPRECOBeforePost)

P: Por que não consigo ver a aba 'Tipos de Conta Restritos' no cadastro de usuário? R: Essa aba só aparece quando o parâmetro financeiro PARMFINANC.ST_RESTRICAOTIPOCONTA está configurado como 'S' para a empresa da sessão. Se o parâmetro estiver 'N' (ou vazio), a aba fica oculta. Peça ao administrador para ajustar o parâmetro em Parâmetros Financeiros, se a restrição de tipo de conta for necessária. Fonte: source/ADM001/UfrmADM001.pas:235-240 (iniciar)

P: Recebi 'O usuário não possui acesso a tela de cadastro de Pessoas [TFA001]!' ao clicar no botão de Pessoa dentro do cadastro de usuário. O que significa? R: O botão de atalho para o cadastro de Pessoas (TFA001) verifica se esse programa está liberado no menu do usuário logado. Se não estiver, a mensagem W-0457 aparece. É preciso liberar o acesso ao programa TFA001 para o usuário no cadastro de acesso a programas. Fonte: source/ADM001/UfrmADM001.pas:714-728 (TfrmADM001.btnTFA001Click)

P: Ao clicar nos botões de atalho (Vendedores, Parâmetros de Usuário, Duplicações, Autorizador etc.) o sistema salva o cadastro automaticamente. Isso é esperado? R: Sim, é comportamento intencional: antes de abrir as telas de atalho (ADM005, ADM012, ADM013, TFA007, TFA008), o botão chama 'Salvar' do próprio ADM001 para garantir que o usuário já esteja gravado (essas telas dependem do CD_USUARIO existir). Fonte: source/ADM001/UfrmADM001.pas:784-844 (TfrmADM001.btnADM012Click)

P: Deu a mensagem 'É obrigatório informar a Empresa!' ao abrir o cadastro de Parâmetros de Usuário (ADM012) pelo atalho. Por quê? R: O atalho para Parâmetros de Usuário (ADM012) exige que o usuário tenha uma Empresa Padrão definida na aba Usuário antes de abrir essa tela. Preencha o campo 'Empresa Padrão' no cadastro do usuário e tente novamente. Fonte: source/ADM001/UfrmADM001.pas:789-791 (TfrmADM001.btnADM012Click)

P: Cadastrei um novo usuário e uma empresa apareceu sozinha na aba Usuário x Empresa. É um bug? R: Não, é intencional: ao sair do campo Empresa Padrão em um usuário novo, o sistema grava automaticamente o usuário e cria/associa o vínculo dele com essa empresa na aba Usuário x Empresa, já com Faturamento, Estoque e Financeiro marcados como 'S'. Fonte: source/ADM001/UfrmADM001.pas:624-668 (TfrmADM001.editCD_EMPRPADRAOExit)

P: Deu a mensagem 'Esta pessoa está desativada! [TFA001]' ao vincular uma pessoa ao usuário. O que fazer? R: O código da pessoa informado no campo 'Pessoa' está com status inativo no cadastro de Pessoas (TFA001). É preciso reativar a pessoa em TFA001 ou escolher outra pessoa ativa para vincular ao usuário. Fonte: source/ADM001/UdmADM001.pas:183-198 (TdmADM001.tabUSUARIOCD_PESSOAValidate)

P: Não consigo apagar/alterar o Login (CD_USUARIO) de um usuário já existente. Por quê? R: O código do usuário é a chave do cadastro; ao navegar para um registro existente (fora da inclusão), o campo chave fica bloqueado para edição. Para trocar o login é necessário excluir e recriar o usuário (respeitando as demais regras de exclusão). Fonte: source/ADM001/UdmADM001.pas:160-163 (TdmADM001.tabUSUARIOAfterScroll)

Dúvidas em aberto (o código não responde)​

  • Quais campos da tabela USUARIO estão marcados como Required (NOT NULL) no banco Firebird além de CD_USUARIO, NM_USUARIO e SN_USUARIO? — A obrigatoriedade genérica depende da metadata do FDQuery/banco (CamposObrigatorios em source/PacManager/src/Utilitarios/Utilitarios.pas:2515-2538); sem o schema/DDL da tabela USUARIO não é possível listar todos os campos obrigatórios.
  • Como o sistema valida a senha do usuário (tamanho mínimo, complexidade, hash) e onde essa regra está implementada? — O código lido de ADM001 apenas verifica se SN_USUARIO está preenchido (UfrmADM001.pas:612-616); não há rotina de validação de força de senha nos arquivos lidos.
  • O que a coluna DT_EXPSENHA (expiração de senha) faz de fato — bloqueia login após a data? Onde essa regra é aplicada? — ADM001 apenas exibe/edita o campo (UdmADM001.pas linha 32/UfrmADM001.dfm), não há lógica de expiração nos arquivos do módulo.
  • Quais letras/valores são aceitos em PARMFINANC.ST_RESTRICAOTIPOCONTA além de 'S'? — O código só compara com 'S' para exibir a aba de Tipos de Conta Restritos (UfrmADM001.pas:236-240); não há definição do parâmetro nos arquivos lidos.
  • Por que a checagem de duplicidade de Tipo de Conta Restrito é feita duas vezes (BeforePost e no Validate do campo)? Existe alguma diferença de comportamento entre elas? — UdmADM001.pas linhas 367-396 e a query de duplicidade dentro do Validate podem ser redundantes com a regra do BeforePost; não ficou claro se há um caso em que só uma delas dispara.