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=
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 […]
{{brizy_dc_image_alt entityId=
Big Techs em Guerra: como Apple, Google, TOTVS, Amazon e Microsoft estão redesenhando o mercado de tecnologia
Se você olhar as principais movimentações recentes do mercado de tecnologia, pode até parecer que são notícias isoladas. Uma empresa mudando produção, outra lançando estratégia de produto, outra investindo em logística. Mas quando você conecta os pontos, fica muito claro que existe um padrão por trás disso tudo. Gigantes como Apple, Google, Amazon, Microsoft e […]
{{brizy_dc_image_alt entityId=
Atualizar automaticamente datas na NFe SEFAZ no Protheus (sem retrabalho)
Se você usa o Protheus no dia a dia, já sabe como funciona. Você abre a tela da NFe SEFAZ…E lá vai você ajustar data manualmente de novo. Pode parecer detalhe, mas isso acontece todos os dias.E quando soma no tempo da operação, vira retrabalho puro. Foi exatamente esse cenário que vimos em um cliente. […]
{{brizy_dc_image_alt entityId=
Protheus lento? Os erros de infraestrutura e banco que ninguém te conta
Seu Protheus está lento… mas talvez o problema não seja o sistema Se você usa Protheus no dia a dia, provavelmente já passou por isso: a tela demora para carregar, um simples faturamento vira um teste de paciência, relatórios levam minutos (ou mais) para sair… e no final, a conclusão mais comum é sempre a […]