Ponto de Entrada MT410INC: Validação na Inclusão do Pedido de Venda (MATA410)

Tempo de leitura: 5 minutos

Você solicitou um Ponto de Entrada para a rotina MATA410 (Pedido de Venda), focando na inclusão. Embora o ponto A410EXC trate da exclusão, o mais relevante para validação durante a inclusão é o MT410INC.

O MT410INC é o exit point ideal para implementar regras de negócio complexas que precisam ser verificadas antes que o Pedido de Venda seja efetivamente gravado nas tabelas SC5 e SC6.

 

🎯 O que é o Ponto de Entrada MT410INC?

 

O Ponto de Entrada MT410INC é uma validação pós-digitação de dados na rotina de Inclusão de Pedido de Venda (MATA410), no módulo SIGAFAT – Faturamento.

Ele é executado após o usuário preencher todos os campos, mas antes do registro ser gravado no banco de dados. Sua principal função é permitir que o desenvolvedor ADVPL bloqueie a gravação do pedido caso alguma regra de negócio customizada não seja atendida.

 

✨ Funcionalidade e Aplicações

 

O MT410INC deve retornar um valor lógico: .T. (Verdadeiro) para permitir a gravação do pedido, e .F. (Falso) para bloquear a inclusão.

Aplicação Comum Cenário de Uso
Bloqueio de Crédito Verificar se o limite de crédito do cliente (SA1) será excedido pelo valor do novo pedido, independentemente da validação padrão.
Validação de Frete Impedir a gravação se o tipo de frete for “CIF” e a transportadora (S4) estiver sem o campo de contato preenchido.
Integridade de Dados Garantir que campos customizados (campos Z) obrigatórios nas tabelas SC5 ou SC6 estejam preenchidos corretamente.
Restrição de Combinações Bloquear a inclusão de um produto (SB1) específico para uma condição de pagamento (SE4) ou cliente (SA1) específica.

💻 Exemplo em ADVPL do Ponto de Entrada MT410INC

 

O Ponto de Entrada MT410INC não recebe parâmetros, mas quando é executado, o ambiente de trabalho está posicionado nas áreas temporárias das tabelas SC5 (cabeçalho) e SC6 (itens) do pedido que está sendo incluído.

Abaixo, um exemplo ADVPL que impede a inclusão do pedido se ele for superior a R$ 10.000,00 e a condição de pagamento utilizada for à vista (Exemplo: Código ‘001’).

#Include 'Protheus.ch'

/*/{Protheus.doc} MT410INC
Ponto de Entrada para validação antes da gravação do Pedido de Venda na rotina MATA410 (Inclusão).
Disparado antes da gravação física do SC5 e SC6.
@author ProtheusAdvpl
@since 03/11/2025
@version  1.0

@Inscreva-se no Blog ProtheusAdvpl:
https://www.protheusadvpl.com.br
@Inscreva-se no Canal ProtheusAdvpl:
https://www.youtube.com/protheusadvpl
@Siga-nos no Instagram:
https://www.instagram.com/protheusadvpl
@Conheça os Cursos do ProtheusAdvpl:
https://cursos-e-formacoes-protheusadvpl.gr-site.com/
@Participe de nossas comunidades no WhatsApp:
-Comunidade Protheus Backoffice:https://chat.whatsapp.com/KMUIAjwZ6EZ6eAHsLkPTyb
-Comunidade Protheus-RH:https://chat.whatsapp.com/L5dUyAna6xU4ylG5DUgfOW
-Comunidade Protheus-Programação:https://chat.whatsapp.com/LsD6z0apdqKHlOz67bcaEn
-Comunidade Protheus-Framework:https://chat.whatsapp.com/BzUFpjaSnTC3vtsfa77jmG

|Se esse conteúdo foi útil pra você nos ajude divulgando 
ele e nossas redes sociais!!|

@type User Function
@return logical Retorna .T. para permitir a gravação e .F. para bloquear a inclusão.
@example 
If !U_MT410INC()
    Return
EndIf
*/
User Function MT410INC()
Local lRet := .T. // Por padrão, permite a inclusão
Local nVlTotal := 0
Local cCondPag := ""

// A Work Area do SC5 (Cabeçalho) está disponível para leitura/validação
nVlTotal := SC5->C5_TOTAL
cCondPag := AllTrim(SC5->C5_CONDIC)

// --- Regra de Negócio: Bloquear pedidos à vista (Condição '001')
// --- com valor total superior a R$ 10.000,00.
If cCondPag == "001" .And. nVlTotal > 10000.00
    lRet := .F.
    
    // Alerta ao usuário
    MsgStop("Não é permitida a inclusão de Pedidos à Vista (Cond. 001) com valor superior a R$ 10.000,00.", ;
            "Validação MT410INC")
EndIf

// Você pode acessar a tabela SC6 (Itens) também, para validações linha a linha
// Exemplo:
/*
Local cAliasSC6 := GetNextAlias() // Gera um alias temporário para o SC6
(cAliasSC6)->(DbSelectArea(cAliasSC6))
(cAliasSC6)->(DbGoTop())

While (cAliasSC6)->(!Eof())
    // Exemplo: Verificar a quantidade de um item específico (C6_PRODUTO)
    If AllTrim((cAliasSC6)->C6_PRODUTO) == "PROD001" .And. (cAliasSC6)->C6_QTDPRC > 50
        lRet := .F.
        MsgStop("O item PROD001 não pode ter mais de 50 unidades neste pedido.", "Validação MT410INC")
        Break
    EndIf
    (cAliasSC6)->(DbSkip())
Wend
(cAliasSC6)->(DbCloseArea())
*/

Return lRet // Retorna .T. para gravar, .F. para bloquear


 

Receba as últimas atualizações do ProtheusAdvpl
Deixe seu melhor email
Nós respeitamos sua privacidade.

Link(s) de referência(s):https://tdn.totvs.com/pages/releaseview.action?pageId=6784034

Bem, finalizamos mais um post aqui do Blog ProtheusAdvpl.

Se esse conteúdo lhe foi útil nos ajude compartilhando ele em suas redes sociais do TOTVS Protheus.

Grande abraço e fica com Deus.


 

🚀 Domine a Carreira Protheus com o Portal ProtheusAdvpl

 

Se o seu objetivo é se tornar um profissional TOTVS Protheus de alto nível, dominando tanto a programação ADVPL/TLPP quanto a lógica de negócios dos módulos, o Portal ProtheusAdvpl é a sua plataforma de formação completa.

Nossa grade de ensino é estruturada nas Carreiras ProtheusAdvpl (CPAs), cobrindo o conhecimento de ponta a ponta:

Carreira Foco Principal
CPA1 (Infraestrutura) TOTVS AppServer, SmartClient HTML (WebApp/WebAgent), TOTVS DBAccess, SQL Server e License Server.
CPA2 (Programação) Domínio TOTVS VSCode, ADVPL, ADVPL MVC, ADVPL Web Services e TLPP para desenvolvimento e customização.
CPA3 (Lógica de Negócios) Aprofundamento nos módulos: Compras (SIGACOM), Estoque e Custos (SIGAEST), Faturamento (SIGAFAT), Financeiro (SIGAFIN), Gestão de Pessoal (SIGAGPE)/TAF/eSocial, Ponto Eletrônico (SIGAPON), Documentos Eletrônicos no Protheus (TSS, NFe, NFSe, MDFe) e mais.

Com o Portal ProtheusAdvpl, você adquire uma visão sistêmica que é essencial para desenvolver soluções robustas e funcionais no Protheus.

🔗 Não fique para trás! Invista no seu futuro profissional: Portal ProtheusAdvpl – Cursos ADVPL e Módulos Protheus

Receba as últimas atualizações do ProtheusAdvpl
Deixe seu melhor email
Nós respeitamos sua privacidade.