Bom dia a todos, estou fazendo uma tela de vendas, quando vou add os produtos para realizar a venda, tudo está certo…veja na imagem abaixo:
Placa Mãe, quantidade, valor unitario, e valor total do item
Processador, quantidade, valor unitario, e valor total do item
Memoria, quantidade, valor unitario, e valor total do item
após salvar, quando faço um consulta da venda, para ver os produtos vendidos, eles estão assim:
Eu não entendo o motivo, uma vez que eu “clonei” o código de add produtos, dentro do metodo montarListaProdutos
vejam:
Código para adicionar produtos: (este está certinho)
private void adicionaProduto() {
ComboBox<Produto> txtProdutos = new ComboBox<>();
NumberField txtQuantidade = new NumberField("Quantidade");
TextField txtValorUnitario = new TextField("Valor Unitário");
TextField txtValorTotalItem = new TextField("Valor Total Item");
txtProdutos.setWidth("370px");
txtProdutos.setLabel("Produtos");
List<Produto> listaDeProdutos = produtoRepository.findAll();
txtProdutos.setItemLabelGenerator(Produto::getNome);
txtProdutos.setItems(listaDeProdutos);
txtProdutos.addValueChangeListener(event -> {
venda.addProduto(txtProdutos.getValue());
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
try {
txtValorUnitario.setValue(formatter.format(event.getValue().getValor()));
} catch (Exception e) {
e.printStackTrace();
}
});
// ==========================================================================================================================
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 soma = 0;// interna
for (TextField tf : valores) {
try {
soma += formatter.parse(tf.getValue()).doubleValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
campoSomaValores.setValue(formatter.format(soma));// externa
});
adicionarProdutos = new HorizontalLayout();
adicionarProdutos.add(txtProdutos, txtQuantidade, txtValorUnitario, txtValorTotalItem);
centro.add(adicionarProdutos);
valores.add(txtValorTotalItem);
}
Código montaListaProdutos
private void montarListaProdutos(List<ProdutoVendido> produtosVendidos) {
adicionarProdutos2 = new HorizontalLayout();
for (ProdutoVendido pv : produtosVendidos) {
adicionarProdutos2.add(new TextField("Produtos:", (pv.getProduto().getNome())));
adicionarProdutos2.add(new TextField("Quantidade:", String.valueOf(pv.getQuantidade())));
adicionarProdutos2.add(new TextField("Valor Unitário:", String.valueOf(pv.getValorUnitario())));
adicionarProdutos2.add(new TextField("Valor Total Item:", String.valueOf(pv.getValorTotalItem())));
adicionarProdutos2.getElement();
}
centro.add(adicionarProdutos2);
}
Alguem tem alguma ideia para dar, para que o mesmo comportamento de adicionarProdutos se repita em montarListaProdutos?
Obg desde já