MA440PARC
PE pra customizar geracao de parcelas (duplicatas) em emissao de NF. Retorna array com vencto/valor/parcela.
Assinatura: User Function MA440PARC() --> Array {dVencto, nValor, cParcela}
Retorna: Array {dVencto, nValor, cParcela}
Modulo: SIGAFAT · Rotina: MATA440 · Momento: Durante calculo de parcelas na NF
Parametros (PARAMIXB)
Este PE nao recebe parametros via PARAMIXB. A tabela alvo ja esta posicionada quando o PE dispara — opere via (ALIAS)->CAMPO.
Retorno esperado
Array {dVencto, nValor, cParcela}
Exemplo
User Function MA440PARC()
Local aParc := {}
// Cliente VIP: prazo dobrado
If SA1->A1_GRPVEN == "VIP"
aAdd(aParc, {dDataBase + 60, M->F2_VALMERC * 0.5, "01"})
aAdd(aParc, {dDataBase + 90, M->F2_VALMERC * 0.5, "02"})
EndIf
Return aParcPegadinhas
- Retornar vazio = usa parcela padrao do sistema.
- Soma deve bater exatamente F2_VALMERC.
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
- SF2 — emissao de NF (geralmente posicionada quando PE dispara)
- Relacionadas: SD2, SE1, SC9