com.biosis.biosislite.vistas.AsignarPermiso.java Source code

Java tutorial

Introduction

Here is the source code for com.biosis.biosislite.vistas.AsignarPermiso.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 com.biosis.biosislite.vistas;

import com.personal.utiles.FechaUtil;
import com.personal.utiles.FormularioUtil;
import com.personal.utiles.ReporteUtil;
import com.biosis.biosislite.controladores.AreaEmpleadoControlador;
import com.biosis.biosislite.controladores.AsignacionPermisoControlador;
import com.biosis.biosislite.controladores.Controlador;
import com.biosis.biosislite.controladores.EmpleadoControlador;
import com.biosis.biosislite.controladores.PermisoControlador;
import com.biosis.biosislite.controladores.TCAnalisisControlador;
import com.biosis.biosislite.controladores.ViajeControlador;
import com.biosis.biosislite.entidades.AsignacionPermiso;
import com.biosis.biosislite.entidades.Permiso;
import com.biosis.biosislite.entidades.TipoPermiso;
import com.biosis.biosislite.entidades.Viaje;
import com.biosis.biosislite.entidades.escalafon.AreaEmpleado;
import com.biosis.biosislite.entidades.escalafon.Departamento;
import com.biosis.biosislite.entidades.escalafon.Empleado;
import com.biosis.biosislite.entidades.escalafon.Ubigeo;
import java.awt.Component;
import java.awt.Frame;
import java.awt.GraphicsEnvironment;
import java.awt.geom.Area;
import java.io.File;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.SpinnerNumberModel;
//import org.apache.commons.validator.routines.DateValidator;
import org.jdesktop.observablecollections.ObservableCollections;
import com.biosis.biosislite.Main;
import com.biosis.biosislite.utiles.UsuarioActivo;
import com.biosis.biosislite.vistas.dialogos.DlgDatosComision;
import com.biosis.biosislite.vistas.dialogos.DlgEmpleado;
import com.biosis.biosislite.vistas.dialogos.DlgTipoPermiso;
import com.biosis.biosislite.vistas.modelos.MTAsignacionPermiso;
import com.biosis.biosislite.vistas.modelos.MTEmpleado;

/**
 *
 * @author fesquivelc
 */
public class AsignarPermiso extends javax.swing.JInternalFrame {

    /**
     * Creates new form CRUDPeriodo
     */
    private List<AsignacionPermiso> listado;
    private List<Empleado> integrantes;
    private PermisoControlador controlador;
    private EmpleadoControlador ec;
    private int accion;
    private TipoPermiso tipoSeleccionado;
    private Empleado empleadoSeleccionado;
    private AsignacionPermisoControlador ac;
    private final ReporteUtil reporteador;
    private ViajeControlador vsc;
    private AreaEmpleadoControlador aec;

    private String ubigeoSeleccion;
    private String gerencia;
    private String centroCosto;
    private long diasAlimentacion;
    private long diasAlojamiento;
    private long diasMovLocal;
    private double alimentacion;
    private double alojamiento;
    private double movilidad;
    private double combustible;

    public AsignarPermiso() {
        initComponents();
        dcFechaInicioBusqueda.setDate(new Date());

        dcFechaFinBusqueda.setDate(new Date());
        inicializar();
        bindeoSalvaje();
        reporteador = new ReporteUtil();
        this.radLote.setVisible(false);
        this.btnComision.setVisible(false);
        vsc = new ViajeControlador();
        this.aec = new AreaEmpleadoControlador();

    }

    /**
     * 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() {
        java.awt.GridBagConstraints gridBagConstraints;

        opciones = new javax.swing.ButtonGroup();
        pnlListado = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        btnNuevo = new javax.swing.JButton();
        btnModificar = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblTabla = new org.jdesktop.swingx.JXTable();
        pnlNavegacion = new javax.swing.JPanel();
        btnPrimero = new javax.swing.JButton();
        btnAnterior = new javax.swing.JButton();
        spPagina = new javax.swing.JSpinner();
        txtTotal = new javax.swing.JTextField();
        btnSiguiente = new javax.swing.JButton();
        btnUltimo = new javax.swing.JButton();
        cboTamanio = new javax.swing.JComboBox();
        pnlBusqueda = new javax.swing.JPanel();
        dcFechaInicioBusqueda = new com.toedter.calendar.JDateChooser("dd/MM/yyyy", "##/##/####", '_');
        dcFechaFinBusqueda = new com.toedter.calendar.JDateChooser("dd/MM/yyyy", "##/##/####", '_');
        txtEmpleado = new javax.swing.JTextField();
        lblBusqueda = new org.jdesktop.swingx.JXBusyLabel();
        btnLimpiar = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jLabel9 = new javax.swing.JLabel();
        btnBuscar = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        pnlDatos = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jScrollPane3 = new javax.swing.JScrollPane();
        tblEmpleados = new org.jdesktop.swingx.JXTable();
        btnAgregar = new javax.swing.JButton();
        btnQuitar = new javax.swing.JButton();
        txtTipoPermiso = new javax.swing.JTextField();
        jScrollPane2 = new javax.swing.JScrollPane();
        txtMotivo = new javax.swing.JTextArea();
        jLabel4 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jLabel10 = new javax.swing.JLabel();
        txtDocumento = new javax.swing.JTextField();
        jLabel11 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        spHoraFin = new javax.swing.JSpinner();
        spHoraInicio = new javax.swing.JSpinner();
        dcFechaFin = new com.toedter.calendar.JDateChooser("dd/MM/yyyy", "##/##/####", '_');
        dcFechaInicio = new com.toedter.calendar.JDateChooser("dd/MM/yyyy", "##/##/####", '_');
        pnlOpcion = new javax.swing.JPanel();
        radFecha = new javax.swing.JRadioButton();
        radHora = new javax.swing.JRadioButton();
        radLote = new javax.swing.JRadioButton();
        btnComision = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        btnGuardar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        opciones.add(radFecha);
        opciones.add(radHora);
        opciones.add(radLote);

        setClosable(true);
        setMaximizable(true);
        setTitle("ASIGNAR PERMISO A EMPLEADO(S)");
        java.awt.GridBagLayout layout = new java.awt.GridBagLayout();
        layout.columnWidths = new int[] { 0, 5, 0 };
        layout.rowHeights = new int[] { 0 };
        getContentPane().setLayout(layout);

        pnlListado.setBorder(javax.swing.BorderFactory.createTitledBorder("Permisos"));
        java.awt.GridBagLayout jPanel1Layout = new java.awt.GridBagLayout();
        jPanel1Layout.columnWidths = new int[] { 0 };
        jPanel1Layout.rowHeights = new int[] { 0, 5, 0, 5, 0, 5, 0 };
        pnlListado.setLayout(jPanel1Layout);

        jPanel3.setLayout(new java.awt.GridLayout(1, 0, 10, 0));

        btnNuevo.setText("Nuevo");
        btnNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNuevoActionPerformed(evt);
            }
        });
        jPanel3.add(btnNuevo);

        btnModificar.setText("Modificar");
        btnModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnModificarActionPerformed(evt);
            }
        });
        jPanel3.add(btnModificar);

        jButton3.setText("Eliminar");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        jPanel3.add(jButton3);

        jButton2.setText("Imprimir boleta");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        jPanel3.add(jButton2);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        pnlListado.add(jPanel3, gridBagConstraints);

        tblTabla.setHorizontalScrollEnabled(true);
        tblTabla.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                tblTablaMouseReleased(evt);
            }
        });
        jScrollPane1.setViewportView(tblTabla);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.1;
        gridBagConstraints.weighty = 0.1;
        pnlListado.add(jScrollPane1, gridBagConstraints);

        pnlNavegacion.setLayout(new java.awt.GridLayout(1, 0, 2, 0));

        btnPrimero.setText("<<");
        btnPrimero.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPrimeroActionPerformed(evt);
            }
        });
        pnlNavegacion.add(btnPrimero);

        btnAnterior.setText("<");
        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAnteriorActionPerformed(evt);
            }
        });
        pnlNavegacion.add(btnAnterior);

        spPagina.setModel(new javax.swing.SpinnerNumberModel(1, 1, null, 1));
        spPagina.setMinimumSize(new java.awt.Dimension(60, 20));
        spPagina.setPreferredSize(new java.awt.Dimension(60, 20));
        spPagina.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                spPaginaStateChanged(evt);
            }
        });
        pnlNavegacion.add(spPagina);

        txtTotal.setEditable(false);
        txtTotal.setColumns(3);
        txtTotal.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        txtTotal.setText("1");
        pnlNavegacion.add(txtTotal);

        btnSiguiente.setText(">");
        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSiguienteActionPerformed(evt);
            }
        });
        pnlNavegacion.add(btnSiguiente);

        btnUltimo.setText(">>");
        btnUltimo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnUltimoActionPerformed(evt);
            }
        });
        pnlNavegacion.add(btnUltimo);

        cboTamanio.setModel(
                new javax.swing.DefaultComboBoxModel(new String[] { "5", "10", "15", "20", "25", "40", "50" }));
        cboTamanio.setMinimumSize(new java.awt.Dimension(53, 24));
        cboTamanio.setPreferredSize(new java.awt.Dimension(53, 24));
        cboTamanio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cboTamanioActionPerformed(evt);
            }
        });
        pnlNavegacion.add(cboTamanio);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        pnlListado.add(pnlNavegacion, gridBagConstraints);

        pnlBusqueda.setLayout(new java.awt.GridBagLayout());

        dcFechaInicioBusqueda.setMinSelectableDate(new java.util.Date(21711000L));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        pnlBusqueda.add(dcFechaInicioBusqueda, gridBagConstraints);

        dcFechaFinBusqueda.setMinSelectableDate(new java.util.Date(21711000L));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 1;
        pnlBusqueda.add(dcFechaFinBusqueda, gridBagConstraints);

        txtEmpleado.setEditable(false);
        txtEmpleado.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtEmpleadoActionPerformed(evt);
            }
        });
        txtEmpleado.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtEmpleadoKeyReleased(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 4;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 0.1;
        pnlBusqueda.add(txtEmpleado, gridBagConstraints);

        lblBusqueda.setText("Empleado:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        pnlBusqueda.add(lblBusqueda, gridBagConstraints);

        btnLimpiar.setText("Limpiar");
        btnLimpiar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLimpiarActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 6;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        pnlBusqueda.add(btnLimpiar, gridBagConstraints);

        jButton4.setText("...");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 5;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        pnlBusqueda.add(jButton4, gridBagConstraints);

        jLabel9.setText("-");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        pnlBusqueda.add(jLabel9, gridBagConstraints);

        btnBuscar.setText("Buscar");
        btnBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBuscarActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 6;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        pnlBusqueda.add(btnBuscar, gridBagConstraints);

        jLabel5.setText("Fechas:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        pnlBusqueda.add(jLabel5, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 0.1;
        pnlListado.add(pnlBusqueda, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.2;
        gridBagConstraints.weighty = 0.1;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        getContentPane().add(pnlListado, gridBagConstraints);

        pnlDatos.setBorder(javax.swing.BorderFactory.createTitledBorder("Datos de permiso"));
        java.awt.GridBagLayout jPanel2Layout = new java.awt.GridBagLayout();
        jPanel2Layout.columnWidths = new int[] { 0 };
        jPanel2Layout.rowHeights = new int[] { 0, 5, 0 };
        pnlDatos.setLayout(jPanel2Layout);

        java.awt.GridBagLayout jPanel4Layout = new java.awt.GridBagLayout();
        jPanel4Layout.columnWidths = new int[] { 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0 };
        jPanel4Layout.rowHeights = new int[] { 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0,
                5, 0, 5, 0, 5, 0, 5, 0, 5, 0 };
        jPanel4.setLayout(jPanel4Layout);

        jLabel1.setText("Tipo de permiso:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel1, gridBagConstraints);

        jLabel2.setText("Empleados:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 20;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel2, gridBagConstraints);

        jLabel3.setText("Motivo:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel3, gridBagConstraints);

        tblEmpleados.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                tblEmpleadosMouseReleased(evt);
            }
        });
        jScrollPane3.setViewportView(tblEmpleados);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 20;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.gridheight = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.1;
        gridBagConstraints.weighty = 0.1;
        jPanel4.add(jScrollPane3, gridBagConstraints);

        btnAgregar.setText("+");
        btnAgregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 10;
        gridBagConstraints.gridy = 20;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        jPanel4.add(btnAgregar, gridBagConstraints);

        btnQuitar.setText("-");
        btnQuitar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnQuitarActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 10;
        gridBagConstraints.gridy = 22;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.PAGE_START;
        jPanel4.add(btnQuitar, gridBagConstraints);

        txtTipoPermiso.setEditable(false);
        txtTipoPermiso.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtTipoPermisoActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 0.1;
        jPanel4.add(txtTipoPermiso, gridBagConstraints);

        txtMotivo.setColumns(20);
        txtMotivo.setRows(5);
        txtMotivo.setTabSize(4);
        jScrollPane2.setViewportView(txtMotivo);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.gridheight = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weighty = 0.1;
        jPanel4.add(jScrollPane2, gridBagConstraints);

        jLabel4.setText("Hora inicio:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 16;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel4, gridBagConstraints);

        jLabel7.setText("Fecha inicio:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 12;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel7, gridBagConstraints);

        jLabel8.setText("Opcin:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 10;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel8, gridBagConstraints);

        jButton1.setText("...");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 10;
        gridBagConstraints.gridy = 2;
        jPanel4.add(jButton1, gridBagConstraints);

        jLabel10.setText("Documento:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel10, gridBagConstraints);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        jPanel4.add(txtDocumento, gridBagConstraints);

        jLabel11.setText("Hora fin:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 18;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel11, gridBagConstraints);

        jLabel12.setText("Fecha fin:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 14;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(jLabel12, gridBagConstraints);

        spHoraFin.setModel(new javax.swing.SpinnerDateModel());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 18;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(spHoraFin, gridBagConstraints);

        spHoraInicio.setModel(new javax.swing.SpinnerDateModel());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 16;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(spHoraInicio, gridBagConstraints);

        dcFechaFin.setMinSelectableDate(new java.util.Date(21712000L));
        dcFechaFin.setMinimumSize(new java.awt.Dimension(130, 23));
        dcFechaFin.setPreferredSize(new java.awt.Dimension(91, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 14;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(dcFechaFin, gridBagConstraints);

        dcFechaInicio.setMinSelectableDate(new java.util.Date(21712000L));
        dcFechaInicio.setMinimumSize(new java.awt.Dimension(130, 23));
        dcFechaInicio.setPreferredSize(new java.awt.Dimension(91, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 12;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(dcFechaInicio, gridBagConstraints);

        pnlOpcion.setLayout(new java.awt.GridLayout(1, 0));

        radFecha.setSelected(true);
        radFecha.setText("Por fecha");
        radFecha.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                radFechaActionPerformed(evt);
            }
        });
        pnlOpcion.add(radFecha);

        radHora.setText("Por hora");
        radHora.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                radHoraActionPerformed(evt);
            }
        });
        pnlOpcion.add(radHora);

        radLote.setText("Por lote");
        radLote.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                radLoteActionPerformed(evt);
            }
        });
        pnlOpcion.add(radLote);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 10;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(pnlOpcion, gridBagConstraints);

        btnComision.setText("Datos para Comisin");
        btnComision.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnComisionActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        jPanel4.add(btnComision, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.PAGE_START;
        gridBagConstraints.weightx = 0.2;
        gridBagConstraints.weighty = 0.1;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        pnlDatos.add(jPanel4, gridBagConstraints);

        jPanel5.setLayout(new java.awt.GridLayout(1, 0, 10, 0));

        btnGuardar.setText("Guardar");
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });
        jPanel5.add(btnGuardar);

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

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        pnlDatos.add(jPanel5, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.2;
        gridBagConstraints.weighty = 0.1;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        getContentPane().add(pnlDatos, gridBagConstraints);

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

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        // TODO add your handling code here:
        this.accion = 0;
        this.controles(accion);
        this.btnComision.setVisible(false);
        FormularioUtil.limpiarComponente(this.pnlDatos);
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNuevoActionPerformed
        // TODO add your handling code here:
        this.accion = Controlador.NUEVO;
        controlador.prepararCrear();
        this.controles(accion);
        integrantes.clear();
    }//GEN-LAST:event_btnNuevoActionPerformed

    private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnModificarActionPerformed
        // TODO add your handling code here:
        int fila = tblTabla.getSelectedRow();
        if (fila != -1) {
            this.accion = Controlador.MODIFICAR;
            tipoSeleccionado = this.listado.get(fila).getPermiso().getTipoPermiso();
            controlador.setSeleccionado(this.listado.get(fila).getPermiso());
            this.controles(accion);
            FormularioUtil.activarComponente(txtTipoPermiso, false);

            if (controlador.getSeleccionado().getTipoPermiso().getCodigo().equals("VCS")) {
                this.btnComision.setVisible(true);
            }
        }
    }//GEN-LAST:event_btnModificarActionPerformed

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed
        // TODO add your handling code here:
        if (erroresFormulario()) {
            return;
        }
        if (FormularioUtil.dialogoConfirmar(this, accion)) {
            Permiso seleccionada = this.controlador.getSeleccionado();

            FormularioUtil.convertirMayusculas(this.pnlDatos);

            //            if (accion == Controlador.NUEVO) {
            //                seleccionada.setCodigo(txtTipoPermiso.getText());
            //            }
            seleccionada.setMotivo(txtMotivo.getText());
            seleccionada.setTipoPermiso(tipoSeleccionado);
            seleccionada.setFechaInicio(dcFechaInicio.getDate());
            seleccionada.setPorFecha(radFecha.isSelected());
            seleccionada.setDocumento(txtDocumento.getText());
            Long diferencia;
            if (radFecha.isSelected()) {
                seleccionada.setFechaFin(dcFechaFin.getDate());
                diferencia = seleccionada.getFechaFin().getTime() - seleccionada.getFechaInicio().getTime();
                seleccionada.setOpcion('F');
            } else {
                seleccionada.setCubreEntrada(false);
                seleccionada.setCubreSalida(false);
                seleccionada.setHoraInicio((Date) spHoraInicio.getValue());
                seleccionada.setHoraFin((Date) spHoraFin.getValue());
                seleccionada.setFechaFin((Date) dcFechaInicio.getDate());
                seleccionada.setOpcion('H');
                diferencia = FechaUtil.soloHora(seleccionada.getHoraFin()).getTime()
                        - FechaUtil.soloHora(seleccionada.getHoraInicio()).getTime();
            }

            BigDecimal diferenciaMin = new BigDecimal(diferencia / (60 * 1000 * 60));

            seleccionada.setDiferencia(diferenciaMin);

            List<String> dnis = new ArrayList<>();
            for (AsignacionPermiso asignacion : seleccionada.getAsignacionPermisoList()) {
                dnis.add(asignacion.getEmpleado().getNroDocumento());
                //System.out.println(asignacion.getEmpleado());
            }

            retrocederTiempo(dnis, seleccionada.getFechaInicio());

            if (controlador.accion(accion)) {

                //Agregar Viaje
                if (seleccionada.getTipoPermiso().getCodigo().equals("VCS")) {
                    Viaje viaje = new Viaje();

                    //                    viaje.setAlimentacion(this.alimentacion);
                    //                    viaje.setAlojamiento(this.alojamiento);
                    //                    viaje.setMovilidad(this.movilidad);
                    //                    viaje.setCombustible(this.combustible);
                    //
                    //                    viaje.setGerencia(this.gerencia);
                    //                    viaje.setCentroCosto(this.centroCosto);
                    //
                    //                    viaje.setDiasAlimentacion(this.diasAlimentacion);
                    //                    viaje.setDiasAlojamiento(this.diasAlojamiento);
                    //                    viaje.setDiasMovLocal(this.diasMovLocal);
                    //
                    //                    viaje.setDestino(this.ubigeoSeleccion);
                    viaje.setAlimentacion(vsc.getSeleccionado().getAlimentacion());
                    viaje.setAlojamiento(vsc.getSeleccionado().getAlojamiento());
                    viaje.setMovilidad(vsc.getSeleccionado().getMovilidad());
                    viaje.setCombustible(vsc.getSeleccionado().getCombustible());

                    viaje.setGerencia(vsc.getSeleccionado().getGerencia());
                    viaje.setCentroCosto(vsc.getSeleccionado().getCentroCosto());

                    viaje.setDiasAlimentacion(vsc.getSeleccionado().getDiasAlimentacion());
                    viaje.setDiasAlojamiento(vsc.getSeleccionado().getDiasAlojamiento());
                    viaje.setDiasMovLocal(vsc.getSeleccionado().getDiasMovLocal());

                    viaje.setDestino(vsc.getSeleccionado().getDestino());

                    viaje.setPermiso(seleccionada);

                    vsc.setSeleccionado(viaje);

                    vsc.accion(accion);
                }
                //
                FormularioUtil.mensajeExito(this, accion);
                this.accion = 0;
                FormularioUtil.limpiarComponente(this.pnlDatos);
                this.integrantes.clear();
                this.controles(accion);
                this.btnComision.setVisible(false);

                this.busqueda();

                if (FormularioUtil.dialogoConfirmar(this, 4)) {
                    //                    this.imprimirBoleta(seleccionada);
                    if (seleccionada.getTipoPermiso().getCodigo().equals("VCS")) {
                        imprimirBoletaViaje(seleccionada.getAsignacionPermisoList().get(0));
                    } else {
                        imprimirBoleta(seleccionada);
                    }
                }
            } else {
                FormularioUtil.mensajeError(this, accion);
            }

        }
    }//GEN-LAST:event_btnGuardarActionPerformed

    private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarActionPerformed
        // TODO add your handling code here:
        DlgEmpleado dialogo = new DlgEmpleado(this);
        dialogo.setVisible(true);
    }//GEN-LAST:event_btnAgregarActionPerformed

    private void tblTablaMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblTablaMouseReleased
        // TODO add your handling code here:
        int fila = tblTabla.getSelectedRow();
        if (fila != -1) {
            Permiso permiso = listado.get(fila).getPermiso();
            mostrar(permiso);
            //            FormularioUtil.activarComponente(this.btnImprimirTodo, true);
        }
    }//GEN-LAST:event_tblTablaMouseReleased

    private void btnQuitarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarActionPerformed
        // TODO add your handling code here:
        int fila = tblEmpleados.getSelectedRow();
        if (fila != -1) {
            quitarEmpleado(fila);
        }
    }//GEN-LAST:event_btnQuitarActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        DlgTipoPermiso dialogo = new DlgTipoPermiso(this);
        tipoSeleccionado = dialogo.getSeleccionado();
        if (tipoSeleccionado == null) {
            System.out.println("ES NULL");
            txtTipoPermiso.setText("");
        } else {
            txtTipoPermiso.setText(tipoSeleccionado.getNombre());
            if (tipoSeleccionado.getCodigo().equals("VCS")) {
                this.btnComision.setVisible(true);
            }
        }
    }//GEN-LAST:event_jButton1ActionPerformed

    private void txtEmpleadoKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtEmpleadoKeyReleased
        // TODO add your handling code here:
        if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
            lblBusqueda.setBusy(true);
            buscar();
            lblBusqueda.setBusy(false);
        }
    }//GEN-LAST:event_txtEmpleadoKeyReleased

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
        // TODO add your handling code here:
        DlgEmpleado dialogo = new DlgEmpleado(this);
        dialogo.setAgregar(false);
        this.empleadoSeleccionado = dialogo.getSeleccionado();
        if (this.empleadoSeleccionado != null) {
            this.txtEmpleado
                    .setText(empleadoSeleccionado.getNroDocumento() + " " + empleadoSeleccionado.getPaterno() + " "
                            + empleadoSeleccionado.getMaterno() + " " + empleadoSeleccionado.getNombre());
        }
    }//GEN-LAST:event_jButton4ActionPerformed

    private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLimpiarActionPerformed
        // TODO add your handling code here:
        FormularioUtil.limpiarComponente(this.txtEmpleado);
        this.empleadoSeleccionado = null;
    }//GEN-LAST:event_btnLimpiarActionPerformed

    private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBuscarActionPerformed
        // TODO add your handling code here:
        busqueda();

    }//GEN-LAST:event_btnBuscarActionPerformed

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

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

    private void spPaginaStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spPaginaStateChanged
        // TODO add your handling code here:
        this.seleccionPagina();
    }//GEN-LAST:event_spPaginaStateChanged

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

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

    private void cboTamanioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cboTamanioActionPerformed
        // TODO add your handling code here:
        this.paginaActual = 1;
        buscar();
        this.actualizarControlesNavegacion();
    }//GEN-LAST:event_cboTamanioActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        // TODO add your handling code here:
        int fila = this.tblTabla.getSelectedRow();
        if (fila != -1) {
            //            List<AsignacionPermiso> lista = new ArrayList<>();
            AsignacionPermiso asignacion = this.listado.get(fila);
            //            lista.add(asignacion);admin   
            if (asignacion.getPermiso().getTipoPermiso().getCodigo().equals("VCS")) {
                imprimirBoletaViaje(asignacion);
            } else {
                imprimirBoleta(asignacion);
            }
        } else {
            JOptionPane.showMessageDialog(null, "Debe seleccionar un Item", "Mensaje del Sistema",
                    JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jButton2ActionPerformed

    private void tblEmpleadosMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblEmpleadosMouseReleased
        // TODO add your handling code here:
        int fila;
        if ((fila = tblEmpleados.getSelectedRow()) != -1) {
            mostrarRecord(integrantes.get(fila));
        }
    }//GEN-LAST:event_tblEmpleadosMouseReleased

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

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

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

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

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

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        // TODO add your handling code here:
        int fila;

        if ((fila = tblTabla.getSelectedRow()) != -1) {
            accion = Controlador.ELIMINAR;
            if (FormularioUtil.dialogoConfirmar(this, accion)) {
                controlador.setSeleccionado(this.listado.get(fila).getPermiso());
                if (controlador.accion(accion)) {
                    FormularioUtil.mensajeExito(this, accion);
                    accion = 0;
                    this.integrantes.clear();
                    this.controles(accion);
                    this.actualizarTabla();
                }

            }
        }
    }//GEN-LAST:event_jButton3ActionPerformed

    private void btnComisionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnComisionActionPerformed
        // TODO add your handling code here:
        if (accion == Controlador.MODIFICAR) {

            DlgDatosComision viaje = new DlgDatosComision(this, vsc.buscarPorPermiso(controlador.getSeleccionado()),
                    Controlador.MODIFICAR);
            viaje.setVisible(true);

        } else {

            if (vsc.getSeleccionado() == null) {
                DlgDatosComision viaje = new DlgDatosComision(this, null, accion);
                viaje.setVisible(true);

                //                this.alimentacion = viaje.getAlimentacion();
                //                this.alojamiento = viaje.getAlojamiento();
                //                this.movilidad = viaje.getMovilidad();
                //                this.combustible = viaje.getCombustible();
                //
                ////            this.gerencia = viaje.getGerencia();
                //                this.centroCosto = viaje.getCosto();
                //
                //                this.diasAlimentacion = viaje.getDiasAlimentacion();
                //                this.diasAlojamiento = viaje.getDiasAlojamiento();
                //                this.diasMovLocal = viaje.getDiasMovilidad();
                //
                //                this.ubigeoSeleccion = viaje.getUbigeo();
                Viaje nuevoViaje = new Viaje();
                vsc.setSeleccionado(nuevoViaje);

                vsc.getSeleccionado().setAlimentacion(viaje.getAlimentacion());
                vsc.getSeleccionado().setAlojamiento(viaje.getAlojamiento());
                vsc.getSeleccionado().setMovilidad(viaje.getMovilidad());
                vsc.getSeleccionado().setCombustible(viaje.getCombustible());
                vsc.getSeleccionado().setCentroCosto(viaje.getCosto());
                vsc.getSeleccionado().setDiasAlimentacion(viaje.getDiasAlimentacion());
                vsc.getSeleccionado().setDiasAlojamiento(viaje.getDiasAlojamiento());
                vsc.getSeleccionado().setDiasMovLocal(viaje.getDiasMovilidad());
                vsc.getSeleccionado().setDestino(viaje.getUbigeo());

            } else {
                DlgDatosComision viaje = new DlgDatosComision(this, vsc.getSeleccionado(), 2);
                viaje.setVisible(true);

                Viaje nuevoViaje = new Viaje();
                vsc.setSeleccionado(nuevoViaje);

                vsc.getSeleccionado().setAlimentacion(viaje.getAlimentacion());
                vsc.getSeleccionado().setAlojamiento(viaje.getAlojamiento());
                vsc.getSeleccionado().setMovilidad(viaje.getMovilidad());
                vsc.getSeleccionado().setCombustible(viaje.getCombustible());
                vsc.getSeleccionado().setCentroCosto(viaje.getCosto());
                vsc.getSeleccionado().setDiasAlimentacion(viaje.getDiasAlimentacion());
                vsc.getSeleccionado().setDiasAlojamiento(viaje.getDiasAlojamiento());
                vsc.getSeleccionado().setDiasMovLocal(viaje.getDiasMovilidad());
                vsc.getSeleccionado().setDestino(viaje.getUbigeo());
            }

        }
    }//GEN-LAST:event_btnComisionActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAgregar;
    private javax.swing.JButton btnAnterior;
    private javax.swing.JButton btnBuscar;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnComision;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JButton btnLimpiar;
    private javax.swing.JButton btnModificar;
    private javax.swing.JButton btnNuevo;
    private javax.swing.JButton btnPrimero;
    private javax.swing.JButton btnQuitar;
    private javax.swing.JButton btnSiguiente;
    private javax.swing.JButton btnUltimo;
    private javax.swing.JComboBox cboTamanio;
    private com.toedter.calendar.JDateChooser dcFechaFin;
    private com.toedter.calendar.JDateChooser dcFechaFinBusqueda;
    private com.toedter.calendar.JDateChooser dcFechaInicio;
    private com.toedter.calendar.JDateChooser dcFechaInicioBusqueda;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private org.jdesktop.swingx.JXBusyLabel lblBusqueda;
    private javax.swing.ButtonGroup opciones;
    private javax.swing.JPanel pnlBusqueda;
    private javax.swing.JPanel pnlDatos;
    private javax.swing.JPanel pnlListado;
    private javax.swing.JPanel pnlNavegacion;
    private javax.swing.JPanel pnlOpcion;
    private javax.swing.JRadioButton radFecha;
    private javax.swing.JRadioButton radHora;
    private javax.swing.JRadioButton radLote;
    private javax.swing.JSpinner spHoraFin;
    private javax.swing.JSpinner spHoraInicio;
    private javax.swing.JSpinner spPagina;
    private org.jdesktop.swingx.JXTable tblEmpleados;
    private org.jdesktop.swingx.JXTable tblTabla;
    private javax.swing.JTextField txtDocumento;
    private javax.swing.JTextField txtEmpleado;
    private javax.swing.JTextArea txtMotivo;
    private javax.swing.JTextField txtTipoPermiso;
    private javax.swing.JTextField txtTotal;
    // End of variables declaration//GEN-END:variables

    private void mostrar(Permiso permiso) {
        txtMotivo.setText(permiso.getMotivo());
        txtTipoPermiso.setText(permiso.getTipoPermiso().getNombre());
        this.radFecha.setSelected(permiso.isPorFecha());
        dcFechaInicio.setDate(permiso.getFechaInicio());
        txtDocumento.setText(permiso.getDocumento());
        if (permiso.isPorFecha()) {
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            dcFechaFin.setDate(permiso.getFechaFin());
            spHoraInicio.setValue(cal.getTime());
            spHoraFin.setValue(cal.getTime());
        } else {
            dcFechaFin.setDate(permiso.getFechaInicio());
            spHoraInicio.setValue(permiso.getHoraInicio());
            spHoraFin.setValue(permiso.getHoraFin());
        }

        List<Empleado> empleados = obtenerListadoDNI(permiso.getAsignacionPermisoList());
        if (!empleados.isEmpty()) {
            mostrarIntegrantes(empleados);
        }

    }

    private void bindeoSalvaje() {
        listado = new ArrayList<>();
        listado = ObservableCollections.observableList(listado);

        integrantes = ObservableCollections.observableList(new ArrayList<Empleado>());

        String[] columnasIntegrantes = { "Nro Documento", "Empleado" };

        MTAsignacionPermiso mt = new MTAsignacionPermiso(listado);
        MTEmpleado mtIntegrantes = new MTEmpleado(integrantes, columnasIntegrantes);
        tblTabla.setModel(mt);
        tblEmpleados.setModel(mtIntegrantes);

        actualizarTabla();
    }

    private void actualizarTabla() {
        listado.clear();
        empleadoSeleccionado = null;
        FormularioUtil.limpiarComponente(txtEmpleado);
        paginaActual = 1;
        buscar();
        actualizarControlesNavegacion();
        tblTabla.packAll();
    }

    private void mostrarIntegrantes(List<Empleado> empleados) {
        integrantes.clear();
        integrantes.addAll(empleados);
        tblEmpleados.packAll();
    }

    private void inicializar() {
        this.accion = 0;

        controlador = new PermisoControlador();
        ec = new EmpleadoControlador();
        ac = new AsignacionPermisoControlador();
        //        FormularioUtil.modeloSpinnerFechaHora(spFechaInicio, "dd/MM/yyyy");
        //        FormularioUtil.modeloSpinnerFechaHora(spFechaFin, "dd/MM/yyyy");
        FormularioUtil.modeloSpinnerFechaHora(spHoraInicio, "HH:mm");
        FormularioUtil.modeloSpinnerFechaHora(spHoraFin, "HH:mm");
        this.controles(accion);
    }

    private void controles(int accion) {
        boolean bandera = accion == Controlador.NUEVO || accion == Controlador.MODIFICAR;

        FormularioUtil.activarComponente(this.pnlListado, !bandera);
        FormularioUtil.activarComponente(this.pnlDatos, bandera);
        FormularioUtil.activarComponente(this.txtEmpleado, false);
        //        FormularioUtil.activarComponente(this.btnImprimirTodo, false);

        if (accion != Controlador.MODIFICAR) {
            FormularioUtil.limpiarComponente(this.pnlDatos);
        }

        this.txtTipoPermiso.setEditable(false);
        checkPorFecha(accion);
    }

    private List<Empleado> obtenerListadoDNI(List<AsignacionPermiso> detalles) {
        List<Empleado> empleados = new ArrayList<>();
        for (AsignacionPermiso detalle : detalles) {
            empleados.add(detalle.getEmpleado());
        }
        return empleados;
    }

    public void agregarEmpleado(Empleado empleado) {
        integrantes.add(empleado);

        AsignacionPermiso detalle = new AsignacionPermiso();
        detalle.setEmpleado(empleado);
        detalle.setPermiso(controlador.getSeleccionado());

        controlador.getSeleccionado().getAsignacionPermisoList().add(detalle);
    }

    private void quitarEmpleado(int fila) {
        integrantes.remove(fila);
        controlador.getSeleccionado().getAsignacionPermisoList().remove(fila);
    }

    private int paginaActual = 1;
    private int totalPaginas = 0;
    private int tamanioPagina = 0;

    private void buscar() {
        String busqueda = txtEmpleado.getText();
        tamanioPagina = Integer.parseInt(cboTamanio.getSelectedItem().toString());

        Date fechaInicio = dcFechaInicioBusqueda.getDate();
        Date fechaFin = dcFechaFinBusqueda.getDate();
        listado.clear();
        List<AsignacionPermiso> lista = this.listar(empleadoSeleccionado, fechaInicio, fechaFin, paginaActual,
                tamanioPagina);
        System.out.println("LISTA: " + lista.size());
        listado.addAll(lista);

        tblTabla.packAll();
    }

    private List<AsignacionPermiso> listar(Empleado empleado, Date fechaInicio, Date fechaFin, int pagina,
            int tamanio) {
        int total;

        if (empleado == null) {
            total = ac.contarXFecha(fechaInicio, fechaFin);
        } else {
            total = ac.contarXEmpleadoXFecha(empleado, fechaInicio, fechaFin);
        }

        if (total % tamanio == 0) {
            totalPaginas = total / tamanio;
        } else {
            totalPaginas = (total / tamanio) + 1;
        }

        if (totalPaginas == 0) {
            totalPaginas = 1;
        }

        if (empleado == null) {
            return ac.buscarXFecha(fechaInicio, fechaFin, (pagina - 1) * tamanio, tamanio);
        } else {
            return ac.buscarXEmpleadoXFecha(empleado, fechaInicio, fechaFin, (pagina - 1) * tamanio, tamanio);
        }

    }

    private void siguiente() {
        paginaActual++;
        buscar();
        this.actualizarControlesNavegacion();
    }

    private void ultimo() {
        paginaActual = totalPaginas;
        buscar();
        this.actualizarControlesNavegacion();
    }

    private void primero() {
        paginaActual = 1;
        buscar();
        this.actualizarControlesNavegacion();
    }

    private void anterior() {
        paginaActual--;
        buscar();
        this.actualizarControlesNavegacion();
    }

    private void seleccionPagina() {
        paginaActual = (int) spPagina.getValue();
        buscar();
        this.actualizarControlesNavegacion();
    }

    private void actualizarControlesNavegacion() {
        spPagina.setValue(paginaActual);
        txtTotal.setText(totalPaginas + "");

        SpinnerNumberModel modeloSP = (SpinnerNumberModel) spPagina.getModel();
        Comparable<Integer> maximo = totalPaginas;
        modeloSP.setMaximum(maximo);

        this.btnSiguiente.setEnabled(paginaActual != totalPaginas);
        this.btnUltimo.setEnabled(paginaActual != totalPaginas);

        this.btnAnterior.setEnabled(paginaActual != 1);
        this.btnPrimero.setEnabled(paginaActual != 1);
    }

    private final DateFormat dfFecha = new SimpleDateFormat("dd/MM/yyyy");
    private final DateFormat dfHora = new SimpleDateFormat("HH:mm");

    private void imprimirBoleta(Permiso seleccionada) {
        File reporte = new File("reportes/reporte_papeleta_salida.jasper");
        //        List<Long> lista = new ArrayList<>();

        Map<String, Object> parametros = new HashMap<>();
        parametros.put("permiso_id", seleccionada.getId());
        parametros.put("por_lote", true);
        parametros.put("reporte_ususario", UsuarioActivo.getUsuario().getLogin());
        parametros.put("reporte_institucion", Main.REPORTE_INSTITUCION);

        reporteador.setConn(controlador.getDao().getConexion());
        reporteador.generarReporte(reporte, parametros, JOptionPane.getFrameForComponent(this));

    }

    private void imprimirBoleta(AsignacionPermiso seleccionada) {

        File reporte = new File("reportes/reporte_papeleta_salida.jasper");
        //        List<Long> lista = new ArrayList<>();

        Map<String, Object> parametros = new HashMap<>();
        parametros.put("permiso_id", seleccionada.getPermiso().getId());
        parametros.put("pers_nro_documento", seleccionada.getEmpleado().getNroDocumento());
        parametros.put("por_lote", false);
        parametros.put("reporte_ususario", UsuarioActivo.getUsuario().getLogin());
        parametros.put("reporte_institucion", Main.REPORTE_INSTITUCION);

        reporteador.setConn(controlador.getDao().getConexion());
        reporteador.generarReporte(reporte, parametros, JOptionPane.getFrameForComponent(this));

    }

    public long fechasAlong(Date inicio, Date fin) {

        long restaLog = (fin.getTime() - inicio.getTime());
        long resta = (restaLog / (1000 * 60 * 60 * 24)) + 1;
        return resta;
    }

    private void imprimirBoletaViaje(AsignacionPermiso asignacion) {
        File reporte = new File("reportes/permiso_comision-servicios.jasper");

        List<AsignacionPermiso> listadoReporteAsignacion = new ArrayList();
        listadoReporteAsignacion.add(asignacion);

        Map<String, Object> parametros = new HashMap<>();
        parametros.put("reporte_ususario", UsuarioActivo.getUsuario().getLogin());

        Departamento area = asignacion.getEmpleado().getAreaEmpleadoList().get(0).getDepartamento();
        if (area != null) {
            parametros.put("area", area.getNombre());
        }

        //        AsignarVacacion vac = new AsignarVacacion();
        long dias = this.fechasAlong(asignacion.getPermiso().getFechaInicio(),
                asignacion.getPermiso().getFechaFin());
        parametros.put("dias", dias);

        //Parametros del viaje
        Viaje viaje = vsc.buscarPorPermiso(asignacion.getPermiso());

        if (viaje != null) {
            parametros.put("alimentacion", viaje.getAlimentacion());
            parametros.put("alojamiento", viaje.getAlojamiento());
            parametros.put("movilidad", viaje.getMovilidad());
            parametros.put("combustible", viaje.getCombustible());
            parametros.put("dias_alimentacion", viaje.getDiasAlimentacion());
            parametros.put("dias_alojamiento", viaje.getDiasAlojamiento());
            parametros.put("dias_movilidad", viaje.getDiasMovLocal());
            //            if (asignacion.getEmpleado().getAreaEmpleadoList().get(0).getDepartamento().getDepartamento().getNombre() != null) {
            //                parametros.put("gerencia", asignacion.getEmpleado().getAreaEmpleadoList().get(0).getDepartamento().getDepartamento().getNombre());
            //            } else {
            parametros.put("gerencia",
                    asignacion.getEmpleado().getAreaEmpleadoList().get(0).getGerencia().getNombre());
            //            }
            parametros.put("centro_costo", viaje.getCentroCosto());
            parametros.put("ubigeo", viaje.getDestino());
            parametros.put("cargo", asignacion.getEmpleado().getPuestoList().get(0).getPuesto().getNombre());

            double total = (viaje.getAlimentacion() * viaje.getDiasAlimentacion())
                    + (viaje.getAlojamiento() * viaje.getDiasAlojamiento())
                    + (viaje.getMovilidad() * viaje.getDiasMovLocal()) + viaje.getCombustible();

            parametros.put("total", total);
        }

        //Fin de parametros del viaje
        Component contentPane = reporteador.obtenerReporte(listadoReporteAsignacion, reporte, parametros);
        Frame principal = JOptionPane.getRootFrame();
        JDialog visor = new JDialog(principal, "Reporte", true);
        visor.setSize(contentPane.getSize());
        //        visor.setSize(ventana.getSize().width, ventana.getSize().height);
        visor.getContentPane().add(contentPane);
        visor.setLocationRelativeTo(this);

        //            visor.setUndecorated(true);
        visor.setBounds(GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds());
        visor.setVisible(true);
        visor.setAlwaysOnTop(true);
        //        reporteador.getReporte(reporte, parametros, listado) //        reporteador.setConn(controlador.getDao().getConexion());
        //        reporteador.generarReporte(reporte, parametros, JOptionPane.getFrameForComponent(this));
    }

    private final TCAnalisisControlador tcac = new TCAnalisisControlador();

    private void retrocederTiempo(List<String> empleados, Date fechaInicio) {
        tcac.retrocederTiempo(empleados, fechaInicio);
    }

    private void checkPorFecha(int accion) {
        if (accion != 0) {
            FormularioUtil.activarComponente(dcFechaInicio, true);
            FormularioUtil.activarComponente(dcFechaFin, radFecha.isSelected());

            spHoraInicio.setEnabled(!radFecha.isSelected());
            spHoraFin.setEnabled(!radFecha.isSelected());
        }
    }

    private boolean erroresFormulario() {
        int errores = 0;
        Date fechaInicio = dcFechaInicio.getDate();

        String mensaje = "";
        if (integrantes.isEmpty()) {
            errores++;
            mensaje += ">Debe seleccionar uno o mas empleados\n";
        }

        if (dcFechaInicio.getDate() == null || dcFechaFin.getDate() == null) {

            if (!radHora.isSelected()) {
                errores++;
                mensaje += "Una o ms fechas ingresadas incorrectamente \n";
            } else if (radFecha.isSelected()) {
                errores++;
                mensaje += "Una o ms fechas ingresadas incorrectamente \n";
            }

        } else {
            if (radFecha.isSelected()) {
                Date fechaFin = dcFechaFin.getDate();
                if (fechaInicio.compareTo(fechaFin) > 0) {
                    errores++;
                    mensaje += ">La fecha de inicio debe ser menor que la fecha de fin\n";
                }
                //Traemos los dnis de los empleados
                Permiso paraComprobar = this.controlador.getSeleccionado();
                //List<String> dnis = new ArrayList<>();
                for (AsignacionPermiso asignacion : paraComprobar.getAsignacionPermisoList()) {
                    //dnis.add(asignacion.getEmpleado());
                    System.out.println(asignacion.getEmpleado());
                    //                List<AsignacionPermiso> lista = ac.buscarXFechaDni(asignacion.getEmpleado(), fechaInicio);
                    int conteoPorFecha = ac.contarXEmpleadoEntreFechaPorFecha(empleadoSeleccionado, fechaInicio,
                            fechaFin);
                    if (conteoPorFecha == 0) {

                    } else if (accion != Controlador.MODIFICAR) {
                        errores++;
                        mensaje += "El empleado " + asignacion.getEmpleado()
                                + " tiene conflicto con un permiso aadido anteriormente \n Ingrese otro rango de fechas \n";
                        break;
                    }
                }
            }
        }

        //Traemos los permisos por dni
        if (radHora.isSelected()) {
            Date horaInicio = (Date) spHoraInicio.getValue();
            Date horaFin = (Date) spHoraFin.getValue();
            if (horaInicio.compareTo(horaFin) > 0) {
                errores++;
                mensaje += ">La hora de inicio debe ser menor que la hora de fin \n";
            }
            Permiso paraComprobar = this.controlador.getSeleccionado();
            for (AsignacionPermiso asignacion : paraComprobar.getAsignacionPermisoList()) {
                List<AsignacionPermiso> lista = ac.buscarXHora(asignacion.getEmpleado(), fechaInicio);

                Long conteoPorHora = lista.stream()
                        .filter(perm -> (horaInicio.compareTo(perm.getPermiso().getHoraInicio()) <= 0
                                && horaFin.compareTo(perm.getPermiso().getHoraInicio()) >= 0)
                                || (perm.getPermiso().getHoraInicio().compareTo(horaInicio) <= 0
                                        && perm.getPermiso().getHoraFin().compareTo(horaInicio) >= 0))
                        .count();
                if (conteoPorHora.intValue() == 0) {

                } else {
                    errores++;
                    mensaje += ">El empleado " + asignacion.getEmpleado()
                            + " tiene conflicto con un permiso aadido anteriormente \n Ingrese otro rango de horas\n";
                    break;
                }
            }
        }
        if (errores > 0) {
            JOptionPane.showMessageDialog(this, "Se ha(n) encontrado el(los) siguiente(s) error(es):\n" + mensaje,
                    "Mensaje del sistema", JOptionPane.ERROR_MESSAGE);
        }
        return errores != 0;
    }

    private void mostrarRecord(Empleado empleado) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(empleado.getContratoList().get(0).getFechaInicio());

        Date fInicio = dcFechaInicio.getDate();

    }

    private void opciones() {
        FormularioUtil.activarComponente(dcFechaInicio, true);
        FormularioUtil.activarComponente(dcFechaFin, radFecha.isSelected() || radLote.isSelected());
        spHoraInicio.setEnabled(radHora.isSelected() || radLote.isSelected());
        spHoraFin.setEnabled(radHora.isSelected() || radLote.isSelected());

    }

    private void busqueda() {
        System.out.println("BUSCAR");

        System.out.println("FEHCA:" + dcFechaInicioBusqueda.getDate());

        if (dcFechaInicioBusqueda.getDate() != null && dcFechaFinBusqueda.getDate() != null) {
            lblBusqueda.setBusy(true);
            paginaActual = 1;
            buscar();
            actualizarControlesNavegacion();
            lblBusqueda.setBusy(false);

        } else {
            JOptionPane.showMessageDialog(this, "Una o ms fechas ingresadas incorrectamente",
                    "Mensaje del sistema", JOptionPane.ERROR_MESSAGE);
        }
    }
}