Boa tarde a todos, segue o erro
Notem que o valor total item de cada produto está correto (6 gabinetes a R$ 5.333,22 cada, valor total Item: R$ 31.999,32) o segundo item tbm está correto…vejam que na parte inferior há o campo valor total da compra, porém em vez dele somar todos os campos “valor total item” ele está substituindo pelo próximo produto add.
Nesta imagem o valor total da compra deveria ser por exemplo: R$ 53.175,56
não consegui achar meu erro, tenho certeza de que é alguma coisa simples que esqueci de colocar no código…se alguém puder me ajudar…fico grato…muito obg a todos
este é o trecho do código que creio onde está o problema:
txtQuantidade.setHasControls(true);
txtQuantidade.setValue(null);
txtQuantidade.setMin(1);
txtQuantidade.addValueChangeListener(event -> {
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
double valorTotal = 0;
try {
valorTotal = formatter.parse(txtValorUnitario.getValue()).doubleValue() * txtQuantidade.getValue();
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
txtValorTotalItem.setValue(formatter.format(valorTotal));
campoSomaValores.setValue(formatter.format(++valorTotal));
});
Sua variável valorTotal está recebendo os valores de txtValorUnitario que acredito ser a variável do item juntamente com a txtQuantidade. Quando na verdade você teria que pegar todos os valores unitários de TODOS os produtos e multiplicar pelas respectivas quantidades, e no final somar tudo então assim você pode atribuir este valor a sua variável valorTotal.
1 curtida
@GabrielA2
obg por sua resposta…vou ver se consigo arrumar aqui
E acredito que seja aqui que você esteja setando o valor no campo do valor final, perceba que ele só atribui o valor da variavel valorTotal, que no caso é de apenas um item.
Você pode criar uma lista e toda vez que um item for adicionado ou removido você adiciona/tira dessa lista, pensando mais além ainda seria interessante vc criar uma interface pra esse produto cria uma classe Produto.class, faça valores base como id, valor, quantidade, etc…E posteriormente você pode trabalhar com a classe Produto que já irá retornar todas as variáveis que você declarou do produto.
1 curtida
Alguma outra ideia de como resolver? Tentei fazer como o @GabrielA2 disse, mas não funcionou (não sei se fiz certo tbm)
Acredito que você não deve ter executado da forma que falei, por que em teoria, o valor final de uma compra é a soma de todos os valores totais de todos os itens da compra. Posta seu código ai…
1 curtida
@GabrielA2
txtQuantidade.setHasControls(true);
txtQuantidade.setValue(null);
txtQuantidade.setMin(1);
txtQuantidade.addValueChangeListener(event -> {
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
double valorTotal = 0;
try {
valorTotal = formatter.parse(txtValorUnitario.getValue()).doubleValue() * txtQuantidade.getValue();
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
txtValorTotalItem.setValue(formatter.format(valorTotal));
campoSomaValores.setValue(formatter.format(valorTotal*txtQuantidade.getValue()));
});
tbm tentei isto:
txtQuantidade.setHasControls(true);
txtQuantidade.setValue(null);
txtQuantidade.setMin(1);
txtQuantidade.addValueChangeListener(event -> {
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
double valorTotal = 0;
try {
valorTotal = formatter.parse(txtValorUnitario.getValue()).doubleValue() * txtQuantidade.getValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
txtValorTotalItem.setValue(formatter.format(valorTotal));
double somaValores = 0;
somaValores += valorTotal;
campoSomaValores.setValue(formatter.format(somaValores));
});
@GabrielA2
Resolvi o problema, declarando a variavel somaValores bem no começo do programa…e tudo está funcionando…muito obg por sua ajuda!!!
txtQuantidade.setHasControls(true);
txtQuantidade.setValue(null);
txtQuantidade.setMin(1);
txtQuantidade.addValueChangeListener(event -> {
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
double valorTotal = 0;
try {
valorTotal = formatter.parse(txtValorUnitario.getValue()).doubleValue() * txtQuantidade.getValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
txtValorTotalItem.setValue(formatter.format(valorTotal));
somaValores += valorTotal;
campoSomaValores.setValue(formatter.format(somaValores));
});
1 curtida
Boa, era isso que estava te tentando falar!
1 curtida