Na imagem acima, vejam que tudo está ok…os produtos, as quantidades, valor unitario, valor total do item…na parte inferior a soma dos produtos está ok tbm…então clico em salvar, tenho este resultado:
Que tbm está correto, pois só consegui implementar(com grandiosa ajuda de pessoas aqui do fórum) a lógica para salvar os produtos.
Então tentei fazer a mesma coisa para quantidade, unitario e total no que foi feito para produtos
o código para produtos está aqui:
txtProdutos.setWidth("370px"); //txtProdutos é o comboBox onde escolho o produto a ser vendido
txtProdutos.setLabel("Produtos");
List<Produto> listaDeProdutos = produtoRepository.findAll();
txtProdutos.setItemLabelGenerator(Produto::getNome);
txtProdutos.setItems(listaDeProdutos);
txtProdutos.addValueChangeListener(event -> {
venda.addProduto(txtProdutos.getValue()); //aqui onde chamo o metodo que está na entidade Venda e adiciono o Produto a venda
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
try {
txtValorUnitario.setValue(formatter.format(event.getValue().getValor()));
} catch (Exception e) {
e.printStackTrace();
}
});
Tentando aplicar o mesmo esquema para quantidade por exemplo:
Acho que faz mais sentido passar um ProdutoVendido no método addProduto de Venda.
Nessa classe deve ter um campo para a quantidade vendida e o valor total.
public void addProduto(ProdutoVendido produtoVendido) {
ProdutoVendido produtoVenda = new ProdutoVendido(id, null, null, valorTotalVenda, valorTotalVenda,
valorTotalVenda); // Isso aqui já não faz sentido. Já está vindo um ProdutoVendido como argumento, não precisa criar outro. Só deletar essa linha e usar o que o método pede.
produtos.add(produtoVenda);
}
public void addProduto(ProdutoVendido produto) {
produtos.add(produto);
}
E sim, isso vai causar erro em outras áreas. Antes era Produto, agora é ProdutoVendido. Tem que mudar o outro trecho para passar um ProdutoVendido vendido.
Você não sabe ver o retorno de um método? Geralmente passando o mouse por cima do método, o IDE vai mostrar alguns detalhes.
No caso do seu “getValue()” que mostrou no erro, deve ser algo assim: public Double getValue()
Ou seja, o método vai retornar um Double e você tá passando para um método que pede outra coisa.