Venda e Item Venda

2 respostas
I
Bom pessoal estou fazendo um sistema e estou tendo alguns problemas. Estou usando o firebird, e os códigos estou fazendo automático com as trigger, funcionando aki tudo bem.. Mas na tela Venda, quando click em confirmar os valores dos campos Venda são salvos no banco. Mas na tabela item Venda os dados não são salvos no banco de dados, só está salvando o primeiro registro, os outros não. E está acontecendo algo de errado por exemplo: adicionei 3 itens de venda, quando confirmo para salvar so o primeiro é salvo, mas o código do primeiro fica com o registro do tem 3 no banco de dados. Alguem que manja ai pode me ajudar desde já agredeço.. Observações estou usando o novo firebird 2.5.2, será que tem algum bug ?
public Venda venda = new Venda();
    public DaoVenda daoVenda = new DaoVenda(venda);
    private ItemVenda itemVenda;// = new ItemVenda(venda);
    private DaoItemVenda daoItemVenda = new DaoItemVenda();
//    private DaoItemVenda daoItemVenda;// = new DaoItemVenda(null);
//    private List<ItemVenda> itensVenda = new ArrayList<>();
    private List<ItemVenda> itensVenda = null;
    
    
    public TelaVenda(){
        super("Venda");
        montaComponente();
        campoQuantidade.addFocusListener(this);
        campoDesconto.addFocusListener(this);
        habilitarCampos(false);
        pack();
    }

    private void montaComponente() {

        larguraColunas();
        eventosBotoes();
    }
    
    public void setPersistencia(){
        venda.setCodVenda(Integer.parseInt("0" + campoCodigoVenda.getText()));
        venda.getCliente().setCodCliente(campoCliente.getValor());
        venda.setData(campoData.getValor());
        venda.setValorTotalVenda(Double.parseDouble(campoTotalVenda.getValor()));
        if (btRadio1.isSelected()){
            venda.setTipo(btRadio1.getText()); //Venda
        }else if (btRadio2.isSelected()){
            venda.setTipo(btRadio2.getText());  //Oraçmento
        }
        if (check1.isSelected()){
            venda.setTipoVenda(check1.getText()); //a vista
        }else if (check2.isSelected()){
            venda.setTipoVenda(check2.getText()); // a prazo
        }
        //-> Itens Venda
//        itensVenda = new ArrayList();
//        for (int i = 0; i < dtm.getRowCount(); i++){
//            itemVenda = new ItemVenda(venda);
////            itemVenda.setVenda(venda);
//            itemVenda.setCodItemVenda(Integer.parseInt("0" + String.valueOf(dtm.getValueAt(i, 0))));
//            if (i >= 0){
//                int id = getIndiceCodigoProduto(i);
//                itemVenda.getProduto().setCodigo(id);
//            }
//            itemVenda.setQuantidade(Double.parseDouble(String.valueOf(dtm.getValueAt(i, 2)).replace(",", ".")));
//            itemVenda.setDesconto(Double.parseDouble("0" + String.valueOf(dtm.getValueAt(i, 3)).replace(",", ".")));
//            itemVenda.setValorUnitario(Double.parseDouble(String.valueOf(dtm.getValueAt(i, 4)).replace(",", ".")));
//            itemVenda.setValorTotal(Double.parseDouble(String.valueOf(dtm.getValueAt(i, 5)).replace(",", ".")));
////            itemVenda.getVenda().setCodVenda(venda.getCodVenda());
//            itensVenda.add(itemVenda);
//            System.out.print(itemVenda);
//        }
    }
    
    public void setPersistenciaItemVenda(){
        try{
        itensVenda = new ArrayList();
        for (int i = 0; i < tabela.getRowCount(); i++){
            itemVenda = new ItemVenda(venda);
            itemVenda.setCodItemVenda(Integer.parseInt("0" + String.valueOf(dtm.getValueAt(i, 0))));
            if (i >= 0){
                int id = getIndiceCodigoProduto(i);
                itemVenda.getProduto().setCodigo(id);
            }
            itemVenda.setQuantidade(Double.parseDouble(String.valueOf(dtm.getValueAt(i, 2)).replace(",", ".")));
            itemVenda.setDesconto(Double.parseDouble("0" + String.valueOf(dtm.getValueAt(i, 3)).replace(",", ".")));
            itemVenda.setValorUnitario(Double.parseDouble(String.valueOf(dtm.getValueAt(i, 4)).replace(",", ".")));
            itemVenda.setValorTotal(Double.parseDouble(String.valueOf(dtm.getValueAt(i, 5)).replace(",", ".")));
//            itemVenda.getVenda().setCodVenda(venda.getCodVenda());
            itensVenda.add(itemVenda);
            System.out.print(itemVenda);
        }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    @Override
    public boolean incluirBD() throws ExceptionInInitializerError
    {
        boolean retorno = false;
        try {
            setPersistencia();
             daoVenda.inserir();
             setPersistenciaItemVenda();
            for (int i = 0; i < itensVenda.size(); i++){
                  daoItemVenda.setItemVenda(itensVenda.get(i));
                 retorno = daoItemVenda.inserir();
                 if (retorno == true){
                     continue;
                 }else{
                     break;
                 }
            }
//            for (ItemVenda item : itensVenda){
//                daoItemVenda.setItemVenda(item);
//                daoItemVenda.inserir();
//            }
            campoCodigoVenda.setText("" + venda.getCodVenda());
            return true;
        } catch (ExceptionInInitializerError e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erro ao inserir");
            return false;
        }
    }
        

    @Override
    public void focusGained(FocusEvent e) {
        if (e.getSource() == campoQuantidade){
            String tamanho, valorTotal;
            tamanho = Calculos.mulitiplica(campoComprimento.getText(), campoLargura.getText());
            campoQuantidade.setText(tamanho);
            valorTotal = Calculos.mulitiplica(campoValorUnitario.getText(), tamanho);
            campoValorTotal.setText(valorTotal);
        }
    }

    @Override
    public void focusLost(FocusEvent e) {
        if (e.getSource() == campoDesconto){
            if (campoComprimento.getText().trim().equals("") && campoLargura.getText().trim().equals("")){
                String valorTotal = null;
                valorTotal = Calculos.mulitiplicaDesconto(campoQuantidade.getText(), campoValorUnitario.getText(), campoDesconto.getText());
                campoValorTotal.setText(valorTotal);
            }else{
               String valorTotal = null;
               valorTotal = Calculos.mulitiplicaDesconto(campoValorTotal.getText(), campoDesconto.getText());
               campoValorTotal.setText(valorTotal);
            }
        }else if (e.getSource() == campoQuantidade){
            String valorTotal = null;
            valorTotal = Calculos.mulitiplica(campoValorUnitario.getText(), campoQuantidade.getText());
            campoValorTotal.setText(valorTotal);
        }
    }

    private void eventosBotoes() {
        btLimpar.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                limparCampos();
                limparTabela();
                campoTotalVenda.limpar();
            }
        });
        btIncluir.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try{
//                  campoCodigoItemVenda.setText("" + itemVenda.getCodItemVenda());
//                    ItemVenda ite; 
//                  carregarItens();
                  Vector vetor = new Vector();
                  codigosProduto = new ArrayList();
                  atualizaVenda();
                  vetor.add(campoCodigoItemVenda.getText());
                  vetor.add(campoProduto.getSelectedItem());
                  codigosProduto.add(campoProduto.getValor());
                  vetor.add(campoQuantidade.getText());
                  vetor.add(campoDesconto.getText());
                  vetor.add(campoValorUnitario.getText());
                  vetor.add(campoValorTotal.getText());
                  if (dtm.getRowCount() >= -1){
                      dtm.addRow(vetor);
                  }
                 limparCamposItemVenda();
                }catch(Exception ee){
                    ee.printStackTrace();
                }
            }
        });
        btExcluir.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                double a = 0;
                int indice = 0;
                try{
                if (tabela.getSelectedRow() >= 0){
                    indice = tabela.getSelectedRow();
                    a = Double.valueOf(String.valueOf(dtm.getValueAt(indice, 5)).replace(",", "."));
                dtm.removeRow(tabela.getSelectedRow());
                   soma =  soma - a;
//                   updateUI();
                      System.out.println(a + "--" + indice + "soma: " + soma);
                  campoTotalVenda.setValor(String.valueOf(soma));
                }
                }catch(Exception ee){
                    ee.printStackTrace();
                }
            }
        });
    }

    public void atualizaVenda(){
         double somaTem = 0;
           somaTem = Double.parseDouble(campoValorTotal.getText().trim().replace(",", "."));
           lista.add(somaTem);
           soma = soma + somaTem;
           BigDecimal a = new BigDecimal(soma);
           campoTotalVenda.setValor(a.toString());
    }
  
    @Override
    public void limparTabela(){
        while(dtm.getRowCount() > 0){
            dtm.removeRow(0);
        }
        soma = 0;
    }

    private int getIndiceCodigoProduto(int p) {
        int retorno = 0;
        for (int i = 0; i < codigosProduto.size(); i++){
            if (p == i){
               retorno = codigosProduto.get(i);
              // break;
            }
        }
        return retorno;
    }
    
    public void removeItensVenda(){
        for (int i = 0; i < itensVenda.size(); i++){
            itensVenda.remove(i);
        }
    }
    
    public void limparCamposItemVenda(){
        campoCodigoItemVenda.setText("");
        campoProduto.limpar();
        campoValorUnitario.setText("");
        campoComprimento.setText("");
        campoLargura.setText("");
        campoQuantidade.setText("");
        campoDesconto.setText("");
        campoValorTotal.setText("");
    }
//

2 Respostas

DeGuedes

Cara, o melhor jeito para descobrir isso é debugando…

for (int i = 0; i < itensVenda.size(); i++){ daoItemVenda.setItemVenda(itensVenda.get(i)); retorno = daoItemVenda.inserir(); if (retorno == true){ continue; }else{ break; } }

da uma olhada nessa tua lista itensVenda… .verifica se ela esta vindo com os 3 registros que você inseriu…

vlw

I

Obrigado pela dica, consegui resolver o probrema. Esta no array itensVenda,
eu estava instanciando ele no momento que ia adicionar os itens
tem qe ser global… :slight_smile:

Criado 16 de novembro de 2012
Ultima resposta 17 de nov. de 2012
Respostas 2
Participantes 2