br.com.tcc.view.MovimentoPedidoView.java Source code

Java tutorial

Introduction

Here is the source code for br.com.tcc.view.MovimentoPedidoView.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tcc.view;

import Conexao.ConnectionFactory;
import br.com.tcc.entity.Pedidodetalhe;
import br.com.tcc.entity.PedidodetalhePK;
import br.com.tcc.entity.Pedidoregistro;
import br.com.tcc.entity.Produto;
import br.com.tcc.util.EntityManagerUtil;
import br.com.tcc.util.TableModelPadraoParaBean;
import br.com.tcc.util.Uteis;
import br.com.tcc.util.pegaProduto;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.Query;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import net.proteanit.sql.DbUtils;

/**
 *
 * @author Leonardo P Souza
 */
public class MovimentoPedidoView extends javax.swing.JDialog {

    Boolean editando; // Variavel global responsavel pela ativaes dos componentes da classe(ex: botes, tabelas e campos).
    Double valorTotal = 0.0;
    public static String sql;
    public String mes, dia, ano, dia_semana, hora;

    public MovimentoPedidoView(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        pnlFormProduto1.setVisible(false);
        pedidoDetalheList.clear();
        editando = false;
        btnImprimir.setEnabled(false);
        trataEdicao();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        entityManager = EntityManagerUtil.getEntityManager();
        pedidoRegistroQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT pr FROM Pedidoregistro pr");
        pedidoRegistroList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(pedidoRegistroQuery.getResultList());
        pedidoDetalheQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT pd FROM Pedidodetalhe pd");
        pedidoDetalheList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(pedidoDetalheQuery.getResultList());
        fornecedorQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT f FROM Fornecedor f");
        fornecedorList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(fornecedorQuery.getResultList());
        produtoQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager
                        .createQuery("from Produto where numEstoque <= numEstoqueCritico order by descricao");
        produtoList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(produtoQuery.getResultList());
        atualizaProdutoQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager
                        .createQuery("from Produto where numEstoque <= numEstoqueCritico order by descricao");
        atualizaProdutoList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(produtoQuery.getResultList());
        unidadeQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("from Unidade order by descricao");
        unidadeList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(unidadeQuery.getResultList());
        pnlBotoesPedido = new javax.swing.JPanel();
        btnNovaVenda = new javax.swing.JButton();
        btnExcluir = new javax.swing.JButton();
        btnConfirmar = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        btnImprimir = new javax.swing.JButton();
        pnlRegistroPedido = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        txtVenda = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        txtTotalVenda = new javax.swing.JTextField();
        cbxFornecedor = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        spnQuantidade = new javax.swing.JSpinner();
        pnlDetalhePedido = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblDetalhe = new javax.swing.JTable();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblRegistro = new javax.swing.JTable();
        pnlProduto = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        tblProduto = new javax.swing.JTable();
        pnlFormProduto1 = new javax.swing.JPanel();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jScrollPane5 = new javax.swing.JScrollPane();
        tblObjetos1 = new javax.swing.JTable();
        txtCodigo1 = new javax.swing.JTextField();
        txtDescricao1 = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        cbxFornecedor2 = new javax.swing.JComboBox();
        jLabel11 = new javax.swing.JLabel();
        cbxUnidade1 = new javax.swing.JComboBox();
        btnImportar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        pnlPesquisa = new javax.swing.JPanel();
        lblProduto = new javax.swing.JLabel();
        txtPesquisar = new javax.swing.JTextField();
        btnAdicionar = new javax.swing.JToggleButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Requerimento de Pedidos");
        setPreferredSize(new java.awt.Dimension(1296, 528));

        pnlBotoesPedido.setBackground(new java.awt.Color(204, 204, 255));

        btnNovaVenda.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/tcc/imagem/Vendax32.png"))); // NOI18N
        btnNovaVenda.setText("Novo Pedido");
        btnNovaVenda.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovaVendaActionPerformed(evt);
            }
        });

        btnExcluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/tcc/imagem/excluir32.png"))); // NOI18N
        btnExcluir.setText("Excluir");

        org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tblDetalhe,
                org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), btnExcluir,
                org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        btnExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExcluirActionPerformed(evt);
            }
        });

        btnConfirmar
                .setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/tcc/imagem/confirmar32.png"))); // NOI18N
        btnConfirmar.setText("Confirmar");
        btnConfirmar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConfirmarActionPerformed(evt);
            }
        });

        jButton1.setText("Adicionar Produto");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        btnImprimir.setText("Imprimir");
        btnImprimir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnImprimirActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pnlBotoesPedidoLayout = new javax.swing.GroupLayout(pnlBotoesPedido);
        pnlBotoesPedido.setLayout(pnlBotoesPedidoLayout);
        pnlBotoesPedidoLayout.setHorizontalGroup(
                pnlBotoesPedidoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(pnlBotoesPedidoLayout.createSequentialGroup().addContainerGap()
                                .addGroup(pnlBotoesPedidoLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(btnNovaVenda, javax.swing.GroupLayout.DEFAULT_SIZE, 139,
                                                Short.MAX_VALUE)
                                        .addComponent(btnExcluir, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(btnConfirmar, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(btnImprimir, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        pnlBotoesPedidoLayout.setVerticalGroup(pnlBotoesPedidoLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlBotoesPedidoLayout.createSequentialGroup().addContainerGap().addComponent(btnNovaVenda)
                        .addGap(18, 18, 18).addComponent(btnExcluir).addGap(18, 18, 18).addComponent(btnConfirmar)
                        .addGap(18, 18, 18).addComponent(jButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnImprimir)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        pnlRegistroPedido.setBorder(javax.swing.BorderFactory.createTitledBorder("Registro de Pedido"));

        jLabel1.setText("Cdigo Pedido:");

        txtVenda.setEnabled(false);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tblRegistro,
                org.jdesktop.beansbinding.ELProperty.create("${selectedElement.id}"), txtVenda,
                org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        jLabel5.setText("Total Venda R$:");

        txtTotalVenda.setEnabled(false);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tblRegistro,
                org.jdesktop.beansbinding.ELProperty.create("${selectedElement.vlrPedido}"), txtTotalVenda,
                org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        org.jdesktop.swingbinding.JComboBoxBinding jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings
                .createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
                        fornecedorList, cbxFornecedor);
        bindingGroup.addBinding(jComboBoxBinding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tblRegistro,
                org.jdesktop.beansbinding.ELProperty.create("${selectedElement.idFornecedor}"), cbxFornecedor,
                org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
        bindingGroup.addBinding(binding);

        jLabel2.setText("Fornecedor");

        jLabel3.setText("Quantidade:");

        javax.swing.GroupLayout pnlRegistroPedidoLayout = new javax.swing.GroupLayout(pnlRegistroPedido);
        pnlRegistroPedido.setLayout(pnlRegistroPedidoLayout);
        pnlRegistroPedidoLayout.setHorizontalGroup(pnlRegistroPedidoLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlRegistroPedidoLayout.createSequentialGroup().addContainerGap().addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtVenda, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18).addComponent(jLabel2).addGap(18, 18, 18)
                        .addComponent(cbxFornecedor, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(pnlRegistroPedidoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(pnlRegistroPedidoLayout.createSequentialGroup().addComponent(jLabel5)
                                        .addGap(18, 18, 18).addComponent(txtTotalVenda,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 100,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(pnlRegistroPedidoLayout.createSequentialGroup().addComponent(jLabel3)
                                        .addGap(35, 35, 35).addComponent(spnQuantidade,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 100,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addContainerGap()));
        pnlRegistroPedidoLayout
                .setVerticalGroup(
                        pnlRegistroPedidoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(pnlRegistroPedidoLayout.createSequentialGroup().addContainerGap()
                                        .addGroup(pnlRegistroPedidoLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jLabel1)
                                                .addComponent(txtVenda, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(jLabel5)
                                                .addComponent(txtTotalVenda, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(cbxFornecedor, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(jLabel2))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(pnlRegistroPedidoLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(spnQuantidade, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(jLabel3))
                                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        pnlDetalhePedido.setBorder(javax.swing.BorderFactory.createTitledBorder("Detalhe de Pedido"));

        org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings
                .createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
                        pedidoDetalheList, tblDetalhe);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(
                org.jdesktop.beansbinding.ELProperty.create("${pedidodetalhePK.idPedidoRegistro}"));
        columnBinding.setColumnName("Cdigo");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${pedidodetalhePK.idProduto}"));
        columnBinding.setColumnName("Produto");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${qtdePedido}"));
        columnBinding.setColumnName("Quantidade");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrUnitario}"));
        columnBinding.setColumnName("Unitario R$");
        columnBinding.setColumnClass(Double.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrTotal}"));
        columnBinding.setColumnName("Total R$");
        columnBinding.setColumnClass(Double.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane1.setViewportView(tblDetalhe);

        javax.swing.GroupLayout pnlDetalhePedidoLayout = new javax.swing.GroupLayout(pnlDetalhePedido);
        pnlDetalhePedido.setLayout(pnlDetalhePedidoLayout);
        pnlDetalhePedidoLayout
                .setHorizontalGroup(
                        pnlDetalhePedidoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlDetalhePedidoLayout
                                        .createSequentialGroup().addContainerGap().addComponent(jScrollPane1,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, 393, Short.MAX_VALUE)
                                        .addContainerGap()));
        pnlDetalhePedidoLayout.setVerticalGroup(pnlDetalhePedidoLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlDetalhePedidoLayout.createSequentialGroup().addContainerGap()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 455, Short.MAX_VALUE)
                        .addContainerGap()));

        jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, pedidoRegistroList, tblRegistro);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${dataPedido}"));
        columnBinding.setColumnName("Data Pedido");
        columnBinding.setColumnClass(java.util.Date.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding.setColumnName("Id");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idFornecedor}"));
        columnBinding.setColumnName("Id Fornecedor");
        columnBinding.setColumnClass(br.com.tcc.entity.Fornecedor.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrPedido}"));
        columnBinding.setColumnName("Vlr Pedido");
        columnBinding.setColumnClass(Double.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane2.setViewportView(tblRegistro);

        pnlProduto.setBorder(javax.swing.BorderFactory.createTitledBorder("Produtos"));
        pnlProduto.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, produtoList, tblProduto);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding.setColumnName("Cdigo");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${descricao}"));
        columnBinding.setColumnName("Descrio");
        columnBinding.setColumnClass(String.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${numEstoque}"));
        columnBinding.setColumnName("Estoque");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${numEstoqueCritico}"));
        columnBinding.setColumnName("Critico");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idUnidade.descricao}"));
        columnBinding.setColumnName("Unidade");
        columnBinding.setColumnClass(String.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idFornecedor.nome}"));
        columnBinding.setColumnName(" Fornecedor");
        columnBinding.setColumnClass(String.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrCompra}"));
        columnBinding.setColumnName("Compra R$");
        columnBinding.setColumnClass(Double.class);
        columnBinding.setEditable(false);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane3.setViewportView(tblProduto);

        pnlProduto.add(jScrollPane3, new org.netbeans.lib.awtextra.AbsoluteConstraints(22, 24, 620, 290));

        jLabel8.setText("Cdigo: ");

        jLabel9.setText("Descrio:");

        jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, produtoList, tblObjetos1);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding.setColumnName("Id");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${descricao}"));
        columnBinding.setColumnName("Descricao");
        columnBinding.setColumnClass(String.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idFornecedor}"));
        columnBinding.setColumnName("Id Fornecedor");
        columnBinding.setColumnClass(br.com.tcc.entity.Fornecedor.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idUnidade}"));
        columnBinding.setColumnName("Id Unidade");
        columnBinding.setColumnClass(br.com.tcc.entity.Unidade.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${numEstoque}"));
        columnBinding.setColumnName("Num Estoque");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${numEstoqueCritico}"));
        columnBinding.setColumnName("Num Estoque Critico");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrCompra}"));
        columnBinding.setColumnName("Vlr Compra");
        columnBinding.setColumnClass(Double.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrVenda}"));
        columnBinding.setColumnName("Vlr Venda");
        columnBinding.setColumnClass(Double.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane5.setViewportView(tblObjetos1);

        txtCodigo1.setEditable(false);
        txtCodigo1.setFocusable(false);
        txtCodigo1.setRequestFocusEnabled(false);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tblObjetos1,
                org.jdesktop.beansbinding.ELProperty.create("${selectedElement.id}"), txtCodigo1,
                org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tblObjetos1,
                org.jdesktop.beansbinding.ELProperty.create("${selectedElement.descricao}"), txtDescricao1,
                org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        txtDescricao1.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                txtDescricao1FocusGained(evt);
            }

            public void focusLost(java.awt.event.FocusEvent evt) {
                txtDescricao1FocusLost(evt);
            }
        });

        jLabel10.setText("Fornecedor:");

        jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, fornecedorList, cbxFornecedor2);
        bindingGroup.addBinding(jComboBoxBinding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tblObjetos1,
                org.jdesktop.beansbinding.ELProperty.create("${selectedElement.idFornecedor}"), cbxFornecedor2,
                org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
        bindingGroup.addBinding(binding);

        cbxFornecedor2.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                cbxFornecedor2FocusGained(evt);
            }

            public void focusLost(java.awt.event.FocusEvent evt) {
                cbxFornecedor2FocusLost(evt);
            }
        });

        jLabel11.setText("Unidade:");

        jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, unidadeList, cbxUnidade1);
        bindingGroup.addBinding(jComboBoxBinding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, tblObjetos1,
                org.jdesktop.beansbinding.ELProperty.create("${selectedElement.idUnidade}"), cbxUnidade1,
                org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
        bindingGroup.addBinding(binding);

        cbxUnidade1.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                cbxUnidade1FocusGained(evt);
            }

            public void focusLost(java.awt.event.FocusEvent evt) {
                cbxUnidade1FocusLost(evt);
            }
        });

        btnImportar.setText("Importar");
        btnImportar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnImportarActionPerformed(evt);
            }
        });

        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pnlFormProduto1Layout = new javax.swing.GroupLayout(pnlFormProduto1);
        pnlFormProduto1.setLayout(pnlFormProduto1Layout);
        pnlFormProduto1Layout.setHorizontalGroup(pnlFormProduto1Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlFormProduto1Layout.createSequentialGroup().addContainerGap()
                        .addGroup(pnlFormProduto1Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(pnlFormProduto1Layout.createSequentialGroup().addComponent(jLabel9)
                                        .addGap(27, 27, 27).addComponent(txtDescricao1))
                                .addGroup(pnlFormProduto1Layout.createSequentialGroup().addComponent(jLabel10)
                                        .addGap(18, 18, 18)
                                        .addGroup(pnlFormProduto1Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                                        false)
                                                .addComponent(cbxFornecedor2, 0,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(txtCodigo1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        100, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGap(42, 42, 42).addComponent(jLabel11).addGap(18, 18, 18)
                                        .addComponent(cbxUnidade1, 0, 80, Short.MAX_VALUE))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                        pnlFormProduto1Layout.createSequentialGroup()
                                                .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        0, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(btnCancelar)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(btnImportar))
                                .addGroup(pnlFormProduto1Layout.createSequentialGroup().addComponent(jLabel8)
                                        .addGap(0, 0, Short.MAX_VALUE)))
                        .addContainerGap()));
        pnlFormProduto1Layout.setVerticalGroup(
                pnlFormProduto1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(pnlFormProduto1Layout.createSequentialGroup().addContainerGap()
                                .addGroup(pnlFormProduto1Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(jLabel8).addComponent(txtCodigo1,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(pnlFormProduto1Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(jLabel9).addComponent(txtDescricao1,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(18, 18, 18)
                                .addGroup(pnlFormProduto1Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(jLabel10)
                                        .addComponent(cbxFornecedor2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel11).addComponent(cbxUnidade1,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(pnlFormProduto1Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(pnlFormProduto1Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(btnImportar).addComponent(btnCancelar))
                                        .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addContainerGap()));

        pnlProduto.add(pnlFormProduto1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 30, -1, -1));

        lblProduto.setText("Produto:");

        txtPesquisar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtPesquisarKeyReleased(evt);
            }
        });

        btnAdicionar.setText("Adicionar >>");
        btnAdicionar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAdicionarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pnlPesquisaLayout = new javax.swing.GroupLayout(pnlPesquisa);
        pnlPesquisa.setLayout(pnlPesquisaLayout);
        pnlPesquisaLayout.setHorizontalGroup(pnlPesquisaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlPesquisaLayout.createSequentialGroup().addContainerGap().addComponent(lblProduto)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtPesquisar, javax.swing.GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE)
                        .addGap(18, 18, 18).addComponent(btnAdicionar).addContainerGap()));
        pnlPesquisaLayout.setVerticalGroup(pnlPesquisaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlPesquisaLayout.createSequentialGroup().addContainerGap().addGroup(pnlPesquisaLayout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(lblProduto)
                        .addComponent(txtPesquisar, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(btnAdicionar))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        pnlProduto.add(pnlPesquisa, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 330, 620, 40));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addContainerGap()
                        .addComponent(pnlBotoesPedido, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(pnlProduto, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(pnlRegistroPedido, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(pnlDetalhePedido, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout.createSequentialGroup().addContainerGap().addGroup(layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(pnlBotoesPedido, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                layout.createSequentialGroup()
                                        .addComponent(pnlRegistroPedido, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(pnlProduto, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                layout.createSequentialGroup()
                                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(pnlDetalhePedido, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                        .addContainerGap()));

        bindingGroup.bind();

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnNovaVendaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovaVendaActionPerformed
        editando = true;
        trataEdicao();
        pedidoDetalheList.clear();
        pedidoRegistroList.add((Pedidoregistro) new Pedidoregistro());
        int row = pedidoRegistroList.size() - 1;
        tblRegistro.setRowSelectionInterval(row, row);
        spnQuantidade.setValue(1);
    }//GEN-LAST:event_btnNovaVendaActionPerformed

    private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExcluirActionPerformed
        if (Uteis.confirmar("Confirma Excluo?")) {
            int linhaClicada = tblDetalhe.getSelectedRow();
            if (linhaClicada < 0) {
                JOptionPane.showMessageDialog(null, "Selecione um registro para excluir");
            } else {
                try {
                    Pedidodetalhe obj = pedidoDetalheList.get(linhaClicada);
                    valorTotal = valorTotal - obj.getVlrTotal();
                    pedidoDetalheList.remove(linhaClicada);
                    txtTotalVenda.setText(String.valueOf(valorTotal));
                    entityManager.getTransaction().begin();
                    entityManager.remove(obj);
                    entityManager.getTransaction().commit();
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, "Erro ao Excluir \n" + e.getMessage());
                    if (entityManager.getTransaction().isActive() == false) {
                        entityManager.getTransaction().begin();
                    }
                    entityManager.getTransaction().rollback();
                }
            }
        }
    }//GEN-LAST:event_btnExcluirActionPerformed

    private void btnConfirmarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConfirmarActionPerformed
        try {
            int row = pedidoDetalheList.size() - 1;
            if (row >= 0) {
                entityManager.getTransaction().begin();
                entityManager.getTransaction().commit();
                JOptionPane.showMessageDialog(null, "Pedido Realizada com Sucesso");
                btnImprimir.setEnabled(true);
            } else {
                JOptionPane.showMessageDialog(null, "Insira um produto ao Pedido");
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Erro ao Gravar \n" + e.getMessage());
        }
    }//GEN-LAST:event_btnConfirmarActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed

        produtoList.add((Produto) new Produto());
        int row = produtoList.size() - 1;
        tblObjetos1.setRowSelectionInterval(row, row);
        txtDescricao1.requestFocus();
        pnlFormProduto1.setVisible(true);
        tblProduto.setVisible(false);
        txtPesquisar.setVisible(false);
        lblProduto.setVisible(false);
        btnAdicionar.setVisible(false);
        jScrollPane3.setVisible(false);

        //        JDialog form = new AdicionaProdutoView(null, true);
        //        form.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        //        form.setLocationRelativeTo(null);
        //        form.setResizable(false);
        //        form.setVisible(true);
        //        atualizaTabelaProduto();
        //        produtoQuery = entityManager.createQuery("from Produto where numEstoque <= numEstoqueCritico order by descricao");
        ////        produtoList.clear();
        //        produtoQuery.executeUpdate();
        //        produtoQuery.getResultList();
        //        produtoList.addAll(produtoQuery.getResultList());
        //        int linha = tblProduto.getRowCount() - 1;
        //        tblProduto.setRowSelectionInterval(linha, linha);
        //        tblProduto.scrollRectToVisible(tblProduto.getCellRect(linha, 0, true));

    }//GEN-LAST:event_jButton1ActionPerformed

    private void txtPesquisarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPesquisarKeyReleased
        atualizaGridProduto();
        if (txtPesquisar.getText().isEmpty()) {
            atualizaGridProdutoEstoque();
        }
    }//GEN-LAST:event_txtPesquisarKeyReleased

    private void btnAdicionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAdicionarActionPerformed
        if (validaCampos()) {
            salvarRegistroPedido();

            Pedidodetalhe vd = new Pedidodetalhe();
            Pedidoregistro vr = new Pedidoregistro();
            PedidodetalhePK vdpk = new PedidodetalhePK();
            //
            int indexRegistro = tblRegistro.getSelectedRow(); // seleciona o registro da jTable vendaRegistro
            int indexProduto = tblProduto.getSelectedRow(); // seleciona o registro da jTable produto
            vdpk.setIdPedidoRegistro(pedidoRegistroList.get(indexRegistro).getId()); // adiciona ao idVendaRegistro o id da vendaRegistro selecionado na lista de vendaRegistroList
            vdpk.setIdProduto(produtoList.get(indexProduto).getId()); // adiciona ao idProduto o id do produto selecionado na lista de produtoList
            vd.setPedidodetalhePK(vdpk); // adiciona a vendeDetalhePK os registro de vdpk(idVendaRegistro e idProduto)
            vr.setIdFornecedor(null);
            int quantidade;
            boolean continuar = true;
            quantidade = (Integer) spnQuantidade.getValue();
            if (quantidade >= 1) {

                if (quantidade <= produtoList.get(indexProduto).getNumEstoque()) {
                    continuar = false;//caso o valor informado esteja dentro da faixa, o lao termina
                    int linhaClicada = tblProduto.getSelectedRow();
                    Produto obj = produtoList.get(linhaClicada);
                    //                    int produtoExtra = quantidade;
                    //                    int entradaEstoque = produtoList.get(indexProduto).getNumEstoque() - quantidade;
                    //                    obj.setNumEstoque(entradaEstoque);
                    vd.setQtdePedido(quantidade);
                    vd.setVlrUnitario(produtoList.get(indexProduto).getVlrVenda());
                    vd.setVlrTotal(quantidade * produtoList.get(indexProduto).getVlrVenda());
                    valorTotal = valorTotal + vd.getVlrTotal();
                    txtTotalVenda.setText(String.valueOf(valorTotal));
                    pedidoDetalheList.add(vd);
                    entityManager.persist(vd);
                    produtoList.clear();
                    produtoList.addAll(produtoQuery.getResultList());
                    spnQuantidade.setValue(1);

                }

            } else {
                JOptionPane.showMessageDialog(null, "Smente quantidades positivas");
                spnQuantidade.setValue(1);
            }
        }

        //        if (validaCampos()) {
        //            salvarRegistroPedido(); // chama mtodo para salvar a venda e assim podendo inserir itens a venda
        //
        //            Pedidodetalhe vd = new Pedidodetalhe();
        //            Pedidoregistro vr = new Pedidoregistro();
        //            PedidodetalhePK vdpk = new PedidodetalhePK();
        ////
        //            int indexRegistro = tblRegistro.getSelectedRow(); // seleciona o registro da jTable vendaRegistro
        //            int indexProduto = tblProduto.getSelectedRow(); // seleciona o registro da jTable produto
        //            vdpk.setIdPedidoRegistro(pedidoRegistroList.get(indexRegistro).getId()); // adiciona ao idVendaRegistro o id da vendaRegistro selecionado na lista de vendaRegistroList
        //            vdpk.setIdProduto(produtoList.get(indexProduto).getId()); // adiciona ao idProduto o id do produto selecionado na lista de produtoList
        //            vd.setPedidodetalhePK(vdpk); // adiciona a vendeDetalhePK os registro de vdpk(idVendaRegistro e idProduto)
        //            vr.setIdFornecedor(null);
        //            int quantidade;
        //            boolean continuar = true;
        //            while (continuar) {
        //                quantidade = Integer.parseInt(JOptionPane.showInputDialog(null, "Quantidade?"));
        //
        //                if (quantidade >= 1) {
        //                    continuar = false;//caso o valor informado esteja dentro da faixa, o lao termina
        //                    vd.setQtdePedido(quantidade);
        //                    vd.setVlrUnitario(produtoList.get(indexProduto).getVlrVenda());
        //                    vd.setVlrTotal(quantidade * produtoList.get(indexProduto).getVlrVenda());
        //                    valorTotal = valorTotal + vd.getVlrTotal();
        //                    txtTotalVenda.setText(String.valueOf(valorTotal));
        //                    entityManager.getTransaction().begin();
        //                    entityManager.persist(vd);
        //                    pedidoDetalheList.add(vd);
        //                    entityManager.getTransaction().commit();
        //                } else {
        //                    JOptionPane.showInputDialog(null, "Quantidade?");
        //                }
        //
        //            }
        //
        //        }
    }//GEN-LAST:event_btnAdicionarActionPerformed

    private void txtDescricao1FocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtDescricao1FocusGained
        Uteis.entraCampo(evt);
    }//GEN-LAST:event_txtDescricao1FocusGained

    private void txtDescricao1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtDescricao1FocusLost
        Uteis.saiCampo(evt);
    }//GEN-LAST:event_txtDescricao1FocusLost

    private void cbxFornecedor2FocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_cbxFornecedor2FocusGained
        Uteis.entraCampo(evt);
    }//GEN-LAST:event_cbxFornecedor2FocusGained

    private void cbxFornecedor2FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_cbxFornecedor2FocusLost
        Uteis.saiCampo(evt);
    }//GEN-LAST:event_cbxFornecedor2FocusLost

    private void cbxUnidade1FocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_cbxUnidade1FocusGained
        Uteis.entraCampo(evt);
    }//GEN-LAST:event_cbxUnidade1FocusGained

    private void cbxUnidade1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_cbxUnidade1FocusLost
        Uteis.saiCampo(evt);
    }//GEN-LAST:event_cbxUnidade1FocusLost

    private void btnImportarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImportarActionPerformed
        if (validaCampos()) {
            try {
                int linhaClicada = tblObjetos1.getSelectedRow();
                Produto obj = produtoList.get(linhaClicada);
                obj.setNumEstoque(0);
                obj.setNumEstoqueCritico(0);
                obj.setVlrCompra(0.0);
                obj.setVlrVenda(0.0);
                entityManager.getTransaction().begin();
                entityManager.persist(obj);
                entityManager.getTransaction().commit();
                tblProduto.setVisible(true);
                jScrollPane3.setVisible(true);
                txtPesquisar.setVisible(true);
                lblProduto.setVisible(true);
                btnAdicionar.setVisible(true);
                pnlFormProduto1.setVisible(false);
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Erro ao Gravar \n" + e.getMessage());
                if (entityManager.getTransaction().isActive() == false) {
                    entityManager.getTransaction().begin();
                }
                entityManager.getTransaction().rollback();

            }
        }
    }//GEN-LAST:event_btnImportarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        pnlFormProduto1.setVisible(false);
        tblProduto.setVisible(true);
        txtPesquisar.setVisible(true);
        lblProduto.setVisible(true);
        btnAdicionar.setVisible(true);
        jScrollPane3.setVisible(true);
        int linha = tblProduto.getRowCount() - 1;
        tblProduto.setRowSelectionInterval(linha, linha);
        tblProduto.scrollRectToVisible(tblProduto.getCellRect(linha, 0, true));
        Produto p = produtoList.get(linha);
        entityManager.getTransaction().begin();
        entityManager.remove(p);
        produtoList.remove(p);
        int linha2 = tblProduto.getRowCount() - 1;
        tblProduto.setRowSelectionInterval(linha2, linha2);
        tblProduto.scrollRectToVisible(tblProduto.getCellRect(linha2, 0, true));
        entityManager.getTransaction().commit();
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void btnImprimirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImprimirActionPerformed
        int row = tblRegistro.getSelectedRow();
        int id = pedidoRegistroList.get(row).getId();
        sql = "SELECT produto.descricao, pedidodetalhe.qtdePedido, pedidodetalhe.vlrUnitario, pedidodetalhe.vlrTotal from pedidodetalhe as pedidodetalhe INNER JOIN produto as produto ON (pedidodetalhe.idProduto = produto.ID) where idPedidoRegistro = "
                + id;
        System.out.println(sql);
        try {
            relat(sql);
        } catch (SQLException ex) {
            Logger.getLogger(MovimentoEntradaView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (DocumentException ex) {
            Logger.getLogger(MovimentoEntradaView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(MovimentoEntradaView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_btnImprimirActionPerformed

    private void atualizaTabelaProduto() {
        try {
            tblProduto.setModel(new TableModelPadraoParaBean(pegaProduto.ConsultarProduto(produtoQuery)));
        } catch (Exception ex) {
            Logger.getLogger(MovimentoOrcamentoView.class.getName()).log(Level.SEVERE, null, ex);
        }
        //            DefaultTableModel modelo = (DefaultTableModel)tblProduto().getModel();
        //            produtoQuery = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery("from Produto where numEstoque <= numEstoqueCritico order by descricao");
        //            String sql = "from Produto where numEstoque <= numEstoqueCritico";
        //            produtoQuery = entityManager.createQuery(sql);
        //            produtoList.clear();
        //            produtoList.addAll(atualizaProdutoQuery.getResultList());
        //            int linha = tblProduto.getRowCount() - 1;
        //        tblProduto.setRowSelectionInterval(linha, linha);
        //        tblProduto.scrollRectToVisible(tblProduto.getCellRect(linha, 0, true));

        //            tblProduto
        //            produtoList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : org.jdesktop.observablecollections.ObservableCollections.observableList(produtoQuery.getResultList());
        //            String sql = "from Produto where numEstoque <= numEstoqueCritico";
        //            PreparedStatement pst = (PreparedStatement) entityManager.createQuery(sql);
        //            ResultSet rs=pst.executeQuery();
        ////            tblProduto
        ////          produtoList = query.getResultList();
        //            tblProduto.setModel(DbUtils.resultSetToTableModel(rs));
        //        } catch (Exception e) {
        //            JOptionPane.showMessageDialog(null, "Erro ao Gravar \n" + e.getMessage());
        //        }
    }

    private void atualizaGridProduto() {

        String sql = "from Produto";
        String ordem = "";
        ordem = "descricao";
        String filtro = txtPesquisar.getText();
        if (filtro.length() > 0 && filtro != null) {
            sql += " where upper(" + ordem + ") like '" + filtro.toUpperCase() + "%' ";
        }
        sql += " order by " + ordem;
        System.out.println("SQL Gerado: " + sql);
        produtoQuery = entityManager.createQuery(sql);
        produtoList.clear();
        produtoList.addAll(produtoQuery.getResultList());
        int row = produtoList.size() - 1;
        if (row >= 0) {
            tblProduto.setRowSelectionInterval(row, row);
            tblProduto.scrollRectToVisible(tblProduto.getCellRect(row, row, true));
        }

    }

    private void atualizaGridProdutoEstoque() {
        Produto p = new Produto();
        String sql = "from Produto where numEstoque <= numEstoqueCritico";
        String ordem = "";
        ordem = "descricao";
        String filtro = txtPesquisar.getText();
        if (filtro.length() > 0 && filtro != null) {
            sql += " where upper(" + ordem + ") like '" + filtro.toUpperCase() + "%' ";
        }
        sql += " order by " + ordem;
        System.err.println("SQL Gerado: " + sql);
        produtoQuery = entityManager.createQuery(sql);
        produtoList.clear();
        produtoList.addAll(produtoQuery.getResultList());
        int row = produtoList.size() - 1;
        if (row >= 0) {
            tblProduto.setRowSelectionInterval(row, row);
            tblProduto.scrollRectToVisible(tblProduto.getCellRect(row, row, true));
            tblProduto.revalidate();
        }

    }

    private void salvarRegistroPedido() {
        int linhaClicada = tblRegistro.getSelectedRow();
        Pedidoregistro obj = pedidoRegistroList.get(linhaClicada);
        Date data = new Date(System.currentTimeMillis());
        obj.setDataPedido(data);
        entityManager.getTransaction().begin();
        entityManager.persist(obj);
        entityManager.getTransaction().commit();
    }

    private void trataEdicao() {
        // botes e campos de filtro
        btnAdicionar.setEnabled(editando);
        btnConfirmar.setEnabled(editando);
        tblDetalhe.setEnabled(editando);
        tblProduto.setEnabled(editando);
        txtPesquisar.setEnabled(editando);
        cbxFornecedor.setEnabled(editando);

    }

    /**
     * Mtodo que valida o campos de preenchimento de formulrio
     *
     * @return
     */
    private boolean validaCampos() {
        if (cbxFornecedor.getSelectedIndex() < 0) {
            JOptionPane.showMessageDialog(null, "Selecione um Fornecedor");
            cbxFornecedor.requestFocus();
            return false;
        }
        //        if (cbxFuncionario.getSelectedIndex() < 0) {
        //            JOptionPane.showMessageDialog(null, "Selecione um Funcionrio");
        //            cbxFuncionario.requestFocus();
        //            return false;
        //        }
        //        if (cbxTipoPagamento.getSelectedIndex() < 0) {
        //            JOptionPane.showMessageDialog(null, "Selecione um Tipo de Pagamento");
        //            cbxTipoPagamento.requestFocus();
        //            return false;
        //        }
        return true;

    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    public static java.util.List<br.com.tcc.entity.Produto> atualizaProdutoList;
    public static javax.persistence.Query atualizaProdutoQuery;
    private javax.swing.JToggleButton btnAdicionar;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnConfirmar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnImportar;
    private javax.swing.JButton btnImprimir;
    private javax.swing.JButton btnNovaVenda;
    private javax.swing.JComboBox cbxFornecedor;
    private javax.swing.JComboBox cbxFornecedor2;
    private javax.swing.JComboBox cbxUnidade1;
    private javax.persistence.EntityManager entityManager;
    private java.util.List<br.com.tcc.entity.Fornecedor> fornecedorList;
    private javax.persistence.Query fornecedorQuery;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JLabel lblProduto;
    private java.util.List<br.com.tcc.entity.Pedidodetalhe> pedidoDetalheList;
    private javax.persistence.Query pedidoDetalheQuery;
    private java.util.List<br.com.tcc.entity.Pedidoregistro> pedidoRegistroList;
    private javax.persistence.Query pedidoRegistroQuery;
    private javax.swing.JPanel pnlBotoesPedido;
    private javax.swing.JPanel pnlDetalhePedido;
    private javax.swing.JPanel pnlFormProduto1;
    private javax.swing.JPanel pnlPesquisa;
    private javax.swing.JPanel pnlProduto;
    private javax.swing.JPanel pnlRegistroPedido;
    private java.util.List<br.com.tcc.entity.Produto> produtoList;
    private javax.persistence.Query produtoQuery;
    private javax.swing.JSpinner spnQuantidade;
    private javax.swing.JTable tblDetalhe;
    private javax.swing.JTable tblObjetos1;
    private javax.swing.JTable tblProduto;
    private javax.swing.JTable tblRegistro;
    private javax.swing.JTextField txtCodigo1;
    private javax.swing.JTextField txtDescricao1;
    private javax.swing.JTextField txtPesquisar;
    private javax.swing.JTextField txtTotalVenda;
    private javax.swing.JTextField txtVenda;
    private java.util.List<br.com.tcc.entity.Unidade> unidadeList;
    private javax.persistence.Query unidadeQuery;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables

    private void relat(String sql) throws SQLException, DocumentException, FileNotFoundException, IOException {
        /* Create Connection objects */
        Connection con = new ConnectionFactory().getConnection();
        Statement stmt = con.createStatement();

        int row = tblRegistro.getSelectedRow();
        int id = pedidoRegistroList.get(row).getId();
        SimpleDateFormat horaformatada = new SimpleDateFormat("HH:mm:ss");
        Date horaAtual = new Date();
        hora = horaformatada.format(horaAtual);
        Date data = new Date();
        //  mes    = ""+Data.getMonth();//0 a 11 
        dia = "" + data.getDate();
        ano = "" + (1900 + data.getYear());
        switch (data.getMonth()) {
        case 0:
            mes = "Janeiro";
            break;
        case 1:
            mes = "Fevereiro";
            break;
        case 2:
            mes = "Maro";
            break;
        case 3:
            mes = "Abril";
            break;
        case 4:
            mes = "Maio";
            break;
        case 5:
            mes = "Junho";
            break;
        case 6:
            mes = "Julho";
            break;
        case 7:
            mes = "Agosto";
            break;
        case 8:
            mes = "Setembro";
            break;
        case 9:
            mes = "Outubro";
            break;
        case 10:
            mes = "Novembro";
            break;
        case 11:
            mes = "Dezembro";
            break;
        }

        /* Define the SQL query */
        //         sql = "SELECT cliente.nome, funcionario.nome, tipopagamento.descricao, vendaregistro.dataVenda, vendaregistro.vlrSugerido, vendaregistro.totalVenda, vendaregistro.parcela, vendaregistro.1vencimento, vendaregistro.ativo FROM vendaregistro as vendaregistro INNER JOIN cliente as cliente ON (vendaregistro.idCliente = cliente.id) \n" +
        //"INNER JOIN funcionario as funcionario ON (vendaregistro.idFuncionario = funcionario.id) INNER JOIN tipopagamento as tipopagamento ON (vendaregistro.idTipoPagamento = tipopagamento.id) WHERE  dataVenda = CURRENT_DATE";
        ResultSet query = stmt.executeQuery(sql);
        /* Step-2: Initialize PDF documents - logical objects */
        Document PDFLogReport = new Document();
        PdfWriter.getInstance(PDFLogReport,
                new FileOutputStream("C:\\Users\\Leonardo P Souza\\Desktop\\Relat\\Pedidos " + id + ".pdf"));
        PDFLogReport.open();

        Paragraph cabecalho = new Paragraph("AGRO EMPRESARIAL - SISTEMA DE GERENCIAMENTO\n"
                + "RUA GONALVES CHAVES, 602 PELOTAS/RS\n" + "FONE:(53) 3232-3232 BAIRRO: CENTRO\n"
                + "CNPJ: 12.345.678/1011-12\n" + "-------------------------------------------\n" + dia + "/" + mes
                + "/" + ano + "   " + hora + "   COD: " + id + " \n\n");
        cabecalho.setAlignment(Element.ALIGN_CENTER);

        PDFLogReport.add(cabecalho);
        //we have two columns in our table  
        PdfPTable LogTable = new PdfPTable(4);

        // Ttulo para a tabela
        Paragraph tableHeader = new Paragraph("Lista de Pedidos");

        PdfPCell header = new PdfPCell(tableHeader);

        // Definindo que o header vai ocupar as 2 colunas
        header.setColspan(4);
        // Definindo alinhamento do header
        header.setHorizontalAlignment(Paragraph.ALIGN_CENTER);
        // Adicionando o header  tabela

        Font fonte = new Font(Font.FontFamily.HELVETICA, 7, Font.BOLD, BaseColor.BLACK);
        Font fonteDados = new Font(Font.FontFamily.TIMES_ROMAN, 6, Font.NORMAL, BaseColor.BLACK);

        LogTable.addCell(header);
        LogTable.addCell(new Paragraph("Produto ", fonte));
        LogTable.addCell(new Paragraph("Quantidade", fonte));
        LogTable.addCell(new Paragraph("Valor Unitrio", fonte));
        LogTable.addCell(new Paragraph("Valor Total", fonte));
        //create a cell object  
        //         PdfPCell table_cell;  
        while (query.next()) {
            String produto = query.getString("produto.descricao");
            LogTable.addCell(new Paragraph(produto, fonteDados));
            String quantidade = query.getString("qtdePedido");
            LogTable.addCell(new Paragraph(quantidade, fonteDados));
            String vlrSugerido = query.getString("vlrUnitario");
            LogTable.addCell(new Paragraph(vlrSugerido, fonteDados));
            String vlrTotal = query.getString("vlrTotal");
            LogTable.addCell(new Paragraph(vlrTotal, fonteDados));
        }
        /* Attach report table to PDF */
        PDFLogReport.add(LogTable);
        double valor = pedidoRegistroList.get(row).getVlrPedido();
        Paragraph paragrafoValor = new Paragraph("Valor R$: " + valor);
        paragrafoValor.setAlignment(Element.ALIGN_RIGHT);
        PDFLogReport.add(paragrafoValor);

        PDFLogReport.close();
        /* Close all DB related objects */
        query.close();
        stmt.close();
        con.close();
        String file;
        file = "C:\\Users\\Leonardo P Souza\\Desktop\\Relat\\Pedidos " + id + ".pdf";
        Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + file);
    }
}