Delphi Aumentando Valor
09/02/2006
0
Estou com um problema em alguns clientes. Quando o cliente faz uma venda com valor de 10.20 centavos na gravação no banco (firebird) fica assim 1020.00. Como se ele estivesse multiplicando por 100.00. Isso acontece algumas vezes em alguns clientes.
Isto começou a acontecer a tres meses.
Use delphi7 e firebird.
O que pode ser ?
Grato
Marcos Roberto
Marcosrodias
Posts
09/02/2006
Edilcimar
09/02/2006
Marcosrodias
Ai os valores estão na variavel frVenFechaVenda.rPrCartao e nas outras seguntes. Geralmente grava essa variável errada mas acontece com as outras tambem.
São Variavies Privadas.
dsTabela.IBQVendaTotal.Close ;
dsTabela.IBQVendaTotal.SQL.Clear ;
dsTabela.IBQVendaTotal.SQL.Add(´Insert Into Venda_Total´) ;
dsTabela.IBQVendaTotal.SQL.Add(´(Numero_Venda, Codigo_Filial, Codigo_Serie, Codigo_Cliente, Cupom_Fiscal,´+
´ Codigo_Usuario, Data, Situacao, Valor_Total, Valor_Liquido, Valor_Troca,´+
´ Valor_Desconto, Percentual_Desconto, Valor_Acrescimo, Percentual_Acrescimo,´+
´ Pago_Dinheiro, Pago_Cartao, Pago_Cheque, Pago_Cheque_Pre, Pago_Crediario,´);
If (frVenParametro.bprNotaFiscal) And (gsTipoVenda = ´Venda´) Then
Begin
dsTabela.IBQVendaTotal.SQL.Add(´ Pago_Ticket, Pago_Faturada, Pago_Convenio, Pago_Outros, Obs, Valor_Arredonda, Flag,´+
´ Cfop, Codigo_Transportador, Valor_Frete, Valor_Seguro, Valor_Despesas)´);
End
Else
Begin
dsTabela.IBQVendaTotal.SQL.Add(´ Cfop, Pago_Ticket, Pago_Faturada, Pago_Convenio, Pago_Outros, Obs, Valor_Arredonda, Flag)´);
End;
dsTabela.IBQVendaTotal.SQL.Add(´Values´+
´(:Numero_Venda, :Codigo_Filial, :Codigo_Serie, :Codigo_Cliente, :Cupom_Fiscal,´+
´ :Codigo_Usuario, :Data, :Situacao, :Valor_Total, :Valor_Liquido, :Valor_Troca,´+
´ :Valor_Desconto, :Percentual_Desconto, :Valor_Acrescimo, :Percentual_Acrescimo,´+
´ :Pago_Dinheiro, :Pago_Cartao, :Pago_Cheque, :Pago_Cheque_Pre, :Pago_Crediario,´);
If (frVenParametro.bprNotaFiscal) And (gsTipoVenda = ´Venda´) Then
Begin
dsTabela.IBQVendaTotal.SQL.Add(´ :Pago_Ticket, :Pago_Faturada, :Pago_Convenio, :Pago_Outros, :Obs, :Valor_Arredonda, :Flag,´+
´ :Cfop, :Codigo_Transportador, :Valor_Frete, :Valor_Seguro, :Valor_Despesas)´);
End
Else
Begin
dsTabela.IBQVendaTotal.SQL.Add(´ :Cfop, :Pago_Ticket, :Pago_Faturada, :Pago_Convenio, :Pago_Outros, :Obs, :Valor_Arredonda, :Flag)´);
End;
dsTabela.IBQVendaTotal.ParamByName(´Numero_Venda´).AsInteger := iNumeroVenda ;
dsTabela.IBQVendaTotal.ParamByName(´Codigo_Filial´).AsInteger := iFilial ;
dsTabela.IBQVendaTotal.ParamByName(´Codigo_Serie´).AsInteger := iSerie ;
dsTabela.IBQVendaTotal.ParamByName(´Codigo_Cliente´).AsInteger := frVenOrcamento.pbCliente.AsInteger ;
dsTabela.IBQVendaTotal.ParamByName(´Cupom_Fiscal´).AsInteger := 0 ;
dsTabela.IBQVendaTotal.ParamByName(´Codigo_Usuario´).AsInteger := giCodigoUsuario ;
If frVenParametro.bPuSeFormularioContinuo Then
dsTabela.IBQVendaTotal.ParamByName(´Data´).AsString := gsDataPadrao
Else
dsTabela.IBQVendaTotal.ParamByName(´Data´).AsString := frVenNotaTalao.meDataVenda.Text ;
dsTabela.IBQVendaTotal.ParamByName(´Situacao´).AsString := ´E´ ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Total´).AsFloat := frVenFechaVenda.pbTotalVenda.AsFloat ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Liquido´).AsFloat := frVenFechaVenda.pbTotalLiquido.AsFloat ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Troca´).AsFloat := frVenOrcamento.pbTroca.AsFloat ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Desconto´).AsFloat := ArredondaValor(frVenFechaVenda.rPrDesconto,2) ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Acrescimo´).AsFloat := ArredondaValor(frVenFechaVenda.rPrAcrescimo,2);
dsTabela.IBQVendaTotal.ParamByName(´Percentual_Acrescimo´).AsFloat := ArredondaValor(frVenFechaVenda.rPrPercAcrescimo,2) ;
dsTabela.IBQVendaTotal.ParamByName(´Percentual_Desconto´).AsFloat := ArredondaValor(frVenFechaVenda.rPrPercDesconto,2) ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Dinheiro´).AsFloat := frVenFechaVenda.rPrDinheiro - frVenFechaVenda.pbFalta.AsFloat ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Cartao´).AsFloat := frVenFechaVenda.rPrCartao ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Cheque´).AsFloat := frVenFechaVenda.rPrCheque ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Cheque_Pre´).AsFloat := frVenFechaVenda.rPrChequePre ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Crediario´).AsFloat := frVenFechaVenda.rPrCrediario ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Ticket´).AsFloat := frVenFechaVenda.rPrTicket ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Faturada´).AsFloat := frVenFechaVenda.rPrFaturado ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Convenio´).AsFloat := frVenFechaVenda.rPrConvenio ;
dsTabela.IBQVendaTotal.ParamByName(´Pago_Outros´).AsFloat := frVenFechaVenda.rPrOutros ;
dsTabela.IBQVendaTotal.ParamByName(´Obs´).AsString := gsObs ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Arredonda´).AsFloat := frVenFechaVenda.rPrArredonda ;
dsTabela.IBQVendaTotal.ParamByName(´Flag´).AsString := ´ ´ ;
If (frVenParametro.bprNotaFiscal) And (gsTipoVenda = ´Venda´) Then
Begin
ConsultaCFOP(frVenOrcamento.iPuNaturezaTmp) ;
dsTabela.IBQVendaTotal.ParamByName(´Cfop´).AsFloat := dsTabela.IBQCfopVALOR.AsFloat ;
dsTabela.IBQVendaTotal.ParamByName(´Codigo_Transportador´).AsInteger := frVenNotaFinal.pbTransportador.AsInteger ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Frete´).AsFloat := frVenNotaFinal.pbFrete.AsFloat ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Seguro´).AsFloat := frVenNotaFinal.pbSeguro.AsFloat ;
dsTabela.IBQVendaTotal.ParamByName(´Valor_Despesas´).AsFloat := frVenNotaFinal.pbDespesas.AsFloat ;
End
Else
Begin
dsTabela.IBQVendaTotal.ParamByName(´Cfop´).AsFloat := 5.101 ;
End;
dsTabela.IBQVendaTotal.ExecSQL ;
09/02/2006
Edilcimar
valorpago := insttostr(edit1.text) -> esta seria a conta onde o string é transformado na variável que está dando erro, caso a mesma seja pega de contas em que o valor desconto, parte do pagamento em dinheiro, cheque, cartão ou outros também tem que ser verificado
09/02/2006
Marcosrodias
E muito obrigado por esta me ajudando.
Para carregas as varíaveis faço o seguinte.
--> frVenFechaVenda.rPrDinheiro := frVenFechaVenda.pbValor.AsFloat ;
Isto para todas as quase todas as variávies porque algumas carrego do componente pbnumedit onde fica armazendado os valores. Veja abaixo.
frVenFechaVenda.pbTotalVenda.AsFloat := (frVenFechaVenda.rPrDinheiro + frVenFechaVenda.rPrCartao + frVenFechaVenda.rPrCheque + frVenFechaVenda.rPrChequePre +
frVenFechaVenda.rPrCrediario + frVenFechaVenda.rPrTicket + frVenFechaVenda.rPrFaturado + frVenFechaVenda.rPrConvenio +
frVenFechaVenda.rPrOutros) ;
Nunca tive problema com esse componente. Voce pode observar que na verdade eu pegos os valores do pbnumedit e carrego nas variaveis. Me parece que o problema tá exatamente ai. Segundo os clientes na tela os valores aparecem correto mas quando grava no banco acontece a situacao que informei anteriormente. Isto é no mes acontece 3 ou 4 vezes. Não conseguir simular isso de jeito nehum. O pessoal acredito que tem a ver com configuraçção regional do windows mas isso é muito esquisito.
Um abraço
Marcos
Obrigado
09/02/2006
Edilcimar
09/02/2006
Marcosrodias
ThousandSeparator := ´,´ ;
DecimalSeparator :=´.´;
Será que o delphi está se perdendo ?
Marcos
09/02/2006
Cabelo
marcos...
utilize as funções antes de gravar... onde vc dá um commit no banco..
09/02/2006
Edilcimar
Clique aqui para fazer login e interagir na Comunidade :)