🗓️ Data de publicação
09/02/2026
🎯 Objetivo
Permitir que o Ponto de Entrada MT46DTEN defina, via regra customizada, a Data de Entrega no momento de preparar o Documento de Saída, atuando tanto na rotina Documentos de Saída (MATA461) quanto no Pedido de Vendas (MATA410).
🧩 Ambiente
Produto: TOTVS Backoffice
Linha: Protheus
Módulo: Faturamento (SIGAFAT)
Rotinas impactadas:
MATA461 — Documentos de Saída
MATA410 — Pedido de Vendas
Compatibilidade: Protheus 12 (Brasil) — bases e sistemas operacionais: todos
🧠 Descrição técnica
O MT46DTEN() deve retornar uma data (Date) que será utilizada como Data de Entrega.
A customização pode identificar o contexto de execução (ex.: se a chamada vem do Pedido de Vendas ou do Documento de Saída) usando ProcName() e aplicar regras diferentes.
Assinatura esperada:
MT46DTEN() -> DATARetorno:
dDtEntrega(tipo Date)
🛠️ Exemplo de implementação (AdvPL)
#Include "Protheus.ch" #Include "Totvs.ch" User Function MT46DTEN() Local dDtEntrega := Ctod("//") // Identifica o contexto de execução Local lMata410 := ( ProcName(2) == "Ma410PvNfs" ) // Pedido de Vendas (MATA410) Local lMata461 := ( ProcName(2) == "Ma460Nota" ) // Documento de Saída (MATA461) If lMata410 // Exemplo: regra para quando a chamada vier do Pedido de Vendas dDtEntrega := Ctod("30/01/2026") EndIf If lMata461 // Exemplo: regra para quando a chamada ocorrer no Documento de Saída dDtEntrega := Ctod("30/12/2027") EndIf Return dDtEntrega
✅ Boas práticas de uso
Garanta que a data retornada seja válida e coerente com o processo (ex.: calendário de entrega, SLA, rota, transportadora).
Se a regra depender de dados do documento/pedido, busque as informações necessárias no contexto antes de montar o retorno.
Se não quiser forçar o preenchimento, retorne data vazia (
Ctod("//")) para permitir o comportamento padrão do sistema.
❓ FAQ
1) Esse PE atua somente no Documento de Saída (MATA461)?
Não. Ele pode ser executado também no Pedido de Vendas (MATA410), conforme o fluxo de preparação do documento.
2) O que devo retornar no MT46DTEN?
Uma variável Date com a data desejada para Entrega. Ex.: Ctod("30/01/2026").
3) Como diferenciar se estou no Pedido de Vendas ou no Documento de Saída?
Uma abordagem comum é validar ProcName() e aplicar regras por contexto, como no exemplo.
4) Posso aplicar regras por TES/Cliente/Filial/Transportadora?
Sim. É um uso típico: validar informações do cenário e devolver a data conforme a regra do negócio.
5) Se eu retornar data vazia, o que acontece?
Em geral o sistema seguirá o comportamento padrão (não forçando a data), dependendo do fluxo e parametrizações do cliente.
👤 Autor
Fabrizio Augusto Ventavolo
Consultor Especialista TOTVS — Mastersiga Consultoria