Bom dia a todos nesta imagem:
Tenho uma venda lançada, a 1ª venda e nesta outra imagem:
Tenho os dados do cliente e dos produtos comprados…tudo ok!!
agora vou fazer a 2ª venda:
vou clicar em Novo e uma janela totalmente em branco(ja que é uma nova venda) se abre:
preencho dos dados do cliente e forma de pagamento e em seguida clico em adicionar Produtos para adicionar os produtos(redundância) e abre-se uma pequena janela onde seleciono o produto e defino a quantidade:
tudo certo até aqui, então seleciono o primeiro produto desta nova venda e clico em add Produto, vejam o que ocorre:
aqui está buscando os dados da 1ª venda e colocando junto com os dados da 2ª
como resolver isso?
grato a todos!
Deve ter alguma variável que não está sendo limpa qdo vc inicia uma nova venda. Ao iniciar uma nova venda, vc está recriando o objeto Venda?
1 curtida
@Lucas_Camara
bom dia, sim estou aqui está o metodo chamado no momento de lançar uma nova venda:
private void novaVenda() {
venda = new Venda();
venda.setCliente(null);
venda.setFormaDePagamento(null);
dlgJanela.close();
}
Ja tentei colocar dentro deste metodo produtoVendido = new ProdutoVendido();…mas não funcionou
As vezes tem que limpar a grid (que apresenta os produtos na tela) também?
1 curtida
@Lucas_Camara
então, tanto na primeira grid: grdVenda.getDataProvider().refreshAll();
quanto na segunda grid: grid.getDataProvider().refreshAll();
tenho estes códigos para atualizar a grid
Qual é o código do listener do Add Produto (no modal)?
1 curtida
@RoinujNosde
Aqui está o código completo do metodo:
private void janelaModalVendas() {
binderProdutoVendido.setBean(new ProdutoVendido());
modalVendas.open();
modalVendas.setHeight("420px");
modalVendas.setWidth("500px");
List<Produto> listaDeProdutos = produtoRepository.findAll();
txtProdutos.setItemLabelGenerator(Produto::getNome);
txtProdutos.setItems(listaDeProdutos);
txtProdutos.addValueChangeListener(event -> {
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
try {
txtValorUnitario.setValue(formatter.format(event.getValue().getValor()));
if (txtValorUnitario.getValue() != null) {
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 {
if (txtValorUnitario.getValue() != null && txtQuantidade.getValue() != null) {
valorTotal = formatter.parse(txtValorUnitario.getValue()).doubleValue() * txtQuantidade.getValue();
}
} catch (ParseException e) {
e.printStackTrace();
}
txtValorTotalDoItem.setValue(formatter.format(valorTotal));
for (TextField tf : valores) {
try {
soma += formatter.parse(tf.getValue()).doubleValue();
} catch (ParseException e) {
e.printStackTrace();
}
}
});
btnAddProduto.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
btnAddProduto.getStyle().set("margin-top", "20px");
btnAddProduto.addClickListener(e -> {
ProdutoVendido produtoVendido = binderProdutoVendido.getBean();
produtoVendido.setProduto(txtProdutos.getValue());
produtoVendido.setQuantidade(txtQuantidade.getValue().intValue());
NumberFormat formatacao = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
try {
produtoVendido
.setValorTotalDoItem(formatacao.parse(txtValorTotalDoItem.getValue().toString()).doubleValue());
} catch (ParseException e1) {
e1.printStackTrace();
}
venda.addProduto(produtoVendido.getProduto(), produtoVendido.getQuantidade(),
produtoVendido.getProduto().getValor(), produtoVendido.getValorTotalDoItem());
addClickModal();
grid.getDataProvider().refreshAll();
campoSomaValores.setValue(formatacao.format(venda.recuperarValorTotal()));
binderProdutoVendido.setBean(new ProdutoVendido());
txtProdutos.clear();
txtQuantidade.clear();
txtValorUnitario.clear();
txtValorTotalDoItem.clear();
});
btnFecharModal.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
btnFecharModal.getStyle().set("margin-top", "20px");
btnFecharModal.addClickListener(e -> {
modalVendas.close();
});
hltBarraBotoesModal.add(btnAddProduto, btnFecharModal);
layoutVendaDeProdutosModal.add(txtProdutos, txtQuantidade, txtValorUnitario, txtValorTotalDoItem,
hltBarraBotoesModal);
modalVendas.add(layoutVendaDeProdutosModal);
valores.add(txtValorTotalDoItem);
}
@RoinujNosde
mas se preferir tem aqui o código apenas do botão que add o produto na grid:
btnAddProduto.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
btnAddProduto.getStyle().set("margin-top", "20px");
btnAddProduto.addClickListener(e -> {
ProdutoVendido produtoVendido = binderProdutoVendido.getBean();
produtoVendido.setProduto(txtProdutos.getValue());
produtoVendido.setQuantidade(txtQuantidade.getValue().intValue());
NumberFormat formatacao = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
try {
produtoVendido
.setValorTotalDoItem(formatacao.parse(txtValorTotalDoItem.getValue().toString()).doubleValue());
} catch (ParseException e1) {
e1.printStackTrace();
}
venda.addProduto(produtoVendido.getProduto(), produtoVendido.getQuantidade(),
produtoVendido.getProduto().getValor(), produtoVendido.getValorTotalDoItem());
addClickModal();
grid.getDataProvider().refreshAll();
campoSomaValores.setValue(formatacao.format(venda.recuperarValorTotal()));
binderProdutoVendido.setBean(new ProdutoVendido());
txtProdutos.clear();
txtQuantidade.clear();
txtValorUnitario.clear();
txtValorTotalDoItem.clear();
});
Parece que o problema é essa lista.
Limpe ela depois que finalizar a venda.
listaVendidosModal.clear();
1 curtida
@RoinujNosde
Deu certo!!! Muito obg mais uma vez!!!
@Lucas_Camara
obg a vc tbm!!!
1 curtida