com.tsp.gespro.bo.DegustacionBO.java Source code

Java tutorial

Introduction

Here is the source code for com.tsp.gespro.bo.DegustacionBO.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.tsp.gespro.bo;

import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
import com.tsp.gespro.dto.Cliente;
import com.tsp.gespro.dto.Concepto;
import com.tsp.gespro.dto.DatosUsuario;
import com.tsp.gespro.dto.Degustacion;
import com.tsp.gespro.dto.Marca;
import com.tsp.gespro.dto.Productosvendidos;
import com.tsp.gespro.dto.SgfensPedido;
import com.tsp.gespro.dto.SgfensPedidoProducto;
import com.tsp.gespro.jdbc.DegustacionDaoImpl;
import com.tsp.gespro.jdbc.MarcaDaoImpl;
import com.tsp.gespro.jdbc.ProductosvendidosDaoImpl;
import com.tsp.gespro.jdbc.SgfensPedidoProductoDaoImpl;
import com.tsp.gespro.pdf.PdfITextUtil;
import com.tsp.gespro.report.ReportBO;
import com.tsp.gespro.report.pdf.EventPDF;
import com.tsp.gespro.util.DateManage;
import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.sql.Connection;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;

/**
 *
 * @author HpPyme
 */
public class DegustacionBO {

    private Connection conn = null;
    private Degustacion degustacion = null;

    public Connection getConn() {
        return conn;
    }

    public void setConn(Connection conn) {
        this.conn = conn;
    }

    public Degustacion getDegustacion() {
        return degustacion;
    }

    public void setDegustacion(Degustacion degustacion) {
        this.degustacion = degustacion;
    }

    public DegustacionBO(Connection conn) {
        this.conn = conn;
    }

    public DegustacionBO(int idDegsutacion, Connection conn) {
        this.conn = conn;
        try {
            DegustacionDaoImpl MarcaDaoImpl = new DegustacionDaoImpl(this.conn);
            this.degustacion = MarcaDaoImpl.findByPrimaryKey(idDegsutacion);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Realiza una bsqueda por ID Marca en busca de
     * coincidencias
     * @param idDesgustacion ID Del Usuario para filtrar, -1 para mostrar todos los registros
     * @param idEmpresa ID de la Empresa a filtrar marcas, -1 para evitar filtro
     *  @param minLimit Limite inferior de la paginacin (Desde) 0 en caso de no existir limite inferior
     * @param maxLimit Limite superior de la paginacin (Hasta) 0 en caso de no existir limite superior
     * @param filtroBusqueda Cadena con un filtro de bsqueda personalizado
     * @return DTO Marca
     */
    public Degustacion[] findDegustaciones(int idDesgustacion, int idEmpresa, int minLimit, int maxLimit,
            String filtroBusqueda) {
        Degustacion[] degustacionDto = new Degustacion[0];
        DegustacionDaoImpl degustacionDao = new DegustacionDaoImpl(this.conn);
        try {
            String sqlFiltro = "";
            if (idDesgustacion > 0) {
                sqlFiltro = "ID_DEGUSTACION=" + idDesgustacion + " AND ";
            } else {
                sqlFiltro = "ID_DEGUSTACION>0 AND";
            }
            if (idEmpresa > 0) {
                sqlFiltro += " ID_EMPRESA IN (SELECT ID_EMPRESA FROM EMPRESA WHERE ID_EMPRESA_PADRE = " + idEmpresa
                        + " OR ID_EMPRESA= " + idEmpresa + ")";
            } else {
                sqlFiltro += " ID_EMPRESA>0";
            }

            if (!filtroBusqueda.trim().equals("")) {
                sqlFiltro += filtroBusqueda;
            }

            if (minLimit < 0)
                minLimit = 0;

            String sqlLimit = "";
            if ((minLimit > 0 && maxLimit > 0) || (minLimit == 0 && maxLimit > 0))
                sqlLimit = " LIMIT " + minLimit + "," + maxLimit;

            degustacionDto = degustacionDao
                    .findByDynamicWhere(sqlFiltro + " ORDER BY ID_DEGUSTACION DESC" + sqlLimit, new Object[0]);

        } catch (Exception ex) {
            System.out.println("Error de consulta a Base de Datos: " + ex.toString());
            ex.printStackTrace();
        }

        return degustacionDto;
    }

    public Degustacion findDegustacionbyId(int idDegustacion) throws Exception {
        Degustacion Degustacion = null;

        try {
            DegustacionDaoImpl DegustacionDaoImpl = new DegustacionDaoImpl(this.conn);
            Degustacion = DegustacionDaoImpl.findByPrimaryKey(idDegustacion);
            if (Degustacion == null) {
                throw new Exception(
                        "No se encontro ninguna Marca que corresponda con los parmetros especficados.");
            }
            if (Degustacion.getIdDegustacion() <= 0) {
                throw new Exception(
                        "No se encontro ninguna Marca que corresponda con los parmetros especficados.");
            }
        } catch (Exception e) {
            throw new Exception(
                    "Ocurri un error inesperado mientras se intentaba recuperar la informacin de la Marca del usuario. Error: "
                            + e.getMessage());
        }

        return Degustacion;
    }

    /**
     * Representacin impresa PDF
     */
    public ByteArrayOutputStream toPdf(UsuarioBO user) throws Exception {

        SimpleDateFormat fecha = new SimpleDateFormat("dd/MM/yyyy");
        SimpleDateFormat hora = new SimpleDateFormat("HH:mm:ss");
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        PdfITextUtil obj = new PdfITextUtil();

        //Tamao de documento (Tamao Carta)
        com.lowagie.text.Document doc = new com.lowagie.text.Document(PageSize.LETTER);

        //Definicin de Fuentes a usar
        Font letraOcho = new Font(Font.HELVETICA, 8, Font.NORMAL);
        Font letraOchoBold = new Font(Font.HELVETICA, 8, Font.BOLD);
        Font letraNueve = new Font(Font.HELVETICA, 9, Font.NORMAL);
        Font letraNueveBold = new Font(Font.HELVETICA, 9, Font.BOLD);
        Font letraNueveBoldRojo = new Font(Font.TIMES_ROMAN, 9, Font.BOLD, Color.red);
        Font letraNueveBoldAzul = new Font(Font.TIMES_ROMAN, 9, Font.BOLD, Color.blue);
        Font letraOchoVerde = new Font(Font.TIMES_ROMAN, 8, Font.NORMAL, Color.green);
        Font letra14Bold = new Font(Font.HELVETICA, 14, Font.BOLD);

        String msgError = "";

        File fileImageLogo = null;
        try {
            if (user != null)
                fileImageLogo = new ImagenPersonalBO(this.conn)
                        .getFileImagenPersonalByEmpresa(user.getUser().getIdEmpresa());
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        try {
            //Preparamos writer de PDF
            PdfWriter writer = PdfWriter.getInstance(doc, baos);
            EventPDF eventPDF = new EventPDF(doc, user, ReportBO.DEGUSTACION_REPRESENTACION_IMPRESA, fileImageLogo);
            writer.setPageEvent(eventPDF);

            //Ajustamos margenes de pgina
            //doc.setMargins(50, 50, 120, 50);
            //doc.setMargins(20, 20, 80, 20);
            doc.setMargins(10, 10, 150, 40);

            //Iniciamos documento
            doc.open();

            //Creamos tabla principal
            PdfPTable mainTable = new PdfPTable(1);
            mainTable.setTotalWidth(550);
            mainTable.setLockedWidth(true);

            //CONTENIDO -------------

            //SALTO DE L?NEA
            obj.agregaCelda(mainTable, letraOcho, " ", new boolean[] { false, false, false, false },
                    Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0, new int[0], 1);

            //Cabecera (Datos Generales)---------------------
            PdfPTable tAux = new PdfPTable(1);

            Cliente clienteDto = null;
            DatosUsuario datosUsuarioVendedor = null;

            try {
                if (this.degustacion.getIdCliente() > 0)
                    clienteDto = new ClienteBO(this.degustacion.getIdCliente(), this.conn).getCliente();
                if (this.degustacion.getIdUsuario() > 0)
                    datosUsuarioVendedor = new UsuarioBO(this.degustacion.getIdUsuario()).getDatosUsuario();
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            //Datos informativos generales
            PdfPTable tInfoGeneral = new PdfPTable(1);
            tInfoGeneral.setTotalWidth(160);
            tInfoGeneral.setLockedWidth(true);

            obj.agregaCelda(tInfoGeneral, letraNueveBold, Color.lightGray, "ID Degustacin",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0,
                    new int[0], 1);
            obj.agregaCelda(tInfoGeneral, letraNueveBoldRojo, "" + this.degustacion.getIdDegustacion(),
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0,
                    new int[0], 1);

            obj.agregaCelda(tInfoGeneral, letraNueveBold, Color.lightGray, "Fecha Degustacin",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0,
                    new int[0], 1);
            obj.agregaCelda(tInfoGeneral, letraNueve,
                    DateManage.dateToStringEspanol(this.degustacion.getFechaApertura()),
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0,
                    new int[0], 1);
            obj.agregaCelda(tInfoGeneral, letraNueveBold, Color.lightGray, "Promotor",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0,
                    new int[0], 1);
            obj.agregaCelda(tInfoGeneral, letraNueve,
                    datosUsuarioVendedor != null
                            ? (datosUsuarioVendedor.getNombre() + " " + datosUsuarioVendedor.getApellidoPat())
                            : "Sin vendedor asignado",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0,
                    new int[0], 1);

            //Pintamos datos informativos Generales en la esquina superior derecha
            PdfContentByte cb = writer.getDirectContent();
            tInfoGeneral.writeSelectedRows(0, -1, doc.right() - 180, doc.top() + 100, cb);

            //Datos de Cliente/Prospecto
            PdfPTable tCliente = new PdfPTable(2);
            tCliente.setTotalWidth(550);
            tCliente.setLockedWidth(true);

            obj.agregaCelda(tCliente, letraNueveBold, Color.lightGray, "Cliente",
                    new boolean[] { false, false, false, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0,
                    new int[0], 2);

            tAux = new PdfPTable(1);
            tAux.setTotalWidth(275);
            tAux.setLockedWidth(true);

            try {
                obj.agregaCelda(tAux, letraOcho,
                        "Nombre Comercial: " + (clienteDto != null ? clienteDto.getNombreComercial() : ""),
                        new boolean[] { false, true, false, false }, Element.ALIGN_LEFT, Element.ALIGN_TOP, 0,
                        new int[0], 1);
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            obj.agregaTabla(tCliente, tAux, new boolean[] { false, false, false, false }, Element.ALIGN_LEFT,
                    Element.ALIGN_TOP, 0, new int[0], 1);

            obj.agregaCelda(tCliente, letraOcho,
                    "" + "DOMICILIO: \n" + (clienteDto != null ? "Calle: " + clienteDto.getCalle() : "") + " "
                            + (clienteDto != null ? clienteDto.getNumero() : "") + " "
                            + (clienteDto != null ? clienteDto.getNumeroInterior() : "")
                            + (clienteDto != null ? " Col: " + clienteDto.getColonia() : "")
                            + (clienteDto != null ? " \nDeleg./Municipio: " + clienteDto.getMunicipio() : "")
                            + (clienteDto != null ? " Estado: " + clienteDto.getEstado() : "")
                            + (clienteDto != null ? " \nC.P. " + clienteDto.getCodigoPostal() : ""),
                    new boolean[] { false, true, false, true }, Element.ALIGN_LEFT, Element.ALIGN_TOP, 0,
                    new int[0], 1);

            obj.agregaTabla(mainTable, tCliente, new boolean[] { true, true, true, true }, Element.ALIGN_CENTER,
                    Element.ALIGN_TOP, 0, new int[0], 1);

            //FIN Cabecera (Datos Generales)-----------------

            //DOBLE SALTO DE L?NEA
            obj.agregaCelda(mainTable, letraOcho, null, " ", new boolean[] { false, false, false, false },
                    Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0, new int[0], 1);
            obj.agregaCelda(mainTable, letraOcho, null, " ", new boolean[] { false, false, false, false },
                    Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0, new int[0], 1);

            int colsDetalles = 6;
            PdfPTable tDetalles = new PdfPTable(colsDetalles);//6);
            tDetalles.setTotalWidth(550);
            tDetalles.setWidths(new int[] { 200, 70, 70, 70, 70, 70 });
            tDetalles.setLockedWidth(true);

            /*CABECERA*/
            obj.agregaCelda(tDetalles, letraNueveBold, Color.lightGray, "Producto Degustado",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 1);
            obj.agregaCelda(tDetalles, letraNueveBold, Color.lightGray, "Hr Inicio",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 1);
            obj.agregaCelda(tDetalles, letraNueveBold, Color.lightGray, "Hr Termino",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 1);
            obj.agregaCelda(tDetalles, letraNueveBold, Color.lightGray, "Inventario Inicial",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 1);
            obj.agregaCelda(tDetalles, letraNueveBold, Color.lightGray, "Inventario Final",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 1);
            obj.agregaCelda(tDetalles, letraNueveBold, Color.lightGray, "Piezas Degustadas",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 1);

            /*FIN DE CABECERA*/
            Degustacion[] degustacionDtos = new Degustacion[0];
            try {
                degustacionDtos = this.findDegustaciones(this.degustacion.getIdDegustacion(),
                        this.degustacion.getIdEmpresa(), -1, -1, "");
            } catch (Exception e) {
            }

            //Listado de Productos
            for (Degustacion item : degustacionDtos) {

                if (item != null) {

                    Concepto conceptoDto = null;

                    try {
                        ConceptoBO conceptoBO = new ConceptoBO(item.getIdConcepto(), this.conn);
                        conceptoDto = conceptoBO.getConcepto();
                    } catch (Exception e) {
                    }

                    //Producto
                    obj.agregaCelda(tDetalles, letraOcho, null, conceptoDto.getNombreDesencriptado(),
                            new boolean[] { true, true, true, true }, Element.ALIGN_JUSTIFIED, Element.ALIGN_TOP,
                            15, new int[] { 5, 5, 5, 5 }, 1);

                    //Inicio
                    obj.agregaCelda(tDetalles, letraOcho, null, hora.format(item.getFechaApertura()),
                            new boolean[] { true, true, true, true }, Element.ALIGN_JUSTIFIED, Element.ALIGN_TOP,
                            15, new int[] { 5, 5, 5, 5 }, 1);

                    //Termino
                    obj.agregaCelda(tDetalles, letraOcho, null, hora.format(item.getFechaCierre()),
                            new boolean[] { true, true, true, true }, Element.ALIGN_RIGHT, Element.ALIGN_TOP, 15,
                            new int[] { 5, 5, 5, 5 }, 1);

                    //Inv inicial 
                    obj.agregaCelda(tDetalles, letraOcho, null, "" + (item.getCantidad()),
                            new boolean[] { true, true, true, true }, Element.ALIGN_RIGHT, Element.ALIGN_TOP, 15,
                            new int[] { 5, 5, 5, 5 }, 1);

                    //inv final 
                    obj.agregaCelda(tDetalles, letraOcho, null, "" + (item.getCantidadCierre()),
                            new boolean[] { true, true, true, true }, Element.ALIGN_RIGHT, Element.ALIGN_TOP, 15,
                            new int[] { 5, 5, 5, 5 }, 1);

                    //Piezas 
                    obj.agregaCelda(tDetalles, letraOcho, null,
                            "" + (item.getCantidad() - item.getCantidadCierre()),
                            new boolean[] { true, true, true, true }, Element.ALIGN_RIGHT, Element.ALIGN_TOP, 15,
                            new int[] { 5, 5, 5, 5 }, 1);

                }
            }

            obj.agregaTabla(mainTable, tDetalles, new boolean[] { false, false, false, false },
                    Element.ALIGN_CENTER, Element.ALIGN_TOP, 0, new int[0], 1);

            //DOBLE SALTO DE L?NEA
            obj.agregaCelda(mainTable, letraOcho, null, " ", new boolean[] { false, false, false, false },
                    Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0, new int[0], 1);
            obj.agregaCelda(mainTable, letraOcho, null, " ", new boolean[] { false, false, false, false },
                    Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0, new int[0], 1);

            /*prods Vendidos durante degustacion*/

            PdfPTable tVenta = new PdfPTable(4);
            tVenta.setTotalWidth(550);
            tVenta.setWidths(new int[] { 70, 140, 170, 120 });
            tVenta.setLockedWidth(true);

            obj.agregaCelda(tVenta, letraNueveBold, Color.lightGray, "Producto Vendido durante Degutacin",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 4);

            Productosvendidos[] pedidoProductoDto = new Productosvendidos[0];

            String filtroBusqueda = " ID_PEDIDO IN ( SELECT ID_PEDIDO FROM sgfens_pedido WHERE ID_EMPRESA = '"
                    + this.degustacion.getIdEmpresa() + "' AND ID_TIPO_PEDIDO = 2 AND ID_USUARIO_VENDEDOR = "
                    + this.degustacion.getIdUsuario() + " AND " + " ID_ESTATUS_PEDIDO<>2 AND FECHA_PEDIDO BETWEEN '"
                    + this.degustacion.getFechaApertura() + "'  AND '" + this.degustacion.getFechaCierre() + "') ";

            try {
                pedidoProductoDto = new ProductosvendidosDaoImpl().findByDynamicWhere(filtroBusqueda, null);
            } catch (Exception e) {
            }

            if (pedidoProductoDto.length > 0) {

                obj.agregaCelda(tVenta, letraOchoBold, null, "Cdigo", new boolean[] { true, true, true, true },
                        Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15, new int[] { 5, 5, 5, 5 }, 1);
                obj.agregaCelda(tVenta, letraOchoBold, null, "Nombre", new boolean[] { true, true, true, true },
                        Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15, new int[] { 5, 5, 5, 5 }, 1);
                obj.agregaCelda(tVenta, letraOchoBold, null, "Descripcin",
                        new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                        new int[] { 5, 5, 5, 5 }, 1);
                obj.agregaCelda(tVenta, letraOchoBold, null, "Unidades Vendidas",
                        new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                        new int[] { 5, 5, 5, 5 }, 1);

                for (Productosvendidos pedidoProd : pedidoProductoDto) {

                    if (pedidoProd != null) {

                        Concepto conceptoDto = null;
                        try {
                            ConceptoBO conceptoBO = new ConceptoBO(pedidoProd.getIdConcepto(), this.conn);
                            conceptoDto = conceptoBO.getConcepto();
                        } catch (Exception e) {
                        }

                        //Cdigo
                        obj.agregaCelda(tVenta, letraOcho, null, conceptoDto.getIdentificacion(),
                                new boolean[] { true, true, true, true }, Element.ALIGN_JUSTIFIED,
                                Element.ALIGN_TOP, 15, new int[] { 5, 5, 5, 5 }, 1);

                        //Nombre
                        obj.agregaCelda(tVenta, letraOcho, null, conceptoDto.getNombreDesencriptado(),
                                new boolean[] { true, true, true, true }, Element.ALIGN_JUSTIFIED,
                                Element.ALIGN_TOP, 15, new int[] { 5, 5, 5, 5 }, 1);

                        //Descripcin
                        obj.agregaCelda(tVenta, letraOcho, null, conceptoDto.getDescripcion(),
                                new boolean[] { true, true, true, true }, Element.ALIGN_RIGHT, Element.ALIGN_TOP,
                                15, new int[] { 5, 5, 5, 5 }, 1);

                        //Unidades Vendidas 
                        obj.agregaCelda(tVenta, letraOcho, null, "" + (pedidoProd.getCantidad()),
                                new boolean[] { true, true, true, true }, Element.ALIGN_RIGHT, Element.ALIGN_TOP,
                                15, new int[] { 5, 5, 5, 5 }, 1);

                    }

                }
            } else {

                obj.agregaCelda(tVenta, letraOcho, null, "No se registrarn datos.",
                        new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                        new int[] { 5, 5, 5, 5 }, 4);

            }

            obj.agregaTabla(mainTable, tVenta, new boolean[] { true, true, true, true }, Element.ALIGN_CENTER,
                    Element.ALIGN_TOP, 0, new int[0], 1);

            //DOBLE SALTO DE L?NEA
            obj.agregaCelda(mainTable, letraOcho, null, " ", new boolean[] { false, false, false, false },
                    Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0, new int[0], 1);
            obj.agregaCelda(mainTable, letraOcho, null, " ", new boolean[] { false, false, false, false },
                    Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 0, new int[0], 1);

            /*Comentarios Adicionales*/
            PdfPTable tComenst = new PdfPTable(1);
            tComenst.setTotalWidth(550);
            tComenst.setWidths(new int[] { 550 });
            tComenst.setLockedWidth(true);

            obj.agregaCelda(tComenst, letraNueveBold, Color.lightGray, "Comentarios",
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 2);

            obj.agregaCelda(tComenst, letraOcho, null, this.degustacion.getComentariosCierre(),
                    new boolean[] { true, true, true, true }, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 15,
                    new int[] { 5, 5, 5, 5 }, 2);

            obj.agregaTabla(mainTable, tComenst, new boolean[] { true, true, true, true }, Element.ALIGN_CENTER,
                    Element.ALIGN_TOP, 0, new int[0], 1);

            //FIN DE CONTENIDO --------

            //Aadimos tabla principal construida al documento
            doc.add(mainTable);
            mainTable.flushContent();

        } catch (Exception ex) {
            msgError = "No se ha podido generar la representacin impresa de la Degustacion en formato PDF:<br/>"
                    + ex.toString();
        } finally {
            if (doc.isOpen())
                doc.close();
        }

        if (!msgError.equals("")) {
            throw new Exception(msgError);
        }

        return baos;

    }

}