M410INC
PE chamado APOS a inclusao do pedido de venda. Permite executar processamento adicional (envio email, log custom, integracao externa) com o pedido ja gravado.
Assinatura: User Function M410INC() --> Nenhum (NIL). O pedido ja foi gravado, este e ponto pos-acao.
Retorna: NIL
Modulo: SIGAFAT (Faturamento) · Rotina: MATA410 · Momento: Apos inclusao do pedido (SC5/SC6 ja gravadas)
Parametros (PARAMIXB)
// Sem PARAMIXB — SC5/SC6 ja posicionadas em xFilial+C5_NUMRetorno esperado
Nenhum (NIL). O pedido ja foi gravado, este e ponto pos-acao.
Exemplo
User Function M410INC()
// Pedido recem-criado disponivel em SC5/SC6
Local cNumPed := SC5->C5_NUM
Local cCli := SC5->C5_CLIENTE
// Envia email de confirmacao
U_EnviaConfPed(cNumPed, cCli)
// Log custom
FwLogger():Info("Pedido " + cNumPed + " incluido")
ReturnPegadinhas
- PE roda apos commit — SC5/SC6 ja persistidas. Nao adianta DisarmTransaction.
- Erro aqui nao reverte o pedido. Use try/catch pra log mas nao bloqueie fluxo.
- Posicionamento de SC5/SC6 garantido pela rotina, mas se chamar funcao que mexa em area, faca
GetArea/RestArea. - Em multipasta com varias filiais, valide
cFilAntantes de gravar em tabela compartilhada.
Quando usar
- Sincronizar registro novo com sistema externo (CRM, e-commerce, EDI)
- Gerar registros vinculados em tabelas Z customizadas
- Enviar notificacao por email/SMS apos cadastro
- Criar workflow de aprovacao
Cuidados gerais
- Erro aqui nao reverte a operacao: o registro ja foi gravado. Falha do PE deve ser apenas logada — nao tentar rollback.
- 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