Vista.frm_venta_mensual_informe.java Source code

Java tutorial

Introduction

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

import Constructores.Constructo_Cantidad_Productos_Vendido;
import Constructores.Constructor_Mi_empresa;
import Constructores.Constructor_Usuario;
import Constructores.Constructor_venta_Diaria;
import BL.Funciones_Entrada_Inventario;
import BL.Funciones_Generales;
import BL.Funciones_Venta_Mensual;
import BL.Funciones_frm_MasVendido;
import BL.Funciones_frm_factura;
import BL.Funciones_frm_venta_diaria;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYSplineRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

/**
 *
 * @author Nestor1
 */
public class frm_venta_mensual_informe extends javax.swing.JInternalFrame {

    public String[] columnas_inventario = new String[30];
    public String[] columnas = new String[19];
    public int[] ancho_columnas = new int[15], columnas_eliminar = new int[9],
            columnas_eliminar_inventario = new int[17];
    java.sql.Date now = new java.sql.Date(System.currentTimeMillis());
    private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat hora = new SimpleDateFormat("HH:mm:ss");
    Constructor_Usuario usuario_activo = new Constructor_Usuario();
    Constructor_Mi_empresa mi_empresa = new Constructor_Mi_empresa();
    private String user = null, fecha = new String(), fecha2 = new String();
    String[] producto;
    private float[] cantidad;
    int[] id_producto;
    SimpleDateFormat formato_date = new SimpleDateFormat();
    Constructores.Constructor_venta_Diaria venta_diaria = new Constructor_venta_Diaria();

    /**
     * Creates new form frm_MasVendidoInforme
     */
    public frm_venta_mensual_informe(Object usuario) {
        user = usuario.toString();
        initComponents();
        inicializarForm();
        cargarTable();
        graficarDatos();
        this.setTitle("VENTA MENSUAL");
    }

    private void consultarDatosMiEmpresa() {
        Funciones_Generales fun = new Funciones_Generales();
        mi_empresa = fun.datosMiEmpresa(usuario_activo.getId_sucursal());
    }

    private void inicializarForm() {
        Funciones_frm_factura fun = new Funciones_frm_factura();
        Date fecha_ultima;
        formato_date.applyPattern("yyyy-MM-dd");
        String fecha1;
        String fecha_hastaa = new SimpleDateFormat("yyyy-MM-dd").format(now);
        Funciones_frm_MasVendido funciones = new Funciones_frm_MasVendido();
        fecha1 = fun.primerFecha();
        try {
            fecha_ultima = formato_date.parse(fecha_hastaa);
            Date fecha_poner_1 = formato_date.parse((fecha1));
            Date_fecha_Desde.setDate((fecha_poner_1));
            Date_fecha_Hasta.setDate(fecha_ultima);
            fecha = String.format("%1$td-%1$tm-%1$tY", Date_fecha_Desde.getDate());
            fecha2 = String.format("%1$td-%1$tm-%1$tY", Date_fecha_Hasta.getDate());
        } catch (Exception ex) {
            Logger.getLogger(frm_GestionarFactura.class.getName()).log(Level.SEVERE, null, ex);
        }
        consultarDatosUsuario();
        Object[] items_sucursal;
        items_sucursal = funciones.llenarComboSucursal(usuario_activo.getId_sucursal());
        for (int t = 0; t < items_sucursal.length; t++) {
            cmb_sucursal.addItem(items_sucursal[t]);
        }

    }

    private void consultarDatosUsuario() {
        BL.Funciones_Generales funciones_producto = new Funciones_Generales();
        usuario_activo = funciones_producto.usuario(user);

    }

    private void llenarVentaMensual(int id_empresa) {
        Funciones_Generales fun = new Funciones_Generales();
        venta_diaria = fun.llenarVentaMensualConstructoXEmpresa(id_empresa, fecha, fecha2);
    }

    private void llenarVentaMensualXSucursal(String id_sucursal) {
        Funciones_Generales fun = new Funciones_Generales();
        venta_diaria = fun.llenarVentaMensualConstructoXSucursal(id_sucursal, fecha, fecha2);
    }

    private void parametrosTabla() {
        columnas[0] = "IDENTIFICACION";
        columnas[1] = "FOLIO";
        columnas[2] = "TOTAL";
        columnas[3] = "SUBTOTAL";
        columnas[4] = "DESCUENTO";
        columnas[5] = "IVA";
        columnas[6] = "RECIBE";
        columnas[7] = "CAMBIO";
        columnas[8] = "PAGO CON:";
        columnas[9] = "TARJETA";
        columnas[10] = "DESCRIPCION";
        columnas[11] = "NOM. CLIENTE";
        columnas[12] = "APE. CLIENTE";
        columnas[13] = "CEDULA";
        columnas[14] = "DIRECCION";
        columnas[15] = "FECHA";
        columnas[16] = "BORRAR";
        columnas[17] = "BORRAR2";
        columnas[18] = "BORRAR3";
        ancho_columnas[0] = 200;
        ancho_columnas[1] = 0;
        ancho_columnas[2] = 0;
        ancho_columnas[3] = 0;
        ancho_columnas[4] = 0;
        ancho_columnas[5] = 0;
        ancho_columnas[6] = 100;
        columnas_eliminar[0] = 16;
        columnas_eliminar[1] = 16;
        columnas_eliminar[2] = 16;
        columnas_eliminar[3] = 16;

    }

    private void cargarTable() {
        BL.Funciones_Venta_Mensual fun = new Funciones_Venta_Mensual();
        //Metodo para llenar la tabla producto con los parametros, nombre de columnas y columnas que quiero eliminar
        try {
            parametrosTabla();
            fecha = String.format("%1$tY-%1$tm-%1$td", Date_fecha_Desde.getDate());
            fecha2 = String.format("%1$tY-%1$tm-%1$td", Date_fecha_Hasta.getDate());
            consultarDatosUsuario();
            consultarDatosMiEmpresa();
            llenarVentaMensual(mi_empresa.getId_empresa());
            tbl_datos.setModel(fun.llenarTablaVentasDiarias(mi_empresa.getId_empresa(), fecha, fecha2, columnas,
                    ancho_columnas));
            float[] totalTotal = venta_diaria.getTotalVenta();
            String[] fechaMostrar = venta_diaria.getFecha();
            for (int i = 0; i < venta_diaria.getFecha().length; i++) {
                tbl_datos.setValueAt(fechaMostrar[i], i, 0);
                tbl_datos.setValueAt(totalTotal[i], i, 1);
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private float sumatoriaCantidades() {
        float resultado = 0;
        for (int i = 0; i < id_producto.length; i++) {
            resultado = resultado + cantidad[i];

        }
        return resultado;
    }

    private void graficarDatos() {
        ChartPanel panel;
        DefaultCategoryDataset data = new DefaultCategoryDataset();
        String[] dias = venta_diaria.getFecha();
        float[] total = venta_diaria.getTotalVenta();
        int fila = 0;
        for (int i = 0; i < venta_diaria.getFecha().length; i++) {
            if (dias[i].equalsIgnoreCase("")) {
            } else {
                fila++;
            }
        }
        for (int i = 0; i < fila; i++) {
            if (total[i] == 0) {
            } else {
                data.addValue(total[i], "", dias[i]);
            }
        }
        JFreeChart chart = null;
        chart = ChartFactory.createBarChart("VENTA MENSUAL", "VENTAS", "CANTIDAD", data, PlotOrientation.VERTICAL,
                true, true, true);
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setDomainGridlinesVisible(true);
        panel = new ChartPanel(chart);
        panel.setBounds(0, 30, 450, 450);
        pan_derecha.add(panel);
    }

    private void evento_cambiar_sucursal() {
        if (cmb_sucursal.getSelectedIndex() == 0) {
            cargarTable();
            pan_derecha.removeAll();
            graficarDatos();
            pan_derecha.repaint();
        } else {
            BL.Funciones_frm_venta_diaria fun = new Funciones_frm_venta_diaria();
            //Metodo para llenar la tabla producto con los parametros, nombre de columnas y columnas que quiero eliminar
            try {
                parametrosTabla();
                fecha = String.format("%1$tY-%1$tm-%1$td", Date_fecha_Desde.getDate());
                fecha2 = String.format("%1$tY-%1$tm-%1$td", Date_fecha_Hasta.getDate());
                consultarDatosUsuario();
                consultarDatosMiEmpresa();
                llenarVentaMensualXSucursal(cmb_sucursal.getSelectedItem().toString());
                tbl_datos.setModel(fun.llenarTablaVentasDiariasXSucursal(cmb_sucursal.getSelectedItem().toString(),
                        fecha, fecha2, columnas, ancho_columnas));
                float[] totalTotal = venta_diaria.getTotalVenta();
                String[] fechaMostrar = venta_diaria.getFecha();
                for (int i = 0; i < venta_diaria.getFecha().length; i++) {
                    tbl_datos.setValueAt(fechaMostrar[i], i, 0);
                    tbl_datos.setValueAt(totalTotal[i], i, 1);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

    }

    private void click_boton_aplicar_fechas() {
        if (cmb_sucursal.getSelectedIndex() == 0) {
            fecha = String.format("%1$tY-%1$tm-%1$td", Date_fecha_Desde.getDate());
            fecha2 = String.format("%1$tY-%1$tm-%1$td", Date_fecha_Hasta.getDate());
            cargarTable();
            pan_derecha.removeAll();
            graficarDatos();
            pan_derecha.repaint();
        } else {
            fecha = String.format("%1$tY-%1$tm-%1$td", Date_fecha_Desde.getDate());
            fecha2 = String.format("%1$tY-%1$tm-%1$td", Date_fecha_Hasta.getDate());
            evento_cambiar_sucursal();
            pan_derecha.removeAll();
            graficarDatos();
            pan_derecha.repaint();
        }
    }

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

        pan_derecha = new javax.swing.JPanel();
        pan_izquierda = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbl_datos = new javax.swing.JTable();
        cmb_sucursal = new javax.swing.JComboBox();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();
        Date_fecha_Desde = new com.toedter.calendar.JDateChooser();
        Date_fecha_Hasta = new com.toedter.calendar.JDateChooser();

        pan_derecha.setBorder(javax.swing.BorderFactory.createTitledBorder("Grafica"));

        javax.swing.GroupLayout pan_derechaLayout = new javax.swing.GroupLayout(pan_derecha);
        pan_derecha.setLayout(pan_derechaLayout);
        pan_derechaLayout.setHorizontalGroup(pan_derechaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 421, Short.MAX_VALUE));
        pan_derechaLayout.setVerticalGroup(pan_derechaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE));

        pan_izquierda.setBorder(javax.swing.BorderFactory.createTitledBorder("Datos"));

        tbl_datos.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][] { { null, null, null }, { null, null, null }, { null, null, null } },
                new String[] { "Codigo", "Producto", "Cantidad" }) {
            Class[] types = new Class[] { java.lang.Object.class, java.lang.Object.class, java.lang.Float.class };
            boolean[] canEdit = new boolean[] { false, false, false };

            public Class getColumnClass(int columnIndex) {
                return types[columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        jScrollPane1.setViewportView(tbl_datos);
        if (tbl_datos.getColumnModel().getColumnCount() > 0) {
            tbl_datos.getColumnModel().getColumn(0).setResizable(false);
            tbl_datos.getColumnModel().getColumn(1).setResizable(false);
            tbl_datos.getColumnModel().getColumn(2).setResizable(false);
        }

        cmb_sucursal.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "..." }));
        cmb_sucursal.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmb_sucursalItemStateChanged(evt);
            }
        });

        jLabel1.setText("Ver por:");

        jLabel2.setText("Desde:");

        jLabel3.setText("Hasta:");

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

        javax.swing.GroupLayout pan_izquierdaLayout = new javax.swing.GroupLayout(pan_izquierda);
        pan_izquierda.setLayout(pan_izquierdaLayout);
        pan_izquierdaLayout.setHorizontalGroup(pan_izquierdaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(pan_izquierdaLayout.createSequentialGroup().addContainerGap().addGroup(pan_izquierdaLayout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                        .addGroup(pan_izquierdaLayout.createSequentialGroup().addComponent(jLabel2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(Date_fecha_Desde, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(Date_fecha_Hasta, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 43,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(0, 0, Short.MAX_VALUE))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                pan_izquierdaLayout.createSequentialGroup().addGap(4, 4, 4).addComponent(jLabel1)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(cmb_sucursal, 0, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                Short.MAX_VALUE)))
                        .addContainerGap()));
        pan_izquierdaLayout.setVerticalGroup(pan_izquierdaLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pan_izquierdaLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(pan_izquierdaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jButton2)
                                .addGroup(pan_izquierdaLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addComponent(Date_fecha_Desde, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel2).addComponent(jLabel3).addComponent(Date_fecha_Hasta,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(
                                pan_izquierdaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(cmb_sucursal, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel1))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 401,
                                javax.swing.GroupLayout.PREFERRED_SIZE)));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout.createSequentialGroup().addContainerGap()
                        .addComponent(pan_izquierda, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(pan_derecha, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout.createSequentialGroup().addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(pan_derecha, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(pan_izquierda, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addContainerGap()));

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

    private void cmb_sucursalItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmb_sucursalItemStateChanged
        // TODO add your handling code here:
        evento_cambiar_sucursal();
        pan_derecha.removeAll();
        graficarDatos();
        pan_derecha.repaint();
    }//GEN-LAST:event_cmb_sucursalItemStateChanged

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

        click_boton_aplicar_fechas();
    }//GEN-LAST:event_jButton2ActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private com.toedter.calendar.JDateChooser Date_fecha_Desde;
    private com.toedter.calendar.JDateChooser Date_fecha_Hasta;
    private javax.swing.JComboBox cmb_sucursal;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel pan_derecha;
    private javax.swing.JPanel pan_izquierda;
    private javax.swing.JTable tbl_datos;
    // End of variables declaration//GEN-END:variables
}