Lucas_Camara 26 de mai. de 2021 1 like
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 ?
rafaspara2017 26 de mai. de 2021
@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
Lucas_Camara 26 de mai. de 2021 1 like
As vezes tem que limpar a grid (que apresenta os produtos na tela) também?
rafaspara2017 26 de mai. de 2021
@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
RoinujNosde 26 de mai. de 2021 1 like
Qual é o código do listener do Add Produto (no modal)?
rafaspara2017 26 de mai. de 2021
@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 );
}
rafaspara2017 26 de mai. de 2021
@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 ();
});
Solucao aceita
RoinujNosde 26 de mai. de 2021 1 like
Parece que o problema é essa lista.
Limpe ela depois que finalizar a venda.
listaVendidosModal.clear();
rafaspara2017 26 de mai. de 2021 1 like
@RoinujNosde
Deu certo!!! Muito obg mais uma vez!!!
@Lucas_Camara
obg a vc tbm!!!