MT100GRV
PE durante GRAVACAO do documento de entrada (MATA100). Acessa cabecalho/itens em M-> antes do commit pra ajustes ou validacoes.
Assinatura: User Function MT100GRV() --> NIL — exit se erro
Retorna: NIL — exit se erro
Modulo: SIGACOM · Rotina: MATA103/MATA100 · Momento: Pre-commit da Nota Fiscal de Entrada — M-> populado, ainda nao gravado
Parametros (PARAMIXB)
// Sem PARAMIXB. Acessa M->F1_xxx (cab) e aCols (itens)Retorno esperado
NIL — exit se erro
Exemplo
User Function MT100GRV()
// Validar serie autorizada do fornecedor
If !U_VldSerie(M->F1_FORNECE, M->F1_LOJA, M->F1_SERIE)
Help(" ", 1, "F1_SERIE", , "Serie nao autorizada", 1, 0)
Return
EndIf
// Ajustar campo custom calculado
M->F1_XPRAZO := dDataBase + M->F1_VENCREAL
ReturnPegadinhas
- Trabalha em M-> (memoria) — alteracoes valem se PE retornar normal.
- Help() retorna sem confirmar — usuario nao consegue gravar.
- PE dispara em MATA103 (NF entrada) e variantes — checar rotina via FunName().
Quando usar
- Ajuste de campos calculados antes do commit
- Validacao final consolidada (regras que envolvem multiplos campos)
- Override de valores default
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
- SF1 — NF de entrada (geralmente posicionada quando PE dispara)
- Relacionadas: SD1