Vista.AdminReportes.java Source code

Java tutorial

Introduction

Here is the source code for Vista.AdminReportes.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 Negocio.Entidades.Pedido;
import Negocio.Entidades.Venta;
import Negocio.Operaciones.AdminPedidos;
import Negocio.Operaciones.AdminVentas;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author DEMON
 */
public class AdminReportes extends javax.swing.JFrame {
    PDPage pagina;
    PDPageContentStream content;
    String nombreArchivo;
    PDDocument documento;
    AdminVentas adminVentas = new AdminVentas();
    AdminPedidos adminPedidos = new AdminPedidos();

    /**
     * Creates new form AdminReportes
     */
    public AdminReportes() {
        initComponents();
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
    }

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

        jPanel1 = new javax.swing.JPanel();
        botonPedidos = new javax.swing.JButton();
        botonVolver = new javax.swing.JButton();
        botonVentas = new javax.swing.JButton();
        labelEstado = new javax.swing.JLabel();
        labelEstatus = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        botonPedidos.setText("Imprimir Pedidos Completados ltimo Mes");
        botonPedidos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonPedidosActionPerformed(evt);
            }
        });

        botonVolver.setText("Salir");
        botonVolver.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonVolverActionPerformed(evt);
            }
        });

        botonVentas.setText("Imprimir Ventas ltimo Mes");
        botonVentas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonVentasActionPerformed(evt);
            }
        });

        labelEstado.setText("ESTADO:");

        labelEstatus.setText("En Espera");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(jPanel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(botonVolver, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE)
                        .addComponent(botonPedidos, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(botonVentas, javax.swing.GroupLayout.Alignment.TRAILING,
                                javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE)
                        .addGroup(jPanel1Layout.createSequentialGroup().addComponent(labelEstado)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(labelEstatus).addGap(0, 0, Short.MAX_VALUE)))));
        jPanel1Layout
                .setVerticalGroup(
                        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(
                                        jPanel1Layout.createSequentialGroup().addContainerGap()
                                                .addComponent(botonVentas, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        58, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addGap(18, 18, 18)
                                                .addComponent(botonPedidos, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        58, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addGap(18, 18, 18)
                                                .addComponent(botonVolver, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        58, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                        36, Short.MAX_VALUE)
                                                .addGroup(jPanel1Layout
                                                        .createParallelGroup(
                                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                                        .addComponent(labelEstado).addComponent(labelEstatus))
                                                .addGap(19, 19, 19)));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 12, Short.MAX_VALUE)));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(
                jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                Short.MAX_VALUE));

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

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

        try {
            crearArchivoPDF("Ventas");
            imprimirVentasMes(adminVentas.getVentasPorFecha(getUltimoMes()));
            terminarArchivo();
            labelEstatus.setText("Exito");
        } catch (IOException ex) {
            labelEstatus.setText("Fallido");
            Logger.getLogger(AdminReportes.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_botonVentasActionPerformed

    private void botonPedidosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonPedidosActionPerformed
        try {
            crearArchivoPDF("Pedidos");
            imprimirPedidosMes(adminPedidos.getPedidosFechaCreacion(getUltimoMes()));
            terminarArchivo();
            labelEstatus.setText("Exito");
        } catch (IOException ex) {
            labelEstatus.setText("Fallido");
            Logger.getLogger(AdminReportes.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_botonPedidosActionPerformed

    private void botonVolverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonVolverActionPerformed
        this.dispose();
        this.setVisible(false);
        MenuPrincipal menuPrincipal = new MenuPrincipal();
        menuPrincipal.setVisible(true);
    }//GEN-LAST:event_botonVolverActionPerformed

    /**
     * @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(AdminReportes.class.getName()).log(java.util.logging.Level.SEVERE,
                    null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(AdminReportes.class.getName()).log(java.util.logging.Level.SEVERE,
                    null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(AdminReportes.class.getName()).log(java.util.logging.Level.SEVERE,
                    null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(AdminReportes.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 AdminReportes().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonPedidos;
    private javax.swing.JButton botonVentas;
    private javax.swing.JButton botonVolver;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JLabel labelEstado;
    private javax.swing.JLabel labelEstatus;
    // End of variables declaration//GEN-END:variables

    private void imprimirVentasMes(List<Venta> ventasMes) throws IOException {
        imprimirTitulo("Reporte Ventas ltimo mes");
        for (Venta venta : ventasMes) {
            String contenido = ("Id: " + Integer.toString((int) venta.getId()) + ", Fecha de creacion: "
                    + venta.getFechaCreacion() + ", Cliente: " + venta.getCliente().getNombre() + ", Costo: "
                    + Double.toString(venta.getCostoTotal())

            );
            imprimirRegistro(contenido);
        }

    }

    private void imprimirPedidosMes(List<Pedido> pedidosMes) throws IOException {
        imprimirTitulo("Reporte Pedidos ltimo mes");
        for (Pedido pedido : pedidosMes) {
            String contenido = ("Id: " + Integer.toString((int) pedido.getId()) + ", Fecha de creacion: "
                    + pedido.getFechaCreacion() + ", Comprador: " + pedido.getNombreComprador() + ", Costo: "
                    + Double.toString(pedido.getCostoTotal()));
        }
    }

    private void imprimirTitulo(String titulo) throws IOException {
        content.beginText();
        content.setFont(PDType1Font.HELVETICA, 26);
        content.moveTextPositionByAmount(220, 750);
        content.drawString(titulo);
        content.endText();
    }

    private void crearArchivoPDF(String tipo) throws IOException {
        nombreArchivo = "Reporte" + tipo + getReporteID() + ".pdf";

        documento = new PDDocument();
        pagina = new PDPage();

        documento.addPage(pagina);

        content = new PDPageContentStream(documento, pagina);

    }

    private void terminarArchivo() {
        try {
            content.close();
            documento.save(nombreArchivo);
            documento.close();

        } catch (IOException e) {

            System.out.println(e.getMessage());

        }
    }

    private String getReporteID() {
        Calendar cal = Calendar.getInstance();
        int mes = cal.get(Calendar.MONTH);
        int anio = cal.get(Calendar.YEAR);
        String diaDelMes = String.valueOf(mes + 1) + String.valueOf(anio);
        return (diaDelMes);
    }

    private void imprimirRegistro(String input) throws IOException {
        content.beginText();
        content.setFont(PDType1Font.HELVETICA, 16);
        content.moveTextPositionByAmount(80, 650);
        content.drawString(input);
        content.endText();
    }

    private Date getUltimoMes() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -1);
        DateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");
        Date resultado = cal.getTime();
        sdf.format(resultado);
        return resultado;
    }

}