Digitar valor e diminuir do valor total depois digitar novamente e diminuir no total(Resolvido)

25 respostas
java
D

Ola tudo bom? preciso de uma sugestão de como poderia fazer o código
tipo no supermercado nós vamos pagar uma quantia em dinheiro e o resto no cartão por exemplo
geralmente o caixa digita o valor do dinheiro que a pessoa deu e ai esse valor diminui do total
depois ele digita o valor do que a pessoa ira pagar no cartão e diminui do total novamente
como poderia fazer isso?
sou iniciante estou aprimorando um sistema que ja tenho iria recomeçar do zero mas achei melhor mexer nesse que ja estava quase tudo pronto e tinha deixado pelo meio
e gostaria de uma ajuda de vocês obrigada

25 Respostas

D

Entendo que isso se refira ao processo de pagamento de uma compra efetuada, correto?
Em geral, uma compra pode ter um ou mais modos de pagamento.
Cada modo de pagamento será definido por seu tipo e valor pago, podendo ou não ter troco.
Assim sendo, você pode criar uma rotina que receba um tipo de pagamento (dinheiro, por exemplo). Com o dinheiro, você informa o valor recebido. Verifica se o valor é maior, igual ou menor que o valor da compra e procede conforme:

  • Maior: calcula a diferença, encerra a compra e dispõe troco

  • Igual: encerra a compra.

  • Menor: calcula a diferença, apresenta o valor faltante.
    Obviamente, isso pode ser feito num laço do/while, em que a condição de saída seja o encerramento da compra

    boolean compraEncerrada = false;

    do {
          if(valorPago > valorCompra) {
              //TODO calcular diferença
              //TODO apresentar troco
              compraEncerrada = true;
          } else if(valorPago == valorCompra) {
              //TODO apresenta troco 0
              compraEncerrada = true;
          } else {
      	    //TODO calcula diferença
      	    //TODO apresenta mensagem de valor faltante 
      	}
      } while(!compraEncerrada);
    
D

obrigada Darlan vou aplicar isso ai :slight_smile:

D

hem Darlan estou olhando aqui minha janela de venda na hora que eu gravar a venda no caso eu ia ter que chamar outra janela né pra escolher o tipo da forma da pagamento ou no gravar posso fazer isso diretao?

D

Você pode escolher qualquer abordagem.
Há sistemas que, sim, abrem um novo frame. Outros, você pressiona uma tecla ou combinação de teclas e a opção de pagamento é definida.

D

esta bem obrigada :slight_smile:

D

oi Darlan eu fiz aqui mas esta dando erro de string que sera que fiz de errado vou te mandar

Minha classe efetuar venda

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import datechooser.beans.DateChooserCombo;

import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import Modelo.VendaProduto;
//import controle.Utilitarios;

// Ctrl+Shift+F => Formata o código
// Ctrl+A e Ctrl+i => Formata a seleção

public class EfetuarVenda extends JFrame {
	private JLabel rotulo1, rotulo2, rotulo3,rotulo4,rotulo5,rotulo6,rotulo7,rotulo8,rotulo9,rotulo10;
	private JTextField caixa1, caixa2, caixa3,caixa4,caixa5,caixa6,caixa7,caixa8,caixa9,caixa10;
	private JButton botao1, botao2,botao3,botao4,botao5,botao6;
	private double total,valor,qtde,soma,valorrecebido,res = 0; 
	boolean compraEncerrada;
	private static EntityManagerFactory fabricaDeEntidades = null;

	private static EntityManager gerenciador = null;
	
	DateChooserCombo f = new DateChooserCombo();
	
	  DecimalFormat df= new DecimalFormat(",##0,00");
	  ImageIcon icone;
		ImageIcon icone1;
		ImageIcon icone2;
		ImageIcon icone3;
		ImageIcon icone4;
		//ImageIcon icone5;
	public EfetuarVenda(EntityManagerFactory fabricaDeEntidades2, EntityManager gerenciador2) {
		super("Vendas");
		
		Container tela = getContentPane();
		icone = new ImageIcon("006.gif");
		icone1 = new ImageIcon("039.gif");
		icone2 = new ImageIcon("017.gif");
		icone3 = new ImageIcon("017.gif");
		icone4 = new ImageIcon("041.gif");
		//icone5 = new ImageIcon("100.gif");
		botao1 = new JButton (icone);
		botao2 = new JButton (icone1);
		botao3 = new JButton (icone2);
		botao4 = new JButton (icone3);
		botao5 = new JButton (icone4);
		//botao6 = new JButton (icone5);
		tela.setLayout(null);
		fabricaDeEntidades=fabricaDeEntidades2;
		gerenciador=gerenciador2;
	        
		rotulo1 = new JLabel("Valor Recebido");
		rotulo2 = new JLabel("Cliente:");
		rotulo3 = new JLabel("Total:");
		rotulo4 = new JLabel("Data:");
		rotulo5 = new JLabel("Código:");
		rotulo6 = new JLabel("Descrição:");
		rotulo7 = new JLabel("Qtde:");
		rotulo8 = new JLabel("Valor:");
		rotulo9 = new JLabel("Total:");
		rotulo10 = new JLabel("Nome do Vendedor:");

		caixa1 = new JTextField();
		caixa2 = new JTextField();
		caixa3 = new JTextField();
		caixa3.setText("0.00");
		f = new DateChooserCombo();
		caixa5 = new JTextField();
		caixa6 = new JTextField();
		caixa7 = new JTextField();
		caixa8 = new JTextField();
		caixa9 = new JTextField();
		caixa10 = new JTextField();

		// coluna, linha, largura, altura
		rotulo1.setBounds(10, 19, 47, 20);
		caixa1.setBounds(68, 19, 40, 20);

		botao1.setBounds(630,100, 50, 20);
		botao2.setBounds(21, 510, 200, 50);
		botao3.setBounds(230, 510, 200, 50);
		botao4.setBounds(440, 510, 200, 50);
		botao5.setBounds(21, 570, 200, 50);
		//botao6.setBounds(230, 570, 200, 50);
		
		rotulo2.setBounds(140, 19, 100, 20);
		caixa2.setBounds(190, 19, 232, 20);

		rotulo3.setBounds(530, 50, 70, 60);
		caixa3.setBounds(560, 50, 120, 40);
		
		rotulo4.setBounds(10, 60, 100, 20);
		f.setBounds(68, 60, 140, 20);
		
		rotulo5.setBounds(10,100, 47, 20);
		caixa5.setBounds(68,100, 40, 20);
		
		rotulo6.setBounds(120, 100, 100, 20);
		caixa6.setBounds(190, 100, 180, 20);
		
		rotulo7.setBounds(370, 100, 80, 20);
		caixa7.setBounds(410, 100, 50, 20);
		
		rotulo8.setBounds(460, 100, 50, 20);
		caixa8.setBounds(500,100, 50, 20);
		
		rotulo9.setBounds(550, 100, 50, 20);
		caixa9.setBounds(580, 100, 50, 20);
		
		rotulo10.setBounds(220, 60, 150, 20);
		caixa10.setBounds(340, 60, 150, 20);
		
		tela.add(rotulo1);
		tela.add(caixa1);

		tela.add(rotulo2);
		tela.add(caixa2);

		tela.add(botao1);
		tela.add(botao2);
		tela.add(botao3);
		tela.add(botao4);
		tela.add(botao5);
		//tela.add(botao6);

		tela.add(rotulo3);
		tela.add(caixa3);
		
		tela.add(rotulo4);
		tela.add(f);
		
		tela.add(rotulo5);
		tela.add(caixa5);
		
		tela.add(rotulo6);
		tela.add(caixa6);
		
		tela.add(rotulo7);
		tela.add(caixa7);
		
		tela.add(rotulo8);
		tela.add(caixa8);
		
		tela.add(rotulo9);
		tela.add(caixa9);
		
		tela.add(rotulo10);
		tela.add(caixa10);
		
		final DefaultTableModel modelo;

	    modelo = new 
	    DefaultTableModel();
	    
	    // constrói a tabela
	    JTable tabela = new JTable(modelo);
	    
	    // Cria duas colunas 
        
	    modelo.addColumn("Código");
	    modelo.addColumn("Data");
	    modelo.addColumn("Nome do Vendedor");
	    modelo.addColumn("Descrição");
	    modelo.addColumn("Qtde");
	    modelo.addColumn("Valor");
	    modelo.addColumn("Total");
	    
	    tabela.getColumnModel().getColumn(0).setPreferredWidth(5);   
        tabela.getColumnModel().getColumn(1).setPreferredWidth(40);   
        tabela.getColumnModel().getColumn(2).setPreferredWidth(100);   
        tabela.getColumnModel().getColumn(3).setPreferredWidth(100);   
        tabela.getColumnModel().getColumn(4).setPreferredWidth(10);   
        tabela.getColumnModel().getColumn(5).setPreferredWidth(50);   
        tabela.getColumnModel().getColumn(6).setPreferredWidth(50);
	    
	    JScrollPane scrollPane = new JScrollPane(tabela);
	    scrollPane.setBounds(20, 150, 640, 350);
		tela.add(scrollPane);
		
		
		botao1.addActionListener(new ActionListener() {     
		            public void actionPerformed(ActionEvent e) {     
		                // Persistir dados     
		                // inclusão de um novo registro
		            	//double total,valor,qtde,soma = 0;     
		                valor=Double.parseDouble(caixa8.getText());     
		                    qtde=Double.parseDouble(caixa7.getText()); 
		                    total=(qtde*valor);   
		                    soma+=(qtde*valor);
		                    //Esse + (antes do igual) vai acumular os valores em soma.    
		                    caixa9.setText(""+total); 
		                    DecimalFormat fmt = new DecimalFormat("0.00");  
		                    caixa3.setText(fmt.format(soma)); 
		                    
		                modelo.addRow(new String [] {caixa5.getText(),f.getText(),caixa10.getText(),caixa6.getText(), caixa7.getText(), caixa8.getText(), caixa9.getText()} );
		                caixa2.setText("");          
		                f.setText("");
		                caixa5.setText("");
		                caixa6.setText("");
		                caixa7.setText("");     
		                caixa8.setText("");   
		                caixa9.setText("");
		                caixa10.setText("");
		            }  
		        });  

		botao2.addActionListener(new ActionListener() {       
            public void actionPerformed(ActionEvent e) {       
				// TODO add your handling code here: 
            	VendaProduto v = new VendaProduto();
            do 
            	    if(v.getValorrecebido() > v.getTotal()) {
            	          //TODO calcular diferença
            	          //TODO apresentar troco
            	    	valorrecebido = Double.parseDouble(caixa1.getText());
            	    	valor = Double.parseDouble(caixa3.getText());
            	    	res = (valor - valorrecebido);
            	    	 JOptionPane.showMessageDialog(null,  
                                 "o Troco é" + res);
            	        compraEncerrada = true;
            	      } else if(v.getValorrecebido() > v.getTotal()) {
            	          //TODO apresenta troco 0
            	           compraEncerrada = true;
            	    } else {
            	  	    //TODO calcula diferença
            	  	    //TODO apresenta mensagem de valor faltante 
            	    	valorrecebido = Double.parseDouble(caixa1.getText());
            	    	valor = Double.parseDouble(caixa3.getText());
            	    	res = (valor - valorrecebido);
            	    	JOptionPane.showMessageDialog(null,  
                                "Falta Valor" + res);
            	 }
                  while(!compraEncerrada);
                for (int i = 0; i < modelo.getRowCount(); i ++ )
                {
                    VendaProduto it = new VendaProduto();
                    it.setCodigodebarras(Integer.parseInt(String.valueOf(modelo.getValueAt(i, 0))));
                    it.setData(f.getSelectedDate());
                    it.setNomevendedor(String.valueOf(modelo.getValueAt(i, 2)));
                    it.setDescricao(String.valueOf(modelo.getValueAt( i ,3)));
                    it.setQtde(Integer.parseInt(String.valueOf(modelo.getValueAt( i ,4))));
                    it.setValor(Double.parseDouble(String.valueOf(modelo.getValueAt( i ,5))));
                    it.setTotal(Double.parseDouble(String.valueOf(modelo.getValueAt( i ,6))));

                    gerenciador.getTransaction().begin();
                    gerenciador.persist(it);
                    gerenciador.getTransaction().commit();

                }

                    }

    });    
   

			       
	botao3.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			// fecha a janela
			CalcularOrcamento c = new CalcularOrcamento(fabricaDeEntidades, gerenciador);
    }
      });
	botao4.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			// fecha a janela
			CalcularPagamento c = new CalcularPagamento(fabricaDeEntidades, gerenciador);
    }
      });
	botao5.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			// fecha a janela
			ListarVendas v = new ListarVendas(fabricaDeEntidades, gerenciador);
    }
      });
	//botao6.addActionListener(new ActionListener() {
		//public void actionPerformed(ActionEvent e) {
			// fecha a janela
		//	RelatorioVenda rep = new RelatorioVenda(); 
        //JasperPrint relat; 
        //	try{ 
        //		relat= rep.gerarRelatorioVenda(); 
        //		JasperViewer.viewReport(relat,false); 
        //		}
        //	catch (Exception e1)
        //	{ e1.printStackTrace(); }
   // }
  //    });

// setSize(largura, altura);
setSize(700, 700);
setVisible(true);
setLocationRelativeTo(null);
}

	public static void main(String[] args) {

		fabricaDeEntidades = Persistence
				.createEntityManagerFactory("TurmaN40PostgreSQL");

		gerenciador = fabricaDeEntidades.createEntityManager();

		EfetuarVenda app = new EfetuarVenda(fabricaDeEntidades, gerenciador);
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

		}

VendaProduto

package Modelo;
import java.util.Calendar;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.swing.table.DefaultTableModel;

@Entity
public class VendaProduto {
@Id
	private int codigodebarras;
	private String descricao;
	private int qtde;
	private double valor;
	private double total;
	private double valorrecebido;
	public double getValorrecebido() {
		return valorrecebido;
	}
	public void setValorrecebido(double valorrecebido) {
		this.valorrecebido = valorrecebido;
	}
	private int itens;
	private String nomevendedor;
	@Temporal(TemporalType.DATE)
	private Calendar data;
	
	public int getCodigodebarras() {
		return codigodebarras;
	}
	public void setCodigodebarras(int codigodebarras) {
		this.codigodebarras = codigodebarras;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String string) {
		this.descricao = string;
	}
	public int getQtde() {
		return qtde;
	}
	public void setQtde(int qtde) {
		this.qtde = qtde;
	}
	public double getTotal() {
		return total;
	}
	public void setTotal(double total) {
		this.total = total;
	}
	public double getValor() {
		return valor;
	}
	public void setValor(double valor) {
		this.valor = valor;
	}
	public int getItens() {
		return itens;
	}
	public void setItens(int itens) {
		this.itens = itens;
	}
	public Calendar getData() {
		return data;
	}
	public void setData(Calendar data) {
		this.data = data;
	}
	public String getNomevendedor() {
		return nomevendedor;
	}
	public void setNomevendedor(String nomevendedor) {
		this.nomevendedor = nomevendedor;
	}
		
	}

erro

Exception in thread AWT-EventQueue-0 java.lang.NumberFormatException: For input string: 57,00at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)

at sun.misc.FloatingDecimal.parseDouble(Unknown Source)

at java.lang.Double.parseDouble(Unknown Source)

at EfetuarVenda$2.actionPerformed(EfetuarVenda.java:252)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$500(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

ele esta até pegando o total

D

A versão do jre onde o sistema está sendo executado não identifica um número decimal válido quando a separação é feita por vírgula (o padrão EN_US é separar decimais com ponto).
Logo, sugiro fazer a conversão após trocar a vírgula por ponto:
Ao invés de fazer isso, diretamente:

Faça algo como:

valor=Double.parseDouble(caixa8.getText().replace(",", ".");

Creio que isso resolva.

D

deu certo o replace só que agora ele nao esta entrando certinho no while

VendaProduto v = new VendaProduto();
        do 
        	    if(v.getValorrecebido() > v.getTotal()) {
        	          //TODO calcular diferença
        	          //TODO apresentar troco
        	    	v.setValorrecebido(Double.parseDouble(caixa1.getText().replace(",", ".")));
        	    	v.setTotal(Double.parseDouble(caixa9.getText().replace(",", ".")));
        	    	res = v.getValorrecebido() - v.getTotal();
        	    	 JOptionPane.showMessageDialog(null,  
                             "o Troco é" + res);
        	        compraEncerrada = true;
        	      } else if(v.getValorrecebido() == v.getTotal()) {
        	    	  JOptionPane.showMessageDialog(null,  
                              "o Troco é" + res);
        	           compraEncerrada = true;
        	    } else {
        	  	    //TODO calcula diferença
        	  	    //TODO apresenta mensagem de valor faltante 
        	    	v.setValorrecebido(Double.parseDouble(caixa1.getText().replace(",", ".")));
        	    	v.setTotal(Double.parseDouble(caixa9.getText().replace(",", ".")));
        	    	res = v.getValorrecebido() - v.getTotal();
        	    	JOptionPane.showMessageDialog(null,  
                            "Falta Valor" + res);
        	 }
              while(!compraEncerrada);

por que sera ?
tipo fica so na primeira parte do troco fica so nessa mensagem

criei uma variavel local tipo boolean CompraEncerrada;

D

fica so o troco e nao vai no falta valor nem nada nao faz o looping certinho

D

só que insere o registro so não entra certinho no looping rs

D

Essa linha está antes dessas:

Porém, você precisa dessas informações (valor recebido e total) antes de fazer a primeira comparação, não?

D

viu deu certo agora a duvida agora é

como eu poderia fazer essa parte aqui do falta valor para pessoa pagar o restante

} else {
        	  	    //TODO calcula diferença
        	  	    //TODO apresenta mensagem de valor faltante 
        	    	JOptionPane.showMessageDialog(null,  
                            "Falta Valor" + res);
        	    	JOptionPane.showInputDialog(null,  
                            "Digite Valor Faltante" + res);

pensei em por em show input dialog mas sera que consigo pegar o valor que falta?

D

É uma opção, porém, só vai aparecer se atender à condição do laço while.

D

então só que nao estou sabendo pegar o valor faltante agora nao sei se é o valor recebido ou total
agora\ toburra nessa parte kk

D

peguei o valor so que tem um porem so aceita string

v.setValorrecebido(JOptionPane.showInputDialog(null, “Digite o Valor Faltante”));

como poderia fazer a conversão?

D

consegui converter agora não sai do while rsrsrs

eu digito e nada

} else {
        	  	    //TODO calcula diferença
        	  	    //TODO apresenta mensagem de valor faltante 
        	    	JOptionPane.showMessageDialog(null,  
                            "Falta Valor" + res);
        	        v.setValorrecebido(Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o Valor Faltante")));


        	 }

se voce puder me ajudar só nesse finalzinho te agradeço mto ai termina essa parte desculpa o incomodo.

D

Se ele não sai do while é por que a condição de parada não foi atingida.
Reveja os ifs, talvez haja algo a refinar neles.

D

mas se eu não sei o que é não vou conseguir saber o que esta errado por que pra mim esta certo pra mim é só a ultima parte que não sai do input mas eu vou ver esse final ai nao da pra fazer isso com case ?em vez de do while?

D

acho que é mais facil até pra sair do loop

D

e eu digito 60 que é o valor faltando mas ele continua la dentro

D

eu to pensando assim que teria que fazer mais um if
acredito para sair não é por que o valor acho que tinha que ser igual o que falta mas ja tem a condição de igual ali mas eu vou pensar aqui e te falo o que saiu kkk

D

Tudo no jeito Darlan Muito obrigada :slight_smile: agora vou postar pra ajudar outra pessoa agora é so aprimorar mais rsrs

botao2.addActionListener(new ActionListener() {       
                public void actionPerformed(ActionEvent e) {       
    				// TODO add your handling code here: 
                	VendaProduto v = new VendaProduto();
                	//Produto p = new Produto();
                   // estoque = p.getQuantidade() - p.getEstoque();
                	v.setValorrecebido(Double.parseDouble(caixa1.getText().replace(",", ".")));
        	    	v.setTotal(Double.parseDouble(caixa9.getText().replace(",", ".")));
        	    	res = v.getValorrecebido() - v.getTotal();
                do 
                	    if(v.getValorrecebido() > v.getTotal()) {
                	          //TODO calcular diferença
                	          //TODO apresentar troco
                	    	 JOptionPane.showMessageDialog(null,  
                                     "o Troco é: " + res);
                	    	  JOptionPane.showMessageDialog(null,  
                                      "Compra Finalizada com Sucesso");
                	        compraEncerrada = true;
                	      } else if(v.getValorrecebido() == v.getTotal()) {
                	    	  JOptionPane.showMessageDialog(null,  
                                      "Compra Finalizada com Sucesso");
                	           compraEncerrada = true;
                	    }else if(v.getValorrecebido() < v.getTotal()) {
                	  	    //TODO calcula diferença
                	  	    //TODO apresenta mensagem de valor faltante 
                	    	JOptionPane.showMessageDialog(null,  
                                    "Falta o Valor de: " + res);
                	        v.setValorrecebido(Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o Valor Faltante").replace(",", ".")));
                	        JOptionPane.showMessageDialog(null,  
                                    "Venda Efetuada com Sucesso");
                	        compraEncerrada = true;
                	    }else {
                	    	JOptionPane.showMessageDialog(null,  
                                    "A Compra Não Pode Ser Finalizada");
                          compraEncerrada = false;
                	 }
                      while(!compraEncerrada);
                    for (int i = 0; i < modelo.getRowCount(); i ++ )
                    {
                        VendaProduto it = new VendaProduto();
                        it.setCodigodebarras(Integer.parseInt(String.valueOf(modelo.getValueAt(i, 0))));
                        it.setData(f.getSelectedDate());
                        it.setNomevendedor(String.valueOf(modelo.getValueAt(i, 2)));
                        it.setDescricao(String.valueOf(modelo.getValueAt( i ,3)));
                        it.setQtde(Integer.parseInt(String.valueOf(modelo.getValueAt( i ,4))));
                        it.setValor(Double.parseDouble(String.valueOf(modelo.getValueAt( i ,5))));
                        it.setTotal(Double.parseDouble(String.valueOf(modelo.getValueAt( i ,6))));

                        gerenciador.getTransaction().begin();
                        gerenciador.persist(it);
                        gerenciador.getTransaction().commit();

                    }

                        }

        });
D

Eu sei que vocẽ está usando netbeans e nele pode ser um tanto complicado, mas, uma boa ideia é dar a cada elemento da tela um nome amigável. Principalmente para os que você vai interagir.

O que é o botao2? O que ele faz?

D

grava e faz esse calculo ai

D

e depois vou ter q diminuir estoque nele tb,

Criado 8 de janeiro de 2020
Ultima resposta 12 de jan. de 2020
Respostas 25
Participantes 2