Example usage for com.lowagie.text Element ALIGN_CENTER

List of usage examples for com.lowagie.text Element ALIGN_CENTER

Introduction

In this page you can find the example usage for com.lowagie.text Element ALIGN_CENTER.

Prototype

int ALIGN_CENTER

To view the source code for com.lowagie.text Element ALIGN_CENTER.

Click Source Link

Document

A possible value for paragraph alignment.

Usage

From source file:com.krawler.spring.exportFuctionality.ExportinvController.java

License:Open Source License

private PdfPTable createSalesOrderTable(String[] header, String[] values, String currencyid, SalesOrder so)
        throws DocumentException {
    double total = 0;
    PdfPTable table = new PdfPTable(header.length);
    table.setWidthPercentage(100);/*from  w w w .j a  v a  2  s  .  co  m*/
    table.setWidths(new float[] { 30, 15, 15, 20, 20 });
    PdfPCell cell = null;
    for (int i = 0; i < header.length; i++) {
        cell = new PdfPCell(new Paragraph(header[i], fontTblMediumBold));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPadding(3);
        table.addCell(cell);
    }
    Iterator itr = so.getRows().iterator();
    while (itr.hasNext()) {
        SalesOrderDetail row = (SalesOrderDetail) itr.next();
        cell = new PdfPCell(new Paragraph(row.getProduct().getName(), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(
                Integer.toString(row.getQuantity()) + " " + row.getProduct().getUnitOfMeasure().getName(),
                fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(authHandlerDAOObj.getFormattedCurrency(row.getRate(), currencyid),
                fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph("--", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        double amount = row.getRate() * row.getQuantity();
        total += amount;
        cell = new PdfPCell(
                new Paragraph(authHandlerDAOObj.getFormattedCurrency(amount, currencyid), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }

    for (int j = 0; j < 50; j++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }
    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.TOP);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  SUB TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);

    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(0);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  DISCOUNT", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(new Paragraph("--", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(0);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    return table;
}

From source file:com.krawler.spring.exportFuctionality.ExportinvController.java

License:Open Source License

private PdfPTable createPurchaseOrderTable(String[] header, String[] values, String currencyid,
        BillingPurchaseOrder po) throws DocumentException {
    double total = 0;
    PdfPTable table = new PdfPTable(header.length);
    table.setWidthPercentage(100);/*ww  w.j  a va2 s . c  o  m*/
    table.setWidths(new float[] { 30, 15, 15, 20, 20 });
    PdfPCell cell = null;
    for (int i = 0; i < header.length; i++) {
        cell = new PdfPCell(new Paragraph(header[i], fontTblMediumBold));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPadding(3);
        table.addCell(cell);
    }
    Iterator itr = po.getRows().iterator();
    while (itr.hasNext()) {
        BillingPurchaseOrderDetail row = (BillingPurchaseOrderDetail) itr.next();
        cell = new PdfPCell(new Paragraph(row.getProductDetail(), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(Double.toString(row.getQuantity()), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(authHandlerDAOObj.getFormattedCurrency(row.getRate(), currencyid),
                fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph("--", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        double amount = row.getRate() * row.getQuantity();
        total += amount;
        cell = new PdfPCell(
                new Paragraph(authHandlerDAOObj.getFormattedCurrency(amount, currencyid), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }

    for (int j = 0; j < 50; j++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }
    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.TOP);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  SUB TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);

    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(0);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  DISCOUNT", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(new Paragraph("--", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(0);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    return table;
}

From source file:com.krawler.spring.exportFuctionality.ExportinvController.java

License:Open Source License

private PdfPTable createSalesOrderTable(String[] header, String[] values, String currencyid,
        BillingSalesOrder so) throws DocumentException {
    double total = 0;
    PdfPTable table = new PdfPTable(header.length);
    table.setWidthPercentage(100);/*from   w ww.ja v  a 2  s.  c  o  m*/
    table.setWidths(new float[] { 30, 15, 15, 20, 20 });
    PdfPCell cell = null;
    for (int i = 0; i < header.length; i++) {
        cell = new PdfPCell(new Paragraph(header[i], fontTblMediumBold));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPadding(3);
        table.addCell(cell);
    }
    Iterator itr = so.getRows().iterator();
    while (itr.hasNext()) {
        BillingSalesOrderDetail row = (BillingSalesOrderDetail) itr.next();
        cell = new PdfPCell(new Paragraph(row.getProductDetail(), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(Double.toString(row.getQuantity()), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(authHandlerDAOObj.getFormattedCurrency(row.getRate(), currencyid),
                fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph("--", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        double amount = row.getRate() * row.getQuantity();
        total += amount;
        cell = new PdfPCell(
                new Paragraph(authHandlerDAOObj.getFormattedCurrency(amount, currencyid), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }

    for (int j = 0; j < 50; j++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }
    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.TOP);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  SUB TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);

    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(0);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  DISCOUNT", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(new Paragraph("--", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(0);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    return table;
}

From source file:com.krawler.spring.exportFuctionality.ExportinvController.java

License:Open Source License

private PdfPTable createPaymentTable(String[] header, String[] values, String currencyid, Payment pay,
        DateFormat formatter) throws DocumentException {
    double total = 0;
    PdfPTable table = new PdfPTable(header.length);
    table.setWidthPercentage(100);//from w ww.j  a  v a 2s  . com
    table.setWidths(new float[] { 30, 25, 25, 20 });
    PdfPCell cell = null;
    for (int i = 0; i < header.length; i++) {
        cell = new PdfPCell(new Paragraph(header[i], fontTblMediumBold));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPadding(3);
        table.addCell(cell);
    }
    Iterator itr = pay.getRows().iterator();
    while (itr.hasNext()) {
        PaymentDetail row = (PaymentDetail) itr.next();
        cell = new PdfPCell(new Paragraph(row.getGoodsReceipt().getGoodsReceiptNumber(), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(
                new Paragraph(formatter.format(row.getGoodsReceipt().getShipDate()), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(
                new Paragraph(formatter.format(row.getGoodsReceipt().getDueDate()), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(authHandlerDAOObj.getFormattedCurrency(row.getAmount(), currencyid),
                fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        double amount = row.getAmount();
        total += amount;
    }

    for (int j = 0; j < 40; j++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }
    for (int i = 0; i < 2; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.TOP);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    return table;
}

From source file:com.krawler.spring.exportFuctionality.ExportinvController.java

License:Open Source License

private PdfPTable createQuotationTable(String[] header, String[] values, String currencyid, Quotation quotation)
        throws DocumentException {
    double total = 0;
    PdfPTable table = new PdfPTable(header.length);
    table.setWidthPercentage(100);/* w w w.j  a  va  2 s . co  m*/
    table.setWidths(new float[] { 30, 15, 15, 20, 20 });
    PdfPCell cell = null;
    for (int i = 0; i < header.length; i++) {
        cell = new PdfPCell(new Paragraph(header[i], fontTblMediumBold));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPadding(3);
        table.addCell(cell);
    }
    Iterator itr = quotation.getRows().iterator();
    while (itr.hasNext()) {
        QuotationDetail row = (QuotationDetail) itr.next();
        cell = new PdfPCell(new Paragraph(row.getProduct().getName(), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(
                Integer.toString(row.getQuantity()) + " " + row.getProduct().getUnitOfMeasure().getName(),
                fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(authHandlerDAOObj.getFormattedCurrency(row.getRate(), currencyid),
                fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph("--", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
        double amount = row.getRate() * row.getQuantity();
        total += amount;
        cell = new PdfPCell(
                new Paragraph(authHandlerDAOObj.getFormattedCurrency(amount, currencyid), fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }

    for (int j = 0; j < 50; j++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
        table.addCell(cell);
    }
    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(Rectangle.TOP);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  SUB TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);

    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(0);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  DISCOUNT", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(new Paragraph("--", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    for (int i = 0; i < 3; i++) {
        cell = new PdfPCell(new Paragraph("", fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setBorder(0);
        table.addCell(cell);
    }
    cell = new PdfPCell(new Paragraph("  TOTAL", fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    table.addCell(cell);
    cell = new PdfPCell(
            new Paragraph(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontTblMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    table.addCell(cell);
    return table;
}

From source file:com.krawler.spring.exportFuctionality.ExportinvController.java

License:Open Source License

private PdfPTable createTable(String header[], String values[]) {
    PdfPTable table = new PdfPTable(header.length);
    PdfPCell cell = null;/*from w ww . ja  v a  2 s  . c  o  m*/
    for (int i = 0; i < header.length; i++) {
        cell = new PdfPCell(new Paragraph(header[i], fontTblMediumBold));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPadding(3);
        table.addCell(cell);
    }
    for (int j = 0; j < values.length; j++) {
        cell = new PdfPCell(new Paragraph(values[j], fontSmallRegular));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(cell);
    }
    return table;
}

From source file:com.krawler.spring.exportFuctionality.ExportRecord.java

License:Open Source License

public ByteArrayOutputStream createPdf(HttpServletRequest request, String currencyid, String billid,
        DateFormat formatter, int mode, double amount, String logoPath, String customer, String accname,
        String address, boolean isExpenseInv) throws DocumentException, ServiceException, IOException {
    ByteArrayOutputStream baos = null;
    double total = 0;
    Document document = null;// www.  j  av  a2  s .  c o  m
    PdfWriter writer = null;
    try {
        String poRefno = "";
        baos = new ByteArrayOutputStream();
        document = new Document(PageSize.A4, 15, 15, 15, 15);
        writer = PdfWriter.getInstance(document, baos);
        document.open();
        PdfPTable mainTable = new PdfPTable(1);
        mainTable.setWidthPercentage(100);

        PdfPTable blankTable = null;
        PdfPCell blankCell = null;
        PdfPTable tab1 = null;
        PdfPTable tab2 = null;
        PdfPTable tab3 = null;
        Rectangle page = document.getPageSize();

        int bmargin = 15; //border margin
        PdfContentByte cb = writer.getDirectContent();
        cb.rectangle(bmargin, bmargin, page.getWidth() - bmargin * 2, page.getHeight() - bmargin * 2);
        cb.setColorStroke(Color.WHITE);
        cb.stroke();

        if (mode == StaticValues.AUTONUM_INVOICE || mode == StaticValues.AUTONUM_BILLINGINVOICE
                || mode == StaticValues.AUTONUM_BILLINGSALESORDER
                || mode == StaticValues.AUTONUM_BILLINGPURCHASEORDER || mode == StaticValues.AUTONUM_SALESORDER
                || mode == StaticValues.AUTONUM_PURCHASEORDER || mode == StaticValues.AUTONUM_QUOTATION) {
            addHeaderFooter(document, writer);
            Invoice inv = null;
            BillingInvoice inv1 = null;
            BillingSalesOrder so = null;
            Company com = null;
            Account cEntry;
            String invno = "";
            Date entryDate = null;
            BillingPurchaseOrder po = null;
            SalesOrder sOrder = null;
            PurchaseOrder pOrder = null;
            Tax mainTax = null;
            Quotation quotation = null;
            if (mode == StaticValues.AUTONUM_INVOICE) {
                KwlReturnObject cap = kwlCommonTablesDAOObj.getObject(Invoice.class.getName(), billid);
                inv = (Invoice) cap.getEntityList().get(0);
                com = inv.getCompany();
                cEntry = inv.getCustomerEntry().getAccount();
                invno = inv.getInvoiceNumber();
                entryDate = inv.getJournalEntry().getEntryDate();
                //inv = (Invoice) session.get(Invoice.class, billid);
            } else if (mode == StaticValues.AUTONUM_BILLINGSALESORDER) {
                so = (BillingSalesOrder) kwlCommonTablesDAOObj.getClassObject(BillingSalesOrder.class.getName(),
                        billid);
                com = so.getCompany();
                cEntry = so.getCustomer().getAccount();
                invno = so.getSalesOrderNumber();
                entryDate = so.getOrderDate();
                mainTax = so.getTax();
            } else if (mode == StaticValues.AUTONUM_BILLINGPURCHASEORDER) {
                po = (BillingPurchaseOrder) kwlCommonTablesDAOObj
                        .getClassObject(BillingPurchaseOrder.class.getName(), billid);
                com = po.getCompany();
                cEntry = po.getVendor().getAccount();
                invno = po.getPurchaseOrderNumber();
                entryDate = po.getOrderDate();
                mainTax = po.getTax();
            } else if (mode == StaticValues.AUTONUM_SALESORDER) {
                sOrder = (SalesOrder) kwlCommonTablesDAOObj.getClassObject(SalesOrder.class.getName(), billid);
                com = sOrder.getCompany();
                cEntry = sOrder.getCustomer().getAccount();
                invno = sOrder.getSalesOrderNumber();
                entryDate = sOrder.getOrderDate();
                mainTax = sOrder.getTax();

            } else if (mode == StaticValues.AUTONUM_PURCHASEORDER) {
                pOrder = (PurchaseOrder) kwlCommonTablesDAOObj.getClassObject(PurchaseOrder.class.getName(),
                        billid);
                com = pOrder.getCompany();
                cEntry = pOrder.getVendor().getAccount();
                invno = pOrder.getPurchaseOrderNumber();
                entryDate = pOrder.getOrderDate();
                mainTax = pOrder.getTax();

            } else if (mode == StaticValues.AUTONUM_QUOTATION) {
                quotation = (Quotation) kwlCommonTablesDAOObj.getClassObject(Quotation.class.getName(), billid);
                com = quotation.getCompany();
                cEntry = quotation.getCustomer().getAccount();
                invno = quotation.getquotationNumber();
                entryDate = quotation.getQuotationDate();
                mainTax = quotation.getTax();

            } else {
                KwlReturnObject cap = kwlCommonTablesDAOObj.getObject(BillingInvoice.class.getName(), billid);
                inv1 = (BillingInvoice) cap.getEntityList().get(0);
                com = inv1.getCompany();
                cEntry = inv1.getCustomerEntry().getAccount();
                invno = inv1.getBillingInvoiceNumber();
                entryDate = inv1.getJournalEntry().getEntryDate();
                poRefno = inv1.getPoRefNumber() == null ? "" : inv1.getPoRefNumber();
                mainTax = inv1.getTax();
                //inv1=(BillingInvoice)session.get(BillingInvoice.class,billid);
            }

            //                Company com = mode != StaticValues.AUTONUM_BILLINGINVOICE ? inv.getCompany() : inv1.getCompany();
            String company[] = new String[4];
            company[0] = com.getCompanyName();
            company[1] = com.getAddress();
            company[2] = com.getEmailID();
            company[3] = com.getPhoneNumber();

            PdfPTable table1 = new PdfPTable(2);
            table1.setWidthPercentage(100);
            table1.setWidths(new float[] { 50, 50 });

            tab1 = addCompanyLogo(logoPath, com);
            tab2 = new PdfPTable(1);
            PdfPCell invCell = null;

            CompanyAccountPreferences pref = (CompanyAccountPreferences) kwlCommonTablesDAOObj
                    .getClassObject(CompanyAccountPreferences.class.getName(), com.getCompanyID());
            Account cash = pref.getCashAccount();
            //
            //                if (mode != StaticValues.AUTONUM_BILLINGINVOICE) {
            //                    cEntry = inv.getCustomerEntry().getAccount();
            //                } else {
            //                    cEntry = inv1.getCustomerEntry().getAccount();
            //                }
            String theader = cEntry == cash
                    ? messageSource.getMessage("acc.accPref.autoCS", null,
                            RequestContextUtils.getLocale(request))
                    : messageSource.getMessage("acc.accPref.autoInvoice", null,
                            RequestContextUtils.getLocale(request));
            if (mode == StaticValues.AUTONUM_BILLINGSALESORDER || mode == StaticValues.AUTONUM_SALESORDER) {
                theader = messageSource.getMessage("acc.accPref.autoSO", null,
                        RequestContextUtils.getLocale(request));
            } else if (mode == StaticValues.AUTONUM_BILLINGPURCHASEORDER
                    || mode == StaticValues.AUTONUM_PURCHASEORDER) {
                theader = messageSource.getMessage("acc.accPref.autoPO", null,
                        RequestContextUtils.getLocale(request));
            } else if (mode == StaticValues.AUTONUM_QUOTATION) {
                theader = messageSource.getMessage("acc.accPref.autoQN", null,
                        RequestContextUtils.getLocale(request));
            }
            invCell = createCell(theader, fontTbl, Element.ALIGN_RIGHT, 0, 5);
            tab2.addCell(invCell);

            PdfPCell cell1 = new PdfPCell(tab1);
            cell1.setBorder(0);
            table1.addCell(cell1);
            PdfPCell cel2 = new PdfPCell(tab2);
            cel2.setBorder(0);
            table1.addCell(cel2);

            PdfPCell mainCell11 = new PdfPCell(table1);
            mainCell11.setBorder(0);
            mainCell11.setPadding(10);
            mainTable.addCell(mainCell11);

            PdfPTable userTable2 = new PdfPTable(2);
            userTable2.setWidthPercentage(100);
            userTable2.setWidths(new float[] { 60, 40 });

            tab3 = getCompanyInfo(company);

            PdfPTable tab4 = new PdfPTable(2);
            tab4.setWidthPercentage(100);
            tab4.setWidths(new float[] { 50, 50 });

            PdfPCell cell2 = createCell(theader + "# :", fontSmallBold, Element.ALIGN_RIGHT, 0, 5);
            if (mode == StaticValues.AUTONUM_QUOTATION) {
                cell2 = createCell(theader + "# :", fontSmallBold, Element.ALIGN_RIGHT, 0, 5);
            }
            tab4.addCell(cell2);
            //                String invno = mode != StaticValues.AUTONUM_BILLINGINVOICE ? inv.getInvoiceNumber() : inv1.getBillingInvoiceNumber();
            cell2 = createCell(invno, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);
            if (mode != StaticValues.AUTONUM_QUOTATION && mode != StaticValues.AUTONUM_PURCHASEORDER
                    && mode != StaticValues.AUTONUM_SALESORDER) {
                cell2 = createCell(
                        messageSource.getMessage("acc.numb.43", null, RequestContextUtils.getLocale(request))
                                + " # :",
                        fontSmallBold, Element.ALIGN_RIGHT, 0, 5);
                tab4.addCell(cell2);
                cell2 = createCell(poRefno, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
                tab4.addCell(cell2);
            }

            cell2 = createCell(
                    messageSource.getMessage("acc.rem.198", null, RequestContextUtils.getLocale(request))
                            + " :",
                    fontSmallBold, Element.ALIGN_RIGHT, 0, 5);
            tab4.addCell(cell2);
            cell2 = createCell(formatter.format(entryDate), fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);

            cell1 = new PdfPCell(tab3);
            cell1.setBorder(0);
            userTable2.addCell(cell1);
            cel2 = new PdfPCell(tab4);
            cel2.setBorder(0);
            userTable2.addCell(cel2);

            PdfPCell mainCell12 = new PdfPCell(userTable2);
            mainCell12.setBorder(0);
            mainCell12.setPadding(10);
            mainTable.addCell(mainCell12);

            PdfPTable tab5 = new PdfPTable(2);
            tab5.setWidthPercentage(100);
            tab5.setWidths(new float[] { 10, 90 });
            PdfPCell cell3 = createCell(
                    messageSource.getMessage("acc.common.to", null, RequestContextUtils.getLocale(request))
                            + " , ",
                    fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);

            HashMap<String, Object> invRequestParams = new HashMap<String, Object>();
            ArrayList filter_names = new ArrayList(), filter_params = new ArrayList(),
                    order_by = new ArrayList(), order_type = new ArrayList();
            order_by.add("srno");
            order_type.add("asc");
            invRequestParams.put("order_by", order_by);
            invRequestParams.put("order_type", order_type);
            KwlReturnObject idresult = null;

            String customerName = "";
            String shipTo = "";
            String memo = "";
            Iterator itr = null;
            if (mode == StaticValues.AUTONUM_INVOICE) {
                filter_names.add("invoice.ID");
                filter_params.add(inv.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accInvoiceDAOobj.getInvoiceDetails(invRequestParams);
                customerName = inv.getCustomer() == null ? inv.getCustomerEntry().getAccount().getName()
                        : inv.getCustomer().getName();
                shipTo = inv.getShipTo();
                itr = idresult.getEntityList().iterator();
                memo = inv.getMemo();
            } else if (mode == StaticValues.AUTONUM_BILLINGSALESORDER) {
                customerName = so.getCustomer().getName();
                shipTo = so.getCustomer().getShippingAddress();
                filter_names.add("salesOrder.ID");
                filter_params.add(so.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accSalesOrderDAOobj.getBillingSalesOrderDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = so.getMemo();
            } else if (mode == StaticValues.AUTONUM_BILLINGPURCHASEORDER) {
                customerName = po.getVendor().getName();
                shipTo = po.getVendor().getAddress();
                filter_names.add("purchaseOrder.ID");
                filter_params.add(po.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accPurchaseOrderobj.getBillingPurchaseOrderDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = po.getMemo();
            } else if (mode == StaticValues.AUTONUM_SALESORDER) {
                customerName = sOrder.getCustomer().getName();
                shipTo = sOrder.getCustomer().getShippingAddress();
                filter_names.add("salesOrder.ID");
                filter_params.add(sOrder.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accSalesOrderDAOobj.getSalesOrderDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = sOrder.getMemo();
            } else if (mode == StaticValues.AUTONUM_PURCHASEORDER) {
                customerName = pOrder.getVendor().getName();
                shipTo = pOrder.getVendor().getAddress();
                filter_names.add("purchaseOrder.ID");
                filter_params.add(pOrder.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accPurchaseOrderobj.getPurchaseOrderDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = pOrder.getMemo();
            } else if (mode == StaticValues.AUTONUM_QUOTATION) {
                customerName = quotation.getCustomer().getName();
                shipTo = quotation.getCustomer().getShippingAddress();
                filter_names.add("quotation.ID");
                filter_params.add(quotation.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accSalesOrderDAOobj.getQuotationDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = quotation.getMemo();
            } else {
                filter_names.add("billingInvoice.ID");
                filter_params.add(inv1.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accInvoiceDAOobj.getBillingInvoiceDetails(invRequestParams);
                customerName = inv1.getCustomer() == null ? inv1.getCustomerEntry().getAccount().getName()
                        : inv1.getCustomer().getName();
                shipTo = inv1.getShipTo();
                itr = idresult.getEntityList().iterator();
                memo = inv1.getMemo();
            }
            cell3 = createCell(customerName, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);
            cell3 = createCell(shipTo, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);

            PdfPCell mainCell14 = new PdfPCell(tab5);
            mainCell14.setBorder(0);
            mainCell14.setPadding(10);
            mainTable.addCell(mainCell14);

            //                if(mode == StaticValues.AUTONUM_QUOTATION)
            //                   String[] header = {"S.No.","PRODUCT DESCRIPTION", "QUANTITY", "UNIT PRICE", "TAX", "AMOUNT"};

            String[] header = {
                    messageSource.getMessage("acc.setupWizard.sno", null,
                            RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.176", null, RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.187", null, RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.188", null, RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.191", null, RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.192", null, RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.193", null, RequestContextUtils.getLocale(request)) };
            PdfPTable table = getBlankTable();
            PdfPCell invcell = null;
            for (int i = 0; i < header.length; i++) {
                invcell = new PdfPCell(new Paragraph(header[i], fontSmallBold));
                invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                invcell.setBackgroundColor(Color.LIGHT_GRAY);
                invCell.setBorder(0);
                invcell.setPadding(3);
                table.addCell(invcell);
            }

            addTableRow(mainTable, table); //Break table after adding header row
            table = getBlankTable();

            HashMap<String, Object> requestParams = AccountingManager.getGlobalParams(request);
            KwlReturnObject bAmt = null;
            InvoiceDetail row = null;
            BillingInvoiceDetail row1 = null;
            BillingSalesOrderDetail row3 = null;
            BillingPurchaseOrderDetail row4 = null;
            SalesOrderDetail row5 = null;
            PurchaseOrderDetail row6 = null;
            QuotationDetail row7 = null;
            int index = 0;
            while (itr.hasNext()) {
                String prodName = "";
                double quantity = 0, discountQuotation = 0;
                double rate = 0;
                Discount discount = null;
                String uom = "";
                double amount1 = 0;
                if (mode == StaticValues.AUTONUM_INVOICE) {
                    row = (InvoiceDetail) itr.next();
                    prodName = row.getInventory().getProduct().getName();
                    quantity = row.getInventory().getQuantity();
                    rate = row.getRate();
                    discount = row.getDiscount();
                    uom = row.getInventory().getProduct().getUnitOfMeasure() == null ? ""
                            : row.getInventory().getProduct().getUnitOfMeasure().getName();
                } else if (mode == StaticValues.AUTONUM_BILLINGSALESORDER) {
                    row3 = (BillingSalesOrderDetail) itr.next();
                    prodName = row3.getProductDetail();
                    quantity = row3.getQuantity();
                    rate = row3.getRate();
                } else if (mode == StaticValues.AUTONUM_BILLINGPURCHASEORDER) {
                    row4 = (BillingPurchaseOrderDetail) itr.next();
                    prodName = row4.getProductDetail();
                    quantity = row4.getQuantity();
                    rate = row4.getRate();
                } else if (mode == StaticValues.AUTONUM_SALESORDER) {
                    row5 = (SalesOrderDetail) itr.next();
                    prodName = row5.getProduct().getName();
                    quantity = row5.getQuantity();
                    rate = row5.getRate();
                    uom = row5.getProduct().getUnitOfMeasure() == null ? ""
                            : row5.getProduct().getUnitOfMeasure().getName();
                } else if (mode == StaticValues.AUTONUM_PURCHASEORDER) {
                    row6 = (PurchaseOrderDetail) itr.next();
                    prodName = row6.getProduct().getName();
                    quantity = row6.getQuantity();
                    rate = row6.getRate();
                    uom = row6.getProduct().getUnitOfMeasure() == null ? ""
                            : row6.getProduct().getUnitOfMeasure().getName();
                } else if (mode == StaticValues.AUTONUM_QUOTATION) {
                    row7 = (QuotationDetail) itr.next();
                    prodName = row7.getProduct().getName();
                    quantity = row7.getQuantity();
                    rate = row7.getRate();
                    discountQuotation = rate * quantity * row7.getDiscount() / 100;
                    uom = row7.getProduct().getUnitOfMeasure() == null ? ""
                            : row7.getProduct().getUnitOfMeasure().getName();
                } else {
                    row1 = (BillingInvoiceDetail) itr.next();
                    prodName = row1.getProductDetail();
                    quantity = row1.getQuantity();
                    rate = row1.getRate();
                    discount = row1.getDiscount() != null ? row1.getDiscount() : null;
                    //                        uom = row1.getInventory().getProduct().getUnitOfMeasure()==null?"":row1.getInventory().getProduct().getUnitOfMeasure().getName();
                }
                invcell = createCell((++index) + ".", fontSmallRegular, Element.ALIGN_RIGHT,
                        Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);
                invcell = createCell(prodName, fontSmallRegular, Element.ALIGN_LEFT,
                        Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);

                String qtyStr = Double.toString(quantity);
                if (mode == StaticValues.AUTONUM_INVOICE || mode == StaticValues.AUTONUM_SALESORDER
                        || mode == StaticValues.AUTONUM_PURCHASEORDER
                        || mode == StaticValues.AUTONUM_QUOTATION) {
                    qtyStr = Integer.toString((int) quantity); //For with-Inventory flow, Don't show decimal point as inventory has integer value
                }
                invcell = createCell(qtyStr + " " + uom, fontSmallRegular, Element.ALIGN_CENTER,
                        Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);
                if (mode == StaticValues.AUTONUM_PURCHASEORDER || mode == StaticValues.AUTONUM_SALESORDER
                        || mode == StaticValues.AUTONUM_QUOTATION) {
                    bAmt = accCurrencyobj.getBaseToCurrencyAmount(requestParams, rate,
                            cEntry.getCurrency().getCurrencyID(), entryDate, 0);
                    double rateInBase = (Double) bAmt.getEntityList().get(0);
                    rate = rateInBase;
                }
                invcell = createCell(authHandlerDAOObj.getFormattedCurrency(rate, currencyid), fontSmallRegular,
                        Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);
                if (mode == StaticValues.AUTONUM_QUOTATION)
                    invcell = calculateDiscount(discountQuotation, currencyid);
                else
                    invcell = calculateDiscount(discount, currencyid);
                invcell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                invcell.setPadding(5);
                invcell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                table.addCell(invcell);

                amount1 = rate * quantity;
                if (discount != null) {
                    amount1 -= mode != StaticValues.AUTONUM_BILLINGINVOICE
                            ? (row.getDiscount().getDiscountValue())
                            : (row1.getDiscount().getDiscountValue());
                }
                if (discountQuotation != 0) {
                    amount1 -= discountQuotation;
                }
                double rowTaxPercent = 0;
                if (row != null && row.getTax() != null) {
                    requestParams.put("transactiondate", entryDate);
                    requestParams.put("taxid", row.getTax().getID());
                    KwlReturnObject result = accTaxObj.getTax(requestParams);
                    List taxList = result.getEntityList();
                    Object[] taxObj = (Object[]) taxList.get(0);
                    rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                } else if (row1 != null && row1.getTax() != null) {
                    requestParams.put("transactiondate", entryDate);
                    requestParams.put("taxid", row1.getTax().getID());
                    KwlReturnObject result = accTaxObj.getTax(requestParams);
                    List taxList = result.getEntityList();
                    Object[] taxObj = (Object[]) taxList.get(0);
                    rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                } else if (row3 != null && row3.getTax() != null) {
                    requestParams.put("transactiondate", entryDate);
                    requestParams.put("taxid", row3.getTax().getID());
                    KwlReturnObject result = accTaxObj.getTax(requestParams);
                    List taxList = result.getEntityList();
                    Object[] taxObj = (Object[]) taxList.get(0);
                    rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                } else if (row4 != null && row4.getTax() != null) {
                    requestParams.put("transactiondate", entryDate);
                    requestParams.put("taxid", row4.getTax().getID());
                    KwlReturnObject result = accTaxObj.getTax(requestParams);
                    List taxList = result.getEntityList();
                    Object[] taxObj = (Object[]) taxList.get(0);
                    rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                } else if (row5 != null && row5.getTax() != null) {
                    requestParams.put("transactiondate", entryDate);
                    requestParams.put("taxid", row5.getTax().getID());
                    KwlReturnObject result = accTaxObj.getTax(requestParams);
                    List taxList = result.getEntityList();
                    Object[] taxObj = (Object[]) taxList.get(0);
                    rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                } else if (row6 != null && row6.getTax() != null) {
                    requestParams.put("transactiondate", entryDate);
                    requestParams.put("taxid", row6.getTax().getID());
                    KwlReturnObject result = accTaxObj.getTax(requestParams);
                    List taxList = result.getEntityList();
                    Object[] taxObj = (Object[]) taxList.get(0);
                    rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                } else if (row7 != null && row7.getTax() != null) {
                    requestParams.put("transactiondate", entryDate);
                    requestParams.put("taxid", row7.getTax().getID());
                    KwlReturnObject result = accTaxObj.getTax(requestParams);
                    List taxList = result.getEntityList();
                    Object[] taxObj = (Object[]) taxList.get(0);
                    rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                }
                invcell = createCell(
                        authHandlerDAOObj.getFormattedCurrency(amount1 * rowTaxPercent / 100, currencyid),
                        fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);
                amount1 += amount1 * rowTaxPercent / 100;
                invcell = createCell(authHandlerDAOObj.getFormattedCurrency(amount1, currencyid),
                        fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);
                total += amount1;

                addTableRow(mainTable, table); //Break table after adding detail's row
                table = getBlankTable();
            }
            for (int j = 0; j < 98; j++) {
                invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                invcell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                table.addCell(invcell);
            }
            addTableRow(mainTable, table); //Break table after adding extra space
            table = getBlankTable();
            //                for (int i = 0; i < 5; i++) {
            //                    invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
            //                    invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            //                    invcell.setBorder(Rectangle.TOP);
            //                    table.addCell(invcell);
            //                }
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.194", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold, Element.ALIGN_RIGHT, Rectangle.TOP, 5);
            cell3.setColspan(6);
            table.addCell(cell3);
            //                if(mode == StaticValues.AUTONUM_INVOICE || mode==StaticValues.AUTONUM_PURCHASEORDER || mode==StaticValues.AUTONUM_SALESORDER){
            //                    bAmt = accCurrencyobj.getBaseToCurrencyAmount(requestParams, total, cEntry.getCurrency().getCurrencyID(), entryDate, 0);
            //                    double baseTotalAmount = (Double) bAmt.getEntityList().get(0);
            //                    total = baseTotalAmount;
            //                }
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontSmallRegular,
                    Element.ALIGN_RIGHT, 15, 5);
            table.addCell(cell3);
            //                for (int i = 0; i < 5; i++) {
            //                    invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
            //                    invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            //                    invcell.setPadding(5);
            //                    invcell.setBorder(0);
            //                    table.addCell(invcell);
            //                }
            Discount totalDiscount = null;
            double totaltax = 0, discountTotalQuotation = 0;
            double totalAmount = 0;
            double taxPercent = 0;
            if (mainTax != null) { //Get tax percent
                requestParams.put("transactiondate", entryDate);
                requestParams.put("taxid", mainTax.getID());
                KwlReturnObject result = accTaxObj.getTax(requestParams);
                List taxList = result.getEntityList();
                Object[] taxObj = (Object[]) taxList.get(0);
                taxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
            }

            if (mode == StaticValues.AUTONUM_INVOICE) {
                totalDiscount = inv.getDiscount();
                totaltax = inv.getTaxEntry() != null ? inv.getTaxEntry().getAmount() : 0;
                totalAmount = inv.getCustomerEntry().getAmount();
            } else if (mode == StaticValues.AUTONUM_BILLINGSALESORDER
                    || mode == StaticValues.AUTONUM_BILLINGPURCHASEORDER
                    || mode == StaticValues.AUTONUM_PURCHASEORDER || mode == StaticValues.AUTONUM_SALESORDER
                    || mode == StaticValues.AUTONUM_QUOTATION) {
                totalAmount = total;
                if (mode == StaticValues.AUTONUM_QUOTATION && quotation.getDiscount() != 0) {
                    if (!quotation.isPerDiscount()) {
                        discountTotalQuotation = quotation.getDiscount();
                        total = total - quotation.getDiscount();
                        totalAmount = total;
                    } else {
                        discountTotalQuotation = total * quotation.getDiscount() / 100;
                        total -= (total * quotation.getDiscount() / 100);
                        totalAmount = total;
                    }
                }
                totaltax = (taxPercent == 0 ? 0 : totalAmount * taxPercent / 100);
                totalAmount = total + totaltax;
            } else {
                totalDiscount = inv1.getDiscount();
                totaltax = inv1.getTaxEntry() != null ? inv1.getTaxEntry().getAmount() : 0;
                totalAmount = (inv1.getCustomerEntry().getAmount());
            }
            if (mode != StaticValues.AUTONUM_PURCHASEORDER || mode != StaticValues.AUTONUM_SALESORDER) {
                cell3 = createCell(
                        messageSource.getMessage("acc.rem.195", null, RequestContextUtils.getLocale(request)),
                        fontSmallBold, Element.ALIGN_RIGHT, 0, 5);
                cell3.setColspan(6);
                table.addCell(cell3);
                if (mode == StaticValues.AUTONUM_QUOTATION)
                    invcell = calculateDiscount(discountTotalQuotation, currencyid);
                else
                    invcell = calculateDiscount(totalDiscount, currencyid);
                invcell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                invcell.setPadding(5);
                table.addCell(invcell);
            }
            //                for (int i = 0; i < 5; i++) {
            //                    invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
            //                    invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            //                    invcell.setPadding(5);
            //                    invcell.setBorder(0);
            //                    table.addCell(invcell);
            //                }
            StringBuffer taxNameStr = new StringBuffer();
            if (mainTax != null) {
                taxNameStr.append(mainTax.getName());
                taxNameStr.append(" ");
                taxNameStr.append(taxPercent);
                taxNameStr.append("% (+)");
            } else {
                taxNameStr.append(
                        messageSource.getMessage("acc.rem.196", null, RequestContextUtils.getLocale(request)));
            }
            cell3 = createCell(taxNameStr.toString(), fontSmallBold, Element.ALIGN_RIGHT, 0, 5);
            cell3.setColspan(6);
            table.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(totaltax, currencyid), fontSmallRegular,
                    Element.ALIGN_RIGHT, 15, 5);
            table.addCell(cell3);
            //                for (int i = 0; i < 5; i++) {
            //                    invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
            //                    invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            //                    invcell.setPadding(5);
            //                    invcell.setBorder(0);
            //                    table.addCell(invcell);
            //                }
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.197", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold, Element.ALIGN_RIGHT, 0, 5);
            cell3.setColspan(6);
            table.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(totalAmount, currencyid),
                    fontSmallRegular, Element.ALIGN_RIGHT, 15, 5);
            table.addCell(cell3);

            addTableRow(mainTable, table);

            KWLCurrency currency = (KWLCurrency) kwlCommonTablesDAOObj
                    .getClassObject(KWLCurrency.class.getName(), currencyid);
            String netinword = EnglishNumberToWordsOjb.convert(Double.parseDouble(String.valueOf(totalAmount)),
                    currency);
            String currencyname = currency.getName();
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.177", null, RequestContextUtils.getLocale(request))
                            + " : " + currencyname + " " + netinword + " Only.",
                    fontSmallRegular, Element.ALIGN_LEFT,
                    Rectangle.LEFT + Rectangle.RIGHT + Rectangle.BOTTOM + Rectangle.TOP, 5);
            PdfPTable table2 = new PdfPTable(1);
            table2.addCell(cell3);
            PdfPCell mainCell62 = new PdfPCell(table2);
            mainCell62.setBorder(0);
            mainCell62.setPadding(10);
            mainTable.addCell(mainCell62);
            PdfPTable helpTable = new PdfPTable(new float[] { 8, 92 });
            helpTable.setWidthPercentage(100);
            Phrase phrase1 = new Phrase(
                    messageSource.getMessage("acc.common.memo", null, RequestContextUtils.getLocale(request))
                            + ":  ",
                    fontSmallBold);
            Phrase phrase2 = new Phrase(memo, fontSmallRegular);
            PdfPCell pcell1 = new PdfPCell(phrase1);
            PdfPCell pcell2 = new PdfPCell(phrase2);
            pcell1.setBorder(0);
            pcell1.setPadding(10);
            pcell1.setPaddingRight(0);
            pcell2.setBorder(0);
            pcell2.setPadding(10);
            helpTable.addCell(pcell1);
            helpTable.addCell(pcell2);

            PdfPCell mainCell61 = new PdfPCell(helpTable);
            mainCell61.setBorder(0);
            mainTable.addCell(mainCell61);

        } else if (mode == StaticValues.AUTONUM_DEBITNOTE || mode == StaticValues.AUTONUM_CREDITNOTE
                || mode == StaticValues.AUTONUM_BILLINGCREDITNOTE
                || mode == StaticValues.AUTONUM_BILLINGDEBITNOTE) {
            addHeaderFooter(document, writer);

            CreditNote creNote = null;
            DebitNote dbNote = null;
            BillingCreditNote biCreNote = null;
            BillingDebitNote biDeNote = null;
            Company com = null;
            Account cEntry = null;
            String invno = "";
            Date entryDate = null;
            Customer customerObj = null;
            Vendor vendorObj = null;
            double taxMain = 0;

            if (mode == StaticValues.AUTONUM_BILLINGCREDITNOTE) {
                KwlReturnObject cap = kwlCommonTablesDAOObj.getObject(BillingCreditNote.class.getName(),
                        billid);
                biCreNote = (BillingCreditNote) cap.getEntityList().get(0);
                Set<JournalEntryDetail> entryset = biCreNote.getJournalEntry().getDetails();
                customerObj = new Customer();
                Iterator itr = entryset.iterator();
                while (itr.hasNext()) {
                    cEntry = ((JournalEntryDetail) itr.next()).getAccount();
                    //                    customer=(Customer)session.get(Customer.class,acc.getID());
                    customerObj = (Customer) kwlCommonTablesDAOObj.getClassObject(Customer.class.getName(),
                            cEntry.getID());
                    if (customerObj != null)
                        break;
                }
                com = biCreNote.getCompany();
                invno = biCreNote.getCreditNoteNumber();
                entryDate = biCreNote.getJournalEntry().getEntryDate();
            } else if (mode == StaticValues.AUTONUM_BILLINGDEBITNOTE) {
                KwlReturnObject cap = kwlCommonTablesDAOObj.getObject(BillingDebitNote.class.getName(), billid);
                biDeNote = (BillingDebitNote) cap.getEntityList().get(0);
                //                    dbNote = (BillingDebitNote) kwlCommonTablesDAOObj.getClassObject(BillingDebitNote.class.getName(), billid);
                com = biDeNote.getCompany();
                Set<JournalEntryDetail> entryset = biDeNote.getJournalEntry().getDetails();
                vendorObj = new Vendor();
                Iterator itr = entryset.iterator();
                while (itr.hasNext()) {
                    cEntry = ((JournalEntryDetail) itr.next()).getAccount();
                    //                    vendor=(Vendor)session.get(Vendor.class,acc.getID());
                    vendorObj = (Vendor) kwlCommonTablesDAOObj.getClassObject(Vendor.class.getName(),
                            cEntry.getID());
                    if (vendorObj != null)
                        break;
                }
                invno = biDeNote.getDebitNoteNumber();
                entryDate = biDeNote.getJournalEntry().getEntryDate();
            }
            if (mode == StaticValues.AUTONUM_CREDITNOTE) {
                KwlReturnObject cap = kwlCommonTablesDAOObj.getObject(CreditNote.class.getName(), billid);
                creNote = (CreditNote) cap.getEntityList().get(0);
                Set<JournalEntryDetail> entryset = creNote.getJournalEntry().getDetails();
                customerObj = new Customer();
                Iterator itr = entryset.iterator();
                while (itr.hasNext()) {
                    cEntry = ((JournalEntryDetail) itr.next()).getAccount();
                    //                    customer=(Customer)session.get(Customer.class,acc.getID());
                    customerObj = (Customer) kwlCommonTablesDAOObj.getClassObject(Customer.class.getName(),
                            cEntry.getID());
                    if (customerObj != null)
                        break;
                }
                com = creNote.getCompany();
                invno = creNote.getCreditNoteNumber();
                entryDate = creNote.getJournalEntry().getEntryDate();
                //inv = (Invoice) session.get(Invoice.class, billid);
            } else if (mode == StaticValues.AUTONUM_DEBITNOTE) {
                KwlReturnObject cap = kwlCommonTablesDAOObj.getObject(DebitNote.class.getName(), billid);
                dbNote = (DebitNote) cap.getEntityList().get(0);
                //                    dbNote = (BillingDebitNote) kwlCommonTablesDAOObj.getClassObject(BillingDebitNote.class.getName(), billid);
                com = dbNote.getCompany();
                Set<JournalEntryDetail> entryset = dbNote.getJournalEntry().getDetails();
                vendorObj = new Vendor();
                Iterator itr = entryset.iterator();
                while (itr.hasNext()) {
                    cEntry = ((JournalEntryDetail) itr.next()).getAccount();
                    //                    vendor=(Vendor)session.get(Vendor.class,acc.getID());
                    vendorObj = (Vendor) kwlCommonTablesDAOObj.getClassObject(Vendor.class.getName(),
                            cEntry.getID());
                    if (vendorObj != null)
                        break;
                }
                invno = dbNote.getDebitNoteNumber();
                entryDate = dbNote.getJournalEntry().getEntryDate();
            }

            //                Company com = mode != StaticValues.AUTONUM_BILLINGINVOICE ? inv.getCompany() : inv1.getCompany();
            String company[] = new String[4];
            company[0] = com.getCompanyName();
            company[1] = com.getAddress();
            company[2] = com.getEmailID();
            company[3] = com.getPhoneNumber();

            PdfPTable table1 = new PdfPTable(2);
            table1.setWidthPercentage(100);
            table1.setWidths(new float[] { 50, 50 });

            tab1 = addCompanyLogo(logoPath, com);
            tab2 = new PdfPTable(1);
            PdfPCell invCell = null;

            CompanyAccountPreferences pref = (CompanyAccountPreferences) kwlCommonTablesDAOObj
                    .getClassObject(CompanyAccountPreferences.class.getName(), com.getCompanyID());
            Account cash = pref.getCashAccount();
            //
            //                if (mode != StaticValues.AUTONUM_BILLINGINVOICE) {
            //                    cEntry = inv.getCustomerEntry().getAccount();
            //                } else {
            //                    cEntry = inv1.getCustomerEntry().getAccount();
            //                }
            String theader = "";
            if (mode == StaticValues.AUTONUM_CREDITNOTE || mode == StaticValues.AUTONUM_BILLINGCREDITNOTE) {
                theader = messageSource.getMessage("acc.accPref.autoCN", null,
                        RequestContextUtils.getLocale(request));
            } else if (mode == StaticValues.AUTONUM_DEBITNOTE
                    || mode == StaticValues.AUTONUM_BILLINGDEBITNOTE) {
                theader = messageSource.getMessage("acc.accPref.autoDN", null,
                        RequestContextUtils.getLocale(request));
            }
            invCell = createCell(theader, fontTbl, Element.ALIGN_RIGHT, 0, 5);
            tab2.addCell(invCell);

            PdfPCell cell1 = new PdfPCell(tab1);
            cell1.setBorder(0);
            table1.addCell(cell1);
            PdfPCell cel2 = new PdfPCell(tab2);
            cel2.setBorder(0);
            table1.addCell(cel2);

            PdfPCell mainCell11 = new PdfPCell(table1);
            mainCell11.setBorder(0);
            mainCell11.setPadding(10);
            mainTable.addCell(mainCell11);

            PdfPTable userTable2 = new PdfPTable(2);
            userTable2.setWidthPercentage(100);
            userTable2.setWidths(new float[] { 60, 40 });

            tab3 = getCompanyInfo(company);

            PdfPTable tab4 = new PdfPTable(2);
            tab4.setWidthPercentage(100);
            tab4.setWidths(new float[] { 30, 70 });

            PdfPCell cell2 = createCell(theader + " #", fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);
            //                String invno = mode != StaticValues.AUTONUM_BILLINGINVOICE ? inv.getInvoiceNumber() : inv1.getBillingInvoiceNumber();
            cell2 = createCell(": " + invno, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);
            cell2 = createCell(
                    messageSource.getMessage("acc.rem.198", null, RequestContextUtils.getLocale(request)) + " ",
                    fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);
            cell2 = createCell(": " + formatter.format(entryDate), fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);

            cell1 = new PdfPCell(tab3);
            cell1.setBorder(0);
            userTable2.addCell(cell1);
            cel2 = new PdfPCell(tab4);
            cel2.setBorder(0);
            userTable2.addCell(cel2);

            PdfPCell mainCell12 = new PdfPCell(userTable2);
            mainCell12.setBorder(0);
            mainCell12.setPadding(10);
            mainTable.addCell(mainCell12);

            PdfPTable tab5 = new PdfPTable(2);
            tab5.setWidthPercentage(100);
            tab5.setWidths(new float[] { 10, 90 });
            PdfPCell cell3 = createCell(
                    messageSource.getMessage("acc.common.to", null, RequestContextUtils.getLocale(request))
                            + " , ",
                    fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);

            String customerName = "";
            String shipTo = "";
            String memo = "";
            Iterator itr = null;

            HashMap<String, Object> invRequestParams = new HashMap<String, Object>();
            ArrayList filter_names = new ArrayList(), filter_params = new ArrayList(),
                    order_by = new ArrayList(), order_type = new ArrayList();
            order_by.add("srno");
            order_type.add("asc");
            invRequestParams.put("order_by", order_by);
            invRequestParams.put("order_type", order_type);
            KwlReturnObject idresult = null;

            if (mode == StaticValues.AUTONUM_BILLINGCREDITNOTE) {
                customerName = customerObj.getName();//inv.getCustomer()==null?inv.getCustomerEntry().getAccount().getName():inv.getCustomer().getName();
                shipTo = customerObj.getBillingAddress();//inv.getShipTo();
                filter_names.add("creditNote.ID");
                filter_params.add(biCreNote.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accCreditNoteDAOobj.getBillingCreditNoteDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = biCreNote.getMemo();
            } else if (mode == StaticValues.AUTONUM_BILLINGDEBITNOTE) {
                customerName = vendorObj.getName();//dbNote.getCustomer().getName();
                shipTo = vendorObj.getAddress();
                filter_names.add("debitNote.ID");
                filter_params.add(biDeNote.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accDebitNoteobj.getBillingDebitNoteDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = biDeNote.getMemo();
            } else if (mode == StaticValues.AUTONUM_CREDITNOTE) {
                customerName = customerObj.getName();//inv.getCustomer()==null?inv.getCustomerEntry().getAccount().getName():inv.getCustomer().getName();
                shipTo = customerObj.getBillingAddress();//inv.getShipTo();
                filter_names.add("creditNote.ID");
                filter_params.add(creNote.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accCreditNoteDAOobj.getCreditNoteDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = creNote.getMemo();
            } else if (mode == StaticValues.AUTONUM_DEBITNOTE) {
                customerName = vendorObj.getName();//dbNote.getCustomer().getName();
                shipTo = vendorObj.getAddress();
                filter_names.add("debitNote.ID");
                filter_params.add(dbNote.getID());
                invRequestParams.put("filter_names", filter_names);
                invRequestParams.put("filter_params", filter_params);
                idresult = accDebitNoteobj.getDebitNoteDetails(invRequestParams);
                itr = idresult.getEntityList().iterator();
                memo = dbNote.getMemo();
            }
            cell3 = createCell(customerName, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);
            cell3 = createCell(shipTo, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);

            PdfPCell mainCell14 = new PdfPCell(tab5);
            mainCell14.setBorder(0);
            mainCell14.setPadding(10);
            mainTable.addCell(mainCell14);

            String[] header = {
                    messageSource.getMessage("acc.cnList.Sno", null, RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.190", null, RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.187", null, RequestContextUtils.getLocale(request)),
                    messageSource.getMessage("acc.rem.193", null, RequestContextUtils.getLocale(request)) };
            PdfPTable table = new PdfPTable(4);
            table.setWidthPercentage(100);
            table.setWidths(new float[] { 7, 35, 29, 29 });
            PdfPCell invcell = null;
            for (int i = 0; i < header.length; i++) {
                invcell = new PdfPCell(new Paragraph(header[i], fontSmallBold));
                invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                invcell.setBackgroundColor(Color.LIGHT_GRAY);
                invCell.setBorder(0);
                invcell.setPadding(3);
                table.addCell(invcell);
            }

            //                Iterator itr = mode != StaticValues.AUTONUM_BILLINGINVOICE ? inv.getRows().iterator() : inv1.getRows().iterator();
            CreditNoteDetail row = null;
            DebitNoteDetail row1 = null;
            BillingCreditNoteDetail row2 = null;
            BillingDebitNoteDetail row3 = null;
            int index = 0;
            while (itr.hasNext()) {
                String prodName = "";
                double quantity = 0;
                Discount discount = null;
                String uom = "";
                double amount1 = 0;
                if (mode == StaticValues.AUTONUM_CREDITNOTE) {
                    row = (CreditNoteDetail) itr.next();
                    prodName = row.getInvoiceRow().getInventory().getProduct().getName();
                    quantity = row.getQuantity();
                    discount = row.getDiscount();
                    taxMain = taxMain + row.getTaxAmount();
                    total = total + row.getTaxAmount();
                    try {
                        uom = row.getInvoiceRow().getInventory().getProduct().getUnitOfMeasure() == null ? ""
                                : row.getInvoiceRow().getInventory().getProduct().getUnitOfMeasure().getName();
                    } catch (Exception ex) {//In case of exception use uom="";
                    }
                } else if (mode == StaticValues.AUTONUM_DEBITNOTE) {
                    row1 = (DebitNoteDetail) itr.next();
                    prodName = row1.getGoodsReceiptRow().getInventory().getProduct().getName();
                    quantity = row1.getQuantity();
                    discount = row1.getDiscount();
                    taxMain = taxMain + row1.getTaxAmount();
                    total = total + row1.getTaxAmount();
                    try {
                        uom = row1.getGoodsReceiptRow().getInventory().getProduct().getUnitOfMeasure() == null
                                ? ""
                                : row1.getGoodsReceiptRow().getInventory().getProduct().getUnitOfMeasure()
                                        .getName();
                    } catch (Exception ex) {//In case of exception use uom="";
                    }
                } else if (mode == StaticValues.AUTONUM_BILLINGCREDITNOTE) {
                    row2 = (BillingCreditNoteDetail) itr.next();
                    prodName = row2.getInvoiceRow().getProductDetail();
                    quantity = row2.getQuantity();
                    discount = row2.getDiscount();
                    taxMain = taxMain + row2.getTaxAmount();
                    total = total + row2.getTaxAmount();
                } else if (mode == StaticValues.AUTONUM_BILLINGDEBITNOTE) {
                    row3 = (BillingDebitNoteDetail) itr.next();
                    prodName = row3.getGoodsReceiptRow().getProductDetail();
                    quantity = row3.getQuantity();
                    discount = row3.getDiscount();
                    taxMain = taxMain + row3.getTaxAmount();
                    total = total + row3.getTaxAmount();
                }

                invcell = createCell((++index) + ".", fontSmallRegular, Element.ALIGN_RIGHT,
                        Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);
                invcell = createCell(prodName, fontSmallRegular, Element.ALIGN_LEFT,
                        Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);
                invcell = createCell((int) quantity + " " + uom, fontSmallRegular, Element.ALIGN_CENTER,
                        Rectangle.LEFT + Rectangle.RIGHT, 5);
                table.addCell(invcell);
                invcell = calculateDiscount(discount, currencyid);
                invcell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                invcell.setPadding(5);
                invcell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                table.addCell(invcell);

                total += discount.getDiscountValue();
                //                    invcell = createCell(authHandlerDAOObj.getFormattedCurrency(amount1, currencyid), fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                //                    table.addCell(invcell);

            }
            //                for (int j = 0; j < 70; j++) {
            //                    invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
            //                    invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            //                    invcell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
            //                    table.addCell(invcell);
            //                }
            //                for (int i = 0; i < 3; i++) {
            //                    invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
            //                    invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            //                    invcell.setBorder(Rectangle.TOP);
            //                    table.addCell(invcell);
            //                }

            for (int i = 0; i < 2; i++) {
                invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                invcell.setBorder(Rectangle.TOP);
                table.addCell(invcell);
            }

            cell3 = createCell(
                    messageSource.getMessage("acc.rem.192", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold, Element.ALIGN_CENTER, Rectangle.TOP, 5);
            table.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(taxMain, currencyid), fontSmallRegular,
                    Element.ALIGN_RIGHT, 15, 5);
            table.addCell(cell3);

            for (int i = 0; i < 2; i++) {
                invcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                invcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                invcell.setBorder(0);
                table.addCell(invcell);
            }

            cell3 = createCell(
                    messageSource.getMessage("acc.rem.197", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold, Element.ALIGN_CENTER, 0, 5);
            table.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(total, currencyid), fontSmallRegular,
                    Element.ALIGN_RIGHT, 15, 5);
            table.addCell(cell3);

            PdfPCell mainCell5 = new PdfPCell(table);
            mainCell5.setBorder(0);
            mainCell5.setPadding(10);
            mainTable.addCell(mainCell5);

            PdfPTable helpTable = new PdfPTable(new float[] { 8, 92 });
            helpTable.setWidthPercentage(100);
            Phrase phrase1 = new Phrase(
                    messageSource.getMessage("acc.common.memo", null, RequestContextUtils.getLocale(request))
                            + " : ",
                    fontSmallBold);
            Phrase phrase2 = new Phrase(memo, fontSmallRegular);
            PdfPCell pcell1 = new PdfPCell(phrase1);
            PdfPCell pcell2 = new PdfPCell(phrase2);
            pcell1.setBorder(0);
            pcell1.setPadding(10);
            pcell1.setPaddingRight(0);
            pcell2.setBorder(0);
            pcell2.setPadding(10);
            helpTable.addCell(pcell1);
            helpTable.addCell(pcell2);

            PdfPCell mainCell61 = new PdfPCell(helpTable);
            mainCell61.setBorder(0);
            mainTable.addCell(mainCell61);

        } else if (mode == StaticValues.AUTONUM_GOODSRECEIPT
                || mode == StaticValues.AUTONUM_BILLINGGOODSRECEIPT) {
            addHeaderFooter(document, writer);
            GoodsReceipt gr = null;
            BillingGoodsReceipt gr1 = null;
            if (mode == StaticValues.AUTONUM_GOODSRECEIPT) {
                gr = (GoodsReceipt) kwlCommonTablesDAOObj.getClassObject(GoodsReceipt.class.getName(), billid);
            } else {
                gr1 = (BillingGoodsReceipt) kwlCommonTablesDAOObj
                        .getClassObject(BillingGoodsReceipt.class.getName(), billid);
            }

            Company com = mode == StaticValues.AUTONUM_GOODSRECEIPT ? gr.getCompany() : gr1.getCompany();
            String company[] = new String[4];
            company[0] = com.getCompanyName();
            company[1] = com.getAddress();
            company[2] = com.getEmailID();
            company[3] = com.getPhoneNumber();

            KWLCurrency rowCurrency = (mode == StaticValues.AUTONUM_GOODSRECEIPT ? gr.getCurrency()
                    : gr1.getCurrency());
            String rowCurrenctID = rowCurrency == null ? currencyid : rowCurrency.getCurrencyID();

            PdfPTable table1 = new PdfPTable(2);
            table1.setWidthPercentage(100);
            table1.setWidths(new float[] { 50, 50 });

            tab1 = addCompanyLogo(logoPath, com);
            tab2 = new PdfPTable(1);
            PdfPCell invCell = null;

            CompanyAccountPreferences pref = (CompanyAccountPreferences) kwlCommonTablesDAOObj
                    .getClassObject(CompanyAccountPreferences.class.getName(), com.getCompanyID());
            Account cash = pref.getCashAccount();
            Account vEntry;
            if (mode == StaticValues.AUTONUM_GOODSRECEIPT) {
                vEntry = gr.getVendorEntry().getAccount();
            } else {
                vEntry = gr1.getVendorEntry().getAccount();
            }
            String theader = vEntry == cash
                    ? messageSource.getMessage("acc.accPref.autoCP", null,
                            RequestContextUtils.getLocale(request))
                    : messageSource.getMessage("acc.accPref.autoVI", null,
                            RequestContextUtils.getLocale(request));
            invCell = createCell(theader, fontTbl, Element.ALIGN_RIGHT, 0, 5);
            tab2.addCell(invCell);

            PdfPCell cell1 = new PdfPCell(tab1);
            cell1.setBorder(0);
            table1.addCell(cell1);
            PdfPCell cel2 = new PdfPCell(tab2);
            cel2.setBorder(0);
            table1.addCell(cel2);

            PdfPCell mainCell11 = new PdfPCell(table1);
            mainCell11.setBorder(0);
            mainTable.addCell(mainCell11);

            blankTable = addBlankLine(3);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            PdfPTable userTable2 = new PdfPTable(2);
            userTable2.setWidthPercentage(100);
            userTable2.setWidths(new float[] { 60, 40 });

            tab3 = getCompanyInfo(company);

            PdfPTable tab4 = new PdfPTable(2);
            tab4.setWidthPercentage(100);
            tab4.setWidths(new float[] { 30, 70 });

            PdfPCell cell2 = createCell(theader + " #", fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);
            String grno = mode == StaticValues.AUTONUM_GOODSRECEIPT ? gr.getGoodsReceiptNumber()
                    : gr1.getBillingGoodsReceiptNumber();
            cell2 = createCell(": " + grno, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);
            cell2 = createCell(
                    messageSource.getMessage("acc.rem.198", null, RequestContextUtils.getLocale(request))
                            + "  ",
                    fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);
            cell2 = createCell(
                    ": " + formatter.format(
                            mode == StaticValues.AUTONUM_GOODSRECEIPT ? gr.getJournalEntry().getEntryDate()
                                    : gr1.getJournalEntry().getEntryDate()),
                    fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab4.addCell(cell2);

            cell1 = new PdfPCell(tab3);
            cell1.setBorder(0);
            userTable2.addCell(cell1);
            cel2 = new PdfPCell(tab4);
            cel2.setBorder(0);
            userTable2.addCell(cel2);

            PdfPCell mainCell12 = new PdfPCell(userTable2);
            mainCell12.setBorder(0);
            mainTable.addCell(mainCell12);

            blankTable = addBlankLine(3);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            PdfPTable tab5 = new PdfPTable(2);
            tab5.setWidthPercentage(100);
            tab5.setWidths(new float[] { 10, 90 });
            PdfPCell cell3 = createCell(
                    messageSource.getMessage("acc.common.from", null, RequestContextUtils.getLocale(request))
                            + " , ",
                    fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);

            String vendorName = "";
            if (mode == StaticValues.AUTONUM_GOODSRECEIPT) {
                vendorName = gr.getVendor() == null ? gr.getVendorEntry().getAccount().getName()
                        : gr.getVendor().getName();
            } else {
                vendorName = gr1.getVendor() == null ? gr1.getVendorEntry().getAccount().getName()
                        : gr1.getVendor().getName();
            }
            cell3 = createCell(vendorName, fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab5.addCell(cell3);
            cell3 = createCell(mode == StaticValues.AUTONUM_GOODSRECEIPT ? gr.getBillFrom() : gr1.getBillFrom(),
                    fontSmallRegular, Element.ALIGN_LEFT, 0, 5);
            tab5.addCell(cell3);

            PdfPCell mainCell14 = new PdfPCell(tab5);
            mainCell14.setBorder(0);
            mainTable.addCell(mainCell14);

            blankTable = addBlankLine(3);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);
            PdfPTable table;
            PdfPCell grcell = null;
            if (isExpenseInv) {
                String[] header = { "S.No.", "Account", "PRICE", "DISCOUNT", "TAX", "LINE TOTAL" };
                table = new PdfPTable(6);
                table.setWidthPercentage(100);
                table.setWidths(new float[] { 7, 23, 18, 18, 18, 16 });
                for (int i = 0; i < header.length; i++) {
                    grcell = new PdfPCell(new Paragraph(header[i], fontSmallBold));
                    grcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    grcell.setBackgroundColor(Color.LIGHT_GRAY);
                    grcell.setBorder(0);
                    grcell.setPadding(3);
                    table.addCell(grcell);
                }
            } else {

                String[] header = {
                        messageSource.getMessage("acc.cnList.Sno", null,
                                RequestContextUtils.getLocale(request)),
                        messageSource.getMessage("acc.rem.190", null, RequestContextUtils.getLocale(request)),
                        messageSource.getMessage("acc.rem.187", null, RequestContextUtils.getLocale(request)),
                        messageSource.getMessage("acc.rem.188", null, RequestContextUtils.getLocale(request)),
                        messageSource.getMessage("acc.rem.191", null, RequestContextUtils.getLocale(request)),
                        messageSource.getMessage("acc.rem.192", null, RequestContextUtils.getLocale(request)),
                        messageSource.getMessage("acc.rem.212", null, RequestContextUtils.getLocale(request)) };
                table = new PdfPTable(7);
                table.setWidthPercentage(100);
                table.setWidths(new float[] { 5, 20, 15, 15, 15, 13, 17 });
                for (int i = 0; i < header.length; i++) {
                    grcell = new PdfPCell(new Paragraph(header[i], fontSmallBold));
                    grcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    grcell.setBackgroundColor(Color.LIGHT_GRAY);
                    grcell.setBorder(0);
                    grcell.setPadding(3);
                    table.addCell(grcell);
                }
            }
            //                Iterator itr =mode==StaticValues.AUTONUM_GOODSRECEIPT?gr.getRows().iterator():gr1.getRows().iterator();
            HashMap<String, Object> grRequestParams = new HashMap<String, Object>();
            ArrayList filter_names = new ArrayList(), filter_params = new ArrayList(),
                    order_by = new ArrayList(), order_type = new ArrayList();
            order_by.add("srno");
            order_type.add("asc");
            grRequestParams.put("order_by", order_by);
            grRequestParams.put("order_type", order_type);

            KwlReturnObject idresult = null;
            if (mode != StaticValues.AUTONUM_BILLINGINVOICE
                    || mode != StaticValues.AUTONUM_BILLINGGOODSRECEIPT) {
                if (mode == StaticValues.AUTONUM_BILLINGGOODSRECEIPT) {
                    filter_names.add("billingGoodsReceipt.ID");
                    filter_params.add(gr1.getID());
                    grRequestParams.put("filter_names", filter_names);
                    grRequestParams.put("filter_params", filter_params);
                    idresult = accGoodsReceiptobj.getBillingGoodsReceiptDetails(grRequestParams);
                } else {
                    filter_names.add("goodsReceipt.ID");
                    filter_params.add(gr.getID());
                    grRequestParams.put("filter_names", filter_names);
                    grRequestParams.put("filter_params", filter_params);
                    if (isExpenseInv) {
                        idresult = accGoodsReceiptobj.getExpenseGRDetails(grRequestParams);
                    } else
                        idresult = accGoodsReceiptobj.getGoodsReceiptDetails(grRequestParams);
                }
            } else {
                filter_names.add("billingGoodsReceipt.ID");
                filter_params.add(gr.getID());
                grRequestParams.put("filter_names", filter_names);
                grRequestParams.put("filter_params", filter_params);
                idresult = accGoodsReceiptobj.getBillingGoodsReceiptDetails(grRequestParams);
            }
            Iterator itr = idresult.getEntityList().iterator();

            GoodsReceiptDetail row = null;
            BillingGoodsReceiptDetail row1 = null;
            ExpenseGRDetail exprow = null;
            int index = 0;
            while (itr.hasNext()) {
                if (mode == StaticValues.AUTONUM_GOODSRECEIPT) {
                    if (isExpenseInv)
                        exprow = (ExpenseGRDetail) itr.next();
                    else
                        row = (GoodsReceiptDetail) itr.next();
                } else {
                    row1 = (BillingGoodsReceiptDetail) itr.next();
                }
                if (isExpenseInv) {
                    grcell = createCell((++index) + ".", fontSmallRegular, Element.ALIGN_RIGHT,
                            Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    grcell = createCell(exprow.getAccount().getName(), fontSmallRegular, Element.ALIGN_LEFT,
                            Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    grcell = createCell(authHandlerDAOObj.getFormattedCurrency(exprow.getRate(), rowCurrenctID),
                            fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    grcell = calculateDiscount(exprow.getDiscount(), rowCurrenctID);
                    grcell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    grcell.setPadding(5);
                    grcell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                    table.addCell(grcell);
                    double amount1 = exprow.getRate();
                    Discount disc = exprow.getDiscount();
                    if (disc != null) {
                        amount1 -= exprow.getDiscount().getDiscountValue();
                    }

                    double rowTaxPercent = 0;
                    HashMap<String, Object> requestParams = AccountingManager.getGlobalParams(request);
                    if (exprow != null && exprow.getTax() != null) {
                        requestParams.put("transactiondate",
                                exprow.getGoodsReceipt().getJournalEntry().getEntryDate());
                        requestParams.put("taxid", exprow.getTax().getID());
                        KwlReturnObject result = accTaxObj.getTax(requestParams);
                        List taxList = result.getEntityList();
                        Object[] taxObj = (Object[]) taxList.get(0);
                        rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                    }
                    grcell = createCell(
                            authHandlerDAOObj.getFormattedCurrency(amount1 * rowTaxPercent / 100,
                                    rowCurrenctID),
                            fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    amount1 += amount1 * rowTaxPercent / 100;
                    grcell = createCell(authHandlerDAOObj.getFormattedCurrency(amount1, rowCurrenctID),
                            fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    total += amount1;
                    for (int j = 0; j < 84; j++) {
                        grcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                        grcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        grcell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                        table.addCell(grcell);
                    }

                } else {
                    grcell = createCell((++index) + ".", fontSmallRegular, Element.ALIGN_RIGHT,
                            Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    grcell = createCell(
                            mode == StaticValues.AUTONUM_GOODSRECEIPT
                                    ? row.getInventory().getProduct().getName()
                                    : row1.getProductDetail(),
                            fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    grcell = createCell(
                            Double.toString(mode == StaticValues.AUTONUM_GOODSRECEIPT
                                    ? row.getInventory().getQuantity()
                                    : row1.getQuantity())
                                    + " "
                                    + (mode != StaticValues.AUTONUM_BILLINGGOODSRECEIPT
                                            ? (row.getInventory().getProduct().getUnitOfMeasure() == null ? ""
                                                    : row.getInventory().getProduct().getUnitOfMeasure()
                                                            .getName())
                                            : ""),
                            fontSmallRegular, Element.ALIGN_CENTER, Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    grcell = createCell(
                            authHandlerDAOObj.getFormattedCurrency(
                                    mode == StaticValues.AUTONUM_GOODSRECEIPT ? row.getRate() : row1.getRate(),
                                    rowCurrenctID),
                            fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    grcell = calculateDiscount(
                            mode == StaticValues.AUTONUM_GOODSRECEIPT ? row.getDiscount() : row1.getDiscount(),
                            rowCurrenctID);
                    grcell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    grcell.setPadding(5);
                    grcell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                    table.addCell(grcell);
                    double amount1 = mode == StaticValues.AUTONUM_GOODSRECEIPT
                            ? row.getRate() * row.getInventory().getQuantity()
                            : row1.getRate() * row1.getQuantity();
                    Discount disc = mode == StaticValues.AUTONUM_GOODSRECEIPT ? row.getDiscount()
                            : row1.getDiscount();
                    if (disc != null) {
                        amount1 -= mode == StaticValues.AUTONUM_GOODSRECEIPT
                                ? row.getDiscount().getDiscountValue()
                                : row1.getDiscount().getDiscountValue();
                    }

                    double rowTaxPercent = 0;
                    HashMap<String, Object> requestParams = AccountingManager.getGlobalParams(request);
                    if (row != null && row.getTax() != null) {
                        requestParams.put("transactiondate",
                                row.getGoodsReceipt().getJournalEntry().getEntryDate());
                        requestParams.put("taxid", row.getTax().getID());
                        KwlReturnObject result = accTaxObj.getTax(requestParams);
                        List taxList = result.getEntityList();
                        Object[] taxObj = (Object[]) taxList.get(0);
                        rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                    } else if (row1 != null && row1.getTax() != null) {
                        requestParams.put("transactiondate",
                                row1.getBillingGoodsReceipt().getJournalEntry().getEntryDate());
                        requestParams.put("taxid", row1.getTax().getID());
                        KwlReturnObject result = accTaxObj.getTax(requestParams);
                        List taxList = result.getEntityList();
                        Object[] taxObj = (Object[]) taxList.get(0);
                        rowTaxPercent = taxObj[1] == null ? 0 : (Double) taxObj[1];
                    }
                    grcell = createCell(
                            authHandlerDAOObj.getFormattedCurrency(amount1 * rowTaxPercent / 100,
                                    rowCurrenctID),
                            fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    amount1 += amount1 * rowTaxPercent / 100;
                    grcell = createCell(authHandlerDAOObj.getFormattedCurrency(amount1, rowCurrenctID),
                            fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT, 5);
                    table.addCell(grcell);
                    total += amount1;
                    for (int j = 0; j < 98; j++) {
                        grcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                        grcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        grcell.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                        table.addCell(grcell);
                    }

                }
            }
            int length = isExpenseInv ? 4 : 5;
            for (int i = 0; i < length; i++) {
                grcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                grcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                grcell.setBorder(Rectangle.TOP);
                table.addCell(grcell);
            }
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.194", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold, Element.ALIGN_LEFT, Rectangle.TOP, 5);
            table.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(total, rowCurrenctID), fontSmallRegular,
                    Element.ALIGN_RIGHT, 15, 5);
            table.addCell(cell3);
            for (int i = 0; i < length; i++) {
                grcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                grcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                grcell.setPadding(5);
                grcell.setBorder(0);
                table.addCell(grcell);
            }
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.195", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            table.addCell(cell3);
            grcell = calculateDiscount(
                    mode == StaticValues.AUTONUM_GOODSRECEIPT ? gr.getDiscount() : gr1.getDiscount(),
                    rowCurrenctID);
            grcell.setHorizontalAlignment(Element.ALIGN_RIGHT);
            grcell.setPadding(5);
            table.addCell(grcell);
            for (int i = 0; i < length; i++) {
                grcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                grcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                grcell.setPadding(5);
                grcell.setBorder(0);
                table.addCell(grcell);
            }
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.196", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            table.addCell(cell3);
            cell3 = createCell(
                    authHandlerDAOObj.getFormattedCurrency(
                            mode == StaticValues.AUTONUM_GOODSRECEIPT
                                    ? (gr.getTaxEntry() != null ? gr.getTaxEntry().getAmount() : 0)
                                    : (gr1.getTaxEntry() != null ? gr1.getTaxEntry().getAmount() : 0),
                            rowCurrenctID),
                    fontSmallRegular, Element.ALIGN_RIGHT, 15, 5);
            table.addCell(cell3);
            for (int i = 0; i < length; i++) {
                grcell = new PdfPCell(new Paragraph("", fontSmallRegular));
                grcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                grcell.setPadding(5);
                grcell.setBorder(0);
                table.addCell(grcell);
            }
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.197", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold, Element.ALIGN_LEFT, 0, 5);
            table.addCell(cell3);
            cell3 = createCell(
                    authHandlerDAOObj.getFormattedCurrency(
                            mode == StaticValues.AUTONUM_GOODSRECEIPT ? (gr.getVendorEntry().getAmount())
                                    : (gr1.getVendorEntry().getAmount()),
                            rowCurrenctID),
                    fontSmallRegular, Element.ALIGN_RIGHT, 15, 5);
            table.addCell(cell3);

            PdfPCell mainCell5 = new PdfPCell(table);
            mainCell5.setBorder(0);
            mainTable.addCell(mainCell5);
            KWLCurrency currency = (KWLCurrency) kwlCommonTablesDAOObj
                    .getClassObject(KWLCurrency.class.getName(), currencyid);
            double totalamount = 0;
            if (gr != null)
                totalamount = gr.getVendorEntry().getAmount();
            else if (gr1 != null)
                totalamount = gr1.getVendorEntry().getAmount();
            String netinword = EnglishNumberToWordsOjb.convert(Double.parseDouble(String.valueOf(totalamount)),
                    currency);
            String currencyname = currency.getName();
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.177", null, RequestContextUtils.getLocale(request))
                            + " : " + currencyname + " " + netinword + " Only.",
                    fontSmallRegular, Element.ALIGN_LEFT,
                    Rectangle.LEFT + Rectangle.RIGHT + Rectangle.BOTTOM + Rectangle.TOP, 5);
            PdfPTable table2 = new PdfPTable(1);
            table2.addCell(cell3);
            PdfPCell mainCell62 = new PdfPCell(table2);
            mainCell62.setBorder(0);
            mainTable.addCell(mainCell62);
            PdfPTable helpTable = new PdfPTable(new float[] { 8, 92 });
            helpTable.setWidthPercentage(100);
            Phrase phrase1 = new Phrase(
                    messageSource.getMessage("acc.common.memo", null, RequestContextUtils.getLocale(request))
                            + ":  ",
                    fontSmallBold);
            Phrase phrase2 = new Phrase(
                    mode == StaticValues.AUTONUM_GOODSRECEIPT ? gr.getMemo() : gr1.getMemo(), fontSmallRegular);
            PdfPCell pcell1 = new PdfPCell(phrase1);
            PdfPCell pcell2 = new PdfPCell(phrase2);
            pcell1.setBorder(0);
            pcell1.setPadding(10);
            pcell1.setPaddingRight(0);
            pcell2.setBorder(0);
            pcell2.setPadding(10);
            helpTable.addCell(pcell1);
            helpTable.addCell(pcell2);

            PdfPCell mainCell61 = new PdfPCell(helpTable);
            mainCell61.setBorder(0);
            mainTable.addCell(mainCell61);

        } else if (mode == StaticValues.AUTONUM_RECEIPT || mode == StaticValues.AUTONUM_BILLINGRECEIPT) {

            Receipt rc = null;
            BillingReceipt rc1 = null;
            if (mode != StaticValues.AUTONUM_BILLINGRECEIPT) {
                rc = (Receipt) kwlCommonTablesDAOObj.getClassObject(Receipt.class.getName(), billid);
            } else {
                rc1 = (BillingReceipt) kwlCommonTablesDAOObj.getClassObject(BillingReceipt.class.getName(),
                        billid);
            }

            KWLCurrency currency = (KWLCurrency) kwlCommonTablesDAOObj
                    .getClassObject(KWLCurrency.class.getName(), currencyid);
            Company com = mode != StaticValues.AUTONUM_BILLINGRECEIPT ? rc.getCompany() : rc1.getCompany();
            String company[] = new String[3];
            company[0] = com.getCompanyName();
            company[1] = com.getAddress();
            company[2] = com.getEmailID();

            PdfPTable table1 = new PdfPTable(2);
            table1.setWidthPercentage(100);
            table1.setWidths(new float[] { 25, 75 });

            tab1 = addCompanyLogo(logoPath, com);

            tab3 = new PdfPTable(1);
            tab3.setWidthPercentage(100);
            PdfPCell mainCell1 = null;
            mainCell1 = createCell(com.getCompanyName(), fontMediumBold, Element.ALIGN_LEFT, 0, 0);
            mainCell1.setPaddingLeft(125);
            tab3.addCell(mainCell1);
            mainCell1 = createCell(com.getAddress(), fontSmallRegular, Element.ALIGN_LEFT, 0, 0);
            mainCell1.setPaddingLeft(75);
            tab3.addCell(mainCell1);
            mainCell1 = createCell(com.getEmailID(), fontSmallRegular, Element.ALIGN_LEFT, 0, 0);
            mainCell1.setPaddingLeft(75);
            tab3.addCell(mainCell1);
            mainCell1 = createCell(com.getPhoneNumber(), fontSmallRegular, Element.ALIGN_LEFT, 0, 0);
            mainCell1.setPaddingLeft(75);
            tab3.addCell(mainCell1);
            mainCell1 = new PdfPCell(tab1);
            mainCell1.setBorder(0);
            table1.addCell(mainCell1);
            mainCell1 = new PdfPCell(tab3);
            mainCell1.setBorder(0);
            table1.addCell(mainCell1);

            mainCell1 = new PdfPCell(table1);
            mainCell1.setBorder(0);
            mainTable.addCell(mainCell1);

            blankTable = addBlankLine(5);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            PdfPCell mainCell2 = createCell(
                    messageSource.getMessage("acc.numb.37", null, RequestContextUtils.getLocale(request)),
                    fontMediumBold, Element.ALIGN_CENTER, 0, 0);
            mainTable.addCell(mainCell2);

            blankTable = addBlankLine(2);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            tab3 = new PdfPTable(2);
            tab3.setWidthPercentage(100);
            tab3.setWidths(new float[] { 60, 40 });

            tab1 = new PdfPTable(2);
            tab1.setWidthPercentage(100);
            tab1.setWidths(new float[] { 10, 90 });

            PdfPCell cell3 = createCell(
                    messageSource.getMessage("acc.msgbox.no", null, RequestContextUtils.getLocale(request))
                            + " : ",
                    fontSmallRegular, Element.ALIGN_LEFT, 0, 0);
            new PdfPCell(new Paragraph());
            tab1.addCell(cell3);
            cell3 = createCell(mode != StaticValues.AUTONUM_BILLINGRECEIPT ? rc.getReceiptNumber()
                    : rc1.getBillingReceiptNumber(), fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab1.addCell(cell3);
            tab2 = new PdfPTable(2);
            tab2.setWidthPercentage(100);
            tab2.setWidths(new float[] { 30, 70 });
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.38", null, RequestContextUtils.getLocale(request)),
                    fontSmallRegular, Element.ALIGN_RIGHT, 0, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    formatter.format(
                            mode != StaticValues.AUTONUM_BILLINGRECEIPT ? rc.getJournalEntry().getEntryDate()
                                    : rc1.getJournalEntry().getEntryDate()),
                    fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab2.addCell(cell3);

            PdfPCell mainCell3 = new PdfPCell(tab1);
            mainCell3.setBorder(0);
            tab3.addCell(mainCell3);
            mainCell3 = new PdfPCell(tab2);
            mainCell3.setBorder(0);
            tab3.addCell(mainCell3);

            PdfPCell mainCell4 = new PdfPCell(tab3);
            mainCell4.setBorder(0);
            mainTable.addCell(mainCell4);

            blankTable = addBlankLine(5);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);
            tab2 = new PdfPTable(2);
            tab2.setWidthPercentage(100);
            tab2.setWidths(new float[] { 75, 25 });
            cell3 = new PdfPCell(new Paragraph(
                    messageSource.getMessage("acc.report.2", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold));
            cell3.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell3.setBackgroundColor(Color.lightGray);
            cell3.setBorder(Rectangle.LEFT + Rectangle.BOTTOM + Rectangle.RIGHT);
            tab2.addCell(cell3);
            cell3 = new PdfPCell(new Paragraph(
                    messageSource.getMessage("acc.rem.193", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold));
            cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell3.setBackgroundColor(Color.lightGray);
            cell3.setBorder(Rectangle.RIGHT + Rectangle.BOTTOM);
            tab2.addCell(cell3);
            cell3 = createCell(
                    messageSource.getMessage("acc.je.acc", null, RequestContextUtils.getLocale(request))
                            + " : ",
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            cell3 = createCell(accname, fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT,
                    0);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(amount, currencyid), fontSmallRegular,
                    Element.ALIGN_RIGHT, Rectangle.RIGHT, 15);
            tab2.addCell(cell3);
            cell3 = createCell(address, fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT,
                    0);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);

            for (int i = 0; i < 30; i++) {
                cell3 = new PdfPCell(new Paragraph("", fontSmallRegular));
                cell3.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                tab2.addCell(cell3);
            }
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.42", null, RequestContextUtils.getLocale(request)),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    mode != StaticValues.AUTONUM_BILLINGRECEIPT
                            ? (rc.getPayDetail() == null ? "Cash"
                                    : rc.getPayDetail().getPaymentMethod().getMethodName())
                            : (rc1.getPayDetail() == null ? "Cash"
                                    : rc1.getPayDetail().getPaymentMethod().getMethodName()),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_CENTER, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    mode != StaticValues.AUTONUM_BILLINGRECEIPT
                            ? (rc.getPayDetail() != null
                                    ? (rc.getPayDetail().getPaymentMethod().getMethodName().equals("Cheque")
                                            ? "Cheque No : " + rc.getPayDetail().getCheque().getChequeNo()
                                                    + " and Bank Name : "
                                                    + rc.getPayDetail().getCheque().getBankName()
                                            : "")
                                    : "")
                            : (rc1.getPayDetail() != null
                                    ? (rc1.getPayDetail().getPaymentMethod().getMethodName().equals("Cheque")
                                            ? "Cheque No : " + rc1.getPayDetail().getCheque().getChequeNo()
                                                    + " and Bank Name : "
                                                    + rc1.getPayDetail().getCheque().getBankName()
                                            : "")
                                    : ""),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_CENTER, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            String str = "";
            if (mode != StaticValues.AUTONUM_BILLINGRECEIPT) {
                if (rc.getPayDetail() != null)
                    if (rc.getPayDetail().getPaymentMethod().getDetailType() == 2
                            || rc.getPayDetail().getPaymentMethod().getDetailType() == 1)
                        if (rc.getPayDetail().getCard() != null)
                            str = "Card No : " + (rc.getPayDetail().getCard().getCardNo())
                                    + " and Card Holder : " + rc.getPayDetail().getCard().getCardHolder();
                        else if (rc.getPayDetail().getCheque() != null)
                            str = "Bank Name : " + (rc.getPayDetail().getCheque().getBankName())
                                    + "and Ref. No : " + (rc.getPayDetail().getCheque().getChequeNo());
            } else if (rc1.getPayDetail() != null)
                if (rc1.getPayDetail().getPaymentMethod().getDetailType() == 2
                        || rc1.getPayDetail().getPaymentMethod().getDetailType() == 1)
                    if (rc1.getPayDetail().getCard() != null)
                        str = "Card No : " + (rc1.getPayDetail().getCard().getCardNo()) + " and Card Holder : "
                                + rc1.getPayDetail().getCard().getCardHolder();
                    else if (rc1.getPayDetail().getCheque() != null)
                        str = "Bank Name : " + (rc1.getPayDetail().getCheque().getBankName()) + "and Ref. No : "
                                + (rc1.getPayDetail().getCheque().getChequeNo());

            //                mode!=StaticValues.AUTONUM_BILLINGRECEIPT?(rc.getPayDetail()!=null?(rc.getPayDetail().getPaymentMethod().getMethodName().equals("Credit Card")||customer.equals("Debit Card")?
            //                        rc.getPayDetail().getCard()!=null?"Card No : "+(rc.getPayDetail().getCard().getCardNo()+" and Card Holder : "+rc.getPayDetail().getCard().getCardHolder()):"":""):""):
            //                        (rc1.getPayDetail()!=null?(rc1.getPayDetail().getPaymentMethod().getMethodName().equals("Credit Card")||customer.equals("Debit Card")?
            //                        rc1.getPayDetail().getCard()!=null?"Card No : "+(rc1.getPayDetail().getCard().getCardNo()+" and Card Holder : "+rc1.getPayDetail().getCard().getCardHolder()):"":""):"")

            cell3 = createCell(str, fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_CENTER, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.41", null, RequestContextUtils.getLocale(request)),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell(mode != StaticValues.AUTONUM_BILLINGRECEIPT ? rc.getMemo() : rc1.getMemo(),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_CENTER, Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            String netinword = EnglishNumberToWordsOjb.convert(Double.parseDouble(String.valueOf(amount)),
                    currency);
            String currencyname = currency.getName();
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.177", null, RequestContextUtils.getLocale(request))
                            + " : " + currencyname + " " + netinword + " Only.",
                    fontSmallRegular, Element.ALIGN_LEFT,
                    Rectangle.LEFT + Rectangle.RIGHT + Rectangle.BOTTOM + Rectangle.TOP, 5);
            tab2.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(amount, currencyid), fontSmallRegular,
                    Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT + Rectangle.BOTTOM + Rectangle.TOP,
                    5);
            tab2.addCell(cell3);
            PdfPCell mainCell5 = new PdfPCell(tab2);
            mainCell5.setBorder(1);
            mainTable.addCell(mainCell5);

            blankTable = addBlankLine(25);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            tab1 = new PdfPTable(2);
            tab1.setWidthPercentage(100);
            tab1.setWidths(new float[] { 50, 50 });
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.35", null, RequestContextUtils.getLocale(request)),
                    fontTblMediumBold, Element.ALIGN_CENTER, 0, 0);
            tab1.addCell(cell3);
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.36", null, RequestContextUtils.getLocale(request)),
                    fontTblMediumBold, Element.ALIGN_CENTER, 0, 0);
            tab1.addCell(cell3);
            PdfPCell mainCell6 = new PdfPCell(tab1);
            mainCell6.setPadding(5);
            mainCell6.setBorder(0);
            mainTable.addCell(mainCell6);

            blankTable = addBlankLine(15);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            tab2 = new PdfPTable(2);
            tab2.setWidthPercentage(100);
            tab2.setWidths(new float[] { 50, 50 });
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.39", null, RequestContextUtils.getLocale(request)),
                    fontTblMediumBold, Element.ALIGN_CENTER, 0, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.40", null, RequestContextUtils.getLocale(request)),
                    fontTblMediumBold, Element.ALIGN_CENTER, 0, 0);
            tab2.addCell(cell3);
            PdfPCell mainCell7 = new PdfPCell(tab2);
            mainCell7.setPadding(5);
            mainCell7.setBorder(0);
            mainTable.addCell(mainCell7);
            blankTable = addBlankLine(5);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

        } else if (mode == StaticValues.AUTONUM_PAYMENT || mode == StaticValues.AUTONUM_BILLINGPAYMENT) {
            Payment pc = null;
            BillingPayment pc1 = null;
            if (mode == StaticValues.AUTONUM_PAYMENT) {
                pc = (Payment) kwlCommonTablesDAOObj.getClassObject(Payment.class.getName(), billid);
            } else {
                pc1 = (BillingPayment) kwlCommonTablesDAOObj.getClassObject(BillingPayment.class.getName(),
                        billid);
            }
            KWLCurrency currency = (KWLCurrency) kwlCommonTablesDAOObj
                    .getClassObject(KWLCurrency.class.getName(), currencyid);
            Company com = mode == StaticValues.AUTONUM_PAYMENT ? pc.getCompany() : pc1.getCompany();
            String company[] = new String[3];
            company[0] = com.getCompanyName();
            company[1] = com.getAddress();
            company[2] = com.getEmailID();

            PdfPTable table1 = new PdfPTable(2);
            table1.setWidthPercentage(100);
            table1.setWidths(new float[] { 25, 75 });

            tab1 = addCompanyLogo(logoPath, com);

            tab3 = new PdfPTable(1);
            tab3.setWidthPercentage(100);
            PdfPCell mainCell1 = null;
            mainCell1 = createCell(com.getCompanyName(), fontMediumBold, Element.ALIGN_LEFT, 0, 0);
            mainCell1.setPaddingLeft(125);
            tab3.addCell(mainCell1);
            mainCell1 = createCell(com.getAddress(), fontSmallRegular, Element.ALIGN_LEFT, 0, 0);
            mainCell1.setPaddingLeft(75);
            tab3.addCell(mainCell1);
            mainCell1 = createCell(com.getEmailID(), fontSmallRegular, Element.ALIGN_LEFT, 0, 0);
            mainCell1.setPaddingLeft(75);
            tab3.addCell(mainCell1);
            mainCell1 = createCell(com.getPhoneNumber(), fontSmallRegular, Element.ALIGN_LEFT, 0, 0);
            mainCell1.setPaddingLeft(75);
            tab3.addCell(mainCell1);
            mainCell1 = new PdfPCell(tab1);
            mainCell1.setBorder(0);
            table1.addCell(mainCell1);
            mainCell1 = new PdfPCell(tab3);
            mainCell1.setBorder(0);
            table1.addCell(mainCell1);

            mainCell1 = new PdfPCell(table1);
            mainCell1.setBorder(0);
            mainTable.addCell(mainCell1);

            blankTable = addBlankLine(5);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            PdfPCell mainCell2 = createCell(
                    messageSource.getMessage("acc.numb.37", null, RequestContextUtils.getLocale(request)),
                    fontMediumBold, Element.ALIGN_CENTER, 0, 0);
            mainTable.addCell(mainCell2);

            blankTable = addBlankLine(2);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            tab3 = new PdfPTable(2);
            tab3.setWidthPercentage(100);
            tab3.setWidths(new float[] { 60, 40 });

            tab1 = new PdfPTable(2);
            tab1.setWidthPercentage(100);
            tab1.setWidths(new float[] { 10, 90 });

            PdfPCell cell3 = createCell(
                    messageSource.getMessage("acc.msgbox.no", null, RequestContextUtils.getLocale(request))
                            + " : ",
                    fontSmallRegular, Element.ALIGN_LEFT, 0, 0);
            new PdfPCell(new Paragraph());
            tab1.addCell(cell3);
            cell3 = createCell(mode == StaticValues.AUTONUM_PAYMENT ? pc.getPaymentNumber()
                    : pc1.getBillingPaymentNumber(), fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab1.addCell(cell3);
            tab2 = new PdfPTable(2);
            tab2.setWidthPercentage(100);
            tab2.setWidths(new float[] { 30, 70 });
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.38", null, RequestContextUtils.getLocale(request)),
                    fontSmallRegular, Element.ALIGN_RIGHT, 0, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    formatter.format(mode == StaticValues.AUTONUM_PAYMENT ? pc.getJournalEntry().getEntryDate()
                            : pc1.getJournalEntry().getEntryDate()),
                    fontSmallBold, Element.ALIGN_LEFT, 0, 0);
            tab2.addCell(cell3);

            PdfPCell mainCell3 = new PdfPCell(tab1);
            mainCell3.setBorder(0);
            tab3.addCell(mainCell3);
            mainCell3 = new PdfPCell(tab2);
            mainCell3.setBorder(0);
            tab3.addCell(mainCell3);

            PdfPCell mainCell4 = new PdfPCell(tab3);
            mainCell4.setBorder(0);
            mainTable.addCell(mainCell4);

            blankTable = addBlankLine(5);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);
            tab2 = new PdfPTable(2);
            tab2.setWidthPercentage(100);
            tab2.setWidths(new float[] { 75, 25 });
            cell3 = new PdfPCell(new Paragraph(
                    messageSource.getMessage("acc.report.2", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold));
            cell3.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell3.setBackgroundColor(Color.lightGray);
            cell3.setBorder(Rectangle.LEFT + Rectangle.BOTTOM + Rectangle.RIGHT);
            tab2.addCell(cell3);
            cell3 = new PdfPCell(new Paragraph(
                    messageSource.getMessage("acc.rem.193", null, RequestContextUtils.getLocale(request)),
                    fontSmallBold));
            cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell3.setBackgroundColor(Color.lightGray);
            cell3.setBorder(Rectangle.RIGHT + Rectangle.BOTTOM);
            tab2.addCell(cell3);
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.193", null, RequestContextUtils.getLocale(request))
                            + " : ",
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallBold, Element.ALIGN_LEFT, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            cell3 = createCell(accname, fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT,
                    0);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(amount, currencyid), fontSmallRegular,
                    Element.ALIGN_RIGHT, Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell(address, fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT,
                    0);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);

            for (int i = 0; i < 30; i++) {
                cell3 = new PdfPCell(new Paragraph("", fontSmallRegular));
                cell3.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                tab2.addCell(cell3);
            }
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.42", null, RequestContextUtils.getLocale(request)),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    mode == StaticValues.AUTONUM_PAYMENT
                            ? (pc.getPayDetail() == null ? "Cash"
                                    : pc.getPayDetail().getPaymentMethod().getMethodName())
                            : (pc1.getPayDetail() == null ? "Cash"
                                    : pc1.getPayDetail().getPaymentMethod().getMethodName()),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_CENTER, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    mode == StaticValues.AUTONUM_PAYMENT
                            ? (pc.getPayDetail() != null
                                    ? (pc.getPayDetail().getPaymentMethod().getMethodName().equals("Cheque")
                                            ? "Cheque No : " + pc.getPayDetail().getCheque().getChequeNo()
                                                    + " and Bank Name : "
                                                    + pc.getPayDetail().getCheque().getBankName()
                                            : "")
                                    : "")
                            : (pc1.getPayDetail() != null
                                    ? (pc1.getPayDetail().getPaymentMethod().getMethodName().equals("Cheque")
                                            ? "Cheque No : " + pc1.getPayDetail().getCheque().getChequeNo()
                                                    + " and Bank Name : "
                                                    + pc1.getPayDetail().getCheque().getBankName()
                                            : "")
                                    : ""),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_CENTER, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            String str = "";

            if (mode == StaticValues.AUTONUM_PAYMENT) {
                if (pc.getPayDetail() != null)
                    if (pc.getPayDetail().getPaymentMethod().getDetailType() == 2
                            || pc.getPayDetail().getPaymentMethod().getDetailType() == 1)
                        if (pc.getPayDetail().getCard() != null)
                            str = "Card No : " + (pc.getPayDetail().getCard().getCardNo())
                                    + " and Card Holder : " + pc.getPayDetail().getCard().getCardHolder();
                        else if (pc.getPayDetail().getCheque() != null)
                            str = "Bank Name : " + (pc.getPayDetail().getCheque().getBankName())
                                    + "and Ref. No : " + (pc.getPayDetail().getCheque().getChequeNo());
            } else if (pc1.getPayDetail() != null)
                if (pc1.getPayDetail().getPaymentMethod().getDetailType() == 2
                        || pc1.getPayDetail().getPaymentMethod().getDetailType() == 1)
                    if (pc1.getPayDetail().getCard() != null)
                        str = "Card No : " + (pc1.getPayDetail().getCard().getCardNo()) + " and Card Holder : "
                                + pc1.getPayDetail().getCard().getCardHolder();
                    else if (pc1.getPayDetail().getCheque() != null)
                        str = "Bank Name : " + (pc1.getPayDetail().getCheque().getBankName()) + "and Ref. No : "
                                + (pc1.getPayDetail().getCheque().getChequeNo());
            cell3 = createCell(str, fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_CENTER, Rectangle.RIGHT, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.41", null, RequestContextUtils.getLocale(request)),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_RIGHT, Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            cell3 = createCell(mode == StaticValues.AUTONUM_PAYMENT ? pc.getMemo() : pc1.getMemo(),
                    fontSmallRegular, Element.ALIGN_LEFT, Rectangle.LEFT + Rectangle.RIGHT, 5);
            cell3.setPaddingLeft(50);
            tab2.addCell(cell3);
            cell3 = createCell("", fontSmallRegular, Element.ALIGN_CENTER, Rectangle.RIGHT, 5);
            tab2.addCell(cell3);
            String netinword = EnglishNumberToWordsOjb.convert(Double.parseDouble(String.valueOf(amount)),
                    currency);
            String currencyname = currency.getName();
            cell3 = createCell(
                    messageSource.getMessage("acc.rem.177", null, RequestContextUtils.getLocale(request)) + " "
                            + currencyname + " " + netinword + " Only.",
                    fontSmallRegular, Element.ALIGN_LEFT,
                    Rectangle.LEFT + Rectangle.RIGHT + Rectangle.BOTTOM + Rectangle.TOP, 5);
            tab2.addCell(cell3);
            cell3 = createCell(authHandlerDAOObj.getFormattedCurrency(amount, currencyid), fontSmallRegular,
                    Element.ALIGN_RIGHT, Rectangle.LEFT + Rectangle.RIGHT + Rectangle.BOTTOM + Rectangle.TOP,
                    5);
            tab2.addCell(cell3);
            PdfPCell mainCell5 = new PdfPCell(tab2);
            mainCell5.setBorder(1);
            mainTable.addCell(mainCell5);

            blankTable = addBlankLine(25);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            tab1 = new PdfPTable(2);
            tab1.setWidthPercentage(100);
            tab1.setWidths(new float[] { 50, 50 });
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.35", null, RequestContextUtils.getLocale(request)),
                    fontTblMediumBold, Element.ALIGN_CENTER, 0, 0);
            tab1.addCell(cell3);
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.36", null, RequestContextUtils.getLocale(request)),
                    fontTblMediumBold, Element.ALIGN_CENTER, 0, 0);
            tab1.addCell(cell3);
            PdfPCell mainCell6 = new PdfPCell(tab1);
            mainCell6.setPadding(5);
            mainCell6.setBorder(0);
            mainTable.addCell(mainCell6);

            blankTable = addBlankLine(15);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

            tab2 = new PdfPTable(2);
            tab2.setWidthPercentage(100);
            tab2.setWidths(new float[] { 50, 50 });
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.39", null, RequestContextUtils.getLocale(request)),
                    fontTblMediumBold, Element.ALIGN_CENTER, 0, 0);
            tab2.addCell(cell3);
            cell3 = createCell(
                    messageSource.getMessage("acc.numb.40", null, RequestContextUtils.getLocale(request)),
                    fontTblMediumBold, Element.ALIGN_CENTER, 0, 0);
            tab2.addCell(cell3);
            PdfPCell mainCell7 = new PdfPCell(tab2);
            mainCell7.setPadding(5);
            mainCell7.setBorder(0);
            mainTable.addCell(mainCell7);
            blankTable = addBlankLine(5);
            blankCell = new PdfPCell(blankTable);
            blankCell.setBorder(0);
            mainTable.addCell(blankCell);

        }

        document.add(mainTable);
        return baos;
    } catch (Exception ex) {
        throw ServiceException.FAILURE("Export:" + ex.getMessage(), ex);
    } finally {
        if (document != null) {
            document.close();
        }
        if (writer != null) {
            writer.close();
        }
        if (baos != null) {
            baos.close();
        }
    }

}

From source file:com.krawler.spring.exportFuctionality.ExportRecord.java

License:Open Source License

private void addHeaderFooter(Document document, PdfWriter writer) throws DocumentException, ServiceException {
    PdfPTable footer = new PdfPTable(1);
    PdfPCell footerSeparator = new PdfPCell(new Paragraph("THANK YOU FOR YOUR BUSINESS!", fontTblMediumBold));
    footerSeparator.setHorizontalAlignment(Element.ALIGN_CENTER);
    footerSeparator.setBorder(0);/*from   ww  w.  j  ava2s .c  om*/
    footer.addCell(footerSeparator);

    try {
        Rectangle page = document.getPageSize();
        footer.setTotalWidth(page.getWidth() - document.leftMargin());
        footer.writeSelectedRows(0, -1, document.leftMargin(), document.bottomMargin(),
                writer.getDirectContent());
    } catch (Exception e) {
        throw new ExceptionConverter(e);
    }
}

From source file:com.krawler.spring.exportFuctionality.ExportRecord.java

License:Open Source License

public PdfPTable getCompanyInfo(String com[]) {
    PdfPTable tab1 = new PdfPTable(1);
    tab1.setHorizontalAlignment(Element.ALIGN_CENTER);
    PdfPCell cell = new PdfPCell(new Paragraph(com[0], fontMediumBold));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell.setBorder(0);//  w  w  w.  j  a va2s .c o m
    tab1.addCell(cell);
    for (int i = 1; i < com.length; i++) {
        cell = new PdfPCell(new Paragraph(com[i], fontTblMediumBold));
        cell.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell.setBorder(0);
        tab1.addCell(cell);
    }
    return tab1;
}

From source file:com.krawler.spring.exportFuctionality.ExportRecord.java

License:Open Source License

private PdfPTable addBlankLine(int count) {
    PdfPTable table = new PdfPTable(1);
    PdfPCell cell = null;/*from   www . ja  va 2 s .  co  m*/
    for (int i = 0; i < count; i++) {
        cell = new PdfPCell(new Paragraph("", fontTblMediumBold));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setPadding(3);
        cell.setBorder(0);
        table.addCell(cell);
    }
    return table;
}