Uma ajuda/esclarecimento por favor.
Em uma comparação de variáveis numéricas, as vezes, repito, apenas as vezes, o sistema não faz a comparação corretamente.
Na rotina do Contas a Receber, onde o usuário seleciona o cliente e assim executa a busca de documentos não quitados para efetuar a baixa/quitação, me deparo com o seguinte cenário:
1.Efetuo a soma dos documentos abertos e atribuo a variável M->nReceber.
2.Em seguida solicito na tela o valor RECEBIDO atribuindo a variável M->nRecebido.
3.E então comparo se o valor recebido é menor do que o valor a receber, verificando se é uma quitação com desconto.
4.O erro da comparação surge as vezes quando os valores são idênticos, mas o sistema os reconhece mesmo assim como um menor que o outro, entrando na condição de Quitação com desconto sem ela ser. Exemplo:
M->nReceber = 500,00 e M->nRecebido = 500,00
Código: Selecionar todos
M->nCodClie := 1519 &&-->Exemplo apenas. Ele é obtido através de função de busca.
M->nRecebido := nReceber := 0
*
Select RECEBER
OrdSetFocus("COD_CLIE")
OrdScope(0, M->nCodClie)
OrdScope(1, M->nCodClie)
Go Top
*
Do While !Eof()
If RECEBER->PAGO <> "Q"
M->nReceber := M->nReceber + ( RECEBER->VALOR + RECEBER->MULTA)
EndIf
Skip
EndDo
@ 12,11 Say "Valor a Receber:"
@ 12,28 Say M->nReceber Pict "@E 999,999.99" Color "Gr+/B"
*
@ 14,11 Say "Valor Recebido:" Get M->nRecebido Pict "@E 999,999.99"
Read
If M->nRecebido < M->nReceber
M->tConfirma := "N"
Pergunta("Quitação com desconto (S/N)?", M->tConfirma)
...
...
...
EndIf
...
...
...
...
Abraço.




