MT410PED
PE no fim do processamento do pedido (TudoOk). Util pra ajustar campos calculados, gerar numeracao customizada ou criar registros vinculados.
Assinatura: User Function MT410PED() --> NIL
Retorna: NIL
Modulo: SIGAFAT · Rotina: MATA410 · Momento: Apos confirmacao do TudoOk (validacao final), antes da gravacao
Parametros (PARAMIXB)
// Sem PARAMIXB. M-> com valores em digitacaoRetorno esperado
NIL
Exemplo
User Function MT410PED()
// Calcular campo custom baseado nos dados do cabecalho
If !Empty(M->C5_VEND1)
M->C5_XCOMVD := U_CalcComVen(M->C5_VEND1, M->C5_VEND1)
EndIf
ReturnPegadinhas
- Trabalha com vars M-> (memoria), nao SC5/SC6 ainda gravadas.
- Erro aqui cancela o pedido. Use validacao defensiva.
- Pra alterar campos calculados, basta atribuir em M->.
Quando usar
- Customizacao da rotina padrao Protheus
Cuidados gerais
- Idempotencia: PEs podem disparar mais de uma vez em retry ou reprocessamento — codigo deve ser seguro pra rodar varias vezes sem efeito colateral.
- Performance critica: PE roda em fluxo do usuario. Operacoes pesadas (loop sobre milhares de registros, chamada HTTP sincrona) podem travar a tela. Use
StartJobpra background. - Em JOB sem AppServer ativo: PE chamado via RPC pode ter
cFilAnt/cEmpAntvazios — sempre garantaRpcSetEnv. - Begin Sequence + Recover: erros nao tratados em PE podem deixar transacao Protheus em estado inconsistente. Sempre envolver em
Begin Sequence ... End Sequence. - Logging com contexto: use
FwLoggercom identificacao do PE no log — facilita troubleshooting.
Tabelas afetadas
- SC5 — pedido de venda (geralmente posicionada quando PE dispara)
- Relacionadas: SC6