Almacen.formatosOrden.java Source code

Java tutorial

Introduction

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

import Hibernate.Util.HibernateUtil;
import Hibernate.entidades.Almacen;
import Hibernate.entidades.Movimiento;
import Hibernate.entidades.Orden;
import Hibernate.entidades.Usuario;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.GrayColor;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPTable;
import java.io.File;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import Integral.Herramientas;
import Integral.PDF;

/**
 *
 * @author salvador
 */
public class formatosOrden {
    Herramientas h;
    String sessionPrograma = "";
    Usuario usr;
    Almacen miAlmacen;

    public formatosOrden(Usuario u, String ses, Almacen al) {
        sessionPrograma = ses;
        usr = u;
        miAlmacen = al;
    }

    void formato() {
        h = new Herramientas(usr, 0);
        h.session(sessionPrograma);
        Session session = HibernateUtil.getSessionFactory().openSession();
        try {
            miAlmacen = (Almacen) session.get(Almacen.class, miAlmacen.getIdAlmacen());
            DecimalFormat formatoPorcentaje = new DecimalFormat("#,##0.00");
            formatoPorcentaje.setMinimumFractionDigits(2);

            session.beginTransaction().begin();
            BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
            PDF reporte = new PDF();
            Date fecha = new Date();
            DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyyHH-mm-ss");//YYYY-MM-DD HH:MM:SS
            String valor = dateFormat.format(fecha);
            Movimiento[] mov = (Movimiento[]) session.createCriteria(Movimiento.class)
                    .add(Restrictions.eq("almacen.idAlmacen", miAlmacen.getIdAlmacen())).list()
                    .toArray(new Movimiento[0]);
            Orden ord = null;
            if (mov.length > 0) {
                if (mov[0].getPartida() != null) {
                    ord = mov[0].getPartida().getOrdenByIdOrden();
                } else {
                    ord = mov[0].getPartidaExterna().getPedido().getOrden();
                    //ord=miAlmacen.getPedido().getPartida().getOrdenByIdOrden();
                    //ord=mov[0].getOrden();
                }
            }
            File folder = new File("reportes/" + ord.getIdOrden());
            folder.mkdirs();
            reporte.Abrir(PageSize.LETTER, "Almacen",
                    "reportes/" + ord.getIdOrden() + "/" + valor + "-" + miAlmacen.getIdAlmacen() + "-almacen.pdf");
            Font font = new Font(Font.FontFamily.HELVETICA, 6, Font.BOLD);
            BaseColor contenido = BaseColor.WHITE;
            int centro = Element.ALIGN_CENTER;
            int izquierda = Element.ALIGN_LEFT;
            int derecha = Element.ALIGN_RIGHT;
            float tam[] = new float[] { 20, 20, 80, 190, 20, 30 };
            PdfPTable tabla = reporte.crearTabla(6, tam, 100, Element.ALIGN_LEFT);
            cabeceraCompra(reporte, bf, tabla, miAlmacen, ord);
            int ren = 0;
            double total = 0d;
            if (mov.length > 0) {
                int renglon = 0;
                for (int i = 0; i < mov.length; i++) {
                    int r = i + 1;
                    renglon++;
                    if (mov[i].getPartida() != null) {
                        tabla.addCell(reporte.celda("" + mov[i].getPartida().getIdEvaluacion(), font, contenido,
                                izquierda, 0, 1, Rectangle.RECTANGLE));
                        tabla.addCell(reporte.celda("" + mov[i].getPartida().getSubPartida(), font, contenido,
                                derecha, 0, 1, Rectangle.RECTANGLE));
                        if (mov[i].getPartida().getEjemplar() != null)
                            tabla.addCell(reporte.celda("" + mov[i].getPartida().getEjemplar().getIdParte(), font,
                                    contenido, derecha, 0, 1, Rectangle.RECTANGLE));
                        else
                            tabla.addCell(reporte.celda(" ", font, contenido, derecha, 0, 1, Rectangle.RECTANGLE));
                        tabla.addCell(reporte.celda(mov[i].getPartida().getCatalogo().getNombre(), font, contenido,
                                izquierda, 0, 1, Rectangle.RECTANGLE));
                        tabla.addCell(reporte.celda(mov[i].getPartida().getMed(), font, contenido, izquierda, 0, 1,
                                Rectangle.RECTANGLE));
                        tabla.addCell(reporte.celda(formatoPorcentaje.format(mov[i].getCantidad()), font, contenido,
                                derecha, 0, 1, Rectangle.RECTANGLE));
                    } else {
                        tabla.addCell(reporte.celda("-", font, contenido, izquierda, 0, 1, Rectangle.RECTANGLE));
                        tabla.addCell(reporte.celda("", font, contenido, derecha, 0, 1, Rectangle.RECTANGLE));
                        if (mov[i].getPartidaExterna().getNoParte() != null)
                            tabla.addCell(reporte.celda(mov[i].getPartidaExterna().getNoParte(), font, contenido,
                                    derecha, 0, 1, Rectangle.RECTANGLE));
                        else
                            tabla.addCell(reporte.celda(" ", font, contenido, derecha, 0, 1, Rectangle.RECTANGLE));
                        tabla.addCell(reporte.celda(mov[i].getPartidaExterna().getDescripcion(), font, contenido,
                                izquierda, 0, 1, Rectangle.RECTANGLE));
                        tabla.addCell(reporte.celda(mov[i].getPartidaExterna().getUnidad(), font, contenido,
                                izquierda, 0, 1, Rectangle.RECTANGLE));
                        tabla.addCell(reporte.celda(formatoPorcentaje.format(mov[i].getCantidad()), font, contenido,
                                derecha, 0, 1, Rectangle.RECTANGLE));
                    }
                    if (ren == 20)//20
                    {
                        reporte.writer.newPage();
                        reporte.agregaObjeto(tabla);
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(tabla);
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));
                        reporte.agregaObjeto(new Paragraph(" "));

                        tabla = reporte.crearTabla(6, tam, 100, Element.ALIGN_LEFT);
                        cabeceraCompra(reporte, bf, tabla, miAlmacen, ord);
                        ren = -1;
                        renglon = 0;
                    }
                    ren++;
                }
                for (renglon = renglon; renglon < 20; renglon++) {
                    tabla.addCell(reporte.celda(" ", font, contenido, izquierda, 0, 1, Rectangle.RECTANGLE));
                    tabla.addCell(reporte.celda(" ", font, contenido, derecha, 0, 1, Rectangle.RECTANGLE));
                    tabla.addCell(reporte.celda(" ", font, contenido, derecha, 0, 1, Rectangle.RECTANGLE));
                    tabla.addCell(reporte.celda(" ", font, contenido, izquierda, 0, 1, Rectangle.RECTANGLE));
                    tabla.addCell(reporte.celda(" ", font, contenido, izquierda, 0, 1, Rectangle.RECTANGLE));
                    tabla.addCell(reporte.celda(" ", font, contenido, derecha, 0, 1, Rectangle.RECTANGLE));
                }
            }
            tabla.addCell(reporte.celda("Notas: ", font, contenido, izquierda, 0, 1, Rectangle.BOTTOM));
            tabla.addCell(reporte.celda(miAlmacen.getNotas(), font, contenido, izquierda, 7, 1, Rectangle.BOTTOM));
            session.beginTransaction().rollback();

            reporte.agregaObjeto(tabla);
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(tabla);
            reporte.cerrar();
            reporte.visualizar(
                    "reportes/" + ord.getIdOrden() + "/" + valor + "-" + miAlmacen.getIdAlmacen() + "-almacen.pdf");
        } catch (Exception e) {
            System.out.println(e);
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "No se pudo realizar el reporte si el archivo esta abierto");
        }
        if (session != null)
            if (session.isOpen())
                session.close();
    }

    private void cabeceraCompra(PDF reporte, BaseFont bf, PdfPTable tabla, Almacen almacen, Orden ord) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        try {
            reporte.contenido.setLineWidth(0.5f);
            reporte.contenido.setColorStroke(new GrayColor(0.2f));
            reporte.contenido.setColorFill(new GrayColor(0.9f));
            reporte.contenido.roundRectangle(35, 755, 280, 10, 0);
            reporte.contenido.roundRectangle(35, 735, 280, 20, 0);
            ////*2
            reporte.contenido.roundRectangle(35, 388, 280, 10, 0);
            reporte.contenido.roundRectangle(35, 368, 280, 20, 0);
            ////         
            reporte.inicioTexto();
            reporte.contenido.setFontAndSize(bf, 13);
            reporte.contenido.setColorFill(BaseColor.BLACK);
            reporte.agregaObjeto(reporte.crearImagen("imagenes/grande300115.jpg", 335, -23, 30));
            /*2*/reporte.agregarImagen(reporte.crearImagen("imagenes/grande300115.jpg", 100, -390, 30));
            reporte.contenido.setFontAndSize(bf, 12);
            reporte.contenido.setColorFill(BaseColor.BLACK);
            if (miAlmacen.getTipoMovimiento() == 1) {
                if (miAlmacen.getOperacion() == 4)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Movimientos en Almacn (Entrada de Material): " + almacen.getIdAlmacen(), 35, 767, 0);
                if (miAlmacen.getOperacion() == 5)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Movimientos de Almacn (Devolucin de material de operarios): "
                                    + almacen.getIdAlmacen(),
                            35, 767, 0);
                //*********2
                if (miAlmacen.getOperacion() == 4)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Movimientos en Almacn (Entrada de Material): " + almacen.getIdAlmacen(), 35, 400, 0);
                if (miAlmacen.getOperacion() == 5)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Movimientos de Almacn (Devolucin de material de operarios): "
                                    + almacen.getIdAlmacen(),
                            35, 400, 0);
                ////
            } else {
                if (miAlmacen.getOperacion() == 4)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Movimiento de Almacn (Devolucin de material a proveedor): "
                                    + almacen.getIdAlmacen(),
                            35, 767, 0);
                if (miAlmacen.getOperacion() == 5)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Movimientos de Almacn (Entrega de material a operarios): " + almacen.getIdAlmacen(),
                            35, 767, 0);
                //*********2
                if (miAlmacen.getOperacion() == 4)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Movimiento de Almacn (Devolucin de material a proveedor): "
                                    + almacen.getIdAlmacen(),
                            35, 400, 0);
                if (miAlmacen.getOperacion() == 5)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Movimientos de Almacn (Entrega de material a operarios): " + almacen.getIdAlmacen(),
                            35, 400, 0);
                ///
            }

            reporte.contenido.setFontAndSize(bf, 7);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_RIGHT,
                    "Fecha:" + new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date()), 306, 757, 0);
            /*2*/reporte.contenido.showTextAligned(PdfContentByte.ALIGN_RIGHT,
                    "Fecha:" + new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date()), 306, 390, 0);

            ord = (Orden) session.get(Orden.class, ord.getIdOrden());

            //************************datos de movimiento****************************
            DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");//YYYY-MM-DD HH:MM:SS
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Materiales y Refacciones del Almacn",
                    40, 757, 0);
            /*2*/reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                    "Materiales y Refacciones del Almacn", 40, 390, 0);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                    "N. Movimiento: " + almacen.getIdAlmacen(), 40, 747, 0);
            /*2*/ reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                    "N. Movimiento: " + almacen.getIdAlmacen(), 40, 380, 0);
            if (almacen.getTipoMovimiento() == 1)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo de Movimiento : Entrada", 120,
                        747, 0);
            else
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo de Movimiento : Salida", 120,
                        747, 0);
            ////**2
            if (almacen.getTipoMovimiento() == 1)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo de Movimiento : Entrada", 120,
                        380, 0);
            else
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo de Movimiento : Salida", 120,
                        380, 0);
            ////

            if (almacen.getOperacion() == 4)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo de Operacin : Compaa", 220,
                        747, 0);
            if (almacen.getOperacion() == 5)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo de Operacin : Operarios", 220,
                        747, 0);

            ////**2
            if (almacen.getOperacion() == 4)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo de Operacin : Compaa", 220,
                        380, 0);
            if (almacen.getOperacion() == 5)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo de Operacin : Operarios", 220,
                        380, 0);
            ////

            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "N. Orden: " + ord.getIdOrden(), 40, 737,
                    0);
            /*2*/ reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "N. Orden: " + ord.getIdOrden(),
                    40, 370, 0);

            //Firmas de material 
            if (miAlmacen.getTipoMovimiento() == 1) {
                reporte.contenido.roundRectangle(45, 450, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "ENTREGA: " + almacen.getEntrego(), 45,
                        440, 0);
                reporte.contenido.roundRectangle(250, 450, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "AUTORIZA: ", 250, 440, 0);
                reporte.contenido.roundRectangle(440, 450, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                        "RECIBE: " + almacen.getUsuario().getEmpleado().getNombre(), 440, 440, 0);
            } else {
                reporte.contenido.roundRectangle(45, 450, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                        "ENTREGA: " + almacen.getUsuario().getEmpleado().getNombre(), 45, 440, 0);
                reporte.contenido.roundRectangle(250, 450, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "AUTORIZA: ", 250, 440, 0);
                reporte.contenido.roundRectangle(440, 450, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "RECIBE: " + almacen.getEntrego(), 440,
                        440, 0);
            }

            /*2*/if (miAlmacen.getTipoMovimiento() == 1) {
                reporte.contenido.roundRectangle(45, 30, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "ENTREGA: " + almacen.getEntrego(), 45,
                        20, 0);
                reporte.contenido.roundRectangle(250, 30, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "AUTORIZA: ", 250, 20, 0);
                reporte.contenido.roundRectangle(440, 30, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                        "RECIBE: " + almacen.getUsuario().getEmpleado().getNombre(), 440, 20, 0);
            } else {
                reporte.contenido.roundRectangle(45, 30, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                        "ENTREGA: " + almacen.getUsuario().getEmpleado().getNombre(), 45, 20, 0);
                reporte.contenido.roundRectangle(250, 30, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "AUTORIZA: ", 250, 20, 0);
                reporte.contenido.roundRectangle(440, 30, 130, 1, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "RECIBE: " + almacen.getEntrego(), 440,
                        20, 0);
            }
            ///
            reporte.finTexto();
            reporte.contenido.setFontAndSize(bf, 12);
            //agregamos renglones vacios para dejar un espacio(tabla)
            reporte.agregaObjeto(new Paragraph(" "));
            reporte.agregaObjeto(new Paragraph(" "));

            Font font = new Font(Font.FontFamily.HELVETICA, 6, Font.BOLD);
            BaseColor cabecera = BaseColor.GRAY;
            int centro = Element.ALIGN_CENTER;

            tabla.addCell(reporte.celda("N", font, cabecera, centro, 0, 1, Rectangle.RECTANGLE));
            tabla.addCell(reporte.celda("#", font, cabecera, centro, 0, 1, Rectangle.RECTANGLE));
            tabla.addCell(reporte.celda("N Parte", font, cabecera, centro, 0, 1, Rectangle.RECTANGLE));
            tabla.addCell(reporte.celda("Descripcin", font, cabecera, centro, 0, 1, Rectangle.RECTANGLE));
            tabla.addCell(reporte.celda("Med", font, cabecera, centro, 0, 1, Rectangle.RECTANGLE));
            tabla.addCell(reporte.celda("Cant", font, cabecera, centro, 0, 1, Rectangle.RECTANGLE));
        } catch (Exception e) {
            System.out.println(e);
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "No se pudo realizar el reporte si el archivo esta abierto");
        }
        if (session != null)
            if (session.isOpen())
                session.close();
    }
}