Adicionar validação na exclusão do documento de saída no Protheus

Se tem uma coisa que pode virar dor de cabeça rápida dentro do Protheus, é exclusão indevida de documento de saída.

E não estamos falando só de erro operacional… estamos falando de impacto fiscal, retrabalho e, em alguns casos, até problema com auditoria.

Recentemente, em um cliente, surgiu exatamente esse cenário:
como impedir que qualquer usuário saia excluindo documento de saída sem controle?

E a resposta não envolve nada mirabolante.
É controle, regra de negócio e uso inteligente de ponto de entrada.

O problema que ninguém quer ter

No dia a dia, é comum usuários terem acesso a rotinas que permitem exclusão de documentos.

Só que o sistema padrão não impede, por exemplo:

  • exclusões por engano
  • exclusões sem rastreabilidade clara
  • exclusões fora do fluxo de aprovação

E aí começa o caos:

  • divergência fiscal
  • inconsistência em relatórios
  • retrabalho manual pesado
  • dificuldade de auditoria

Se você já passou por isso, sabe o tamanho do prejuízo.

A solução: bloquear na raiz com ponto de entrada

Aqui a ideia é simples e muito eficiente:

  • interceptar a exclusão no momento em que ela acontece
  • validar se o usuário tem permissão
  • permitir ou bloquear com mensagem clara

E o melhor: sem precisar alterar padrão do Protheus.

Estratégia utilizada

Para resolver isso, utilizamos o ponto de entrada:

👉 MS520VLD

Esse ponto é acionado exatamente na validação da exclusão do documento de saída.

A lógica aplicada foi:

  • Criar um parâmetro (MV_X_USDEL) com os usuários autorizados
  • Verificar se o usuário atual está dentro desse parâmetro
  • Se estiver → permite excluir
  • Se não estiver → bloqueia e exibe mensagem

Simples, direto e extremamente eficiente.

Código utilizado

Aqui está exatamente como implementamos (sem alteração):

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function MS520VLD
Ponto de entrada na validação da exclusão do documento de saída corrente
@type Function
@author Atilio
@since 24/11/2023
@see https://tdn.totvs.com/display/public/PROT/MS520VLD
/*/

User Function MS520VLD()
Local aArea := FWGetArea()
Local lContinua := .T.
Local cUsrsDel := SuperGetMV("MV_X_USDEL", .F., "000000;")
Local cFilDoc := SF2->F2_FILIAL
Local cDocumento := SF2->F2_DOC
Local cSerie := SF2->F2_SERIE

//Se o usuário estiver no parâmetro que ele pode excluir a NF, permite prosseguir normalmente
If RetCodUsr() $ cUsrsDel
lContinua := .T.

//Senão, exibe mensagem avisando que não é possível excluir
Else
ExibeHelp("Help_MS520VLD", "Não é possível excluir o documento (" + cFilDoc + "-" + cDocumento + "-" + cSerie + ")!", "Verifique com os responsáveis para prosseguir!")
lContinua := .F.
EndIf

FWRestArea(aArea)
Return lContinua

O que esse código resolve na prática

Pode parecer simples, mas isso aqui muda o jogo:

  • elimina exclusões indevidas
  • centraliza controle em parâmetro (sem precisar alterar código toda hora)
  • melhora governança
  • reduz risco fiscal
  • evita retrabalho

E principalmente:

👉 tira o risco da operação ir pro espaço por um clique errado

Dica importante (que pouca gente aplica)

Não adianta só bloquear.

Se você quiser fazer isso direito, combine com:

  • definição clara de quem pode excluir
  • registro de justificativa (se necessário)
  • acompanhamento via logs
  • revisão periódica dos usuários autorizados

Controle técnico sem processo = problema futuro.

Quando vale aplicar isso?

Se você tem:

  • alto volume de faturamento
  • mais de um usuário operando fiscal
  • integrações com outros sistemas
  • necessidade de auditoria

Então isso aqui deixa de ser opcional.

Vira obrigação.

Conclusão

O Protheus permite muita coisa — inclusive coisas que podem te dar problema se não tiver controle.

Esse tipo de ajuste é exatamente o que separa:

👉 um sistema funcionando
de
👉 uma operação realmente segura

E normalmente, são essas pequenas validações que evitam os grandes prejuízos.

Index

Categorias

Sobre o Autor

Foto do Autor
Fábio Hayama

Apaixonado por gestão, tecnologia e inovação, Fábio Hayama possui mais de 15 anos de experiência no universo do ERP Protheus, estratégia empresarial e automação de processos.

Leia mais sobre o Fábio

Entre em contato conosco

Veja mais artigos relacionados

{{brizy_dc_image_alt entityId=
Podcast Gratuito: Como usar IA para acelerar suporte e desenvolvimento
A Inteligência Artificial deixou de ser uma tendência distante e passou a fazer parte da rotina de empresas, consultorias e equipes de tecnologia. O que antes parecia algo complexo e restrito a grandes organizações, hoje está acessível para profissionais que buscam mais produtividade, agilidade e qualidade em suas entregas. Pensando nisso, preparamos um encontro especial […]
{{brizy_dc_image_alt entityId=
5 sinais de que sua empresa precisa de um BPM como o Fluig
Sua empresa está crescendo, mas os processos continuam os mesmos? Toda empresa sonha em crescer. Mais clientes, mais vendas, mais colaboradores, mais oportunidades e mais resultados. O problema é que, em muitos casos, o crescimento acontece mais rápido do que a capacidade da organização de estruturar seus processos internos. O resultado é um cenário que […]
{{brizy_dc_image_alt entityId=
Como impedir a alteração da numeração da Nota Fiscal sem perder a facilidade do Ctrl+C
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 […]
{{brizy_dc_image_alt entityId=
3 coisas que já automatizamos com IA + Protheus na prática
Empresas passam anos investindo em ERP, implantando processos, organizando áreas e treinando equipes. Mesmo assim, em muitos casos, a operação continua dependendo de planilhas paralelas, validações manuais, retrabalho e pessoas apagando incêndio o dia inteiro. E é justamente aí que entra um ponto que muita empresa ainda não percebeu: a inteligência artificial não veio para […]