Almacen.formatosAlmacen.java Source code

Java tutorial

Introduction

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

    Herramientas h;
    String sessionPrograma = "";
    Usuario usr;
    Almacen miAlmacen;

    public formatosAlmacen(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)
                ord = mov[0].getPartida().getOrdenByIdOrden();
            //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, 50, 50 };
            PdfPTable tabla = reporte.crearTabla(8, tam, 100, Element.ALIGN_LEFT);

            cabeceraCompra(reporte, bf, tabla, miAlmacen, ord);

            int ren = 0;
            double total = 0d;
            if (mov.length > 0) {
                for (int i = 0; i < mov.length; i++) {
                    int r = i + 1;
                    //N
                    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) {
                        //No de parte
                        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));

                    //Descripcion
                    tabla.addCell(reporte.celda(mov[i].getPartida().getCatalogo().getNombre(), font, contenido,
                            izquierda, 0, 1, Rectangle.RECTANGLE));

                    //med
                    tabla.addCell(reporte.celda(mov[i].getPartida().getMed(), font, contenido, izquierda, 0, 1,
                            Rectangle.RECTANGLE));

                    //cant 
                    tabla.addCell(reporte.celda(formatoPorcentaje.format(mov[i].getCantidad()), font, contenido,
                            derecha, 0, 1, Rectangle.RECTANGLE));

                    tabla.addCell(reporte.celda(formatoPorcentaje.format(mov[i].getPartida().getPcp()), font,
                            contenido, derecha, 0, 1, Rectangle.RECTANGLE));

                    double sum = mov[i].getCantidad() * mov[i].getPartida().getPcp();
                    total += sum;
                    tabla.addCell(reporte.celda(formatoPorcentaje.format(sum), font, contenido, derecha, 0, 1,
                            Rectangle.RECTANGLE));

                    if (ren == 38) {
                        reporte.agregaObjeto(tabla);
                        reporte.writer.newPage();
                        tabla = reporte.crearTabla(8, tam, 100, Element.ALIGN_LEFT);
                        cabeceraCompra(reporte, bf, tabla, miAlmacen, ord);
                        ren = -1;
                    }
                    ren++;
                }
            }
            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));
            if (miAlmacen.getTipoMovimiento() == 1)
                tabla.addCell(reporte.celda("Entrego: " + miAlmacen.getEntrego(), font, contenido, izquierda, 3, 1,
                        Rectangle.NO_BORDER));
            else
                tabla.addCell(reporte.celda("recibi:" + miAlmacen.getEntrego(), font, contenido, izquierda, 3, 1,
                        Rectangle.NO_BORDER));
            tabla.addCell(reporte.celda("Sub-total:", font, contenido, derecha, 4, 1, Rectangle.NO_BORDER));
            tabla.addCell(reporte.celda(formatoPorcentaje.format(total), font, contenido, derecha, 0, 1,
                    Rectangle.RECTANGLE));
            tabla.addCell(reporte.celda("IVA:", font, contenido, derecha, 7, 1, Rectangle.NO_BORDER));
            double iva = total * 0.16d;
            tabla.addCell(reporte.celda(formatoPorcentaje.format(iva), font, contenido, derecha, 0, 1,
                    Rectangle.RECTANGLE));
            tabla.addCell(reporte.celda("Total:", font, contenido, derecha, 7, 1, Rectangle.NO_BORDER));
            total += iva;
            tabla.addCell(reporte.celda(formatoPorcentaje.format(total), font, contenido, derecha, 0, 1,
                    Rectangle.RECTANGLE));
            session.beginTransaction().rollback();

            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));
            if (almacen.getPedido() != null) {
                reporte.contenido.roundRectangle(35, 695, 180, 10, 0);
                reporte.contenido.roundRectangle(35, 625, 180, 80, 0);

                reporte.contenido.roundRectangle(215, 695, 180, 10, 0);
                reporte.contenido.roundRectangle(215, 625, 180, 80, 0);
            }
            reporte.contenido.roundRectangle(395, 695, 180, 10, 0);
            reporte.contenido.roundRectangle(395, 625, 180, 80, 0);

            reporte.inicioTexto();
            reporte.contenido.setFontAndSize(bf, 13);
            reporte.contenido.setColorFill(BaseColor.BLACK);
            reporte.agregaObjeto(reporte.crearImagen("imagenes/grande300115.jpg", 30, -40, 60));
            reporte.contenido.setFontAndSize(bf, 12);
            reporte.contenido.setColorFill(BaseColor.BLACK);
            if (almacen.getPedido() != null)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Movimiento en almacen: "
                        + almacen.getIdAlmacen() + " Pedido:" + almacen.getPedido().getIdPedido(), 35, 710, 0);
            else
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                        "Movimiento en almacen: " + almacen.getIdAlmacen(), 35, 710, 0);
            reporte.contenido.setFontAndSize(bf, 7);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_RIGHT,
                    "Fecha:" + new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date()), 570, 710, 0);

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

            //************************datos del proveedor****************************
            if (almacen.getPedido() != null) {
                DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");//YYYY-MM-DD HH:MM:SS
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "DATOS DEL PROVEEDOR", 73, 697, 0);

                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                        almacen.getPedido().getProveedorByIdProveedor().getNombre(), 40, 687, 0);

                if (almacen.getPedido().getProveedorByIdProveedor().getDireccion() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            almacen.getPedido().getProveedorByIdProveedor().getDireccion(), 40, 677, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Dir:", 40, 677, 0);

                if (almacen.getPedido().getProveedorByIdProveedor().getColonia() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Col: " + almacen.getPedido().getProveedorByIdProveedor().getColonia(), 40, 667, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Col:", 40, 667, 0);

                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                        "Edo: " + almacen.getPedido().getProveedorByIdProveedor().getEstado(), 40, 657, 0);

                if (almacen.getPedido().getProveedorByIdProveedor().getTel1() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Tel: " + almacen.getPedido().getProveedorByIdProveedor().getTel1(), 40, 647, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tel:", 40, 647, 0);

                if (almacen.getPedido().getProveedorByIdProveedor().getTel1() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Cto: " + almacen.getPedido().getProveedorByIdProveedor().getRepresentante(), 40, 637,
                            0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Cto:", 40, 637, 0);

                if (almacen.getPedido().getProveedorByIdProveedor().getEmail() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Email: " + almacen.getPedido().getProveedorByIdProveedor().getEmail(), 40, 627, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Email: ", 40, 627, 0);

                //**********************datos de facturacion*****************************
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "DATOS DE FACTURACIN", 250, 697, 0);
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                        almacen.getPedido().getProveedorByIdEmpresa().getNombre(), 220, 687, 0);
                if (almacen.getPedido().getProveedorByIdEmpresa().getDireccion() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            almacen.getPedido().getProveedorByIdEmpresa().getDireccion(), 220, 677, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Dir:", 220, 677, 0);
                if (almacen.getPedido().getProveedorByIdEmpresa().getColonia() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Col: " + almacen.getPedido().getProveedorByIdEmpresa().getColonia(), 220, 667, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Col:", 220, 667, 0);
                if (almacen.getPedido().getProveedorByIdEmpresa().getPoblacion() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "Pob: " + almacen.getPedido().getProveedorByIdEmpresa().getPoblacion(), 220, 657, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Pob:", 220, 657, 0);
                if (almacen.getPedido().getProveedorByIdEmpresa().getCp() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "CP: " + almacen.getPedido().getProveedorByIdEmpresa().getCp(), 220, 647, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "CP:", 220, 647, 0);
                if (almacen.getPedido().getProveedorByIdEmpresa().getRfc() != null)
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                            "RFC: " + almacen.getPedido().getProveedorByIdEmpresa().getRfc(), 220, 637, 0);
                else
                    reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "RFC:", 220, 537, 0);
            }
            //**********************datos de la unidad*****************************
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "DATOS LA UNIDAD", 450, 697, 0);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "No Orden: " + ord.getIdOrden(), 410, 687,
                    0);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Tipo: " + ord.getTipo().getTipoNombre(),
                    410, 677, 0);
            if (ord.getNoSerie() != null)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "No Serie: " + ord.getNoSerie(), 410,
                        667, 0);
            else
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "No Serie: ", 410, 667, 0);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Modelo: " + ord.getModelo(), 410, 657, 0);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT,
                    "Compaia: " + ord.getCompania().getNombre(), 410, 647, 0);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Cli:" + ord.getClientes().getNombre(),
                    410, 637, 0);
            if (ord.getSiniestro() != null)
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "No Siniestro:" + ord.getSiniestro(),
                        410, 627, 0);
            else
                reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "No Siniestro:", 410, 627, 0);

            reporte.finTexto();
            reporte.contenido.setFontAndSize(bf, 12);
            //agregamos renglones vacios para dejar un espacio
            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(" "));

            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));
            tabla.addCell(reporte.celda("Costo c/u", font, cabecera, centro, 0, 1, Rectangle.RECTANGLE));
            tabla.addCell(reporte.celda("Total", font, cabecera, centro, 0, 1, Rectangle.RECTANGLE));

            reporte.contenido.roundRectangle(50, 40, 180, 1, 0);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Almacen", 120, 30, 0);
            reporte.contenido.roundRectangle(370, 40, 180, 1, 0);
            reporte.contenido.showTextAligned(PdfContentByte.ALIGN_LEFT, "Proveedor", 440, 30, 0);
        } catch (Exception e) {
            System.out.println(e);
        }
        if (session != null)
            if (session.isOpen())
                session.close();
    }
}