🗓️ Data de publicação
09/02/2026
🎯 Objetivo
Permitir que a rotina Documentos de Saída (MATA461) utilize um Ponto de Entrada (PE) MT46DTEN para definir a Data de Entrega de forma personalizada, conforme a regra do cliente (ex.: por tipo de operação, transportadora, rota, prioridade, etc.).
🧩 Ambiente
Produto: TOTVS Backoffice
Linha: Protheus
Segmento: Backoffice SP
Módulo: Faturamento (SIGAFAT)
Rotina: Documentos de Saída (MATA461)
🧠 Como funciona
O MT46DTEN é um ponto de entrada que deve retornar uma data (tipo Date) para ser utilizada como Data de Entrega no fluxo de emissão/atualização dos documentos de saída.
Você pode diferenciar o comportamento conforme o contexto de chamada (por exemplo, quando a origem vier do Pedido de Venda ou diretamente do Documento de Saída), usando ProcName().
🛠️ Implementação
✅ Passo a passo
Crie/edite um fonte customizado no seu repositório (ex.:
U_MT46DTEN.prw).Implemente a função
User Function MT46DTEN()retornando uma data válida.Compile o fonte e atualize o RPO no AppServer.
Teste a rotina MATA461 e valide se a Data de Entrega está sendo assumida conforme sua regra.
💻 Exemplo de código (AdvPL)
#Include "Protheus.ch" #Include "Totvs.ch" User Function MT46DTEN() Local dDtEntrega := Ctod("//") // Identifica o contexto de execução (exemplos comuns) Local lMata410 := ( ProcName(2) == "Ma410PvNfs" ) // Pedido de Vendas Local lMata461 := ( ProcName(2) == "Ma460Nota" ) // Documento de Saída If lMata410 // Exemplo: regra para quando vier do Pedido de Venda dDtEntrega := Ctod("30/01/2026") EndIf If lMata461 // Exemplo: regra para quando estiver no Documento de Saída dDtEntrega := Ctod("30/12/2027") EndIf Return dDtEntrega
🔎 Validação recomendada
Acesse a MATA461 e gere/atualize um documento de saída.
Confira se a Data de Entrega foi preenchida conforme sua regra.
Se houver mais de um cenário (pedido x documento), valide ambos.
❓ FAQ
1) O que acontece se eu retornar Ctod("//") (data vazia)?
Geralmente a rotina seguirá o comportamento padrão (sem forçar uma data), dependendo do fluxo/parametrizações do cliente.
2) Posso calcular a Data de Entrega com base em campos do documento/pedido?
Sim. O ideal é buscar dados do contexto (áreas/tabelas em uso) e calcular a data conforme a regra (prazo, calendário, transportadora, etc.).
3) Como eu diferencio se estou no Pedido de Venda ou no Documento de Saída?
Uma abordagem comum é usar ProcName() (como no exemplo) para identificar o fluxo de chamada.
4) Posso usar esse PE para aplicar regras por filial/cliente/tipo de operação?
Sim. É um uso típico: validar filial, TES, cliente, transportadora, UF, prioridade, etc., e retornar a data adequada.
5) Preciso reiniciar o AppServer após compilar?
Depende do seu processo de atualização de RPO. Se o ambiente exigir reload/restart para assumir o novo RPO, reinicie.
👤 Autor
Fabrizio Augusto Ventavolo
Consultor Especialista TOTVS — Mastersiga Consultoria