🧾 PE MT46DTEN — Definir Data de Entrega nos Documentos de Saída (MATA461)

🗓️ 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

  1. Crie/edite um fonte customizado no seu repositório (ex.: U_MT46DTEN.prw).

  2. Implemente a função User Function MT46DTEN() retornando uma data válida.

  3. Compile o fonte e atualize o RPO no AppServer.

  4. 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


Atualizado em 09/02/2026
Este artigo foi útil?  
Agradecemos sua avaliação.