MA410VLD
PE de validacao do CANCELAMENTO de inclusao/alteracao/exclusao do pedido. Retorne .F. pra bloquear o cancelamento e forcar usuario a confirmar.
Assinatura: User Function MA410VLD()
// PARAMIXB[1] (nOpcao):
Return // .T. = permite cancelar a operacao; .F. = nao permite cancelar (volta pra tela)
Retorna: .T. = permite cancelar a operacao; .F. = nao permite cancelar (volta pra tela)
Modulo: SIGAFAT · Rotina: MATA410 · Momento: Quando usuario clica botao Cancelar no pedido
Parametros (PARAMIXB)
// PARAMIXB[1] = nOpcao
// 1 = Inclusao/Alteracao
// 2 = ExclusaoRetorno esperado
.T. = permite cancelar a operacao; .F. = nao permite cancelar (volta pra tela)
Exemplo
User Function MA410VLD()
Local nOpc := PARAMIXB[1]
Local lRet := .T.
If nOpc == 1 // Incluindo/Alterando
If !ApMsgYesNo("Deseja realmente cancelar?", "Confirmacao")
lRet := .F. // nao cancela
EndIf
EndIf
Return lRetPegadinhas
- Confusao classica: cancelar a operacao != cancelar o pedido. Aqui significa "descartar a edicao atual".
- Retorno .F. volta pra tela sem perguntar de novo — pode irritar usuario.
- Fonte oficial: DR PE MA410VLD.
Quando usar
- Aplicar regras de negocio antes da gravacao (validacao fiscal, comercial, contratual)
- Bloquear operacao em horarios especificos
- Validar campos obrigatorios condicionais (só obrigatorio se X)
- Verificar permissao de usuario em operacoes sensiveis
Cuidados gerais
- Em ExecAuto: validacoes em PE podem disparar com comportamento diferente — testar separadamente.
- Mensagem de bloqueio: ao retornar
.F., useHelp()pra explicar o motivo. Sem Help, usuario fica confuso sem saber o que aconteceu. - 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, SC9
Veja tambem
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
PARAMIXB[1] (nOpcao) | Numeric | sim |