Boa noite galera, estou com um erro que parece simples, mas pra quem iniciou agora na área (EU), está difícil de achar o erro ( Acredito que esteja em minha lógica já testei de tudo e nada mudou ) Seguinte o erro:
Fiz um programa pequeno para controle de estoque, consigo cadastrar meus produtos, minhas vendas e tudo mais, o erro está quando vou cadastrar uma venda, se eu faço a venda o campo valorTotal não subtrai meu valor que eu dou de desconto, mas ai eu salvo a venda, ok ele abaixou do meu estoque o produto eu tinha 10 vendi 5 fiquei com 5 só que se eu vou la e altero esta venda a quantidade que eu vendi é adicionada no estoque ai em vez de continuar com 5 ele adiciona 5 e fico com 10 sendo que vendi 5… doideira né?! Alguém de bom coração quiser ver meu código e ajudar agradeço muito…
* Creates new form ViewVendas
*/
public ViewVendas() {
initComponents();
listarClientes();
listarProdutos();
carregarVendas();
preencherCodigoClientePeloComboBox();
preencherCodigoProdutosPeloComboBox();
desabilitaHabilitaCampos(false);
}
pack();
setLocationRelativeTo(null);
}// </editor-fold>
private void jtfNumVendaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jtfCodClienteFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
modelCliente = controllerCliente.getClienteController(Integer.parseInt(jtfCodCliente.getText()));
jcbCliente.setSelectedItem(modelCliente.getCliNome());
}
private void jtfCodProdutoFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
modelProdutos = controllerProdutos.retornarProdutoController(Integer.parseInt(jtfCodProduto.getText()));
jcbProdutos.setSelectedItem(modelProdutos.getProNome());
}
private void jbExcluirActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int linha = jtVendas.getSelectedRow();
int codigoVenda = (int) jtVendas.getValueAt(linha, 0);
listaModelProdutos = new ArrayList<>();
listaModelProdutosVendasProdutos = controllerProdutosVendasProdutos.getListaProdutosVendasProdutosController(codigoVenda);
for (int i = 0; i < listaModelProdutosVendasProdutos.size(); i++) {
modelProdutos = new ModelProdutos();
modelProdutos.setIdProduto(listaModelProdutosVendasProdutos.get(i).getModelProdutos().getIdProduto());
modelProdutos.setProEstoque(
listaModelProdutosVendasProdutos.get(i).getModelProdutos().getProEstoque()
+ listaModelProdutosVendasProdutos.get(i).getModelVendasProdutos().getVenProQuantidade());
listaModelProdutos.add(modelProdutos);
}
if (controllerProdutos.alterarEstoqueProdutoController(listaModelProdutos)) {
controllerVendasProdutos.excluirVendasProdutosController(codigoVenda);
if (controllerVendas.excluirVendasController(codigoVenda)) {
JOptionPane.showMessageDialog(this, "Venda excluída com sucesso", "Atenção", JOptionPane.WARNING_MESSAGE);
this.carregarVendas();
} else {
JOptionPane.showMessageDialog(this, "Erro ao excluir a venda", "Erro", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(this, "Erro ao excluir a venda", "Erro", JOptionPane.ERROR_MESSAGE);
}
}
private void jbAdicionarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (jtfQuantidade.getText().equals("")) {
JOptionPane.showMessageDialog(this, "Atenção ao cadastrar venda, preencha todos os campos", "Atenção", JOptionPane.WARNING_MESSAGE);
} else {
modelProdutos = controllerProdutos.retornarProdutoController(Integer.parseInt(jtfCodProduto.getText()));
//ADICIONAR UMA LINHA NA TABELA
DefaultTableModel modelo = (DefaultTableModel) jtProdutosVenda.getModel();
int cont = 0;
double quantidade = 0;
quantidade = Double.parseDouble(jtfQuantidade.getText());
for (int i = 0; i < cont; i++) {
modelo.setNumRows(0);
}
modelo.addRow(new Object[]{
modelProdutos.getIdProduto(),
modelProdutos.getProNome(),
jtfQuantidade.getText(),
modelProdutos.getProValor(),
quantidade * modelProdutos.getProValor()
});
somarValorTotalProdutos();
}
}
private void jtfDescontoFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
somarValorTotalProdutos();
}
private void jbNovoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
desabilitaHabilitaCampos(true);
jbSalvar.setEnabled(true);
alterarSalvar = "salvar";
limparFormulários();
}
private void jbSalvarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int codigoVendas = 0, codigoProduto = 0;
listaModelVendasProdutos = new ArrayList<>();
if (!jtfNumVenda.getText().equals("")) {
modelVendas.setIdVenda(Integer.parseInt(jtfNumVenda.getText()));
}
modelVendas.setCliente(Integer.parseInt(jtfCodCliente.getText()));
try {
modelVendas.setVenDataVenda(lDatas.converterDataParaDateUS(new java.util.Date(System.currentTimeMillis())));
} catch (Exception ex) {
Logger.getLogger(ViewVendas.class.getName()).log(Level.SEVERE, null, ex);
}
modelVendas.setVenValorLiquido(Double.parseDouble(jtfValorTotal.getText()));
modelVendas.setVenValorProduto(Double.parseDouble(jtfValorTotal.getText()) + Double.parseDouble(jtfDesconto.getText()));
modelVendas.setVenDesconto(Double.parseDouble(jtfDesconto.getText()));
if (alterarSalvar.equals("salvar")) {
// salva
codigoVendas = controllerVendas.salvarVendasController(modelVendas);
if (codigoVendas > 0) {
JOptionPane.showMessageDialog(this, "Venda salva com sucesso", "Atenção", JOptionPane.WARNING_MESSAGE);
} else {
JOptionPane.showMessageDialog(this, "Erro ao salvar a venda", "Erro", JOptionPane.ERROR_MESSAGE);
}
int cont = jtProdutosVenda.getRowCount();
for (int i = 0; i < cont; i++) {
codigoProduto = (int) jtProdutosVenda.getValueAt(i, 0);
modelVendasProdutos = new ModelVendasProdutos();
modelProdutos = new ModelProdutos();
modelVendasProdutos.setProduto(codigoProduto);
modelVendasProdutos.setVendas(codigoVendas);
modelVendasProdutos.setVenProValor((double) jtProdutosVenda.getValueAt(i, 3));
modelVendasProdutos.setVenProQuantidade(Integer.parseInt(jtProdutosVenda.getValueAt(i, 2).toString()));
// Produto
modelProdutos.setIdProduto(codigoProduto);
modelProdutos.setProEstoque(controllerProdutos.retornarProdutoController(codigoProduto).getProEstoque()
- Integer.parseInt(jtProdutosVenda.getValueAt(i, 2).toString()));
listaModelVendasProdutos.add(modelVendasProdutos);
listaModelProdutos.add(modelProdutos);
}
// SALVAR PRODUTOS DA VENDA
if (controllerVendasProdutos.salvarVendasProdutosController(listaModelVendasProdutos)) {
// ALTERAR ESTOQUE DE PRODUTOS
controllerProdutos.alterarEstoqueProdutoController(listaModelProdutos);
// JOptionPane.showMessageDialog(this, "Produtos da venda salvo com sucesso", "Atenção", JOptionPane.WARNING_MESSAGE);
carregarVendas();
limparFormulários();
desabilitaHabilitaCampos(false);
} else {
JOptionPane.showMessageDialog(this, "Erro ao salvar produtos", "Erro", JOptionPane.ERROR_MESSAGE);
}
} else {
// altera
// INICIO RETORNAR PARA O ESTOQUE E EXCLUIR PRODUTOS DA VENDA
int linha = jtVendas.getSelectedRow();
codigoVendas = (int) jtVendas.getValueAt(linha, 0);
listaModelProdutos = new ArrayList<>();
listaModelProdutosVendasProdutos = controllerProdutosVendasProdutos.getListaProdutosVendasProdutosController(codigoVendas);
for (int i = 0; i < listaModelProdutosVendasProdutos.size(); i++) {
modelProdutos = new ModelProdutos();
modelProdutos.setIdProduto(listaModelProdutosVendasProdutos.get(i).getModelProdutos().getIdProduto());
modelProdutos.setProEstoque(
listaModelProdutosVendasProdutos.get(i).getModelProdutos().getProEstoque()
+ listaModelProdutosVendasProdutos.get(i).getModelVendasProdutos().getVenProQuantidade());
listaModelProdutos.add(modelProdutos);
}
if (controllerProdutos.alterarEstoqueProdutoController(listaModelProdutos)) {
if (controllerVendasProdutos.excluirVendasProdutosController(codigoVendas)) {
// JOptionPane.showMessageDialog(this, "Venda excluída com sucesso", "Atenção", JOptionPane.WARNING_MESSAGE);
this.carregarVendas();
} else {
JOptionPane.showMessageDialog(this, "Erro ao excluir a venda", "Erro", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(this, "Erro ao excluir a venda", "Erro", JOptionPane.ERROR_MESSAGE);
}
// FIM RETORNAR PARA O ESTOQUE E EXCLUIR PRODUTOS DA VENDA
if (controllerVendas.atualizarVendasController(modelVendas)) {
JOptionPane.showMessageDialog(this, "Venda alterada com sucesso!", "Atenção", JOptionPane.WARNING_MESSAGE);
} else {
JOptionPane.showMessageDialog(this, "Erro ao alterar venda", "Erro", JOptionPane.ERROR_MESSAGE);
}
// ADICIONAR PRODUTOS NA LISTA PARA SALVAR
int cont = jtProdutosVenda.getRowCount();
for (int i = 0; i < cont; i++) {
codigoProduto = (int) jtProdutosVenda.getValueAt(i, 0);
modelVendasProdutos = new ModelVendasProdutos();
modelProdutos = new ModelProdutos();
modelVendasProdutos.setProduto(codigoProduto);
modelVendasProdutos.setVendas(codigoVendas);
modelVendasProdutos.setVenProValor((double) jtProdutosVenda.getValueAt(i, 3));
modelVendasProdutos.setVenProQuantidade(Integer.parseInt(jtProdutosVenda.getValueAt(i, 2).toString()));
// Produto
modelProdutos.setIdProduto(codigoProduto);
modelProdutos.setProEstoque(controllerProdutos.retornarProdutoController(codigoProduto).getProEstoque()
- Integer.parseInt(jtProdutosVenda.getValueAt(i, 2).toString()));
listaModelVendasProdutos.add(modelVendasProdutos);
listaModelProdutos.add(modelProdutos);
}
//salvar os produtos da venda
if (controllerVendasProdutos.salvarVendasProdutosController(listaModelVendasProdutos)) {
// JOptionPane.showMessageDialog(this, "Produtos da venda salvo com sucesso", "Atenção", JOptionPane.WARNING_MESSAGE);
carregarVendas();
limparFormulários();
desabilitaHabilitaCampos(false);
} else {
JOptionPane.showMessageDialog(this, "Erro ao salvar produtos", "Erro", JOptionPane.ERROR_MESSAGE);
}
}
jbSalvar.setEnabled(false);
}
private void jbAlterarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
jbSalvar.setEnabled(true);
desabilitaHabilitaCampos(true);
alterarSalvar = "alterar";
int linha = jtVendas.getSelectedRow();
int codigoVenda = (int) jtVendas.getValueAt(linha, 0);
listaModelProdutosVendasProdutos = controllerProdutosVendasProdutos.getListaProdutosVendasProdutosController(codigoVenda);
DefaultTableModel modelo = (DefaultTableModel) jtProdutosVenda.getModel();
modelo.setNumRows(0);
for (int i = 0; i < listaModelProdutosVendasProdutos.size(); i++) {
jtfNumVenda.setText(String.valueOf(listaModelProdutosVendasProdutos.get(i).getModelVendasProdutos().getVendas()));
modelo.addRow(new Object[]{
listaModelProdutosVendasProdutos.get(i).getModelProdutos().getIdProduto(),
listaModelProdutosVendasProdutos.get(i).getModelProdutos().getProNome(),
listaModelProdutosVendasProdutos.get(i).getModelVendasProdutos().getVenProQuantidade(),
listaModelProdutosVendasProdutos.get(i).getModelVendasProdutos().getVenProValor(),
listaModelProdutosVendasProdutos.get(i).getModelVendasProdutos().getVenProQuantidade()
* listaModelProdutosVendasProdutos.get(i).getModelVendasProdutos().getVenProValor()
});
}
somarValorTotalProdutos();
jTabbedPane1.setSelectedIndex(0);
}
private void jbRemoverProdutosActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int linha = jtProdutosVenda.getSelectedRow();
DefaultTableModel modelo = (DefaultTableModel) jtProdutosVenda.getModel();
modelo.removeRow(linha);
somarValorTotalProdutos();
}
private void jcbProdutosPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
// TODO add your handling code here:
if (jcbProdutos.isPopupVisible()) {
preencherCodigoProdutosPeloComboBox();
}
}
private void jcbClientePopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
// TODO add your handling code here:
if (jcbCliente.isPopupVisible()) {
preencherCodigoClientePeloComboBox();
}
}
private void jbCancelarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
limparFormulários();
desabilitaHabilitaCampos(false);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(ViewVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(ViewVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(ViewVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(ViewVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ViewVendas().setVisible(true);
}
});
}
private void preencherCodigoProdutosPeloComboBox() {
modelProdutos = controllerProdutos.retornarProdutoController(jcbProdutos.getSelectedItem().toString());
jtfCodProduto.setText(String.valueOf(modelProdutos.getIdProduto()));
}
private void preencherCodigoClientePeloComboBox() {
modelCliente = controllerCliente.getClienteController(jcbCliente.getSelectedItem().toString());
jtfCodCliente.setText(String.valueOf(modelCliente.getIdCliente()));
}
/**
* preenche o combo box com todos os clientes
*
*/
private void listarClientes() {
listaModelClientes = controllerCliente.getListaClienteController();
jcbCliente.removeAllItems();
for (int i = 0; i < listaModelClientes.size(); i++) {
jcbCliente.addItem(listaModelClientes.get(i).getCliNome());
}
}
/**
* preenche o combo box com os produtos.
*
*/
private void listarProdutos() {
listaModelProdutos = controllerProdutos.retornarListaProdutoController();
jcbProdutos.removeAllItems();
for (int i = 0; i < listaModelProdutos.size(); i++) {
jcbProdutos.addItem(listaModelProdutos.get(i).getProNome());
}
}
/**
* APLICA DESCONTOS AO VALOR FINAL DA VENDA
*/
private void aplicarDescontos() {
try {
jtfDesconto.setText("0");
jtfValorTotal.setText(String.valueOf(
Double.parseDouble(jtfValorTotal.getText()) - Double.parseDouble(jtfDesconto.getText())));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* SOMA TODOS OS PRODUTOS DA VENDA
*/
private void somarValorTotalProdutos() {
double soma = 0, valor;
int cont = jtProdutosVenda.getRowCount();
for (int i = 0; i < cont; i++) {
valor = (double) jtProdutosVenda.getValueAt(i, 4);
soma = soma + valor;
}
jtfValorTotal.setText(String.valueOf(soma));
aplicarDescontos();
}
private void carregarVendas() {
DefaultTableModel modelo = (DefaultTableModel) jtVendas.getModel();
listaModelVendasCliente = controllerVendasCliente.getListaVendasClienteController();
int cont = listaModelVendasCliente.size();
modelo.setNumRows(0);
for (int i = 0; i < cont; i++) {
modelo.addRow(new Object[]{
listaModelVendasCliente.get(i).getModelVendas().getIdVenda(),
listaModelVendasCliente.get(i).getModelCliente().getCliNome(),
listaModelVendasCliente.get(i).getModelVendas().getVenDataVenda()
});
}
}
/**
* LIMPAR FORMULÁRIO DE VENDAS
*/
private void limparFormulários() {
jtfQuantidade.setText("");
jtfDesconto.setText("");
jtfValorTotal.setText("");
DefaultTableModel modelo = (DefaultTableModel) jtProdutosVenda.getModel();
modelo.setNumRows(0);
}
private void desabilitaHabilitaCampos(boolean condicao){
jtfQuantidade.setEnabled(condicao);
jtfValorTotal.setEnabled(condicao);
jtfDesconto.setEnabled(condicao);
}