(Resolvido)2ª venda, buscando dados da 1ª Venda

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