Em projetos de sustentação e melhorias no Protheus, muitas vezes encontramos situações que parecem pequenas, mas que podem gerar grandes dores de cabeça no dia a dia da operação.
Recentemente nos deparamos com um cenário interessante em um cliente. Durante o processo de faturamento, os usuários precisavam consultar a numeração da Nota Fiscal antes da confirmação do documento. Para isso, era comum posicionar o cursor sobre o campo da numeração, pressionar Enter, selecionar o conteúdo e utilizar o famoso Ctrl+C para copiar o número.
O processo funcionava bem e fazia parte da rotina da equipe. O problema surgiu quando, sem perceber, uma usuária acabou pressionando algumas teclas após selecionar o campo e alterou a numeração da Nota Fiscal que seria utilizada no faturamento.
Apesar de parecer algo simples, uma alteração indevida na numeração pode causar inconsistências operacionais, retrabalho e até dificuldades futuras em auditorias e rastreabilidade de documentos.
O desafio
A primeira alternativa que normalmente vem à mente seria simplesmente bloquear o acesso ao campo. Porém, isso criaria outro problema.
Os usuários deixariam de conseguir copiar rapidamente a numeração da Nota, algo que fazia parte do fluxo operacional e ajudava na produtividade do time.
Ou seja, precisávamos encontrar uma solução que permitisse:
- Visualizar normalmente a numeração da Nota;
- Selecionar o conteúdo do campo;
- Utilizar Ctrl+C para copiar a informação;
- Impedir que alterações fossem efetivamente realizadas.
A solução encontrada
Para resolver o problema utilizamos o ponto de entrada NFSVLNUM, responsável por validar a alteração da numeração da Nota Fiscal.
Com essa abordagem, o usuário continua conseguindo acessar o campo normalmente para consultar e copiar o conteúdo, porém qualquer tentativa de alteração é bloqueada pela validação.
Além disso, uma mensagem orientativa é apresentada informando que a numeração não pode ser modificada e orientando o usuário sobre como proceder caso tenha alterado o conteúdo sem querer.
A grande vantagem dessa abordagem é que ela preserva a experiência do usuário e elimina o risco operacional sem necessidade de mudanças drásticas de permissão ou restrições de acesso.
Código-fonte
Abaixo está o código utilizado na implementação:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} NFSVLNUM
Ponto de Entrada que valida se a numeração da NF pode ser alterada
@type user function
@author Atilio
@since 04/02/2026
@version version
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6784437
@obs Foi criado o p.e. ao invés de desativar o acesso de número "50" no configurador
Pois dessa forma, a usuária consegue selecionar e dar Ctrl+C no número
/*/
User Function NFSVLNUM()
Local aArea := FWGetArea()
Local lPodeAlt := .F.
//Exibe mensagem
ExibeHelp("NFSVLNUM Help", ;
"Numeração da NF não pode ser alterada!" ,;
"Se já foi alterado, pressione -ESC- para desfazer ou contate o Administrador";
)
//Se for usuário Admin, poderá alterar, foi deixado comentado
/*
If FWIsAdmin()
lPodeAlt := .F.
EndIf
*/
FWRestArea(aArea)
Return lPodeAlt
Considerações finais
Esse é um ótimo exemplo de como pequenas customizações podem aumentar significativamente a segurança operacional do Protheus sem impactar a rotina dos usuários.
Muitas vezes a melhor solução não é simplesmente bloquear uma funcionalidade, mas sim encontrar uma forma de proteger o processo mantendo a produtividade da equipe.
Se você possui situações semelhantes no seu ambiente Protheus, onde determinados campos precisam ser protegidos sem prejudicar a operação, vale a pena analisar os pontos de entrada disponíveis antes de recorrer a alterações mais invasivas.
Em muitos casos, uma simples validação pode evitar erros, retrabalho e problemas futuros.




