Ficou esquisita, mas funcionou.
Só pra eliminar o uso de macro..... rs
Aproveitei pra acrescentar a primeira parcela que era separada.
Código: Selecionar todos
FOR EACH oElement, oNumElement IN oParcelas, { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 }
@ Row()+1, 2 SAY "Parcela " + StrZero( oElement:__EnumIndex, 2 ) + ".:"
IF oElement:__EnumIndex == 1
@ Row(), Col() + 2 GET oElement[ 2 ] ;
WHEN lAltera ;
VALID ! " " $ Dtoc( oElement[ 2 ] ) .AND. CalcDias( mnfDatEmi, oElement[ 2 ], @oElement[ 3 ] )
@ Row(), Col() + 2 SAY "(Dias)" GET oElement[ 3 ] PICTURE "999" ;
WHEN lAltera ;
VALID CalcVencto( mnfDatEmi, @oElement[ 2 ], oElement[ 3 ] )
@ Row(), Col() + 2 GET oElement[ 1 ] PICTURE PicVal(14,2) ;
WHEN lAltera ;
VALID ( NFRecalcula( nValorTotal, oParcelas, mQtd ) .AND. oElement[ 1 ] <> 0 ) .OR. LastKey() == 5
ELSE
@ Row(), Col()+2 GET oElement[ 2 ] ;
WHEN lAltera .AND. ! " " $ Dtoc( oParcelas[ oNumElement - 1, 2 ] ) ;
VALID CalcDias( mnfDatEmi, oElement[ 2 ], @oElement[ 3 ] )
@ Row(), Col()+2 SAY "(Dias)" GET oElement[ 3 ] PICTURE "999" ;
WHEN lAltera .AND. ! " " $ Dtoc( oElement[ 2 ] ) ;
VALID CalcVencto( mnfDatEmi, @oElement[ 2 ], oElement[ 3 ] )
@ Row(), Col()+2 GET oElement[ 1 ] PICTURE PicVal(14,2) ;
WHEN lAltera .AND. ! " " $ Dtoc( oElement[ 2 ] ) ;
VALID ( NFRecalcula( nValorTotal, oParcelas, mQtd ) .AND. oElement[ 1 ] <> 0 ) .OR. LastKey() == 5
ENDIF
NEXT
Isso é pra isto:
Além das diversas opções de prazos, alguns esquisitos por sinal, também dá pra alterar manual.
Dependendo de senha apenas mostra, e não deixa alterar nada.
Conforme vai preenchendo vai recalculando.
- pode colocar data de vencimento em data
- pode colocar vencimento em quantidade de dias, já calcula data
- pode escolher valores das parcelas, já vai recalculando o saldo restante
- se digitar em branco, considera encerrado, assim o usuário só preenche o que precisa
- pode passear por todos os valores e datas
Deu certo esse FOR EACH com duas variáveis, não dá erro na função STATIC, por não ter mais macro.
No final o segundo elemento é só porque em determinado ponto verifico elemento anterior, e precisava identificar isso de alguma forma.
Só pra eliminar o uso de macro em GET, que me gerou problemas.