Ir ao conteúdo
  • Cadastre-se

Como salvar itens de uma venda


Posts recomendados

boa tarde, peço ajuda estou a desenvolver um sistema de venda...agora ja configurando o formulario de venda. como posso salvar itens de uma venda no banco de dados.

tem que ser assim no final: 

T_Venda

CODIGO DA VENDA    CLIENTE   DATA DA VENDA

                 1                       1             07/09/2016

 

T_ITEM_Venda

CODIGO DA VENDA       CODIGO DO PRODUTO VENDIDO      QUANTIDADE       VALOR UNITÁRIO

                1                      10                                                          1                              R$ 5,00

                1                       50                                                         2                              R$ 3,30

                1                       48                                                         3                              R$ 2.25

                1                      15                                                          1                              R$ 1,99

 

Link para o comentário
Compartilhar em outros sites

Ok ... vamos a analise: 
você fez direitinho, mas não esqueça que cada item de venda tem um id_item_venda

Agora sobre como salvar depende de como você configurou seu sistema. Se usou um ORM (Hibernate ou outro do tipo), basta ter o modelo bem configurado que ele faz todo o processo em cascata (Todos os objetos internos do objeto principal serão persistidos). Caso contrário, você terá que fazer isso passo a passo na mão.

1) Montar Objeto da Venda.
2) Salvar a Venda
3) Recuperar o id da Venda
4) Montar Itens de Venda
5) Adicionar Id da Venda nos Itens de Venda
6) Salvar um a um os Itens de Venda

Esse processo inteiro pode ser feito dentro do DAO da Venda por exemplo, recebendo o Objeto de Venda e a Lista de Itens de Venda ...

Link para o comentário
Compartilhar em outros sites

Se tiver usando JDBC você desabilita o autocommit dentro do bloco try/catch depois que conectar e no catch você coloca

con.rollback(); no caso de uma exceção desfazer alteração na tabela.

 

try	{	
     // Faz a conexao com o banco
	 conectar("banco");	
	 con.setAutoCommit(false);		
	 String sql = "INSERT INTO PEDIDO";    	 
	 sql.execute();	   
     // Recupera o codigo do pedido salvo     
	 pedido.recuperaPedido();
	 
	 String sqlItem = "INSERT INTO ITEM";
	 Iterator interador = pedido.getItens().iterator();
	 for (;interador.hasNext();) 
	 {
		 //Executa o insert do intem
		 sqlItem.execute();
	 }
	 
	 con.commit();
	}catch (Exception e) {
		con.rollback();	
	}

Espero que ajude

 

Link para o comentário
Compartilhar em outros sites

Nesse caso você teria que:

- (Usando JPA) dar o flush após o commit no entity manager para atualizar a entidade, aí basta retornar o objeto que já vai estar com o Id correto.

- (Usando JDBC) realizar o Select do item manualmente pelo Statement para recuperar a Entidade salva. Nesse segundo caso, não tem um jeito mais fácil, infelizmente.

Link para o comentário
Compartilhar em outros sites

21 horas atrás, psykotico disse:

Nesse caso você teria que:

- (Usando JPA) dar o flush após o commit no entity manager para atualizar a entidade, aí basta retornar o objeto que já vai estar com o Id correto.

- (Usando JDBC) realizar o Select do item manualmente pelo Statement para recuperar a Entidade salva. Nesse segundo caso, não tem um jeito mais fácil, infelizmente.

se percebi..mais o que realmente necessito e' a funcao que irei usar para pegar o id da venda efectuado. estou usando JDBC

adicionado 7 minutos depois
 public Cliente InserirVenda(Venda v) {
        try {
            conexao = new ConectarBD().buscarConexao();
            statement = conexao.prepareStatement("INSERT INTO venda ( dataVenda, valor_Venda, codigo_cliente)  VALUES(?,?,?)", PreparedStatement.RETURN_GENERATED_KEYS);
            statement.setObject(1, v.getData());
            statement.setObject(2, v.getValor());
            statement.setObject(3, v.getCliente().getcodcliente());
            rs = statement.executeQuery();
            rs = statement.getGeneratedKeys();
            int id = 0;
            if (rs.next()) {
                id = rs.getInt(1);
                JOptionPane.showMessageDialog(null, id);
            }
            JOptionPane.showMessageDialog(null, "Registo salvo com sucesso", "Mensagem de confirmação", JOptionPane.INFORMATION_MESSAGE);
            JOptionPane.showMessageDialog(null, id);
        } catch (SQLException ex) {
            Logger.getLogger(ClienteDao.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

Fiz isso para ver se podia pegar o Id gerado..maj na mesma ele retorna o id = 0.

Link para o comentário
Compartilhar em outros sites

Pergunta: O Banco de Dados que você está usando aceita e está configurado corretamente para incrementar o id, correto?

se for o caso, tente com esse código. Aqui pelo menos funcionou assim ...

            conexao = new ConectarBD().buscarConexao();
            String generatedColumns[] = {"id"};
            statement = conexao.prepareStatement("INSERT INTO venda ( dataVenda, valor_Venda, codigo_cliente)  VALUES(?,?,?)", generatedColumns);

eu coloquei o nome do campo como "id", mas você altera para utilizar o nome correto da coluna que você está utilizando aí.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...