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

Java tutorial

Introduction

Here is the source code for br.com.tcc.view.MovimentoOrcamentoView.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.Orcamentodetalhe;
import br.com.tcc.entity.OrcamentodetalhePK;
import br.com.tcc.entity.Orcamentoregistro;
import br.com.tcc.entity.Produto;
import br.com.tcc.util.EntityManagerUtil;
import br.com.tcc.util.Uteis;
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.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
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.swing.JOptionPane;

/**
 *
 * @author Leonardo
 */
public class MovimentoOrcamentoView extends javax.swing.JFrame {

    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 MovimentoOrcamentoView() {
        initComponents();
        orcamentoDetalheList.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();
        orcamentoDetalheQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT pd FROM Orcamentodetalhe pd");
        orcamentoDetalheList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(orcamentoDetalheQuery.getResultList());
        tipoPagamentoQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT tp FROM Tipopagamento tp");
        tipoPagamentoList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(tipoPagamentoQuery.getResultList());
        orcamentoRegistroQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT pr FROM Orcamentoregistro pr");
        orcamentoRegistroList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(orcamentoRegistroQuery.getResultList());
        funcionarioQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT f FROM Funcionario f");
        funcionarioList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(funcionarioQuery.getResultList());
        clienteQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT c FROM Cliente c");
        clienteList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(clienteQuery.getResultList());
        produtoQuery = java.beans.Beans.isDesignTime() ? null
                : entityManager.createQuery("SELECT p FROM Produto p");
        produtoList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : org.jdesktop.observablecollections.ObservableCollections
                        .observableList(produtoQuery.getResultList());
        pnlBotoesVenda = new javax.swing.JPanel();
        btnNovaVenda = new javax.swing.JButton();
        btnExcluir = new javax.swing.JButton();
        btnConfirmar = new javax.swing.JButton();
        btnImprimir = new javax.swing.JButton();
        pnlRegistroVenda = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        txtVenda = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        cbxCliente = new javax.swing.JComboBox();
        jLabel3 = new javax.swing.JLabel();
        cbxFuncionario = new javax.swing.JComboBox();
        jLabel5 = new javax.swing.JLabel();
        txtTotalOrcamento = new javax.swing.JTextField();
        spnQuantidade = new javax.swing.JSpinner();
        jLabel4 = new javax.swing.JLabel();
        pnlDetalheVenda = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblDetalhe = new javax.swing.JTable();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblRegistro = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        tblProduto = new javax.swing.JTable();
        lblProduto = new javax.swing.JLabel();
        txtPesquisar = new javax.swing.JTextField();
        btnAdicionar = new javax.swing.JToggleButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Efetuar Oramento ");

        pnlBotoesVenda.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("Nova Oramento");
        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);
            }
        });

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

        javax.swing.GroupLayout pnlBotoesVendaLayout = new javax.swing.GroupLayout(pnlBotoesVenda);
        pnlBotoesVenda.setLayout(pnlBotoesVendaLayout);
        pnlBotoesVendaLayout.setHorizontalGroup(pnlBotoesVendaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlBotoesVendaLayout.createSequentialGroup().addContainerGap()
                        .addGroup(pnlBotoesVendaLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(pnlBotoesVendaLayout.createSequentialGroup().addGroup(pnlBotoesVendaLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(btnNovaVenda, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, 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))
                                        .addGap(0, 0, Short.MAX_VALUE))
                                .addComponent(btnImprimir, javax.swing.GroupLayout.Alignment.TRAILING,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        Short.MAX_VALUE))
                        .addContainerGap()));
        pnlBotoesVendaLayout.setVerticalGroup(pnlBotoesVendaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlBotoesVendaLayout.createSequentialGroup().addContainerGap().addComponent(btnNovaVenda)
                        .addGap(18, 18, 18).addComponent(btnExcluir).addGap(18, 18, 18).addComponent(btnConfirmar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnImprimir)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        pnlRegistroVenda.setBorder(javax.swing.BorderFactory.createTitledBorder("Registro de Oramento"));

        jLabel1.setText("Cdigo oramento:");

        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);

        jLabel2.setText("Cliente:");

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

        jLabel3.setText("Funcionrio:");

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

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

        txtTotalOrcamento.setEnabled(false);

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

        jLabel4.setText("Quantidade:");

        javax.swing.GroupLayout pnlRegistroVendaLayout = new javax.swing.GroupLayout(pnlRegistroVenda);
        pnlRegistroVenda.setLayout(pnlRegistroVendaLayout);
        pnlRegistroVendaLayout.setHorizontalGroup(pnlRegistroVendaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pnlRegistroVendaLayout.createSequentialGroup().addContainerGap()
                        .addGroup(pnlRegistroVendaLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(pnlRegistroVendaLayout.createSequentialGroup().addComponent(jLabel3)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(cbxFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, 300,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(pnlRegistroVendaLayout.createSequentialGroup().addComponent(jLabel5)
                                        .addGap(18, 18, 18)
                                        .addComponent(txtTotalOrcamento, 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)
                                        .addComponent(jLabel4)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(spnQuantidade, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(pnlRegistroVendaLayout.createSequentialGroup()
                                        .addGroup(pnlRegistroVendaLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jLabel1).addComponent(jLabel2))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(pnlRegistroVendaLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(txtVenda, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(cbxCliente, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        300, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGap(0, 0, Short.MAX_VALUE)))
                        .addContainerGap()));
        pnlRegistroVendaLayout.setVerticalGroup(
                pnlRegistroVendaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(pnlRegistroVendaLayout.createSequentialGroup().addContainerGap()
                                .addGroup(pnlRegistroVendaLayout
                                        .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))
                                .addGap(18, 18, 18)
                                .addGroup(pnlRegistroVendaLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(cbxCliente, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel2))
                                .addGap(18, 18, 18)
                                .addGroup(pnlRegistroVendaLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jLabel3).addComponent(cbxFuncionario,
                                                javax.swing.GroupLayout.Alignment.TRAILING,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(18, 18, 18)
                                .addGroup(pnlRegistroVendaLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(jLabel5)
                                        .addComponent(txtTotalOrcamento, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(spnQuantidade, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel4))
                                .addContainerGap(37, Short.MAX_VALUE)));

        pnlDetalheVenda.setBorder(javax.swing.BorderFactory.createTitledBorder("Detalhe do Oramento"));

        org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings
                .createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
                        orcamentoDetalheList, tblDetalhe);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(
                org.jdesktop.beansbinding.ELProperty.create("${orcamentodetalhePK.idOrcamentoRegistro}"));
        columnBinding.setColumnName("Cdigo Venda");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${orcamentodetalhePK.idProduto}"));
        columnBinding.setColumnName("Produto");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${qtde}"));
        columnBinding.setColumnName("Qtde");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrUnitario}"));
        columnBinding.setColumnName("Valor Unit R$");
        columnBinding.setColumnClass(Double.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrTotal}"));
        columnBinding.setColumnName("Valor Total R$");
        columnBinding.setColumnClass(Double.class);
        columnBinding.setEditable(false);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane1.setViewportView(tblDetalhe);

        javax.swing.GroupLayout pnlDetalheVendaLayout = new javax.swing.GroupLayout(pnlDetalheVenda);
        pnlDetalheVenda.setLayout(pnlDetalheVendaLayout);
        pnlDetalheVendaLayout.setHorizontalGroup(
                pnlDetalheVendaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                        javax.swing.GroupLayout.Alignment.TRAILING, pnlDetalheVendaLayout.createSequentialGroup()
                                .addContainerGap().addComponent(jScrollPane1).addContainerGap()));
        pnlDetalheVendaLayout.setVerticalGroup(pnlDetalheVendaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(pnlDetalheVendaLayout
                        .createSequentialGroup().addContainerGap().addComponent(jScrollPane1).addContainerGap()));

        jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(
                org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, orcamentoRegistroList,
                tblRegistro);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding.setColumnName("Id");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idCliente.nome}"));
        columnBinding.setColumnName("Id Cliente");
        columnBinding.setColumnClass(String.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${idFuncionario.nome}"));
        columnBinding.setColumnName("Id Funcionario");
        columnBinding.setColumnClass(String.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${dataOrcamento}"));
        columnBinding.setColumnName("Data Orcamento");
        columnBinding.setColumnClass(java.util.Date.class);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrTotalOrcamento}"));
        columnBinding.setColumnName("Vlr Total Orcamento");
        columnBinding.setColumnClass(Double.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane2.setViewportView(tblRegistro);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Produtos"));

        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("Produto");
        columnBinding.setColumnClass(String.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("${numEstoque}"));
        columnBinding.setColumnName("Estoque");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrVenda}"));
        columnBinding.setColumnName("Preo");
        columnBinding.setColumnClass(Double.class);
        columnBinding.setEditable(false);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane3.setViewportView(tblProduto);
        if (tblProduto.getColumnModel().getColumnCount() > 0) {
            tblProduto.getColumnModel().getColumn(1).setPreferredWidth(200);
        }

        lblProduto.setText("Produto:");

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

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

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(jPanel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                        .addGroup(jPanel1Layout.createSequentialGroup().addComponent(lblProduto)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(txtPesquisar)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnAdicionar)))
                        .addContainerGap()));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap()
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 224,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.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(14, Short.MAX_VALUE)));

        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(pnlBotoesVenda, 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, false)
                                .addComponent(pnlRegistroVenda, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(layout.createSequentialGroup()
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 174,
                                                Short.MAX_VALUE)
                                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addContainerGap(420, Short.MAX_VALUE))
                                .addGroup(layout.createSequentialGroup().addGap(18, 18, 18).addComponent(
                                        pnlDetalheVenda, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addComponent(pnlBotoesVenda, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                        .addComponent(pnlRegistroVenda, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .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(pnlDetalheVenda, 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();
        orcamentoDetalheList.clear();
        orcamentoRegistroList.add((Orcamentoregistro) new Orcamentoregistro());
        int row = orcamentoRegistroList.size() - 1;
        tblRegistro.setRowSelectionInterval(row, row);
        spnQuantidade.setValue(1);
    }//GEN-LAST:event_btnNovaVendaActionPerformed

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

    }//GEN-LAST:event_btnConfirmarActionPerformed

    private void txtPesquisarKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPesquisarKeyPressed
        atualizaGridProduto();
    }//GEN-LAST:event_txtPesquisarKeyPressed

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

            Orcamentodetalhe vd = new Orcamentodetalhe();
            OrcamentodetalhePK vdpk = new OrcamentodetalhePK();

            int indexRegistro = tblRegistro.getSelectedRow(); // seleciona o registro da jTable vendaRegistro
            int indexProduto = tblProduto.getSelectedRow(); // seleciona o registro da jTable produto
            int indexOrcamentoDetalhe = tblDetalhe.getSelectedRow();
            vdpk.setIdOrcamentoRegistro(orcamentoRegistroList.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.setOrcamentodetalhePK(vdpk); // adiciona a vendeDetalhePK os registro de vdpk(idVendaRegistro e idProduto)

            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.setQtde(quantidade);
                    vd.setVlrUnitario(produtoList.get(indexProduto).getVlrVenda());
                    vd.setVlrTotal(quantidade * produtoList.get(indexProduto).getVlrVenda());
                    valorTotal = valorTotal + vd.getVlrTotal();
                    txtTotalOrcamento.setText(String.valueOf(valorTotal));
                    orcamentoDetalheList.add(vd);
                    entityManager.persist(vd);
                    produtoList.clear();
                    produtoList.addAll(produtoQuery.getResultList());
                    spnQuantidade.setValue(1);

                } else if (produtoList.get(indexProduto).getNumEstoque() == 0) {
                    JOptionPane.showMessageDialog(null,
                            "O " + produtoList.get(indexProduto).getDescricao() + " No possui estoque");
                    spnQuantidade.setValue(1);
                } else if (quantidade > produtoList.get(indexProduto).getNumEstoque()) {
                    JOptionPane.showMessageDialog(null,
                            "Numero de estoque de " + produtoList.get(indexProduto).getDescricao() + "  "
                                    + produtoList.get(indexProduto).getNumEstoque());
                    spnQuantidade.setValue(1);
                }

            } else {
                JOptionPane.showMessageDialog(null, "Smente quantidades positivas");
                spnQuantidade.setValue(1);
            }
        }
        //        if (validaCampos()) {
        //            salvarRegistroOrcamento(); // chama mtodo para salvar a venda e assim podendo inserir itens ao oramento
        //
        //            Orcamentodetalhe vd = new Orcamentodetalhe();
        //            OrcamentodetalhePK vdpk = new OrcamentodetalhePK();
        //
        //            int indexRegistro = tblRegistro.getSelectedRow(); // seleciona o registro da jTable vendaRegistro
        //            int indexProduto = tblProduto.getSelectedRow(); // seleciona o registro da jTable produto
        //            vdpk.setIdOrcamentoRegistro(orcamentoRegistroList.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.setOrcamentodetalhePK(vdpk); // adiciona a vendeDetalhePK os registro de vdpk(idVendaRegistro e idProduto)
        //
        //            
        //                
        //                int quantidade;
        //                boolean continuar = true;
        //                while (continuar) {
        //                    quantidade = Integer.parseInt(JOptionPane.showInputDialog(null, "Quantidade?"));
        //
        //                    if (quantidade >= 1) {
        //                        if (quantidade <= produtoList.get(indexProduto).getNumEstoque()) {
        //                            continuar = false;//caso o valor informado esteja dentro da faixa, o lao termina
        //                            vd.setQtde(quantidade);
        //                            vd.setVlrUnitario(produtoList.get(indexProduto).getVlrVenda());
        //                            vd.setVlrTotal(quantidade * produtoList.get(indexProduto).getVlrVenda());
        //                            valorTotal = valorTotal + vd.getVlrTotal();
        //                            txtTotalOrcamento.setText(String.valueOf(valorTotal));
        //                            entityManager.getTransaction().begin();
        //                            entityManager.persist(vd);
        //                            orcamentoDetalheList.add(vd);
        //                            entityManager.getTransaction().commit();
        //                        } else {
        //                            JOptionPane.showMessageDialog(null, "Numero de estoque de " + produtoList.get(indexProduto).getDescricao()
        //                                    + " " + produtoList.get(indexProduto).getNumEstoque());
        //                        }
        //                    } else {
        //                        JOptionPane.showInputDialog(null, "Quantidade?");
        //                    }
        //
        //                }
        //            
        //            }
    }//GEN-LAST:event_btnAdicionarActionPerformed

    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 {
                    Orcamentodetalhe obj = orcamentoDetalheList.get(linhaClicada);
                    valorTotal = valorTotal - obj.getVlrTotal();
                    orcamentoDetalheList.remove(linhaClicada);
                    txtTotalOrcamento.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 btnImprimirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImprimirActionPerformed
        int row = tblRegistro.getSelectedRow();
        int id = orcamentoRegistroList.get(row).getId();
        sql = "SELECT produto.descricao, orcamentodetalhe.qtde, orcamentodetalhe.vlrUnitario, orcamentodetalhe.vlrTotal from orcamentodetalhe as orcamentodetalhe INNER JOIN produto as produto ON (orcamentodetalhe.idProduto = produto.ID) where idOrcamentoRegistro = "
                + 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

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JToggleButton btnAdicionar;
    private javax.swing.JButton btnConfirmar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnImprimir;
    private javax.swing.JButton btnNovaVenda;
    private javax.swing.JComboBox cbxCliente;
    private javax.swing.JComboBox cbxFuncionario;
    private java.util.List<br.com.tcc.entity.Cliente> clienteList;
    private javax.persistence.Query clienteQuery;
    private javax.persistence.EntityManager entityManager;
    private java.util.List<br.com.tcc.entity.Funcionario> funcionarioList;
    private javax.persistence.Query funcionarioQuery;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JLabel lblProduto;
    private java.util.List<br.com.tcc.entity.Orcamentodetalhe> orcamentoDetalheList;
    private javax.persistence.Query orcamentoDetalheQuery;
    private java.util.List<br.com.tcc.entity.Orcamentoregistro> orcamentoRegistroList;
    private javax.persistence.Query orcamentoRegistroQuery;
    private javax.swing.JPanel pnlBotoesVenda;
    private javax.swing.JPanel pnlDetalheVenda;
    private javax.swing.JPanel pnlRegistroVenda;
    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 tblProduto;
    private javax.swing.JTable tblRegistro;
    private java.util.List<br.com.tcc.entity.Tipopagamento> tipoPagamentoList;
    private javax.persistence.Query tipoPagamentoQuery;
    private javax.swing.JTextField txtPesquisar;
    private javax.swing.JTextField txtTotalOrcamento;
    private javax.swing.JTextField txtVenda;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables

    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 salvarRegistroOrcamento() {
        int linhaClicada = tblRegistro.getSelectedRow();
        Orcamentoregistro obj = orcamentoRegistroList.get(linhaClicada);
        Date data = new Date(System.currentTimeMillis());
        obj.setDataOrcamento(data);
        entityManager.getTransaction().begin();
        entityManager.persist(obj);
        entityManager.getTransaction().commit();
    }

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

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

    }

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

        int row = tblRegistro.getSelectedRow();
        int id = orcamentoRegistroList.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\\Oramento " + 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("Oramento");

        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("qtde");
            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 = orcamentoRegistroList.get(row).getVlrTotalOrcamento();
        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\\Oramento " + id + ".pdf";
        Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + file);
    }

}