Tempo de leitura: 4 minutos
A exclusão de Pedidos de Venda (MATA410) é uma operação crítica no módulo SIGAFAT – Faturamento do TOTVS Protheus. Para garantir a integridade dos dados e respeitar regras de negócio específicas, o Ponto de Entrada A410EXC é a ferramenta essencial para customização ADVPL.
Neste post, exploraremos a funcionalidade do A410EXC, suas aplicações e forneceremos um exemplo ADVPL.
🎯 O que é o Ponto de Entrada A410EXC?
O Ponto de Entrada A410EXC é um exit point de validação na rotina de Exclusão de Pedido de Venda (MATA410). Ele é disparado antes que o sistema execute a exclusão física dos registros nas tabelas SC5 (Cabeçalho do Pedido) e SC6 (Itens do Pedido).
A principal finalidade é permitir que o desenvolvedor ADVPL implemente regras de negócio adicionais que possam impedir a exclusão do pedido.
✨ Funcionalidade e Aplicações
O A410EXC retorna um valor lógico: .T. (Verdadeiro) para permitir a exclusão, e .F. (Falso) para bloquear a exclusão.
| Aplicação Comum | Cenário de Uso |
| Bloqueio por Status | Impedir a exclusão de pedidos que já foram faturados parcialmente ou que possuem um status de “Liberado para Faturamento”. |
| Validação Financeira | Bloquear a exclusão se houver adiantamentos financeiros vinculados ao pedido. |
| Auditoria/Log | Registrar a tentativa de exclusão em uma tabela customizada antes de permitir ou bloquear. |
| Restrição por Usuário | Permitir que apenas usuários com perfis específicos (ex: Gerente de Vendas) possam excluir certos tipos de pedidos. |
💻 Exemplo em ADVPL do Ponto de Entrada A410EXC
O Ponto de Entrada A410EXC não recebe parâmetros, mas ao ser executado, o ambiente de trabalho (área de Work Area) estará posicionado no cabeçalho do pedido na tabela SC5. O valor de retorno deve ser um lógico.
Abaixo, um exemplo ADVPL que impede a exclusão de qualquer pedido de venda que tenha o campo customizado C5_CUSTOM preenchido com “NAOEXCLUIR”.
#Include 'Protheus.ch'
/*/{Protheus.doc} A410EXC
Ponto de Entrada para validar a exclusão do Pedido de Venda na rotina MATA410.
Disparado antes da exclusão física dos registros.
@author ProtheusAdvpl
@since 03/11/2025
@version 1.0
@type User Function
@return logical Retorna .T. para permitir a exclusão e .F. para bloquear.
@example
If !U_A410EXC()
Return
EndIf
*/
User Function A410EXC()
Local lRet := .T. // Por padrão, permite a exclusão
// O P.E. é executado com a Work Area SC5 (Tabela de Cabeçalho do Pedido)
// já posicionada no registro a ser excluído.
// Exemplo de Regra: Impedir a exclusão se o campo C5_ESTADO for 'F' (Faturado)
// Embora o Protheus já faça essa validação básica, é um bom exemplo.
If AllTrim(SC5->C5_ESTADO) == "F"
lRet := .F.
Help(,,"Atenção", "Pedido de Venda já Faturado. A exclusão foi bloqueada pela regra A410EXC.", 1, 0)
EndIf
// Exemplo de Regra Customizada: Utilizando um campo Z (C5_CUSTOM)
// Assumindo que C5_CUSTOM é um campo Z criado no SC5
If lRet .And. AllTrim(SC5->C5_CUSTOM) == "NAOEXCLUIR"
lRet := .F.
Help(,,"Atenção", "Este Pedido de Venda possui marcação de bloqueio e não pode ser excluído.", 1, 0)
EndIf
Return lRet // Retorna .T. para excluir, .F. para bloquear
Domine os Pontos de Entrada e o Backoffice
Para dominar este conceito em cenários de alta complexidade, como o cancelamento de integrações externas ou o estorno de reservas de estoque durante a exclusão, conheça o Portal ProtheusAdvpl. Lá, exploramos a fundo a arquitetura do Protheus e as melhores práticas para desenvolvedores seniores.
Cursos Recomendados para Programação e Backoffice:
Benefícios Estratégicos
- Governança de Dados: Impede a remoção de registros que possuem dependências financeiras ou fiscais.
- Segurança Operacional: Evita que usuários sem alçada deletem pedidos estratégicos.
- Auditoria: Permite registrar quem tentou excluir o pedido e por que a ação foi bloqueada.
Conclusão
O Ponto de Entrada A410EXC é uma ferramenta indispensável para elevar o nível de controle no módulo de Faturamento (SIGAFAT). Ao garantir que apenas exclusões permitidas sejam processadas, você protege o histórico da empresa e reduz riscos operacionais. Dominar ADVPL Avançado é o diferencial que transforma um programador em um consultor estratégico no mercado TOTVS.
Links de referência(s):