vistas.MantenedorReportes.java Source code

Java tutorial

Introduction

Here is the source code for vistas.MantenedorReportes.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 vistas;

import Controlador.GastosExtrasDao;
import Controlador.GastosExtrasDaoImpl;
import Controlador.ProductoDao;
import Controlador.ProductoDaoImpl;
import javax.swing.DefaultComboBoxModel;
import Controlador.UsuarioDao;
import Controlador.UsuarioDaoImpl;
import Modelo.Usuario;
import java.awt.Color;
import java.awt.Desktop;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.plaf.basic.BasicComboBoxUI;
import javax.swing.table.DefaultTableModel;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.RowFilter;
import javax.swing.table.TableRowSorter;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 *
 * @author alonso
 */
public class MantenedorReportes extends javax.swing.JFrame {

    /**
     * Creates new form MantenedorReportes
     */
    public MantenedorReportes() {
        initComponents();

    }

    /**
     * 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() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        cbxFecha = new javax.swing.JCheckBox();
        cbxUsuario = new javax.swing.JCheckBox();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        cbSeleccionUsuario = new javax.swing.JComboBox();
        jLabel3 = new javax.swing.JLabel();
        btnConsultarGastos = new javax.swing.JButton();
        btnExportarGastos = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        lblTotalGastos = new javax.swing.JLabel();
        tbGastos = new javax.swing.JScrollPane();
        tbGastosExtras = new javax.swing.JTable();
        calDesdeGastos = new com.toedter.calendar.JDateChooser();
        calHastaGastos = new com.toedter.calendar.JDateChooser();
        pbGastosExtras = new javax.swing.JProgressBar();
        jPanel2 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        btnConsultarProductos = new javax.swing.JButton();
        rbtnMayorAMenorProductos = new javax.swing.JRadioButton();
        rbtnMenorAMayorProductos = new javax.swing.JRadioButton();
        btnExportarProductos = new javax.swing.JButton();
        txtFiltroNombre = new javax.swing.JTextField();
        jScrollPane2 = new javax.swing.JScrollPane();
        tbProductos = new javax.swing.JTable();
        calDesdeProductos = new com.toedter.calendar.JDateChooser();
        calHastaProductos = new com.toedter.calendar.JDateChooser();
        jLabel5 = new javax.swing.JLabel();
        pbProductos = new javax.swing.JProgressBar();
        jLabel11 = new javax.swing.JLabel();
        lblComboBox = new javax.swing.JLabel();
        cbxProductosUnidad = new javax.swing.JCheckBox();
        cbxProductosPeso = new javax.swing.JCheckBox();
        jLabel12 = new javax.swing.JLabel();
        lblProductosTipo = new javax.swing.JLabel();
        jPanel3 = new javax.swing.JPanel();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        btnConsultarVendedores = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jPanel7 = new javax.swing.JPanel();
        jPanel6 = new javax.swing.JPanel();
        lblAvisoVendedores = new javax.swing.JLabel();
        jScrollPane3 = new javax.swing.JScrollPane();
        tbVendedores = new javax.swing.JTable();
        calDesdeVendedores = new com.toedter.calendar.JDateChooser();
        calHastaVendedores = new com.toedter.calendar.JDateChooser();
        btnExportarVendedores = new javax.swing.JButton();
        pbVendedores = new javax.swing.JProgressBar();
        jLabel10 = new javax.swing.JLabel();
        rbtnMayoresVentas = new javax.swing.JRadioButton();
        rbtnMenoresVentas = new javax.swing.JRadioButton();
        jPanel8 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbInventario = new javax.swing.JTable();
        jLabel13 = new javax.swing.JLabel();
        txtFiltroInventario = new javax.swing.JTextField();
        btnConsultarInvetarios = new javax.swing.JButton();
        btnExportarInventario = new javax.swing.JButton();
        pbInventario = new javax.swing.JProgressBar();
        cbxMayoraMenorInventario = new javax.swing.JCheckBox();
        cbxMenoramayorInventario = new javax.swing.JCheckBox();
        lblOrdenInventario = new javax.swing.JLabel();
        jLabel14 = new javax.swing.JLabel();
        lblSeleccioncbxInventario = new javax.swing.JLabel();
        lblAvisoInventario = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setFocusTraversalPolicyProvider(true);

        cbxFecha.setText("Ver por fecha");
        cbxFecha.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxFechaActionPerformed(evt);
            }
        });

        cbxUsuario.setText("Ver por usuario");
        cbxUsuario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxUsuarioActionPerformed(evt);
            }
        });

        jLabel1.setText("Desde:");

        jLabel2.setText("Hasta:");

        cbSeleccionUsuario.setMaximumRowCount(30);
        cbSeleccionUsuario.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione Usuario" }));
        cbSeleccionUsuario.setToolTipText("");
        cbSeleccionUsuario.setEnabled(false);
        cbSeleccionUsuario.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cbSeleccionUsuarioItemStateChanged(evt);
            }
        });
        cbSeleccionUsuario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbSeleccionUsuarioActionPerformed(evt);
            }
        });
        cbSeleccionUsuario.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                cbSeleccionUsuarioKeyPressed(evt);
            }
        });

        jLabel3.setText("Seleccione usuario:");

        btnConsultarGastos.setText("Consultar");
        btnConsultarGastos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConsultarGastosActionPerformed(evt);
            }
        });

        btnExportarGastos.setText("Exportar a Excel");
        btnExportarGastos.setEnabled(false);
        btnExportarGastos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExportarGastosActionPerformed(evt);
            }
        });

        jLabel4.setText("Total gastos extras: $");

        lblTotalGastos.setText("0");

        tbGastosExtras.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

        }, new String[] { "n", "Vendedor", "Fecha", "Descripcin", "Valor" }) {
            boolean[] canEdit = new boolean[] { false, false, false, false, false };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        tbGastos.setViewportView(tbGastosExtras);

        calDesdeGastos.setEnabled(false);
        calDesdeGastos.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                calDesdeGastosKeyTyped(evt);
            }
        });

        calHastaGastos.setEnabled(false);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createSequentialGroup().addGap(21, 21, 21).addGroup(jPanel1Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel1Layout.createSequentialGroup().addGroup(
                                        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(cbxFecha).addComponent(cbxUsuario))
                                        .addGroup(jPanel1Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addGroup(jPanel1Layout.createSequentialGroup().addGap(26, 26, 26)
                                                        .addComponent(jLabel3)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(cbSeleccionUsuario,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 192,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                                .addGroup(jPanel1Layout.createSequentialGroup().addGap(22, 22, 22)
                                                        .addComponent(jLabel1)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(calDesdeGastos,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 190,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                                        .addGap(50, 50, 50).addComponent(jLabel2).addGap(18, 18, 18)
                                                        .addComponent(calHastaGastos,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 205,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                                        .addGap(33, 33, 33)
                                                        .addComponent(btnConsultarGastos,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 154,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                                        .addGap(18, 18, 18).addComponent(btnExportarGastos,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 164,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE))))
                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel4)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(lblTotalGastos))))
                        .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(tbGastos,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 986,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(
                                pbGastosExtras, javax.swing.GroupLayout.PREFERRED_SIZE, 986,
                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addContainerGap(293, Short.MAX_VALUE)));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGap(18, 18, 18).addGroup(jPanel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                        jPanel1Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(btnConsultarGastos).addComponent(btnExportarGastos))
                                .addComponent(cbxFecha))
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jLabel2).addComponent(calHastaGastos,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jLabel1)
                                .addComponent(calDesdeGastos, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(cbxUsuario)
                                .addComponent(cbSeleccionUsuario, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel3))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel4).addComponent(lblTotalGastos))
                        .addGap(30, 30, 30)
                        .addComponent(tbGastos, javax.swing.GroupLayout.PREFERRED_SIZE, 271,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(39, 39, 39)
                        .addComponent(pbGastosExtras, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(88, Short.MAX_VALUE)));

        jTabbedPane1.addTab("Gastos extras", jPanel1);

        jLabel6.setText("Desde:");

        jLabel7.setText("Hasta:");

        btnConsultarProductos.setText("Consultar");
        btnConsultarProductos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConsultarProductosActionPerformed(evt);
            }
        });

        rbtnMayorAMenorProductos.setText("Mayor a menor");
        rbtnMayorAMenorProductos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbtnMayorAMenorProductosActionPerformed(evt);
            }
        });

        rbtnMenorAMayorProductos.setText("Menor a mayor");
        rbtnMenorAMayorProductos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbtnMenorAMayorProductosActionPerformed(evt);
            }
        });

        btnExportarProductos.setText("Exportar a Excel");
        btnExportarProductos.setEnabled(false);
        btnExportarProductos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExportarProductosActionPerformed(evt);
            }
        });

        txtFiltroNombre.setEnabled(false);
        txtFiltroNombre.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtFiltroNombreActionPerformed(evt);
            }
        });
        txtFiltroNombre.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtFiltroNombreKeyReleased(evt);
            }
        });

        tbProductos.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

        }, new String[] { "n", "Codigo", "Nombre", "Marca", "Precio Compra", "Precio Venta", "Utilidad Unitaria",
                "Unidades vendidas", "Peso vendido (Kg)", "Utilidad Final", "Perodo anterior" }));
        jScrollPane2.setViewportView(tbProductos);

        jLabel5.setText("Productos vendidos por:");

        jLabel11.setText("Filtrar por nombre:");

        lblComboBox.setFont(new java.awt.Font("Liberation Mono", 1, 14)); // NOI18N
        lblComboBox.setForeground(new java.awt.Color(255, 0, 0));

        cbxProductosUnidad.setText("Unidad");
        cbxProductosUnidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxProductosUnidadActionPerformed(evt);
            }
        });

        cbxProductosPeso.setText("Peso");
        cbxProductosPeso.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxProductosPesoActionPerformed(evt);
            }
        });

        jLabel12.setText("Ordenados de:");

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(jPanel4Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel4Layout.createSequentialGroup().addContainerGap().addGroup(jPanel4Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel4Layout.createSequentialGroup().addGroup(jPanel4Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel4Layout.createSequentialGroup()
                                        .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 190,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(cbxProductosUnidad).addGap(18, 18, 18)
                                        .addComponent(cbxProductosPeso).addGap(44, 44, 44)
                                        .addComponent(lblProductosTipo, javax.swing.GroupLayout.PREFERRED_SIZE, 369,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel6)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(calDesdeProductos, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                179, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(25, 25, 25).addComponent(jLabel7)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(calHastaProductos, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                173, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(58, 58, 58)
                                        .addComponent(btnConsultarProductos, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                146, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18).addComponent(btnExportarProductos,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 154,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel12)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(rbtnMayorAMenorProductos,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 174,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(rbtnMenorAMayorProductos,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 168,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(lblComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 522,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGap(0, 354, Short.MAX_VALUE))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                jPanel4Layout.createSequentialGroup().addGroup(jPanel4Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel11)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(txtFiltroNombre,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 174,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 1339,
                                                Short.MAX_VALUE)
                                        .addComponent(pbProductos, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))));
        jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel4Layout.createSequentialGroup().addGap(2, 2, 2).addGroup(jPanel4Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel5).addComponent(cbxProductosUnidad)
                                .addComponent(cbxProductosPeso))
                        .addComponent(lblProductosTipo, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel4Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(btnConsultarProductos).addComponent(btnExportarProductos))
                                .addGroup(jPanel4Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(calHastaProductos, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(calDesdeProductos, javax.swing.GroupLayout.Alignment.TRAILING,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel7))
                                .addComponent(jLabel6))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(jPanel4Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(jLabel12).addComponent(rbtnMayorAMenorProductos)
                                        .addComponent(rbtnMenorAMayorProductos))
                                .addComponent(lblComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 22,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(14, 14, 14)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel11).addComponent(txtFiltroNombre,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(14, 14, 14)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 271,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(31, 31, 31)
                        .addComponent(pbProductos, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(65, Short.MAX_VALUE)));

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(jPanel2Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 41, Short.MAX_VALUE)));
        jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                        Short.MAX_VALUE));

        jTabbedPane1.addTab("Productos", jPanel2);

        jLabel8.setText("Desde:");

        jLabel9.setText("Hasta:");

        btnConsultarVendedores.setText("Consultar");
        btnConsultarVendedores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConsultarVendedoresActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(jPanel5Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 185, Short.MAX_VALUE));
        jPanel5Layout.setVerticalGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 122, Short.MAX_VALUE));

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(jPanel7Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 134, Short.MAX_VALUE));
        jPanel7Layout.setVerticalGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 100, Short.MAX_VALUE));

        lblAvisoVendedores.setFont(new java.awt.Font("Liberation Mono", 1, 15)); // NOI18N
        lblAvisoVendedores.setForeground(new java.awt.Color(255, 0, 0));

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout
                .setHorizontalGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel6Layout.createSequentialGroup().addContainerGap()
                                .addComponent(lblAvisoVendedores, javax.swing.GroupLayout.PREFERRED_SIZE, 503,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap(78, Short.MAX_VALUE)));
        jPanel6Layout.setVerticalGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel6Layout.createSequentialGroup().addGap(30, 30, 30)
                        .addComponent(lblAvisoVendedores, javax.swing.GroupLayout.DEFAULT_SIZE, 26, Short.MAX_VALUE)
                        .addContainerGap()));

        tbVendedores.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

        }, new String[] { "n", "Vendedor", "Ventas totales", "Utilidades", "Das trabajados",
                "Horas trabajadas" }));
        jScrollPane3.setViewportView(tbVendedores);

        btnExportarVendedores.setText("Exportar a Excel");
        btnExportarVendedores.setEnabled(false);
        btnExportarVendedores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExportarVendedoresActionPerformed(evt);
            }
        });

        jLabel10.setText("Ordernar por:");

        rbtnMayoresVentas.setText("Mayores ventas");
        rbtnMayoresVentas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbtnMayoresVentasActionPerformed(evt);
            }
        });

        rbtnMenoresVentas.setText("Menores ventas");
        rbtnMenoresVentas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbtnMenoresVentasActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
                jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel3Layout
                        .createSequentialGroup().addGap(20, 20, 20).addGroup(jPanel3Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                                        jPanel3Layout.createSequentialGroup().addComponent(jLabel8)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(calDesdeVendedores,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 187,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addGap(28, 28, 28).addComponent(jLabel9)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(
                                                        calHastaVendedores, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        198, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addGap(43, 43, 43)
                                                .addComponent(btnConsultarVendedores,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 145,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addGap(18, 18, 18).addComponent(btnExportarVendedores,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 160,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(jPanel3Layout.createSequentialGroup().addGroup(jPanel3Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                        .addComponent(pbVendedores, javax.swing.GroupLayout.Alignment.LEADING,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(
                                                jLabel10, javax.swing.GroupLayout.Alignment.LEADING,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 111,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                                jPanel3Layout.createSequentialGroup()
                                                        .addComponent(rbtnMayoresVentas)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(rbtnMenoresVentas))
                                        .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, 936, Short.MAX_VALUE))
                                        .addGap(505, 505, 505)
                                        .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(194, 194, 194)
                                        .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup().addGap(21, 21, 21).addGroup(jPanel3Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel8).addComponent(jLabel9).addComponent(btnConsultarVendedores)
                                .addComponent(btnExportarVendedores))
                        .addComponent(calDesdeVendedores, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(calHastaVendedores, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGroup(jPanel3Layout.createSequentialGroup().addComponent(jLabel10)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(jPanel3Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(rbtnMayoresVentas).addComponent(rbtnMenoresVentas))
                                        .addGap(18, 18, 18).addComponent(jScrollPane3,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 280,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(32, 32, 32)
                        .addComponent(pbVendedores, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(86, Short.MAX_VALUE)));

        jTabbedPane1.addTab("Vendedores", jPanel3);

        tbInventario.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

        }, new String[] { "n", "Codigo", "Nombre", "Marca", "Stock" }));
        jScrollPane1.setViewportView(tbInventario);

        jLabel13.setText("Filtrar por nombre:");

        txtFiltroInventario.setEnabled(false);
        txtFiltroInventario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtFiltroInventarioActionPerformed(evt);
            }
        });
        txtFiltroInventario.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtFiltroInventarioKeyReleased(evt);
            }
        });

        btnConsultarInvetarios.setText("Consultar");
        btnConsultarInvetarios.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConsultarInvetariosActionPerformed(evt);
            }
        });

        btnExportarInventario.setText("Exportar Excel");
        btnExportarInventario.setEnabled(false);
        btnExportarInventario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExportarInventarioActionPerformed(evt);
            }
        });

        cbxMayoraMenorInventario.setText("Mayor a menor");
        cbxMayoraMenorInventario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxMayoraMenorInventarioActionPerformed(evt);
            }
        });

        cbxMenoramayorInventario.setText("Menor a mayor");
        cbxMenoramayorInventario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxMenoramayorInventarioActionPerformed(evt);
            }
        });

        lblOrdenInventario.setText("Ordernar inventario de:");

        lblAvisoInventario.setFont(new java.awt.Font("Liberation Mono", 1, 15)); // NOI18N
        lblAvisoInventario.setForeground(new java.awt.Color(255, 0, 0));

        javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(jPanel8Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel8Layout.createSequentialGroup().addContainerGap().addGroup(jPanel8Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel8Layout.createSequentialGroup().addComponent(jLabel13)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtFiltroInventario, javax.swing.GroupLayout.PREFERRED_SIZE, 158,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 439,
                                        Short.MAX_VALUE)
                                .addComponent(lblSeleccioncbxInventario, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        441, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap(212, Short.MAX_VALUE))
                        .addGroup(jPanel8Layout.createSequentialGroup().addGroup(jPanel8Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(pbInventario, javax.swing.GroupLayout.PREFERRED_SIZE, 918,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 918,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGroup(jPanel8Layout.createSequentialGroup().addComponent(lblOrdenInventario)
                                        .addGap(18, 18, 18)
                                        .addGroup(jPanel8Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                                        false)
                                                .addGroup(jPanel8Layout.createSequentialGroup()
                                                        .addComponent(cbxMenoramayorInventario).addGap(98, 98, 98)
                                                        .addComponent(jLabel14))
                                                .addGroup(jPanel8Layout.createSequentialGroup()
                                                        .addComponent(cbxMayoraMenorInventario).addGap(89, 89, 89)
                                                        .addComponent(btnConsultarInvetarios,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 163,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                                .addComponent(lblAvisoInventario,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                        .addGap(18, 18, 18).addComponent(btnExportarInventario,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 144,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGap(0, 0, Short.MAX_VALUE)))));
        jPanel8Layout.setVerticalGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel8Layout.createSequentialGroup().addGroup(jPanel8Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel8Layout.createSequentialGroup().addGap(16, 16, 16)
                                .addGroup(jPanel8Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(btnConsultarInvetarios).addComponent(btnExportarInventario))
                                .addGap(0, 0, Short.MAX_VALUE))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                jPanel8Layout.createSequentialGroup().addContainerGap().addGroup(jPanel8Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(lblOrdenInventario, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(cbxMayoraMenorInventario))))
                        .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel8Layout.createSequentialGroup().addGap(3, 3, 3)
                                        .addComponent(cbxMenoramayorInventario).addGap(26, 26, 26)
                                        .addGroup(jPanel8Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jLabel13).addComponent(txtFiltroInventario,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(lblAvisoInventario, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addGroup(jPanel8Layout.createSequentialGroup()
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(jPanel8Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(lblSeleccioncbxInventario,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addGroup(jPanel8Layout.createSequentialGroup()
                                                        .addComponent(jLabel14).addGap(0, 0, Short.MAX_VALUE)))))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 267,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(32, 32, 32)
                        .addComponent(pbInventario, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(95, 95, 95)));

        jTabbedPane1.addTab("Inventario", jPanel8);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jTabbedPane1,
                        javax.swing.GroupLayout.PREFERRED_SIZE, 1412, javax.swing.GroupLayout.PREFERRED_SIZE));
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jTabbedPane1));

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

    private void cbSeleccionUsuarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbSeleccionUsuarioActionPerformed
        // TODO add your handling code here:
        cbSeleccionUsuario.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    cbSeleccionUsuario.getSelectedIndex();
                }
            }
        });

    }//GEN-LAST:event_cbSeleccionUsuarioActionPerformed

    private void btnConsultarGastosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConsultarGastosActionPerformed
        // TODO add your handling code here:

        int numFilas = tbGastosExtras.getRowCount();

        //Si hay registros de anterioridad, entonces seteamos el jtable para no juntar los registros de ambas consultas.
        if (numFilas >= 1) {
            DefaultTableModel tablaGastos = (DefaultTableModel) tbGastosExtras.getModel();

            for (int j = 0; j < numFilas; j++) {
                //Removemos la primera fila de la tabla, desde la posicion 0 siempre.
                tablaGastos.removeRow(0);
            }

            tbGastosExtras.setModel(tablaGastos);
            lblTotalGastos.setText("0");
            btnExportarGastos.setEnabled(false);
        }

        //btnExportarGastos.setEnabled(true);
        if (Color.RED == calDesdeGastos.getDateEditor().getUiComponent().getForeground()) {
            JOptionPane.showMessageDialog(null, "Fecha 'Desde:' no valida", "Error fecha",
                    JOptionPane.ERROR_MESSAGE);
            return;
        }

        if (Color.RED == calHastaGastos.getDateEditor().getUiComponent().getForeground()) {
            JOptionPane.showMessageDialog(null, "Fecha 'Hasta:' no valida", "Error fecha",
                    JOptionPane.ERROR_MESSAGE);
            return;
        }

        //Gastos por fechas.
        if (cbxFecha.isSelected() && !cbxUsuario.isSelected()) {
            if (calDesdeGastos.getDate() == null || calHastaGastos.getDate() == null) {
                JOptionPane.showMessageDialog(null, "Debe rellenar ambos campos porfavor", "Precaucin",
                        JOptionPane.WARNING_MESSAGE);
                return;
            }

            String formato = calDesdeGastos.getDateFormatString();
            java.util.Date date = calDesdeGastos.getDate();
            SimpleDateFormat sdf = new SimpleDateFormat(formato);
            String fechaDesde = String.valueOf(sdf.format(date));

            String formato2 = calHastaGastos.getDateFormatString();
            java.util.Date date2 = calHastaGastos.getDate();
            SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
            String fechaHasta = String.valueOf(sdf2.format(date2));

            String diaDesde = fechaDesde.substring(0, 2);
            String mesDesde = fechaDesde.substring(3, 5);
            String anoDesde = fechaDesde.substring(6, 10);

            //Concateno la fecha, en formato "YYYY-MM-DD".
            String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
            System.out.println("fechaDesdeR: " + fechaDesdeReal);

            String diaHasta = fechaHasta.substring(0, 2);
            String mesHasta = fechaHasta.substring(3, 5);
            String anoHasta = fechaHasta.substring(6, 10);

            //Concateno la fecha, en formato "YYYY-MM-DD".
            String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
            System.out.println("fechaHastaR " + fechaHastaReal);

            System.out.println("diaD: " + diaDesde);
            System.out.println("mesD: " + mesDesde);
            System.out.println("anoD: " + anoDesde);

            System.out.println("diaH: " + diaHasta);
            System.out.println("mesH: " + mesHasta);
            System.out.println("anoH: " + anoHasta);

            int compDia = diaDesde.compareTo(diaHasta);
            int compMes = mesDesde.compareTo(mesHasta);
            int compAno = anoDesde.compareTo(anoHasta);

            if (compAno <= -1) //Si el ao es menor, no se compara el mes ni dia.
            {
                System.out.println("ao menor, entonces fecha valida: " + compAno);
                try {
                    GastosExtrasDao ge = new GastosExtrasDaoImpl();
                    ResultSet rsFinal;
                    rsFinal = ge.gastosPorFecha(fechaDesdeReal, fechaHastaReal);

                    if (rsFinal == null) {
                        btnExportarGastos.setEnabled(false);
                        JOptionPane.showMessageDialog(null, "No hay gastos en estas fechas", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    } else {
                        btnExportarGastos.setEnabled(true);
                    }

                    DefaultTableModel tablaGastos = (DefaultTableModel) tbGastosExtras.getModel();

                    Object[] gasto = new Object[5];
                    DecimalFormat formateador = new DecimalFormat("###,###");

                    int contador = 1;

                    gasto[0] = contador;
                    gasto[1] = rsFinal.getObject(1);
                    gasto[2] = rsFinal.getObject(2);
                    gasto[3] = rsFinal.getObject(3);

                    int val = rsFinal.getInt(4);
                    String ff = formateador.format(val);
                    gasto[4] = ff;

                    int total = 0;
                    total = total + Integer.parseInt(rsFinal.getObject("total").toString());

                    tablaGastos.addRow(gasto);

                    while (rsFinal.next()) {

                        int cont = contador++;
                        ff = formateador.format(cont);
                        gasto[0] = ff;

                        gasto[1] = rsFinal.getObject(1);
                        gasto[2] = rsFinal.getObject(2);
                        gasto[3] = rsFinal.getObject(3);

                        val = rsFinal.getInt(4);
                        ff = formateador.format(val);
                        gasto[4] = ff;
                        total = total + Integer.parseInt(rsFinal.getObject("total").toString());
                        tablaGastos.addRow(gasto);
                    }

                    tbGastosExtras.setModel(tablaGastos);

                    String texto = String.valueOf(total);
                    ff = formateador.format(Double.parseDouble(texto));

                    lblTotalGastos.setText(String.valueOf(ff));

                } catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, "Error en el metodo consultar por fecha", "Error metodo",
                            JOptionPane.ERROR_MESSAGE);

                }

            } else if (compAno == 0) //Si el ao es igual, se comparara, mes y dia.
            {
                if (compMes <= -1 || compMes == 0) //Si el mes es menor o ogial, esta bien.
                {
                    if (compDia <= -1 || compDia == 0) //Si el dia es menor o igual esta bien.
                    {
                        try {
                            GastosExtrasDao ge = new GastosExtrasDaoImpl();
                            ResultSet rsFinal;
                            rsFinal = ge.gastosPorFecha(fechaDesdeReal, fechaHastaReal);

                            if (rsFinal == null) {
                                btnExportarGastos.setEnabled(false);
                                JOptionPane.showMessageDialog(null, "No hay gastos en estas fechas", "Aviso",
                                        JOptionPane.WARNING_MESSAGE);
                                return;
                            } else {
                                btnExportarGastos.setEnabled(true);
                            }

                            DefaultTableModel tablaGastos = (DefaultTableModel) tbGastosExtras.getModel();

                            Object[] gasto = new Object[5];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            gasto[0] = contador;
                            gasto[1] = rsFinal.getObject(1);
                            gasto[2] = rsFinal.getObject(2);
                            gasto[3] = rsFinal.getObject(3);
                            int val = rsFinal.getInt(4);
                            String ff = formateador.format(val);
                            gasto[4] = ff;

                            int total = 0;
                            total = total + Integer.parseInt(rsFinal.getObject("total").toString());

                            tablaGastos.addRow(gasto);

                            while (rsFinal.next()) {

                                int cont = contador++;
                                ff = formateador.format(cont);
                                gasto[0] = ff;

                                gasto[0] = contador;
                                gasto[1] = rsFinal.getObject(1);
                                gasto[2] = rsFinal.getObject(2);
                                gasto[3] = rsFinal.getObject(3);

                                val = rsFinal.getInt(4);
                                ff = formateador.format(val);
                                gasto[4] = ff;

                                total = total + Integer.parseInt(rsFinal.getObject("total").toString());
                                tablaGastos.addRow(gasto);
                            }

                            tbGastosExtras.setModel(tablaGastos);

                            String texto = String.valueOf(total);
                            ff = formateador.format(Double.parseDouble(texto));

                            lblTotalGastos.setText(String.valueOf(ff));

                        } catch (SQLException ex) {
                            JOptionPane.showMessageDialog(null, "Error en el metodo consultar por fecha",
                                    "Error metodo", JOptionPane.ERROR_MESSAGE);

                        }
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "El dia debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "El mes debe ser menor o igual que  el de la fecha Hasta: ",
                            "Aviso", JOptionPane.WARNING_MESSAGE);
                    return;
                }
            } else {
                JOptionPane.showMessageDialog(null, "El ao debe ser menor o igual que  el de la fecha Hasta: ",
                        "Aviso", JOptionPane.WARNING_MESSAGE);
                return;
            }

        }

        //Gastos solo por usuario.
        if (cbxUsuario.isSelected() && !cbxFecha.isSelected()) {

            int nombreUsuario = cbSeleccionUsuario.getSelectedIndex() + 1;
            UsuarioDao usuario = new UsuarioDaoImpl();
            //int idUser = usuario.idUsuario(nombreUsuario);

            System.out.println("nomuser: " + nombreUsuario);

            GastosExtrasDao gastos2 = new GastosExtrasDaoImpl();
            //Gastos por usuario pasandole el NOMBRE DEL USUARIO.
            try {
                ResultSet rsFinal2 = gastos2.gastosPorUsuario(nombreUsuario);
                DefaultTableModel tablaGastos2 = (DefaultTableModel) tbGastosExtras.getModel();
                if (rsFinal2 == null) {
                    btnExportarGastos.setEnabled(false);
                    JOptionPane.showMessageDialog(null, "No hay gastos de este usuario", "Aviso",
                            JOptionPane.WARNING_MESSAGE);
                    return;
                } else {
                    btnExportarGastos.setEnabled(true);
                }

                Object[] GastoUser = new Object[5];
                DecimalFormat formateador = new DecimalFormat("###,###");

                int contador = 1;

                GastoUser[0] = contador;
                GastoUser[1] = rsFinal2.getObject(1);
                GastoUser[2] = rsFinal2.getObject(2);
                GastoUser[3] = rsFinal2.getObject(3);
                int val = rsFinal2.getInt(4);
                String ff = formateador.format(val);
                GastoUser[4] = ff;

                int total = 0;
                total = total + Integer.parseInt(rsFinal2.getObject("total").toString());

                tablaGastos2.addRow(GastoUser);

                while (rsFinal2.next()) {

                    int cont = contador++;
                    ff = formateador.format(cont);
                    GastoUser[0] = ff;

                    GastoUser[0] = contador;
                    GastoUser[1] = rsFinal2.getObject(1);
                    GastoUser[2] = rsFinal2.getObject(2);
                    GastoUser[3] = rsFinal2.getObject(3);

                    val = rsFinal2.getInt(4);
                    ff = formateador.format(val);
                    GastoUser[4] = ff;

                    total = total + Integer.parseInt(rsFinal2.getObject("total").toString());

                    tablaGastos2.addRow(GastoUser);
                }

                tbGastosExtras.setModel(tablaGastos2);
                String texto = String.valueOf(total);
                ff = formateador.format(Double.parseDouble(texto));

                lblTotalGastos.setText(String.valueOf(ff));
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Error en el metodo consultar por fecha", "Error metodo",
                        JOptionPane.ERROR_MESSAGE);

            }

        }

        //Gastos por usuario y fechas.
        if (cbxUsuario.isSelected() && cbxFecha.isSelected()) {
            if (calDesdeGastos.getDate() == null || calHastaGastos.getDate() == null) {
                JOptionPane.showMessageDialog(null, "Debe rellenar ambos campos porfavor", "Precaucin",
                        JOptionPane.WARNING_MESSAGE);
                return;
            }

            String formato = calDesdeGastos.getDateFormatString();
            java.util.Date date = calDesdeGastos.getDate();
            SimpleDateFormat sdf = new SimpleDateFormat(formato);
            String fechaDesde = String.valueOf(sdf.format(date));
            //String fechaDesdeReal = fechaDesde.replace("-", "/");

            String formato2 = calHastaGastos.getDateFormatString();
            java.util.Date date2 = calHastaGastos.getDate();
            SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
            String fechaHasta = String.valueOf(sdf2.format(date2));
            //String fechaHastaReal = fechaHasta.replace("-", "/");

            String diaDesde = fechaDesde.substring(0, 2);
            String mesDesde = fechaDesde.substring(3, 5);
            String anoDesde = fechaDesde.substring(6, 10);

            String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
            System.out.println("fechaDesdeR: " + fechaDesdeReal);

            String diaHasta = fechaHasta.substring(0, 2);
            String mesHasta = fechaHasta.substring(3, 5);
            String anoHasta = fechaHasta.substring(6, 10);

            //Concateno la fecha, en formato "YYYY-MM-DD".
            String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
            System.out.println("fechaHastaR " + fechaHastaReal);

            System.out.println("diaD: " + diaDesde);
            System.out.println("mesD: " + mesDesde);
            System.out.println("anoD: " + anoDesde);

            System.out.println("diaH: " + diaHasta);
            System.out.println("mesH: " + mesHasta);
            System.out.println("anoH: " + anoHasta);

            int compDia = diaDesde.compareTo(diaHasta);
            int compMes = mesDesde.compareTo(mesHasta);
            int compAno = anoDesde.compareTo(anoHasta);

            if (compAno <= -1) //Si el ao Desde: es menor que el ao Hasta: .
            {
                try {
                    UsuarioDao user2 = new UsuarioDaoImpl();
                    GastosExtrasDao gastosNew = new GastosExtrasDaoImpl();
                    int nombUser = cbSeleccionUsuario.getSelectedIndex() + 1;
                    //int idUser = user2.idUsuario(nombUser);
                    System.out.println("nombuser: " + nombUser);
                    ResultSet rsNew = gastosNew.gastosUsuarioYFecha(fechaDesdeReal, fechaHastaReal, nombUser);

                    DefaultTableModel tablaGastos2 = (DefaultTableModel) tbGastosExtras.getModel();
                    if (rsNew == null) {
                        btnExportarGastos.setEnabled(false);
                        JOptionPane.showMessageDialog(null, "No hay gastos de este usuario en estas fechas",
                                "Aviso", JOptionPane.WARNING_MESSAGE);
                        return;
                    } else {
                        btnExportarGastos.setEnabled(true);
                    }

                    Object[] object = new Object[5];
                    DecimalFormat formateador = new DecimalFormat("###,###");

                    int j = 1; //contador.

                    object[0] = j;
                    object[1] = rsNew.getObject(1);
                    object[2] = rsNew.getObject(2);
                    object[3] = rsNew.getObject(3);
                    int val = rsNew.getInt(4);
                    String ff = formateador.format(val);
                    object[4] = ff;

                    tablaGastos2.addRow(object);
                    int total = 0;
                    total = total + Integer.parseInt(rsNew.getObject("total").toString());

                    while (rsNew.next()) {

                        int cont = j++;
                        ff = formateador.format(cont);
                        object[0] = ff;

                        object[0] = j;
                        object[1] = rsNew.getObject(1);
                        object[2] = rsNew.getObject(2);
                        object[3] = rsNew.getObject(3);

                        val = rsNew.getInt(4);
                        ff = formateador.format(val);
                        object[4] = ff;

                        total = total + Integer.parseInt(rsNew.getObject("total").toString());

                        tablaGastos2.addRow(object);
                    }

                    tbGastosExtras.setModel(tablaGastos2);
                    String texto = String.valueOf(total);
                    ff = formateador.format(Double.parseDouble(texto));

                    lblTotalGastos.setText(String.valueOf(ff));

                } catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, "Error en el metodo consultar por fecha y usuario",
                            "Error metodo", JOptionPane.ERROR_MESSAGE);

                }
            } else if (compAno == 0) //Si son el mismo ao.
            {
                if (compMes <= -1 || compMes == 0) //Si el mes Desde: es menor o igual que el mes Hasta: .
                {
                    if (compDia <= -1 || compDia == 0) //Si el dia Desde: es menor o igual que el dia Hasta: .
                    {
                        try {
                            UsuarioDao user2 = new UsuarioDaoImpl();
                            GastosExtrasDao gastosNew = new GastosExtrasDaoImpl();
                            int nombUser = cbSeleccionUsuario.getSelectedIndex() + 1;
                            //int idUser = user2.idUsuario(nombUser);
                            System.out.println("nombuser: " + nombUser);
                            ResultSet rsNew = gastosNew.gastosUsuarioYFecha(fechaDesdeReal, fechaHastaReal,
                                    nombUser);

                            DefaultTableModel tablaGastos2 = (DefaultTableModel) tbGastosExtras.getModel();
                            if (rsNew == null) {
                                btnExportarGastos.setEnabled(false);
                                JOptionPane.showMessageDialog(null, "No hay gastos de este usuario en estas fechas",
                                        "Aviso", JOptionPane.WARNING_MESSAGE);
                                return;
                            } else {
                                btnExportarGastos.setEnabled(true);
                            }

                            Object[] object = new Object[5];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int j = 1;

                            object[0] = j;
                            object[1] = rsNew.getObject(1);
                            object[2] = rsNew.getObject(2);
                            object[3] = rsNew.getObject(3);
                            int val = rsNew.getInt(4);
                            String ff = formateador.format(val);
                            object[4] = ff;

                            tablaGastos2.addRow(object);
                            int total = 0;
                            total = total + Integer.parseInt(rsNew.getObject("total").toString());

                            while (rsNew.next()) {

                                int cont = j++;
                                ff = formateador.format(cont);
                                object[0] = ff;

                                object[0] = j;
                                object[1] = rsNew.getObject(1);
                                object[2] = rsNew.getObject(2);
                                object[3] = rsNew.getObject(3);

                                val = rsNew.getInt(4);
                                ff = formateador.format(val);
                                object[4] = ff;

                                total = total + Integer.parseInt(rsNew.getObject("total").toString());

                                tablaGastos2.addRow(object);
                            }

                            tbGastosExtras.setModel(tablaGastos2);
                            String texto = String.valueOf(total);
                            ff = formateador.format(Double.parseDouble(texto));

                            lblTotalGastos.setText(String.valueOf(ff));

                        } catch (SQLException ex) {
                            JOptionPane.showMessageDialog(null, "Error en el metodo consultar por fecha y usuario",
                                    "Error metodo", JOptionPane.ERROR_MESSAGE);

                        }
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "El dia debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "El mes debe ser menor o igual que  el de la fecha Hasta: ",
                            "Aviso", JOptionPane.WARNING_MESSAGE);
                    return;
                }
            } else //Si el ao Desde: es mayor que el ao Hasta: .
            {
                JOptionPane.showMessageDialog(null, "El ao debe ser menor o igual que  el de la fecha Hasta: ",
                        "Aviso", JOptionPane.WARNING_MESSAGE);
                return;
            }

        }
    }//GEN-LAST:event_btnConsultarGastosActionPerformed

    private void cbxFechaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxFechaActionPerformed
        // TODO add your handling code here:
        if (cbxFecha.isSelected()) {
            btnConsultarGastos.setEnabled(true);
            calDesdeGastos.setEnabled(true);
            calHastaGastos.setEnabled(true);
        }

        if (!cbxFecha.isSelected()) {
            calDesdeGastos.setEnabled(false);
            calHastaGastos.setEnabled(false);
        }
    }//GEN-LAST:event_cbxFechaActionPerformed

    private void cbxUsuarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxUsuarioActionPerformed
        // TODO add your handling code here:
        if (cbxUsuario.isSelected()) {
            btnConsultarGastos.setEnabled(true);
            cbSeleccionUsuario.setEnabled(true);
            try {
                final DefaultComboBoxModel modeloCombo;
                modeloCombo = new DefaultComboBoxModel();
                UsuarioDao usuarioDao = new UsuarioDaoImpl();
                ResultSet result = usuarioDao.todosUsuarios(); //Tengo la lista de usuarios en un ResultSet.

                modeloCombo.addElement(result.getObject("nombre")); //1er elemento del ResultSet.
                while (result.next()) {
                    modeloCombo.addElement(result.getObject("nombre"));
                }
                cbSeleccionUsuario.setModel(modeloCombo);

            } catch (SQLException ex) {
                Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        if (!cbxUsuario.isSelected()) {
            cbSeleccionUsuario.setEnabled(false);
            //lblUsuarioGastos.setText("S/N");
        }
    }//GEN-LAST:event_cbxUsuarioActionPerformed

    private void cbSeleccionUsuarioKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cbSeleccionUsuarioKeyPressed
        // TODO add your handling code here:

    }//GEN-LAST:event_cbSeleccionUsuarioKeyPressed

    private void cbSeleccionUsuarioItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbSeleccionUsuarioItemStateChanged
        // TODO add your handling code here:

    }//GEN-LAST:event_cbSeleccionUsuarioItemStateChanged

    private void calDesdeGastosKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_calDesdeGastosKeyTyped
        // TODO add your handling code here:
        evt.consume();
    }//GEN-LAST:event_calDesdeGastosKeyTyped

    private void btnExportarGastosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExportarGastosActionPerformed
        Thread t;
        t = new Thread() {
            @Override
            public void run() {
                XSSFWorkbook workbook = new XSSFWorkbook();
                XSSFSheet hoja = workbook.createSheet();

                XSSFRow fila = hoja.createRow(0);
                fila.createCell(0).setCellValue("N");
                fila.createCell(1).setCellValue("Vendedor");
                fila.createCell(2).setCellValue("Fecha (Ao-Mes-Da)");
                fila.createCell(3).setCellValue("Descripcin");
                fila.createCell(4).setCellValue("Valor");

                pbGastosExtras.setMaximum(tbGastosExtras.getRowCount());

                XSSFRow filas;
                Rectangle rect;

                for (int i = 0; i < tbGastosExtras.getRowCount(); i++) {
                    rect = tbGastosExtras.getCellRect(i, 0, true);

                    tbGastosExtras.scrollRectToVisible(rect);

                    tbGastosExtras.setRowSelectionInterval(i, i);

                    pbGastosExtras.setValue((i + 1));

                    filas = hoja.createRow((i + 1));

                    filas.createCell(0).setCellValue(tbGastosExtras.getValueAt(i, 0).toString());
                    filas.createCell(1).setCellValue(tbGastosExtras.getValueAt(i, 1).toString());
                    filas.createCell(2).setCellValue(tbGastosExtras.getValueAt(i, 2).toString());
                    filas.createCell(3).setCellValue(tbGastosExtras.getValueAt(i, 3).toString());
                    filas.createCell(4).setCellValue(tbGastosExtras.getValueAt(i, 4).toString());

                }

                pbGastosExtras.setValue(0);

                try {

                    workbook.write(new FileOutputStream(new File("Excel.xlsx")));
                    Desktop.getDesktop().open(new File("Excel.xlsx"));

                } catch (Exception e) {

                }

            }
        };
        t.start();

    }//GEN-LAST:event_btnExportarGastosActionPerformed

    private void rbtnMayorAMenorProductosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbtnMayorAMenorProductosActionPerformed
        // TODO add your handling code here:
        rbtnMenorAMayorProductos.setSelected(false);
    }//GEN-LAST:event_rbtnMayorAMenorProductosActionPerformed

    private void rbtnMenorAMayorProductosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbtnMenorAMayorProductosActionPerformed
        // TODO add your handling code here:
        rbtnMayorAMenorProductos.setSelected(false);
    }//GEN-LAST:event_rbtnMenorAMayorProductosActionPerformed

    private void btnConsultarProductosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConsultarProductosActionPerformed
        // TODO add your handling code here:
        lblProductosTipo.setText("");

        int numFilas = tbProductos.getRowCount();

        //Si hay registros de anterioridad, entonces seteamos el jtable para no juntar los registros de ambas consultas.
        if (numFilas >= 1) {
            DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();

            for (int j = 0; j < numFilas; j++) {
                //Removemos la primera fila de la tabla, desde la posicion 0 siempre.
                tablaProductos.removeRow(0);
            }

            tbProductos.setModel(tablaProductos);

            btnExportarProductos.setEnabled(false);
        }

        //btnExportarGastos.setEnabled(true);
        if (Color.RED == calDesdeProductos.getDateEditor().getUiComponent().getForeground()) {
            JOptionPane.showMessageDialog(null, "Fecha 'Desde:' no valida", "Error fecha",
                    JOptionPane.ERROR_MESSAGE);
            return;
        }

        if (Color.RED == calHastaProductos.getDateEditor().getUiComponent().getForeground()) {
            JOptionPane.showMessageDialog(null, "Fecha 'Hasta:' no valida", "Error fecha",
                    JOptionPane.ERROR_MESSAGE);
            return;
        }

        if (calDesdeProductos.getDate() == null || calHastaProductos.getDate() == null) {
            JOptionPane.showMessageDialog(null, "Debe rellenar ambos campos porfavor", "Precaucin",
                    JOptionPane.WARNING_MESSAGE);
            return;
        }

        //Si selecciona checkbox de unidad se consulta por productos por unidad.
        if (cbxProductosUnidad.isSelected()) {
            //Consultamos que opcin fue elejida por el usuario.
            if (rbtnMayorAMenorProductos.isSelected()) {
                lblComboBox.setText("");
                String formato = calDesdeProductos.getDateFormatString();
                java.util.Date date = calDesdeProductos.getDate();
                SimpleDateFormat sdf = new SimpleDateFormat(formato);
                String fechaDesde = String.valueOf(sdf.format(date));
                //String fechaDesdeReal = fechaDesde.replace("-", "/");

                String formato2 = calHastaProductos.getDateFormatString();
                java.util.Date date2 = calHastaProductos.getDate();
                SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
                String fechaHasta = String.valueOf(sdf2.format(date2));
                //String fechaHastaReal = fechaHasta.replace("-", "/");

                String diaDesde = fechaDesde.substring(0, 2);
                String mesDesde = fechaDesde.substring(3, 5);
                String anoDesde = fechaDesde.substring(6, 10);
                int anoDesdeAnterior = Integer.parseInt(anoDesde);
                anoDesdeAnterior = anoDesdeAnterior - 1;
                String anoDesdeAntReal = String.valueOf(anoDesdeAnterior);

                String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
                String fechaDesdeAntReal = anoDesdeAnterior + "-" + mesDesde + "-" + diaDesde;
                System.out.println("fechaDesdeR: " + fechaDesdeReal);

                String diaHasta = fechaHasta.substring(0, 2);
                String mesHasta = fechaHasta.substring(3, 5);
                String anoHasta = fechaHasta.substring(6, 10);
                int anoHastaAnterior = Integer.parseInt(anoHasta);
                anoHastaAnterior = anoHastaAnterior - 1;
                String anoHastaAntReal = String.valueOf(anoHastaAnterior);

                //Concateno la fecha, en formato "YYYY-MM-DD".
                String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
                String fechaHastaAntReal = anoHastaAnterior + "-" + mesDesde + "-" + diaDesde;
                System.out.println("fechaHastaR " + fechaHastaReal);

                System.out.println("diaD: " + diaDesde);
                System.out.println("mesD: " + mesDesde);
                System.out.println("anoD: " + anoDesde);

                System.out.println("diaH: " + diaHasta);
                System.out.println("mesH: " + mesHasta);
                System.out.println("anoH: " + anoHasta);

                int compDia = diaDesde.compareTo(diaHasta);
                int compMes = mesDesde.compareTo(mesHasta);
                int compAno = anoDesde.compareTo(anoHasta);

                //Arreglar para separar por aos, igual que en gastos extras.
                if (compAno <= -1 || compAno == 0) {

                    try {

                        ProductoDao producto = new ProductoDaoImpl();
                        ResultSet resp = producto.productosMasVendidosUnidadFechas(fechaDesdeReal, fechaHastaReal,
                                fechaDesdeAntReal, fechaHastaAntReal);

                        DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                        if (resp == null) {
                            btnExportarProductos.setEnabled(false);
                            txtFiltroNombre.setEnabled(false);
                            JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                    "Aviso", JOptionPane.WARNING_MESSAGE);
                            return;
                        } else {
                            btnExportarProductos.setEnabled(true);
                            txtFiltroNombre.setEnabled(true);
                        }

                        Object[] objeto = new Object[11];
                        DecimalFormat formateador = new DecimalFormat("###,###");

                        int contador = 1;

                        objeto[0] = contador;

                        objeto[1] = resp.getString("codigo");
                        objeto[2] = resp.getString("nombre");
                        objeto[3] = resp.getString("marca");

                        int pcomp = resp.getInt("precio_compra");
                        String ff = formateador.format(pcomp);
                        objeto[4] = ff;

                        int pvent = resp.getInt("precio_venta");
                        ff = formateador.format(pvent);
                        objeto[5] = ff;

                        int utiun = resp.getInt("utilidadUnitaria");
                        ff = formateador.format(utiun);
                        objeto[6] = ff;

                        //Preguntar por el tipo de producto y agregar la cantidad unitaria vendidad o la cantidad en kg vendida.
                        int cantven = resp.getInt("cantVendida");
                        ff = formateador.format(cantven);
                        objeto[7] = ff;

                        Double pesoven = resp.getDouble("pesoVendido");
                        objeto[8] = pesoven;

                        int utifin = resp.getInt("utilidadFinal");
                        ff = formateador.format(utifin);
                        objeto[9] = ff;

                        int cantpant = resp.getInt("cantPAnt");
                        ff = formateador.format(cantpant);
                        objeto[10] = ff;

                        tablaProductos.addRow(objeto);

                        while (resp.next()) {

                            int val = ++contador;
                            ff = formateador.format(val);
                            objeto[0] = ff;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            pcomp = resp.getInt("precio_compra");
                            ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                        }

                        tbProductos.setModel(tablaProductos);

                    } catch (SQLException ex) {
                        Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                    }

                }
            }

            if (rbtnMenorAMayorProductos.isSelected()) {
                lblComboBox.setText("");
                String formato = calDesdeProductos.getDateFormatString();
                java.util.Date date = calDesdeProductos.getDate();
                SimpleDateFormat sdf = new SimpleDateFormat(formato);
                String fechaDesde = String.valueOf(sdf.format(date));
                //String fechaDesdeReal = fechaDesde.replace("-", "/");

                String formato2 = calHastaProductos.getDateFormatString();
                java.util.Date date2 = calHastaProductos.getDate();
                SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
                String fechaHasta = String.valueOf(sdf2.format(date2));
                //String fechaHastaReal = fechaHasta.replace("-", "/");

                String diaDesde = fechaDesde.substring(0, 2);
                String mesDesde = fechaDesde.substring(3, 5);
                String anoDesde = fechaDesde.substring(6, 10);
                int anoDesdeAnterior = Integer.parseInt(anoDesde);
                anoDesdeAnterior = anoDesdeAnterior - 1;
                String anoDesdeAntReal = String.valueOf(anoDesdeAnterior);

                String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
                String fechaDesdeAntReal = anoDesdeAntReal + "-" + mesDesde + "-" + diaDesde;
                System.out.println("fechaDesdeR: " + fechaDesdeReal);

                String diaHasta = fechaHasta.substring(0, 2);
                String mesHasta = fechaHasta.substring(3, 5);
                String anoHasta = fechaHasta.substring(6, 10);
                int anoHastaAnterior = Integer.parseInt(anoHasta);
                anoHastaAnterior = anoHastaAnterior - 1;
                String anoHastaAntReal = String.valueOf(anoHastaAnterior);

                //Concateno la fecha, en formato "YYYY-MM-DD".
                String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
                String fechaHastaAntReal = anoHastaAntReal + "-" + mesDesde + "-" + diaDesde;
                System.out.println("fechaHastaR " + fechaHastaReal);

                System.out.println("diaD: " + diaDesde);
                System.out.println("mesD: " + mesDesde);
                System.out.println("anoD: " + anoDesde);

                System.out.println("diaH: " + diaHasta);
                System.out.println("mesH: " + mesHasta);
                System.out.println("anoH: " + anoHasta);

                int compDia = diaDesde.compareTo(diaHasta);
                int compMes = mesDesde.compareTo(mesHasta);
                int compAno = anoDesde.compareTo(anoHasta);

                //Arreglar para separar por aos, igual que en gastos extras.
                if (compAno <= -1) {

                    try {

                        ProductoDao producto = new ProductoDaoImpl();
                        ResultSet resp = producto.productosMenosVendidosUnidadFechas(fechaDesdeReal, fechaHastaReal,
                                fechaDesdeAntReal, fechaHastaAntReal);

                        DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                        if (resp == null) {
                            btnExportarProductos.setEnabled(false);
                            txtFiltroNombre.setEnabled(false);
                            JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                    "Aviso", JOptionPane.WARNING_MESSAGE);
                            return;
                        } else {
                            btnExportarProductos.setEnabled(true);
                            txtFiltroNombre.setEnabled(true);
                        }

                        Object[] objeto = new Object[11];
                        DecimalFormat formateador = new DecimalFormat("###,###");

                        int contador = 1;

                        objeto[0] = contador;

                        objeto[1] = resp.getString("codigo");
                        objeto[2] = resp.getString("nombre");
                        objeto[3] = resp.getString("marca");

                        int pcomp = resp.getInt("precio_compra");
                        String ff = formateador.format(pcomp);
                        objeto[4] = ff;

                        int pvent = resp.getInt("precio_venta");
                        ff = formateador.format(pvent);
                        objeto[5] = ff;

                        int utiun = resp.getInt("utilidadUnitaria");
                        ff = formateador.format(utiun);
                        objeto[6] = ff;

                        int cantven = resp.getInt("cantVendida");
                        ff = formateador.format(cantven);
                        objeto[7] = ff;

                        Double pesoven = resp.getDouble("pesoVendido");
                        objeto[8] = pesoven;

                        int utifin = resp.getInt("utilidadFinal");
                        ff = formateador.format(utifin);
                        objeto[9] = ff;

                        int cantpant = resp.getInt("cantPAnt");
                        ff = formateador.format(cantpant);
                        objeto[10] = ff;

                        tablaProductos.addRow(objeto);

                        while (resp.next()) {

                            int val = ++contador;
                            ff = formateador.format(val);
                            objeto[0] = ff;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            pcomp = resp.getInt("precio_compra");
                            ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                        }

                        tbProductos.setModel(tablaProductos);

                    } catch (SQLException ex) {
                        Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                    }

                } else if (compAno == 0) {
                    if (compMes <= -1 || compMes == 0) //Si el mes Desde: es menor o igual que el mes Hasta: .
                    {
                        if (compDia <= -1 || compDia == 0) //Si el dia Desde: es menor o igual que el dia Hasta: .
                        {
                            try {

                                ProductoDao producto = new ProductoDaoImpl();
                                ResultSet resp = producto.productosMenosVendidosUnidadFechas(fechaDesdeReal,
                                        fechaHastaReal, fechaDesdeAntReal, fechaHastaAntReal);

                                DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                                if (resp == null) {
                                    btnExportarProductos.setEnabled(false);
                                    txtFiltroNombre.setEnabled(false);
                                    JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                            "Aviso", JOptionPane.WARNING_MESSAGE);
                                    return;
                                } else {
                                    btnExportarProductos.setEnabled(true);
                                    txtFiltroNombre.setEnabled(true);
                                }

                                Object[] objeto = new Object[11];
                                DecimalFormat formateador = new DecimalFormat("###,###");

                                int contador = 1;

                                objeto[0] = contador;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                int pcomp = resp.getInt("precio_compra");
                                String ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                int pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                int utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                int cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                Double pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                int utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                int cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                                while (resp.next()) {

                                    int val = ++contador;
                                    ff = formateador.format(val);
                                    objeto[0] = ff;

                                    objeto[1] = resp.getString("codigo");
                                    objeto[2] = resp.getString("nombre");
                                    objeto[3] = resp.getString("marca");

                                    pcomp = resp.getInt("precio_compra");
                                    ff = formateador.format(pcomp);
                                    objeto[4] = ff;

                                    pvent = resp.getInt("precio_venta");
                                    ff = formateador.format(pvent);
                                    objeto[5] = ff;

                                    utiun = resp.getInt("utilidadUnitaria");
                                    ff = formateador.format(utiun);
                                    objeto[6] = ff;

                                    cantven = resp.getInt("cantVendida");
                                    ff = formateador.format(cantven);
                                    objeto[7] = ff;

                                    pesoven = resp.getDouble("pesoVendido");
                                    objeto[8] = pesoven;

                                    utifin = resp.getInt("utilidadFinal");
                                    ff = formateador.format(utifin);
                                    objeto[9] = ff;

                                    cantpant = resp.getInt("cantPAnt");
                                    ff = formateador.format(cantpant);
                                    objeto[10] = ff;

                                    tablaProductos.addRow(objeto);

                                }

                                tbProductos.setModel(tablaProductos);

                            } catch (SQLException ex) {
                                Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        } else {
                            JOptionPane.showMessageDialog(null,
                                    "El dia debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                                    JOptionPane.WARNING_MESSAGE);
                            return;
                        }
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "El mes debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    }
                } else {
                    JOptionPane.showMessageDialog(null,
                            "El ao debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                            JOptionPane.WARNING_MESSAGE);
                    return;
                }
            }

            if (rbtnMayorAMenorProductos.isSelected() == false && rbtnMenorAMayorProductos.isSelected() == false) {
                lblComboBox.setText("SELECCIONE ALGUNA DE LAS 2 OPCIONES PORFAVOR");
            }
        } else if (cbxProductosPeso.isSelected()) {
            //Consultamos que opcin fue elejida por el usuario.
            if (rbtnMayorAMenorProductos.isSelected()) {
                lblComboBox.setText("");
                String formato = calDesdeProductos.getDateFormatString();
                java.util.Date date = calDesdeProductos.getDate();
                SimpleDateFormat sdf = new SimpleDateFormat(formato);
                String fechaDesde = String.valueOf(sdf.format(date));
                //String fechaDesdeReal = fechaDesde.replace("-", "/");

                String formato2 = calHastaProductos.getDateFormatString();
                java.util.Date date2 = calHastaProductos.getDate();
                SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
                String fechaHasta = String.valueOf(sdf2.format(date2));
                //String fechaHastaReal = fechaHasta.replace("-", "/");

                String diaDesde = fechaDesde.substring(0, 2);
                String mesDesde = fechaDesde.substring(3, 5);
                String anoDesde = fechaDesde.substring(6, 10);
                int anoDesdeAnterior = Integer.parseInt(anoDesde);
                anoDesdeAnterior = anoDesdeAnterior - 1;
                String anoDesdeAntReal = String.valueOf(anoDesdeAnterior);

                String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
                String fechaDesdeAntReal = anoDesdeAnterior + "-" + mesDesde + "-" + diaDesde;
                System.out.println("fechaDesdeR: " + fechaDesdeReal);

                String diaHasta = fechaHasta.substring(0, 2);
                String mesHasta = fechaHasta.substring(3, 5);
                String anoHasta = fechaHasta.substring(6, 10);
                int anoHastaAnterior = Integer.parseInt(anoHasta);
                anoHastaAnterior = anoHastaAnterior - 1;
                String anoHastaAntReal = String.valueOf(anoHastaAnterior);

                //Concateno la fecha, en formato "YYYY-MM-DD".
                String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
                String fechaHastaAntReal = anoHastaAnterior + "-" + mesDesde + "-" + diaDesde;
                System.out.println("fechaHastaR " + fechaHastaReal);

                System.out.println("diaD: " + diaDesde);
                System.out.println("mesD: " + mesDesde);
                System.out.println("anoD: " + anoDesde);

                System.out.println("diaH: " + diaHasta);
                System.out.println("mesH: " + mesHasta);
                System.out.println("anoH: " + anoHasta);

                int compDia = diaDesde.compareTo(diaHasta);
                int compMes = mesDesde.compareTo(mesHasta);
                int compAno = anoDesde.compareTo(anoHasta);

                //Arreglar para separar por aos, igual que en gastos extras.
                if (compAno <= -1 || compAno == 0) {

                    try {

                        ProductoDao producto = new ProductoDaoImpl();
                        ResultSet resp = producto.productosMasVendidosPesoFechas(fechaDesdeReal, fechaHastaReal,
                                fechaDesdeAntReal, fechaHastaAntReal);

                        DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                        if (resp == null) {
                            btnExportarProductos.setEnabled(false);
                            txtFiltroNombre.setEnabled(false);
                            JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                    "Aviso", JOptionPane.WARNING_MESSAGE);
                            return;
                        } else {
                            btnExportarProductos.setEnabled(true);
                            txtFiltroNombre.setEnabled(true);
                        }

                        Object[] objeto = new Object[11];
                        DecimalFormat formateador = new DecimalFormat("###,###");

                        int contador = 1;

                        objeto[0] = contador;

                        objeto[1] = resp.getString("codigo");
                        objeto[2] = resp.getString("nombre");
                        objeto[3] = resp.getString("marca");

                        int pcomp = resp.getInt("precio_compra");
                        String ff = formateador.format(pcomp);
                        objeto[4] = ff;

                        int pvent = resp.getInt("precio_venta");
                        ff = formateador.format(pvent);
                        objeto[5] = ff;

                        int utiun = resp.getInt("utilidadUnitaria");
                        ff = formateador.format(utiun);
                        objeto[6] = ff;

                        int cantven = resp.getInt("cantVendida");
                        ff = formateador.format(cantven);
                        objeto[7] = ff;

                        Double pesoven = resp.getDouble("pesoVendido");
                        objeto[8] = pesoven;

                        int utifin = resp.getInt("utilidadFinal");
                        ff = formateador.format(utifin);
                        objeto[9] = ff;

                        int cantpant = resp.getInt("cantPAnt");
                        ff = formateador.format(cantpant);
                        objeto[10] = ff;

                        tablaProductos.addRow(objeto);

                        while (resp.next()) {

                            int val = ++contador;
                            ff = formateador.format(val);
                            objeto[0] = ff;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            pcomp = resp.getInt("precio_compra");
                            ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                        }

                        tbProductos.setModel(tablaProductos);

                    } catch (SQLException ex) {
                        Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                    }

                }
            }

            if (rbtnMenorAMayorProductos.isSelected()) {
                lblComboBox.setText("");
                String formato = calDesdeProductos.getDateFormatString();
                java.util.Date date = calDesdeProductos.getDate();
                SimpleDateFormat sdf = new SimpleDateFormat(formato);
                String fechaDesde = String.valueOf(sdf.format(date));
                //String fechaDesdeReal = fechaDesde.replace("-", "/");

                String formato2 = calHastaProductos.getDateFormatString();
                java.util.Date date2 = calHastaProductos.getDate();
                SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
                String fechaHasta = String.valueOf(sdf2.format(date2));
                //String fechaHastaReal = fechaHasta.replace("-", "/");

                String diaDesde = fechaDesde.substring(0, 2);
                String mesDesde = fechaDesde.substring(3, 5);
                String anoDesde = fechaDesde.substring(6, 10);
                int anoDesdeAnterior = Integer.parseInt(anoDesde);
                anoDesdeAnterior = anoDesdeAnterior - 1;
                String anoDesdeAntReal = String.valueOf(anoDesdeAnterior);

                String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
                String fechaDesdeAntReal = anoDesdeAntReal + "-" + mesDesde + "-" + diaDesde;
                System.out.println("fechaDesdeR: " + fechaDesdeReal);

                String diaHasta = fechaHasta.substring(0, 2);
                String mesHasta = fechaHasta.substring(3, 5);
                String anoHasta = fechaHasta.substring(6, 10);
                int anoHastaAnterior = Integer.parseInt(anoHasta);
                anoHastaAnterior = anoHastaAnterior - 1;
                String anoHastaAntReal = String.valueOf(anoHastaAnterior);

                //Concateno la fecha, en formato "YYYY-MM-DD".
                String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
                String fechaHastaAntReal = anoHastaAntReal + "-" + mesDesde + "-" + diaDesde;
                System.out.println("fechaHastaR " + fechaHastaReal);

                System.out.println("diaD: " + diaDesde);
                System.out.println("mesD: " + mesDesde);
                System.out.println("anoD: " + anoDesde);

                System.out.println("diaH: " + diaHasta);
                System.out.println("mesH: " + mesHasta);
                System.out.println("anoH: " + anoHasta);

                int compDia = diaDesde.compareTo(diaHasta);
                int compMes = mesDesde.compareTo(mesHasta);
                int compAno = anoDesde.compareTo(anoHasta);

                //Arreglar para separar por aos, igual que en gastos extras.
                if (compAno <= -1) {

                    try {

                        ProductoDao producto = new ProductoDaoImpl();
                        ResultSet resp = producto.productosMenosVendidosPesoFechas(fechaDesdeReal, fechaHastaReal,
                                fechaDesdeAntReal, fechaHastaAntReal);

                        DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                        if (resp == null) {
                            btnExportarProductos.setEnabled(false);
                            txtFiltroNombre.setEnabled(false);
                            JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                    "Aviso", JOptionPane.WARNING_MESSAGE);
                            return;
                        } else {
                            btnExportarProductos.setEnabled(true);
                            txtFiltroNombre.setEnabled(true);
                        }

                        Object[] objeto = new Object[11];
                        DecimalFormat formateador = new DecimalFormat("###,###");

                        int contador = 1;

                        objeto[0] = contador;

                        objeto[1] = resp.getString("codigo");
                        objeto[2] = resp.getString("nombre");
                        objeto[3] = resp.getString("marca");

                        int pcomp = resp.getInt("precio_compra");
                        String ff = formateador.format(pcomp);
                        objeto[4] = ff;

                        int pvent = resp.getInt("precio_venta");
                        ff = formateador.format(pvent);
                        objeto[5] = ff;

                        int utiun = resp.getInt("utilidadUnitaria");
                        ff = formateador.format(utiun);
                        objeto[6] = ff;

                        int cantven = resp.getInt("cantVendida");
                        ff = formateador.format(cantven);
                        objeto[7] = ff;

                        Double pesoven = resp.getDouble("pesoVendido");
                        objeto[8] = pesoven;

                        int utifin = resp.getInt("utilidadFinal");
                        ff = formateador.format(utifin);
                        objeto[9] = ff;

                        int cantpant = resp.getInt("cantPAnt");
                        ff = formateador.format(cantpant);
                        objeto[10] = ff;

                        tablaProductos.addRow(objeto);

                        while (resp.next()) {

                            int val = ++contador;
                            ff = formateador.format(val);
                            objeto[0] = ff;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            pcomp = resp.getInt("precio_compra");
                            ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                        }

                        tbProductos.setModel(tablaProductos);

                    } catch (SQLException ex) {
                        Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                    }

                } else if (compAno == 0) {
                    if (compMes <= -1 || compMes == 0) //Si el mes Desde: es menor o igual que el mes Hasta: .
                    {
                        if (compDia <= -1 || compDia == 0) //Si el dia Desde: es menor o igual que el dia Hasta: .
                        {
                            try {

                                ProductoDao producto = new ProductoDaoImpl();
                                ResultSet resp = producto.productosMenosVendidosPesoFechas(fechaDesdeReal,
                                        fechaHastaReal, fechaDesdeAntReal, fechaHastaAntReal);

                                DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                                if (resp == null) {
                                    btnExportarProductos.setEnabled(false);
                                    txtFiltroNombre.setEnabled(false);
                                    JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                            "Aviso", JOptionPane.WARNING_MESSAGE);
                                    return;
                                } else {
                                    btnExportarProductos.setEnabled(true);
                                    txtFiltroNombre.setEnabled(true);
                                }

                                Object[] objeto = new Object[11];
                                DecimalFormat formateador = new DecimalFormat("###,###");

                                int contador = 1;

                                objeto[0] = contador;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                int pcomp = resp.getInt("precio_compra");
                                String ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                int pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                int utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                int cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                Double pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                int utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                int cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                                while (resp.next()) {

                                    int val = ++contador;
                                    ff = formateador.format(val);
                                    objeto[0] = ff;

                                    objeto[1] = resp.getString("codigo");
                                    objeto[2] = resp.getString("nombre");
                                    objeto[3] = resp.getString("marca");

                                    pcomp = resp.getInt("precio_compra");
                                    ff = formateador.format(pcomp);
                                    objeto[4] = ff;

                                    pvent = resp.getInt("precio_venta");
                                    ff = formateador.format(pvent);
                                    objeto[5] = ff;

                                    utiun = resp.getInt("utilidadUnitaria");
                                    ff = formateador.format(utiun);
                                    objeto[6] = ff;

                                    cantven = resp.getInt("cantVendida");
                                    ff = formateador.format(cantven);
                                    objeto[7] = ff;

                                    pesoven = resp.getDouble("pesoVendido");
                                    objeto[8] = pesoven;

                                    utifin = resp.getInt("utilidadFinal");
                                    ff = formateador.format(utifin);
                                    objeto[9] = ff;

                                    cantpant = resp.getInt("cantPAnt");
                                    ff = formateador.format(cantpant);
                                    objeto[10] = ff;

                                    tablaProductos.addRow(objeto);

                                }

                                tbProductos.setModel(tablaProductos);

                            } catch (SQLException ex) {
                                Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        } else {
                            JOptionPane.showMessageDialog(null,
                                    "El dia debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                                    JOptionPane.WARNING_MESSAGE);
                            return;
                        }
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "El mes debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    }
                } else {
                    JOptionPane.showMessageDialog(null,
                            "El ao debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                            JOptionPane.WARNING_MESSAGE);
                    return;
                }
            }

            if (rbtnMayorAMenorProductos.isSelected() == false && rbtnMenorAMayorProductos.isSelected() == false) {
                lblComboBox.setText("SELECCIONE ALGUNA DE LAS 2 OPCIONES PORFAVOR");
            }

        } else {
            //Dar aviso de que selccione alguna de las 2 opciones. Unidad o peso.
            lblProductosTipo.setText("<-- Seleccione alguna de las 2 opciones porfavor.");
            JOptionPane.showMessageDialog(null, "Debe seleccionar si quiere productos por unidad o peso. ", "Aviso",
                    JOptionPane.WARNING_MESSAGE);
        }

    }//GEN-LAST:event_btnConsultarProductosActionPerformed

    private void btnExportarProductosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExportarProductosActionPerformed
        // TODO add your handling code here:
        Thread t;
        t = new Thread() {
            @Override
            public void run() {
                XSSFWorkbook workbook = new XSSFWorkbook();
                XSSFSheet hoja = workbook.createSheet();

                XSSFRow fila = hoja.createRow(0);
                fila.createCell(0).setCellValue("N");
                fila.createCell(1).setCellValue("Codigo");
                fila.createCell(2).setCellValue("Nombre");
                fila.createCell(3).setCellValue("Marca");
                fila.createCell(4).setCellValue("Precio Compra");
                fila.createCell(5).setCellValue("Precio Venta");
                fila.createCell(6).setCellValue("Utilidad Unitaria");
                fila.createCell(7).setCellValue("Cantidad vendida");
                fila.createCell(8).setCellValue("Utilidad Final");
                fila.createCell(9).setCellValue("Periodo anterior");

                pbProductos.setMaximum(tbGastosExtras.getRowCount());
                XSSFRow filas;
                Rectangle rect;

                for (int i = 0; i < tbProductos.getRowCount(); i++) {
                    rect = tbProductos.getCellRect(i, 0, true);

                    tbProductos.scrollRectToVisible(rect);

                    tbProductos.setRowSelectionInterval(i, i);

                    pbProductos.setValue((i + 1));
                    filas = hoja.createRow((i + 1));

                    filas.createCell(0).setCellValue(tbProductos.getValueAt(i, 0).toString());
                    filas.createCell(1).setCellValue(tbProductos.getValueAt(i, 1).toString());
                    filas.createCell(2).setCellValue(tbProductos.getValueAt(i, 2).toString());
                    filas.createCell(3).setCellValue(tbProductos.getValueAt(i, 3).toString());
                    filas.createCell(4).setCellValue(tbProductos.getValueAt(i, 4).toString());
                    filas.createCell(5).setCellValue(tbProductos.getValueAt(i, 5).toString());
                    filas.createCell(6).setCellValue(tbProductos.getValueAt(i, 6).toString());
                    filas.createCell(7).setCellValue(tbProductos.getValueAt(i, 7).toString());
                    filas.createCell(8).setCellValue(tbProductos.getValueAt(i, 8).toString());
                    filas.createCell(9).setCellValue(tbProductos.getValueAt(i, 9).toString());

                }

                pbProductos.setValue(0);
                try {

                    workbook.write(new FileOutputStream(new File("Excel.xlsx")));
                    Desktop.getDesktop().open(new File("Excel.xlsx"));

                } catch (Exception e) {

                }

            }
        };
        t.start();

    }//GEN-LAST:event_btnExportarProductosActionPerformed

    private void txtFiltroNombreKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtFiltroNombreKeyReleased
        // TODO add your handling code here:
        String caracter = txtFiltroNombre.getText();

        String formato = calDesdeProductos.getDateFormatString();
        java.util.Date date = calDesdeProductos.getDate();
        SimpleDateFormat sdf = new SimpleDateFormat(formato);
        String fechaDesde = String.valueOf(sdf.format(date));

        String formato2 = calHastaProductos.getDateFormatString();
        java.util.Date date2 = calHastaProductos.getDate();
        SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
        String fechaHasta = String.valueOf(sdf2.format(date2));

        String diaDesde = fechaDesde.substring(0, 2);
        String mesDesde = fechaDesde.substring(3, 5);
        String anoDesde = fechaDesde.substring(6, 10);
        int anoDesdeAnterior = Integer.parseInt(anoDesde);
        anoDesdeAnterior = anoDesdeAnterior - 1;
        String anoDesdeAntReal = String.valueOf(anoDesdeAnterior);

        String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
        String fechaDesdeAntReal = anoDesdeAntReal + "-" + mesDesde + "-" + diaDesde;

        String diaHasta = fechaHasta.substring(0, 2);
        String mesHasta = fechaHasta.substring(3, 5);
        String anoHasta = fechaHasta.substring(6, 10);
        int anoHastaAnterior = Integer.parseInt(anoHasta);
        anoHastaAnterior = anoHastaAnterior - 1;
        String anoHastaAntReal = String.valueOf(anoHastaAnterior);

        //Concateno la fecha, en formato "YYYY-MM-DD".
        String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
        String fechaHastaAntReal = anoHastaAntReal + "-" + mesDesde + "-" + diaDesde;

        int compDia = diaDesde.compareTo(diaHasta);
        int compMes = mesDesde.compareTo(mesHasta);
        int compAno = anoDesde.compareTo(anoHasta);

        int numFilas = tbProductos.getRowCount();

        //Si hay registros de anterioridad, entonces seteamos el jtable para no juntar los registros de ambas consultas.
        if (numFilas >= 1) {
            DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();

            for (int j = 0; j < numFilas; j++) {
                //Removemos la primera fila de la tabla, desde la posicion 0 siempre.
                tablaProductos.removeRow(0);
            }

            tbProductos.setModel(tablaProductos);
            btnExportarProductos.setEnabled(false);
        }

        ProductoDao p = new ProductoDaoImpl();

        try {

            if (cbxProductosUnidad.isSelected()) {
                //  Hacer 2 consultas si es que esta selecionado de mayor a menor o lo contrario y en base a eso consultar.
                if (rbtnMayorAMenorProductos.isSelected()) {
                    if (caracter.equals("")) {
                        try {

                            ProductoDao producto = new ProductoDaoImpl();
                            ResultSet resp = producto.productosMasVendidosUnidadFechas(fechaDesdeReal,
                                    fechaHastaReal, fechaDesdeAntReal, fechaHastaAntReal);

                            DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                            if (resp == null) {
                                btnExportarProductos.setEnabled(false);
                                txtFiltroNombre.setEnabled(false);
                                JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                        "Aviso", JOptionPane.WARNING_MESSAGE);
                                return;
                            } else {
                                btnExportarProductos.setEnabled(true);
                                txtFiltroNombre.setEnabled(true);
                            }

                            Object[] objeto = new Object[11];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            int pcomp = resp.getInt("precio_compra");
                            String ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            int pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            int utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            int cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            Double pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            int utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            int cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                            while (resp.next()) {

                                int val = ++contador;
                                ff = formateador.format(val);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                pcomp = resp.getInt("precio_compra");
                                ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                            }

                            tbProductos.setModel(tablaProductos);

                        } catch (SQLException ex) {
                            Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {

                        //Dado que el txt ya no esta vacio se aplica la funcion de filtrar.
                        ResultSet resp = p.filtrarProductoNombreUnidadMayorAMenor(fechaDesdeReal, fechaHastaReal,
                                fechaDesdeAntReal, fechaHastaAntReal, caracter);
                        DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();

                        if (resp == null) {
                            btnExportarProductos.setEnabled(false);
                            return;
                        } else {
                            btnExportarProductos.setEnabled(true);

                            Object[] objeto = new Object[11];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            int pcomp = resp.getInt("precio_compra");
                            String ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            int pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            int utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            int cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            Double pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            int utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            int cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                            while (resp.next()) {

                                int val = ++contador;
                                ff = formateador.format(val);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                pcomp = resp.getInt("precio_compra");
                                ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                            }

                            tbProductos.setModel(tablaProductos);
                        }

                    }

                }
                if (rbtnMenorAMayorProductos.isSelected()) {
                    if (caracter.equals("")) {
                        try {

                            ProductoDao producto = new ProductoDaoImpl();
                            ResultSet resp = producto.productosMenosVendidosUnidadFechas(fechaDesdeReal,
                                    fechaHastaReal, fechaDesdeAntReal, fechaHastaAntReal);

                            DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                            if (resp == null) {
                                btnExportarProductos.setEnabled(false);
                                txtFiltroNombre.setEnabled(false);
                                JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                        "Aviso", JOptionPane.WARNING_MESSAGE);
                                return;
                            } else {
                                btnExportarProductos.setEnabled(true);
                                txtFiltroNombre.setEnabled(true);
                            }

                            Object[] objeto = new Object[11];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            int pcomp = resp.getInt("precio_compra");
                            String ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            int pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            int utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            int cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            Double pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            int utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            int cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                            while (resp.next()) {

                                int val = ++contador;
                                ff = formateador.format(val);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                pcomp = resp.getInt("precio_compra");
                                ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                            }

                            tbProductos.setModel(tablaProductos);

                        } catch (SQLException ex) {
                            Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {
                        ResultSet resp = p.filtrarProductoNombreUnidadMenorAMayor(fechaDesdeReal, fechaHastaReal,
                                fechaDesdeAntReal, fechaHastaAntReal, caracter);
                        DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                        if (resp == null) {
                            btnExportarProductos.setEnabled(false);
                        } else {
                            btnExportarProductos.setEnabled(true);

                            Object[] objeto = new Object[11];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            int pcomp = resp.getInt("precio_compra");
                            String ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            int pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            int utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            int cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            Double pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            int utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            int cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                            while (resp.next()) {

                                int val = ++contador;
                                ff = formateador.format(val);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                pcomp = resp.getInt("precio_compra");
                                ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                            }

                            tbProductos.setModel(tablaProductos);
                        }
                    }

                }
            } else if (cbxProductosPeso.isSelected()) {

                //  Hacer 2 consultas si es que esta selecionado de mayor a menor o lo contrario y en base a eso consultar.
                if (rbtnMayorAMenorProductos.isSelected()) {
                    if (caracter.equals("")) {
                        try {

                            ProductoDao producto = new ProductoDaoImpl();
                            ResultSet resp = producto.productosMasVendidosPesoFechas(fechaDesdeReal, fechaHastaReal,
                                    fechaDesdeAntReal, fechaHastaAntReal);

                            DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                            if (resp == null) {
                                btnExportarProductos.setEnabled(false);
                                txtFiltroNombre.setEnabled(false);
                                JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                        "Aviso", JOptionPane.WARNING_MESSAGE);
                                return;
                            } else {
                                btnExportarProductos.setEnabled(true);
                                txtFiltroNombre.setEnabled(true);
                            }

                            Object[] objeto = new Object[11];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            int pcomp = resp.getInt("precio_compra");
                            String ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            int pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            int utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            int cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            Double pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            int utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            int cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                            while (resp.next()) {

                                int val = ++contador;
                                ff = formateador.format(val);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                pcomp = resp.getInt("precio_compra");
                                ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                            }

                            tbProductos.setModel(tablaProductos);

                        } catch (SQLException ex) {
                            Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {

                        //Dado que el txt ya no esta vacio se aplica la funcion de filtrar.
                        ResultSet resp = p.filtrarProductoNombrePesoMayorAMenor(fechaDesdeReal, fechaHastaReal,
                                fechaDesdeAntReal, fechaHastaAntReal, caracter);
                        DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();

                        if (resp == null) {
                            btnExportarProductos.setEnabled(false);
                            return;
                        } else {
                            btnExportarProductos.setEnabled(true);

                            Object[] objeto = new Object[11];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            int pcomp = resp.getInt("precio_compra");
                            String ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            int pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            int utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            int cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            Double pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            int utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            int cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                            while (resp.next()) {

                                int val = ++contador;
                                ff = formateador.format(val);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                pcomp = resp.getInt("precio_compra");
                                ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                            }

                            tbProductos.setModel(tablaProductos);
                        }

                    }

                }
                if (rbtnMenorAMayorProductos.isSelected()) {
                    if (caracter.equals("")) {
                        try {

                            ProductoDao producto = new ProductoDaoImpl();
                            ResultSet resp = producto.productosMenosVendidosPesoFechas(fechaDesdeReal,
                                    fechaHastaReal, fechaDesdeAntReal, fechaHastaAntReal);

                            DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                            if (resp == null) {
                                btnExportarProductos.setEnabled(false);
                                txtFiltroNombre.setEnabled(false);
                                JOptionPane.showMessageDialog(null, "No hay productos vendidos en estas fechas",
                                        "Aviso", JOptionPane.WARNING_MESSAGE);
                                return;
                            } else {
                                btnExportarProductos.setEnabled(true);
                                txtFiltroNombre.setEnabled(true);
                            }

                            Object[] objeto = new Object[11];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            int pcomp = resp.getInt("precio_compra");
                            String ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            int pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            int utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            int cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            Double pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            int utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            int cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                            while (resp.next()) {

                                int val = ++contador;
                                ff = formateador.format(val);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                pcomp = resp.getInt("precio_compra");
                                ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                            }

                            tbProductos.setModel(tablaProductos);

                        } catch (SQLException ex) {
                            Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {
                        ResultSet resp = p.filtrarProductoNombrePesoMenorAMayor(fechaDesdeReal, fechaHastaReal,
                                fechaDesdeAntReal, fechaHastaAntReal, caracter);
                        DefaultTableModel tablaProductos = (DefaultTableModel) tbProductos.getModel();
                        if (resp == null) {
                            btnExportarProductos.setEnabled(false);
                        } else {
                            btnExportarProductos.setEnabled(true);

                            Object[] objeto = new Object[11];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;

                            objeto[1] = resp.getString("codigo");
                            objeto[2] = resp.getString("nombre");
                            objeto[3] = resp.getString("marca");

                            int pcomp = resp.getInt("precio_compra");
                            String ff = formateador.format(pcomp);
                            objeto[4] = ff;

                            int pvent = resp.getInt("precio_venta");
                            ff = formateador.format(pvent);
                            objeto[5] = ff;

                            int utiun = resp.getInt("utilidadUnitaria");
                            ff = formateador.format(utiun);
                            objeto[6] = ff;

                            int cantven = resp.getInt("cantVendida");
                            ff = formateador.format(cantven);
                            objeto[7] = ff;

                            Double pesoven = resp.getDouble("pesoVendido");
                            objeto[8] = pesoven;

                            int utifin = resp.getInt("utilidadFinal");
                            ff = formateador.format(utifin);
                            objeto[9] = ff;

                            int cantpant = resp.getInt("cantPAnt");
                            ff = formateador.format(cantpant);
                            objeto[10] = ff;

                            tablaProductos.addRow(objeto);

                            while (resp.next()) {

                                int val = ++contador;
                                ff = formateador.format(val);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("codigo");
                                objeto[2] = resp.getString("nombre");
                                objeto[3] = resp.getString("marca");

                                pcomp = resp.getInt("precio_compra");
                                ff = formateador.format(pcomp);
                                objeto[4] = ff;

                                pvent = resp.getInt("precio_venta");
                                ff = formateador.format(pvent);
                                objeto[5] = ff;

                                utiun = resp.getInt("utilidadUnitaria");
                                ff = formateador.format(utiun);
                                objeto[6] = ff;

                                cantven = resp.getInt("cantVendida");
                                ff = formateador.format(cantven);
                                objeto[7] = ff;

                                pesoven = resp.getDouble("pesoVendido");
                                objeto[8] = pesoven;

                                utifin = resp.getInt("utilidadFinal");
                                ff = formateador.format(utifin);
                                objeto[9] = ff;

                                cantpant = resp.getInt("cantPAnt");
                                ff = formateador.format(cantpant);
                                objeto[10] = ff;

                                tablaProductos.addRow(objeto);

                            }

                            tbProductos.setModel(tablaProductos);
                        }
                    }

                }

            } else {

            }

        } catch (SQLException ex) {
            Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_txtFiltroNombreKeyReleased

    private void txtFiltroNombreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtFiltroNombreActionPerformed
        // TODO add your handling code here:

    }//GEN-LAST:event_txtFiltroNombreActionPerformed

    private void rbtnMayoresVentasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbtnMayoresVentasActionPerformed
        // TODO add your handling code here:
        rbtnMenoresVentas.setSelected(false);
    }//GEN-LAST:event_rbtnMayoresVentasActionPerformed

    private void rbtnMenoresVentasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbtnMenoresVentasActionPerformed
        // TODO add your handling code here:
        rbtnMayoresVentas.setSelected(false);
    }//GEN-LAST:event_rbtnMenoresVentasActionPerformed

    private void btnConsultarVendedoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConsultarVendedoresActionPerformed
        // TODO add your handling code here:
        int numFilas = tbVendedores.getRowCount();

        //Si hay registros de anterioridad, entonces seteamos el jtable para no juntar los registros de ambas consultas.
        if (numFilas >= 1) {
            DefaultTableModel tablaVendedores = (DefaultTableModel) tbVendedores.getModel();

            for (int j = 0; j < numFilas; j++) {
                //Removemos la primera fila de la tabla, desde la posicion 0 siempre.
                tablaVendedores.removeRow(0);
            }

            tbVendedores.setModel(tablaVendedores);
            //lblTotalGastos.setText("0");
            btnExportarVendedores.setEnabled(false);
        }

        //btnExportarGastos.setEnabled(true);
        if (Color.RED == calDesdeVendedores.getDateEditor().getUiComponent().getForeground()) {
            JOptionPane.showMessageDialog(null, "Fecha 'Desde:' no valida", "Error fecha",
                    JOptionPane.ERROR_MESSAGE);
            return;
        }

        if (Color.RED == calHastaVendedores.getDateEditor().getUiComponent().getForeground()) {
            JOptionPane.showMessageDialog(null, "Fecha 'Hasta:' no valida", "Error fecha",
                    JOptionPane.ERROR_MESSAGE);
            return;
        }

        if (calDesdeVendedores.getDate() == null || calHastaVendedores.getDate() == null) {
            JOptionPane.showMessageDialog(null, "Debe rellenar ambos campos porfavor", "Precaucin",
                    JOptionPane.WARNING_MESSAGE);
            return;
        }

        if (rbtnMayoresVentas.isSelected()) {

            lblAvisoVendedores.setText("");

            String formato = calDesdeVendedores.getDateFormatString();
            java.util.Date date = calDesdeVendedores.getDate();
            SimpleDateFormat sdf = new SimpleDateFormat(formato);
            String fechaDesde = String.valueOf(sdf.format(date));
            //String fechaDesdeReal = fechaDesde.replace("-", "/");

            String formato2 = calHastaVendedores.getDateFormatString();
            java.util.Date date2 = calHastaVendedores.getDate();
            SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
            String fechaHasta = String.valueOf(sdf2.format(date2));
            //String fechaHastaReal = fechaHasta.replace("-", "/");

            String diaDesde = fechaDesde.substring(0, 2);
            String mesDesde = fechaDesde.substring(3, 5);
            String anoDesde = fechaDesde.substring(6, 10);

            String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
            System.out.println("fechaDesdeR: " + fechaDesdeReal);

            String diaHasta = fechaHasta.substring(0, 2);
            String mesHasta = fechaHasta.substring(3, 5);
            String anoHasta = fechaHasta.substring(6, 10);

            //Concateno la fecha, en formato "YYYY-MM-DD".
            String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
            System.out.println("fechaHastaR " + fechaHastaReal);

            System.out.println("diaD: " + diaDesde);
            System.out.println("mesD: " + mesDesde);
            System.out.println("anoD: " + anoDesde);

            System.out.println("diaH: " + diaHasta);
            System.out.println("mesH: " + mesHasta);
            System.out.println("anoH: " + anoHasta);

            int compDia = diaDesde.compareTo(diaHasta);
            int compMes = mesDesde.compareTo(mesHasta);
            int compAno = anoDesde.compareTo(anoHasta);

            //Si el ao 'hasta' es menor que 'desde', no comparamos ni da ni mes.
            if (compAno <= -1) {

                try {

                    UsuarioDao usuario = new UsuarioDaoImpl();
                    ResultSet resp = usuario.reportesVendedoresDesc(fechaDesdeReal, fechaHastaReal);
                    ResultSet resp2 = usuario.reportesVendedoresHorasDesc(fechaDesdeReal, fechaHastaReal);

                    DefaultTableModel tablaVendedores = (DefaultTableModel) tbVendedores.getModel();
                    if (resp == null && resp2 == null) {
                        btnExportarVendedores.setEnabled(false);
                        JOptionPane.showMessageDialog(null, "No hay datos suficientes para este vendedor", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    } else {
                        btnExportarVendedores.setEnabled(true);
                    }

                    Object[] objeto = new Object[6];
                    DecimalFormat formateador = new DecimalFormat("###,###");

                    int contador = 1;

                    objeto[0] = contador;
                    objeto[1] = resp.getString("vendedor");

                    int ventot = resp.getInt("ventasTotales");
                    String ff = formateador.format(ventot);
                    objeto[2] = ff;

                    int utitot = resp.getInt("utilidadesTotales");
                    ff = formateador.format(utitot);
                    objeto[3] = ff;

                    int diastrab = resp2.getInt("diasTrabajados");
                    ff = formateador.format(diastrab);
                    objeto[4] = ff;

                    objeto[5] = resp2.getTime("horasTrabajadas");

                    tablaVendedores.addRow(objeto);

                    while (resp.next() && resp2.next()) {

                        int cont = ++contador;
                        ff = formateador.format(cont);
                        objeto[0] = ff;

                        objeto[1] = resp.getString("vendedor");

                        ventot = resp.getInt("ventasTotales");
                        ff = formateador.format(ventot);
                        objeto[2] = ff;

                        utitot = resp.getInt("utilidadesTotales");
                        ff = formateador.format(utitot);
                        objeto[3] = ff;

                        diastrab = resp2.getInt("diasTrabajados");
                        ff = formateador.format(diastrab);
                        objeto[4] = ff;

                        objeto[5] = resp2.getTime("horasTrabajadas");

                        tablaVendedores.addRow(objeto);

                    }

                    tbVendedores.setModel(tablaVendedores);

                } catch (SQLException ex) {
                    Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                }

            } else if (compAno == 0) {
                if (compMes <= -1 || compMes == 0) //Si el mes Desde: es menor o igual que el mes Hasta: .
                {
                    if (compDia <= -1 || compDia == 0) //Si el dia Desde: es menor o igual que el dia Hasta: .
                    {
                        try {

                            UsuarioDao usuario = new UsuarioDaoImpl();
                            ResultSet resp = usuario.reportesVendedoresDesc(fechaDesdeReal, fechaHastaReal);
                            ResultSet resp2 = usuario.reportesVendedoresHorasDesc(fechaDesdeReal, fechaHastaReal);

                            DefaultTableModel tablaVendedores = (DefaultTableModel) tbVendedores.getModel();
                            if (resp == null && resp2 == null) {
                                btnExportarVendedores.setEnabled(false);
                                JOptionPane.showMessageDialog(null, "No hay datos suficientes para este vendedor",
                                        "Aviso", JOptionPane.WARNING_MESSAGE);
                                return;
                            } else {
                                btnExportarVendedores.setEnabled(true);
                            }

                            Object[] objeto = new Object[6];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;
                            objeto[1] = resp.getString("vendedor");

                            int ventot = resp.getInt("ventasTotales");
                            String ff = formateador.format(ventot);
                            objeto[2] = ff;

                            int utitot = resp.getInt("utilidadesTotales");
                            ff = formateador.format(utitot);
                            objeto[3] = ff;

                            int diastrab = resp2.getInt("diasTrabajados");
                            ff = formateador.format(diastrab);
                            objeto[4] = ff;

                            objeto[5] = resp2.getTime("horasTrabajadas");

                            tablaVendedores.addRow(objeto);

                            while (resp.next() && resp2.next()) {

                                int cont = ++contador;
                                ff = formateador.format(cont);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("vendedor");

                                ventot = resp.getInt("ventasTotales");
                                ff = formateador.format(ventot);
                                objeto[2] = ff;

                                utitot = resp.getInt("utilidadesTotales");
                                ff = formateador.format(utitot);
                                objeto[3] = ff;

                                diastrab = resp2.getInt("diasTrabajados");
                                ff = formateador.format(diastrab);
                                objeto[4] = ff;

                                objeto[5] = resp2.getTime("horasTrabajadas");

                                tablaVendedores.addRow(objeto);

                            }

                            tbVendedores.setModel(tablaVendedores);

                        } catch (SQLException ex) {
                            Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "El dia debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "El mes debe ser menor o igual que  el de la fecha Hasta: ",
                            "Aviso", JOptionPane.WARNING_MESSAGE);
                    return;
                }
            } else {
                JOptionPane.showMessageDialog(null, "El ao debe ser menor o igual que  el de la fecha Hasta: ",
                        "Aviso", JOptionPane.WARNING_MESSAGE);
                return;
            }
        }
        if (rbtnMenoresVentas.isSelected()) {

            lblAvisoVendedores.setText("");

            String formato = calDesdeVendedores.getDateFormatString();
            java.util.Date date = calDesdeVendedores.getDate();
            SimpleDateFormat sdf = new SimpleDateFormat(formato);
            String fechaDesde = String.valueOf(sdf.format(date));
            //String fechaDesdeReal = fechaDesde.replace("-", "/");

            String formato2 = calHastaVendedores.getDateFormatString();
            java.util.Date date2 = calHastaVendedores.getDate();
            SimpleDateFormat sdf2 = new SimpleDateFormat(formato2);
            String fechaHasta = String.valueOf(sdf2.format(date2));
            //String fechaHastaReal = fechaHasta.replace("-", "/");

            String diaDesde = fechaDesde.substring(0, 2);
            String mesDesde = fechaDesde.substring(3, 5);
            String anoDesde = fechaDesde.substring(6, 10);

            String fechaDesdeReal = anoDesde + "-" + mesDesde + "-" + diaDesde;
            System.out.println("fechaDesdeR: " + fechaDesdeReal);

            String diaHasta = fechaHasta.substring(0, 2);
            String mesHasta = fechaHasta.substring(3, 5);
            String anoHasta = fechaHasta.substring(6, 10);

            //Concateno la fecha, en formato "YYYY-MM-DD".
            String fechaHastaReal = anoHasta + "-" + mesHasta + "-" + diaHasta;
            System.out.println("fechaHastaR " + fechaHastaReal);

            System.out.println("diaD: " + diaDesde);
            System.out.println("mesD: " + mesDesde);
            System.out.println("anoD: " + anoDesde);

            System.out.println("diaH: " + diaHasta);
            System.out.println("mesH: " + mesHasta);
            System.out.println("anoH: " + anoHasta);

            int compDia = diaDesde.compareTo(diaHasta);
            int compMes = mesDesde.compareTo(mesHasta);
            int compAno = anoDesde.compareTo(anoHasta);

            //Si el ao 'hasta' es menor que 'desde', no comparamos ni da ni mes.
            if (compAno <= -1) {

                try {

                    UsuarioDao usuario = new UsuarioDaoImpl();
                    ResultSet resp = usuario.reportesVendedoresAsc(fechaDesdeReal, fechaHastaReal);
                    ResultSet resp2 = usuario.reportesVendedoresHorasAsc(fechaDesdeReal, fechaHastaReal);

                    DefaultTableModel tablaVendedores = (DefaultTableModel) tbVendedores.getModel();
                    if (resp == null && resp2 == null) {
                        btnExportarVendedores.setEnabled(false);
                        JOptionPane.showMessageDialog(null, "No hay datos suficientes para este vendedor", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    } else {
                        btnExportarVendedores.setEnabled(true);
                    }

                    Object[] objeto = new Object[6];
                    DecimalFormat formateador = new DecimalFormat("###,###");

                    int contador = 1;

                    objeto[0] = contador;
                    objeto[1] = resp.getString("vendedor");

                    int ventot = resp.getInt("ventasTotales");
                    String ff = formateador.format(ventot);
                    objeto[2] = ff;

                    int utitot = resp.getInt("utilidadesTotales");
                    ff = formateador.format(utitot);
                    objeto[3] = ff;

                    int diastrab = resp2.getInt("diasTrabajados");
                    ff = formateador.format(diastrab);
                    objeto[4] = ff;

                    objeto[5] = resp2.getTime("horasTrabajadas");

                    tablaVendedores.addRow(objeto);

                    while (resp.next() && resp2.next()) {

                        int cont = ++contador;
                        ff = formateador.format(cont);
                        objeto[0] = ff;

                        objeto[1] = resp.getString("vendedor");

                        ventot = resp.getInt("ventasTotales");
                        ff = formateador.format(ventot);
                        objeto[2] = ff;

                        utitot = resp.getInt("utilidadesTotales");
                        ff = formateador.format(utitot);
                        objeto[3] = ff;

                        diastrab = resp2.getInt("diasTrabajados");
                        ff = formateador.format(diastrab);
                        objeto[4] = ff;

                        objeto[5] = resp2.getTime("horasTrabajadas");

                        tablaVendedores.addRow(objeto);

                    }

                    tbVendedores.setModel(tablaVendedores);

                } catch (SQLException ex) {
                    Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                }

            } else if (compAno == 0) {
                if (compMes <= -1 || compMes == 0) //Si el mes Desde: es menor o igual que el mes Hasta: .
                {
                    if (compDia <= -1 || compDia == 0) //Si el dia Desde: es menor o igual que el dia Hasta: .
                    {
                        try {

                            UsuarioDao usuario = new UsuarioDaoImpl();
                            ResultSet resp = usuario.reportesVendedoresAsc(fechaDesdeReal, fechaHastaReal);
                            ResultSet resp2 = usuario.reportesVendedoresHorasAsc(fechaDesdeReal, fechaHastaReal);

                            DefaultTableModel tablaVendedores = (DefaultTableModel) tbVendedores.getModel();
                            if (resp == null && resp2 == null) {
                                btnExportarVendedores.setEnabled(false);
                                JOptionPane.showMessageDialog(null, "No hay datos suficientes para este vendedor",
                                        "Aviso", JOptionPane.WARNING_MESSAGE);
                                return;
                            } else {
                                btnExportarVendedores.setEnabled(true);
                            }

                            Object[] objeto = new Object[6];
                            DecimalFormat formateador = new DecimalFormat("###,###");

                            int contador = 1;

                            objeto[0] = contador;
                            objeto[1] = resp.getString("vendedor");

                            int ventot = resp.getInt("ventasTotales");
                            String ff = formateador.format(ventot);
                            objeto[2] = ff;

                            int utitot = resp.getInt("utilidadesTotales");
                            ff = formateador.format(utitot);
                            objeto[3] = ff;

                            int diastrab = resp2.getInt("diasTrabajados");
                            ff = formateador.format(diastrab);
                            objeto[4] = ff;

                            objeto[5] = resp2.getTime("horasTrabajadas");

                            tablaVendedores.addRow(objeto);

                            while (resp.next() && resp2.next()) {

                                int cont = ++contador;
                                ff = formateador.format(cont);
                                objeto[0] = ff;

                                objeto[1] = resp.getString("vendedor");

                                ventot = resp.getInt("ventasTotales");
                                ff = formateador.format(ventot);
                                objeto[2] = ff;

                                utitot = resp.getInt("utilidadesTotales");
                                ff = formateador.format(utitot);
                                objeto[3] = ff;

                                diastrab = resp2.getInt("diasTrabajados");
                                ff = formateador.format(diastrab);
                                objeto[4] = ff;

                                objeto[5] = resp2.getTime("horasTrabajadas");

                                tablaVendedores.addRow(objeto);

                            }

                            tbVendedores.setModel(tablaVendedores);

                        } catch (SQLException ex) {
                            Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "El dia debe ser menor o igual que  el de la fecha Hasta: ", "Aviso",
                                JOptionPane.WARNING_MESSAGE);
                        return;
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "El mes debe ser menor o igual que  el de la fecha Hasta: ",
                            "Aviso", JOptionPane.WARNING_MESSAGE);
                    return;
                }
            } else {
                JOptionPane.showMessageDialog(null, "El ao debe ser menor o igual que  el de la fecha Hasta: ",
                        "Aviso", JOptionPane.WARNING_MESSAGE);
                return;
            }
        }

        if (!rbtnMayoresVentas.isSelected() && !rbtnMenoresVentas.isSelected()) {
            lblAvisoVendedores.setText("SELECCIONE ALGUNA DE LAS 2 OPCIONES PORFAVOR");
        }

    }//GEN-LAST:event_btnConsultarVendedoresActionPerformed

    private void btnExportarVendedoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExportarVendedoresActionPerformed
        // TODO add your handling code here:
        Thread t;
        t = new Thread() {
            @Override
            public void run() {
                XSSFWorkbook workbook = new XSSFWorkbook();
                XSSFSheet hoja = workbook.createSheet();

                XSSFRow fila = hoja.createRow(0);
                fila.createCell(0).setCellValue("N");
                fila.createCell(1).setCellValue("Vendedor");
                fila.createCell(2).setCellValue("Ventas totales");
                fila.createCell(3).setCellValue("Utilidades");
                fila.createCell(4).setCellValue("Das trabajados");
                fila.createCell(5).setCellValue("Horas trabajadas");

                pbVendedores.setMaximum(tbVendedores.getRowCount());
                XSSFRow filas;
                Rectangle rect;

                for (int i = 0; i < tbVendedores.getRowCount(); i++) {
                    rect = tbVendedores.getCellRect(i, 0, true);

                    tbVendedores.scrollRectToVisible(rect);

                    tbVendedores.setRowSelectionInterval(i, i);

                    pbVendedores.setValue((i + 1));
                    filas = hoja.createRow((i + 1));

                    filas.createCell(0).setCellValue(tbVendedores.getValueAt(i, 0).toString());
                    filas.createCell(1).setCellValue(tbVendedores.getValueAt(i, 1).toString());
                    filas.createCell(2).setCellValue(tbVendedores.getValueAt(i, 2).toString());
                    filas.createCell(3).setCellValue(tbVendedores.getValueAt(i, 3).toString());
                    filas.createCell(4).setCellValue(tbVendedores.getValueAt(i, 4).toString());
                    filas.createCell(5).setCellValue(tbVendedores.getValueAt(i, 5).toString());

                }

                pbVendedores.setValue(0);
                try {

                    workbook.write(new FileOutputStream(new File("Excel.xlsx")));
                    Desktop.getDesktop().open(new File("Excel.xlsx"));

                } catch (Exception e) {

                }

            }
        };
        t.start();
    }//GEN-LAST:event_btnExportarVendedoresActionPerformed

    private void btnConsultarInvetariosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConsultarInvetariosActionPerformed
        // TODO add your handling code here:

        //Primero limpiamos el JTable por si es que existian registros previos.
        int numFilas = tbInventario.getRowCount();

        if (numFilas >= 1) {
            DefaultTableModel tablaInventario = (DefaultTableModel) tbInventario.getModel();

            for (int j = 0; j < numFilas; j++) {
                //Removemos la primera fila de la tabla, desde la posicion 0 siempre.
                tablaInventario.removeRow(0);
            }

            tbInventario.setModel(tablaInventario);
            btnExportarInventario.setEnabled(false);
        }

        //Segundo verificamos que opcin fue seleccionada en el combo box.
        //Selecciona Todos
        txtFiltroInventario.setEnabled(false);
        //Si selecciona el checkbox mayor a menor se realiza esta consulta.
        if (cbxMayoraMenorInventario.isSelected()) {

            lblAvisoInventario.setText("");

            try {
                ProductoDao producto = new ProductoDaoImpl();
                ResultSet resp = producto.productosStockMayorAMenor();
                DefaultTableModel tablaInventario = (DefaultTableModel) tbInventario.getModel();

                if (resp == null) {
                    btnExportarInventario.setEnabled(false);
                    JOptionPane.showMessageDialog(null, "No hay productos en inventario", "Aviso",
                            JOptionPane.WARNING_MESSAGE);
                    return;
                } else {
                    btnExportarInventario.setEnabled(true);
                    txtFiltroInventario.setEnabled(true);
                }

                Object[] objeto = new Object[5];
                DecimalFormat formateador = new DecimalFormat("###,###");

                int contador = 1;
                objeto[0] = contador;

                objeto[1] = resp.getString(1);
                objeto[2] = resp.getString(2);
                objeto[3] = resp.getString(3);

                int stock = resp.getInt(4);
                String ff = formateador.format(stock);
                objeto[4] = ff;

                tablaInventario.addRow(objeto);

                while (resp.next()) {

                    int cont = ++contador;
                    ff = formateador.format(cont);
                    objeto[0] = ff;

                    objeto[1] = resp.getString(1);
                    objeto[2] = resp.getString(2);
                    objeto[3] = resp.getString(3);

                    stock = resp.getInt(4);
                    ff = formateador.format(stock);
                    objeto[4] = ff;

                    tablaInventario.addRow(objeto);
                }

                tbInventario.setModel(tablaInventario);

            } catch (SQLException ex) {
                Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        //Si selecciona el checkbox menor a mayor se realiza esta consulta.
        if (cbxMenoramayorInventario.isSelected()) {

            lblAvisoInventario.setText("");

            try {
                ProductoDao producto = new ProductoDaoImpl();
                ResultSet resp = producto.productosStockMenorAMayor();
                DefaultTableModel tablaInventario = (DefaultTableModel) tbInventario.getModel();

                if (resp == null) {
                    btnExportarInventario.setEnabled(false);
                    JOptionPane.showMessageDialog(null, "No hay productos en inventario", "Aviso",
                            JOptionPane.WARNING_MESSAGE);
                    return;
                } else {
                    btnExportarInventario.setEnabled(true);
                    txtFiltroInventario.setEnabled(true);
                }

                Object[] objeto = new Object[5];
                DecimalFormat formateador = new DecimalFormat("###,###");

                int contador = 1;
                objeto[0] = contador;

                objeto[1] = resp.getString(1);
                objeto[2] = resp.getString(2);
                objeto[3] = resp.getString(3);

                int stock = resp.getInt(4);
                String ff = formateador.format(stock);
                objeto[4] = ff;

                tablaInventario.addRow(objeto);

                while (resp.next()) {

                    int cont = ++contador;
                    ff = formateador.format(cont);
                    objeto[0] = ff;

                    objeto[1] = resp.getString(1);
                    objeto[2] = resp.getString(2);
                    objeto[3] = resp.getString(3);

                    stock = resp.getInt(4);
                    ff = formateador.format(stock);
                    objeto[4] = ff;

                    tablaInventario.addRow(objeto);
                }

                tbInventario.setModel(tablaInventario);

            } catch (SQLException ex) {
                Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

        if (!cbxMayoraMenorInventario.isSelected() && !cbxMenoramayorInventario.isSelected()) {
            lblAvisoInventario.setText("SELECCIONE ALGUNA DE LAS 2 OPCIONES PORFAVOR");
        }

    }//GEN-LAST:event_btnConsultarInvetariosActionPerformed

    private void cbxMayoraMenorInventarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxMayoraMenorInventarioActionPerformed
        // TODO add your handling code here:
        if (cbxMayoraMenorInventario.isSelected()) {
            cbxMayoraMenorInventario.setEnabled(true);
            cbxMenoramayorInventario.setEnabled(false);
        } else {
            cbxMayoraMenorInventario.setEnabled(true);
            cbxMenoramayorInventario.setEnabled(true);
        }
    }//GEN-LAST:event_cbxMayoraMenorInventarioActionPerformed

    private void cbxMenoramayorInventarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxMenoramayorInventarioActionPerformed
        // TODO add your handling code here:
        if (cbxMenoramayorInventario.isSelected()) {
            cbxMenoramayorInventario.setEnabled(true);
            cbxMayoraMenorInventario.setEnabled(false);
        } else {
            cbxMayoraMenorInventario.setEnabled(true);
            cbxMenoramayorInventario.setEnabled(true);
        }
    }//GEN-LAST:event_cbxMenoramayorInventarioActionPerformed

    private void btnExportarInventarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExportarInventarioActionPerformed
        // TODO add your handling code here:
        Thread t;
        t = new Thread() {
            @Override
            public void run() {
                XSSFWorkbook workbook = new XSSFWorkbook();
                XSSFSheet hoja = workbook.createSheet();

                XSSFRow fila = hoja.createRow(0);
                fila.createCell(0).setCellValue("N");
                fila.createCell(1).setCellValue("Codigo");
                fila.createCell(2).setCellValue("Nombre");
                fila.createCell(3).setCellValue("Marca");
                fila.createCell(4).setCellValue("Stock");

                pbInventario.setMaximum(tbInventario.getRowCount());
                XSSFRow filas;
                Rectangle rect;

                for (int i = 0; i < tbInventario.getRowCount(); i++) {
                    rect = tbInventario.getCellRect(i, 0, true);

                    tbInventario.scrollRectToVisible(rect);

                    tbInventario.setRowSelectionInterval(i, i);

                    pbInventario.setValue((i + 1));
                    filas = hoja.createRow((i + 1));

                    filas.createCell(0).setCellValue(tbInventario.getValueAt(i, 0).toString());
                    filas.createCell(1).setCellValue(tbInventario.getValueAt(i, 1).toString());
                    filas.createCell(2).setCellValue(tbInventario.getValueAt(i, 2).toString());
                    filas.createCell(3).setCellValue(tbInventario.getValueAt(i, 3).toString());
                    filas.createCell(4).setCellValue(tbInventario.getValueAt(i, 4).toString());

                }

                pbInventario.setValue(0);
                try {

                    workbook.write(new FileOutputStream(new File("Excel.xlsx")));
                    Desktop.getDesktop().open(new File("Excel.xlsx"));

                } catch (Exception e) {

                }

            }
        };
        t.start();
    }//GEN-LAST:event_btnExportarInventarioActionPerformed

    private void txtFiltroInventarioKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtFiltroInventarioKeyReleased
        // TODO add your handling code here:
        String caracter = txtFiltroInventario.getText();

        //Primero limpiamos el JTable por si es que existian registros previos.
        int numFilas = tbInventario.getRowCount();

        if (numFilas >= 1) {
            DefaultTableModel tablaInventario = (DefaultTableModel) tbInventario.getModel();

            for (int j = 0; j < numFilas; j++) {
                //Removemos la primera fila de la tabla, desde la posicion 0 siempre.
                tablaInventario.removeRow(0);
            }

            tbInventario.setModel(tablaInventario);
            btnExportarInventario.setEnabled(false);
        }

        ProductoDao p = new ProductoDaoImpl();

        try {
            //  Hacer 2 consultas si es que esta selecionado de mayor a menor o lo contrario y en base a eso consultar.
            if (cbxMayoraMenorInventario.isSelected()) {
                if (caracter.equals("")) {
                    try {

                        ResultSet resp = p.productosStockMayorAMenor();

                        DefaultTableModel tablaInventario = (DefaultTableModel) tbInventario.getModel();
                        if (resp == null) {
                            btnExportarInventario.setEnabled(false);
                            return;
                        } else {
                            btnExportarInventario.setEnabled(true);
                            txtFiltroInventario.setEnabled(true);
                        }

                        Object[] objeto = new Object[5];
                        DecimalFormat formateador = new DecimalFormat("###,###");

                        int contador = 1;

                        objeto[0] = contador;

                        objeto[1] = resp.getString(1);
                        objeto[2] = resp.getString(2);
                        objeto[3] = resp.getString(3);

                        int pvent = resp.getInt(4);
                        String ff = formateador.format(pvent);
                        objeto[4] = ff;

                        tablaInventario.addRow(objeto);

                        while (resp.next()) {

                            int val = ++contador;
                            ff = formateador.format(val);
                            objeto[0] = ff;

                            objeto[1] = resp.getString(1);
                            objeto[2] = resp.getString(2);
                            objeto[3] = resp.getString(3);

                            pvent = resp.getInt(4);
                            ff = formateador.format(pvent);
                            objeto[4] = ff;

                            tablaInventario.addRow(objeto);

                        }

                        tbInventario.setModel(tablaInventario);

                    } catch (SQLException ex) {
                        Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                    }
                } else {
                    ResultSet resp = p.FiltroNombreproductosStockMayorAMenor(caracter);
                    DefaultTableModel tablaInventario = (DefaultTableModel) tbInventario.getModel();

                    if (resp == null) {
                        btnExportarInventario.setEnabled(false);
                        return;
                    } else {
                        btnExportarInventario.setEnabled(true);

                        Object[] objeto = new Object[5];
                        DecimalFormat formateador = new DecimalFormat("###,###");

                        int contador = 1;

                        objeto[0] = contador;

                        objeto[1] = resp.getString(1);
                        objeto[2] = resp.getString(2);
                        objeto[3] = resp.getString(3);

                        int pvent = resp.getInt(4);
                        String ff = formateador.format(pvent);
                        objeto[4] = ff;

                        tablaInventario.addRow(objeto);

                        while (resp.next()) {

                            int val = ++contador;
                            ff = formateador.format(val);
                            objeto[0] = ff;

                            objeto[1] = resp.getString(1);
                            objeto[2] = resp.getString(2);
                            objeto[3] = resp.getString(3);

                            pvent = resp.getInt(4);
                            ff = formateador.format(pvent);
                            objeto[4] = ff;

                            tablaInventario.addRow(objeto);

                        }

                        tbInventario.setModel(tablaInventario);

                    }

                }
            }

            if (cbxMenoramayorInventario.isSelected()) {
                if (caracter.equals("")) {
                    try {

                        ResultSet resp = p.productosStockMenorAMayor();

                        DefaultTableModel tablaInventario = (DefaultTableModel) tbInventario.getModel();
                        if (resp == null) {
                            btnExportarInventario.setEnabled(false);
                            return;
                        } else {
                            btnExportarInventario.setEnabled(true);
                            txtFiltroInventario.setEnabled(true);
                        }

                        Object[] objeto = new Object[5];
                        DecimalFormat formateador = new DecimalFormat("###,###");

                        int contador = 1;

                        objeto[0] = contador;

                        objeto[1] = resp.getString(1);
                        objeto[2] = resp.getString(2);
                        objeto[3] = resp.getString(3);

                        int pvent = resp.getInt(4);
                        String ff = formateador.format(pvent);
                        objeto[4] = ff;

                        tablaInventario.addRow(objeto);

                        while (resp.next()) {

                            int val = ++contador;
                            ff = formateador.format(val);
                            objeto[0] = ff;

                            objeto[1] = resp.getString(1);
                            objeto[2] = resp.getString(2);
                            objeto[3] = resp.getString(3);

                            pvent = resp.getInt(4);
                            ff = formateador.format(pvent);
                            objeto[4] = ff;

                            tablaInventario.addRow(objeto);

                        }

                        tbInventario.setModel(tablaInventario);

                    } catch (SQLException ex) {
                        Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
                    }
                } else {
                    ResultSet resp = p.FiltroNombreproductosStockMenorAMayor(caracter);
                    DefaultTableModel tablaInventario = (DefaultTableModel) tbInventario.getModel();
                    if (resp == null) {
                        btnExportarInventario.setEnabled(false);
                        return;
                    } else {
                        btnExportarInventario.setEnabled(true);
                        txtFiltroInventario.setEnabled(true);
                    }

                    Object[] objeto = new Object[5];
                    DecimalFormat formateador = new DecimalFormat("###,###");

                    int contador = 1;

                    objeto[0] = contador;

                    objeto[1] = resp.getString(1);
                    objeto[2] = resp.getString(2);
                    objeto[3] = resp.getString(3);

                    int pvent = resp.getInt(4);
                    String ff = formateador.format(pvent);
                    objeto[4] = ff;

                    tablaInventario.addRow(objeto);

                    while (resp.next()) {

                        int val = ++contador;
                        ff = formateador.format(val);
                        objeto[0] = ff;

                        objeto[1] = resp.getString(1);
                        objeto[2] = resp.getString(2);
                        objeto[3] = resp.getString(3);

                        pvent = resp.getInt(4);
                        ff = formateador.format(pvent);
                        objeto[4] = ff;

                        tablaInventario.addRow(objeto);

                    }

                    tbInventario.setModel(tablaInventario);
                }
            }

        } catch (SQLException ex) {
            Logger.getLogger(MantenedorReportes.class.getName()).log(Level.SEVERE, null, ex);
        }

    }//GEN-LAST:event_txtFiltroInventarioKeyReleased

    private void txtFiltroInventarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtFiltroInventarioActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_txtFiltroInventarioActionPerformed

    private void cbxProductosUnidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxProductosUnidadActionPerformed
        // TODO add your handling code here:
        if (cbxProductosUnidad.isSelected()) {
            cbxProductosPeso.setSelected(false);
        }
    }//GEN-LAST:event_cbxProductosUnidadActionPerformed

    private void cbxProductosPesoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxProductosPesoActionPerformed
        // TODO add your handling code here:
        if (cbxProductosPeso.isSelected()) {
            cbxProductosUnidad.setSelected(false);
        }
    }//GEN-LAST:event_cbxProductosPesoActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;

                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(MantenedorReportes.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(MantenedorReportes.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(MantenedorReportes.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(MantenedorReportes.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MantenedorReportes().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnConsultarGastos;
    private javax.swing.JButton btnConsultarInvetarios;
    private javax.swing.JButton btnConsultarProductos;
    private javax.swing.JButton btnConsultarVendedores;
    private javax.swing.JButton btnExportarGastos;
    private javax.swing.JButton btnExportarInventario;
    private javax.swing.JButton btnExportarProductos;
    private javax.swing.JButton btnExportarVendedores;
    private com.toedter.calendar.JDateChooser calDesdeGastos;
    private com.toedter.calendar.JDateChooser calDesdeProductos;
    private com.toedter.calendar.JDateChooser calDesdeVendedores;
    private com.toedter.calendar.JDateChooser calHastaGastos;
    private com.toedter.calendar.JDateChooser calHastaProductos;
    private com.toedter.calendar.JDateChooser calHastaVendedores;
    private javax.swing.JComboBox cbSeleccionUsuario;
    private javax.swing.JCheckBox cbxFecha;
    private javax.swing.JCheckBox cbxMayoraMenorInventario;
    private javax.swing.JCheckBox cbxMenoramayorInventario;
    private javax.swing.JCheckBox cbxProductosPeso;
    private javax.swing.JCheckBox cbxProductosUnidad;
    private javax.swing.JCheckBox cbxUsuario;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JLabel lblAvisoInventario;
    private javax.swing.JLabel lblAvisoVendedores;
    private javax.swing.JLabel lblComboBox;
    private javax.swing.JLabel lblOrdenInventario;
    private javax.swing.JLabel lblProductosTipo;
    private javax.swing.JLabel lblSeleccioncbxInventario;
    private javax.swing.JLabel lblTotalGastos;
    private javax.swing.JProgressBar pbGastosExtras;
    private javax.swing.JProgressBar pbInventario;
    private javax.swing.JProgressBar pbProductos;
    private javax.swing.JProgressBar pbVendedores;
    private javax.swing.JRadioButton rbtnMayorAMenorProductos;
    private javax.swing.JRadioButton rbtnMayoresVentas;
    private javax.swing.JRadioButton rbtnMenorAMayorProductos;
    private javax.swing.JRadioButton rbtnMenoresVentas;
    private javax.swing.JScrollPane tbGastos;
    private javax.swing.JTable tbGastosExtras;
    private javax.swing.JTable tbInventario;
    private javax.swing.JTable tbProductos;
    private javax.swing.JTable tbVendedores;
    private javax.swing.JTextField txtFiltroInventario;
    private javax.swing.JTextField txtFiltroNombre;
    // End of variables declaration//GEN-END:variables
}